首页 > 系统相关 >OtterCTF 2018:内存取证

OtterCTF 2018:内存取证

时间:2024-12-19 15:22:08浏览次数:4  
标签:profile 文件 -- py vol 内存 OtterCTF python2 2018

image
做这个也是花了很长时间,很多指令都没见过,包括dump文件这种,都是之前没有使用过的,这些题也是参考了许多文章,会贴出链接,因为可能会有解释错的地方

主要参考文章:

OtterCTF—内存取证wp
[OtterCTF 2018]-内存取证-WP

废话,网上也是很多写了这个比赛的wp,可能都会比我的更好,所以这里的答案实现和原理全是个人的理解,有错误的地方还请各位大佬指出来,博客园也相当于我的笔记了,感谢感谢

题目顺序是nssctf从上往下

What the password?

you got a sample of rick’s PC’s memory. can you get his user password?
您获得了Rick PC内存的样本。你能拿到他的用户密码吗?

image
照例dump信息下来

image

指令:python2 vol.py -f /文件路径/文件 --profile=WinSP1x64 lsadump

flag:MortyIsReallyAnOtter

General Info

Let’s start easy - whats the PC’s name and IP address?
让我们简单开始-PC的名称和IP地址是什么?

image

指令:python2 vol.py -f /文件路径/文件 --profile==Win7SP1x64 hivelist
hivelist:使用 hivelist 确定了感兴趣的注册表配置单元的偏移量和名称后,可以结合 printkey 插件来打印出该配置单元内特定键值的详细信息

一般的电脑的名字一般是在SYSTEM的路径下
image

python2 vol.py -f /文件路径/文件 --profile=Win7SP1x64 -o 0xfffff8a000024010 printkey

这里0xff这个是这个文件的地址路径,-o加上这个参数,在使用printkey打印SYSTEM的文件夹里
image

指令:python2 vol.py -f /文件路径/文件 --profile=Win7SP1x64 -o 0xfffff8a000024010 -K "ControlSet001"

image

指令:python2 vol.py -f /root/桌面/Memory/OtterCTF2018/otter.vmem --profile=Win7SP1x64 -o 0xfffff8a000024010 printkey -K "ControlSet001\Control\ComputerName\ComputerName" printkey

此时获得了电脑的名称WIN-LO6FAF3DTFE

image

指令:python2 vol.py -f /文件路径/文件 --profile=Win7SP1x64 netscan
netscan:扫描内存中的网络连接相关信息

这里查找最多的一个ip地址,就是主机地址
flag:WIN-LO6FAF3DTFE-192.168.202.131

Play Time

Rick just loves to play some good old videogames.
can you tell which game is he playing?
whats the IP address of the server?
瑞克只是喜欢玩一些很好的旧电子游戏。
你能看出他在玩什么游戏吗?
服务器的IP地址是多少?

image

指令:python2 vol.py -f /文件路径/文件 --profile=Win7SP1x64 pslist

这里这个百度出来,是个游戏(其实是看别的佬才知道这个是游戏)
image

指令:python2 vol.py -f /文件路径/文件 --profile=Win7SP1x64 pslits | grep "LunarMS"

flag:LunarMS-192.168.202.131

Silly Rick

Silly rick always forgets his email’s password, so he uses a Stored Password Services online to store his password. He always copy and paste the password so he will not get it wrong. whats rick’s email password?
总是忘记他的电子邮件密码,所以他使用在线存储密码服务来存储他的密码。他总是复制粘贴密码,这样他就不会出错。rick的电子邮件密码是多少?

image

指令:python2 vol.py -f /文件路径/文件 --profile=Win7SP1x64 clipboard
clipboard:是一个用于提取 Windows 剪贴板中内容的指令

flag:M@il_Pr0vid0rs

Name Game

We know that the account was logged in to a channel called Lunar-3. what is the account name?
我们知道该帐户登录了一个名为Lunar-3的频道。帐户名称是什么?

这里有两个方法:
image
第一种:是010直接搜Lunar-3
第二种:dump这程序,搜索字符串
image

