做这个也是花了很长时间,很多指令都没见过,包括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内存的样本。你能拿到他的用户密码吗?
照例dump信息下来
指令: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地址是什么?
指令:python2 vol.py -f /文件路径/文件 --profile==Win7SP1x64 hivelist
hivelist:使用 hivelist 确定了感兴趣的注册表配置单元的偏移量和名称后,可以结合 printkey 插件来打印出该配置单元内特定键值的详细信息
一般的电脑的名字一般是在SYSTEM的路径下
python2 vol.py -f /文件路径/文件 --profile=Win7SP1x64 -o 0xfffff8a000024010 printkey
这里0xff这个是这个文件的地址路径,-o加上这个参数,在使用printkey打印SYSTEM的文件夹里
指令:python2 vol.py -f /文件路径/文件 --profile=Win7SP1x64 -o 0xfffff8a000024010 -K "ControlSet001"
指令:python2 vol.py -f /root/桌面/Memory/OtterCTF2018/otter.vmem --profile=Win7SP1x64 -o 0xfffff8a000024010 printkey -K "ControlSet001\Control\ComputerName\ComputerName" printkey
此时获得了电脑的名称WIN-LO6FAF3DTFE
指令: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地址是多少?
指令:python2 vol.py -f /文件路径/文件 --profile=Win7SP1x64 pslist
这里这个百度出来,是个游戏(其实是看别的佬才知道这个是游戏)
指令: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的电子邮件密码是多少?
指令: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的频道。帐户名称是什么?
这里有两个方法:
第一种:是010直接搜Lunar-3
第二种:dump这程序,搜索字符串
指令:python2 vol.py -f /文件路径/文件 --profile=Win7SP1x64 memdump -p 708 -D /文件路径/文件
memdump:主要用于从内存转储文件中提取特定内存区域的数据,并将其保存为独立的文件,通常可以是进程内存、内核内存或者其他感兴趣的内存部分
指令: 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内存的原因是存在恶意软件感染。请查找恶意软件进程名称(包括扩展名)
python2 vol.py -f /文件路径/文件 --profile=Win7SP1x64 pstree
psree: 主要用于展示内存中进程的层次关系
这里直接截到vmware-tray.exe,其实是感觉这个程序有问题,毕竟是在Rick And Morty的目录下,一个还行动画,回看上面的答案啥的都会发先,全在指向这部动漫,这里我选择把这个程序dump下来进行分析
使用python2 vol.py -f /文件路径/文件 --profile=Win7SP1x64 procdump -p 3720 -D /文件路径/文件
procdump:它能够从内存转储文件中提取特定进程的内存内容
放到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里搜索就行了
指令: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…
恶意软件是如何进入里克的电脑的?这一定是一个古老的非法习惯……
python2 vol.py -f /文件路径/文件 --profile=Win7SP1x64 filescan | grep "Rick And Morty
这里使用指令看Rick And Morty的路径下,重点主要是种子,这里全部dump下来
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去看
根据上下文
flag:1MmpEmebJkqXG8nQv4cjJSmxZQFVmFo63M
Graphic's For The Weak
There’s something fishy in the malware’s graphics.
恶意软件的图形中有可疑之处。
直接使用foremost分离
Path To Glory 2
Continue the search after the way that malware got in.
继续搜索恶意软件进入的方式。
这一题也是挺迷的,翻译出来也迷,也只能看wp
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?
里克必须恢复他的文件!用于加密文件的随机密码是什么?
把恶意程序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