指令:python2 vol.py -f /文件路径/文件 --profile=Win7SP1x64 memdump -p 708 -D /文件路径/文件
memdump:主要用于从内存转储文件中提取特定内存区域的数据,并将其保存为独立的文件,通常可以是进程内存、内核内存或者其他感兴趣的内存部分

image

指令: strings 708.dmp | grep "Lunar-3" -C 10
这里-C 10是显示前合的字符

flag:0tt3r8r33z3

Hide And Seek

The reason that we took rick’s PC memory dump is because there was a malware infection. Please find the malware process name (including the extension)
我们删除Rick的PC内存的原因是存在恶意软件感染。请查找恶意软件进程名称(包括扩展名)

image

python2 vol.py -f /文件路径/文件 --profile=Win7SP1x64 pstree
psree: 主要用于展示内存中进程的层次关系

这里直接截到vmware-tray.exe,其实是感觉这个程序有问题,毕竟是在Rick And Morty的目录下,一个还行动画,回看上面的答案啥的都会发先,全在指向这部动漫,这里我选择把这个程序dump下来进行分析

image

使用python2 vol.py -f /文件路径/文件 --profile=Win7SP1x64 procdump -p 3720 -D /文件路径/文件
procdump:它能够从内存转储文件中提取特定进程的内存内容

image
放到ida去分析,发现字符串信息,发现是黑客留下的信息,推测是款勒索软件

flag:vmware-tray.exe

Name Game 2

From a little research we found that the username of the logged on character is always after this signature: 0x64 0x??{6-8} 0x40 0x06 0x??{18} 0x5a 0x0c 0x00{2}
What’s rick’s character’s name?
经过一点研究,我们发现登录角色的用户名总是在此签名之后:0x 64 0x??{6-8}0x 40 0x 06 0x??{18}0x 5a 0x 0 c 0x 00 {2}
里克的角色叫什么?

这题直接kali里搜索就行了
image

指令:hexdump 游戏.dump | grep "5a 0x 00" -A 3 -B 3

**flag:M0rtyL0L

Path To Glory

How did the malware got to rick’s PC? It must be one of rick old illegal habits…
恶意软件是如何进入里克的电脑的?这一定是一个古老的非法习惯……

image

python2 vol.py -f /文件路径/文件 --profile=Win7SP1x64 filescan | grep "Rick And Morty

这里使用指令看Rick And Morty的路径下,重点主要是种子,这里全部dump下来
image
website网站,根据题目,差不多是在这个网站下的
flag:M3an_T0rren7_4_R!cke

Bit 4 Bit

We’ve found out that the malware is a ransomware. Find the attacker’s bitcoin address.
我们发现该恶意软件是勒索软件。找到攻击者的比特币地址。
这里继续用ida去看

image
根据上下文
flag:1MmpEmebJkqXG8nQv4cjJSmxZQFVmFo63M

Graphic's For The Weak

There’s something fishy in the malware’s graphics.
恶意软件的图形中有可疑之处。

image
直接使用foremost分离

Path To Glory 2

Continue the search after the way that malware got in.
继续搜索恶意软件进入的方式。

这一题也是挺迷的,翻译出来也迷,也只能看wp
image
flag:Hum@n_I5_Th3_Weak3s7_Link_In_Th3_Ch@in

Recovery

Rick got to have his files recovered! What is the random password used to encrypt the files?
里克必须恢复他的文件!用于加密文件的随机密码是什么?

image
把恶意程序dump下来,然后strings电脑名

strings -el ./3720.dmp | grep "WIN-LO6FAF3DTFE-Rick"

-e 后面通常要跟具体的编码格式指定,比如 strings -e l 表示按照 16 位 little-endian 编码来提取字符串;strings -e b 表示按照 16 位 big-endian 编码提取字符串等,它主要用于处理一些特定编码格式下的二进制文件以准确提取其中可识别的字符串内容。
-l 可能用于指定最小字符串长度,也就是只提取长度达到指定值的字符串

flag:aDOBofVYUNVnmp7

标签:profile,文件,--,py,vol,内存,OtterCTF,python2,2018
From: https://www.cnblogs.com/K4N0/p/18615923

相关文章

  • 在 Windows Server 环境中(DMSA)  Dynamic Memory Support Architecture(动态内存支持架
    在WindowsServer环境中 DynamicMemorySupportArchitecture(动态内存支持架构),特别是在Hyper-V虚拟化环境中。动态内存支持架构(DMSA)在Hyper-V中的作用在Hyper-V虚拟化平台中,动态内存(DynamicMemory)是一个重要的功能,它能够根据虚拟机的实时负载动态调整内存的分配,以......
  • 【Rust自学】4.2. 所有权规则、内存与分配
    4.2.0写在正文之前在学习了Rust的通用编程概念后,就来到了整个Rust的重中之重——所有权,它跟其他语言都不太一样,很多初学者觉得学起来很难。这个章节就旨在让初学者能够完全掌握这个特性。本章有三小节:所有权:栈内存vs.堆内存所有权规则、内存与分配(本文)所有权与函数说......
  • 【Rust自学】4.1. 所有权:栈内存 vs. 堆内存
    4.1.0写在正文之前在学习了Rust的通用编程概念后,就来到了整个Rust的重中之重——所有权,它跟其他语言都不太一样,很多初学者觉得学起来很难。这个章节就旨在让初学者能够完全掌握这个特性。本章有三小节:所有权:栈内存vs.堆内存(本文)所有权规则、内存与分配所有权与函数喜......
  • 明察秋毫--用ss工具统计网络栈内存使用
    前言本文介绍了用ss工具来统计一下当前网络栈的内存使用情况环境准备组件版本操作系统Ubuntu22.04.4LTS查看socket内存相关参数,-m参数▶ss-tmStateRecv-QSend-QLocalAddres......
  • Linux内存泄露案例分析和内存管理分享
    作者:京东科技李遵举一、问题近期我们运维同事接到线上LB(负载均衡)服务内存报警,运维同事反馈说LB集群有部分机器的内存使用率超过80%,有的甚至超过90%,而且内存使用率还再不停的增长。接到内存报警的消息,让整个团队都比较紧张,我们团队负责的LB服务是零售、物流、科技等业务服务的流......
  • 获取任意一个进程的共享内存的fd对应的资源,增加引用,实现数据的接管——包含非export的
    一、背景在之前的 memfd配合跨进程传输fd的例子及原理-CSDN博客博客里,我们讲了跨进程通过socket传递fd的底层实现原理,并且给了一个例子来替代socket传输和转换部分的逻辑,直接使用底层fd和file的接口来通过模块ko来实现跨进程的fd的转换和重新映射。这篇博客里,我们继续fd的......
  • 代码危机:“内存溢出” 事件的深度剖析与反思
    在我初入编程世界的时候,曾天真地以为只要逻辑严谨,代码就会如预期般顺畅运行。然而,一个名为“内存溢出”的恶魔,给我上了刻骨铭心的一课。电商平台订单系统:危机初现        当时我所在的团队正在全力开发一款大型电商平台的订单处理系统。这个系统需要处理海量的订单......
  • Vue - 萤石云监控 ezuikit 视频实例销毁方案,解决使用stop方法无法销毁EZUIKit实例或销
    前言这方面教程很少,本文提供详细解决方案。在vue2|vue3项目开发中,项目集成对接萤石监控摄像头如何销毁EZUIKit实例教程,解决页面存在多个实时监控画面视频情况下,关闭某一个监控依然有声音和占用浏览器内存问题,另外如果要管理的摄像头监控播放器很多会导致分页情况下......
  • 了解垃圾回收机制与内存泄漏
    目录一、垃圾回收机制的基本原理(1)基本原理理解(2)回收二、垃圾回收的算法1.标记清除算法2.引用计数算法三、减少垃圾回收(1)减少对象创建(2)优化数据结构及内存分配优化(3)避免内存泄漏四、避免内存泄漏的建议(1)导致内存泄漏(2)避免内存泄漏前提:前端的垃圾回收机制主要指......
  • 嵌入式动态内存管理实现V2
    一、说明动态内存管理指的是在程序需要内存时申请,在使用完成后释放,保证以比较少的内存实现更多的软件需求。与之相对的是静态内存,典型的静态内存就是全局变量:在程序启动时到整个生命空间内都占用空间。动态内存的特点就是实现内存的“按需使用”,在嵌入式开发环境中,节省ram实现......