Forensics
概述
比较典型的内存取证、恶意软件分析的案例。
首先提供了一个vmem的内存镜像,使用volatility进行分析。
确定其操作系统为Win7:
volatility -f OtterCTF.vmem imageinfo
一、获取默认用户的密码
两种常规操作方法:
第一种方法:
首先使用hivelist获取到SYSTEM和SAM注册表项的虚拟地址
接着使用hashdump将用户的NTLM哈希(最后一部分)显示出来进行破解。
当然,这里使用了cmd5在线破解或者john去破解都没有成功。
第二种方法:
直接使用lsadump插件
第一题:CTF{MortyIsReallyAnOtter}
二、获取PC名称和IP地址
主机的IP地址可以通过netscan命令查询,在win7系统取证里。
诸如connections、connscan、sockets和socketscan,上述4个命令适用于Windows XP和2003系统。
从Local Address即可确定PC的IP地址为:192.168.202.131
接着确定PC的主机名,这就需要从对应注册表项里进行读取,同样使用hivelist确定SYSTEM的虚拟地址,然后使用printkey打印数据。
注意这里读取的注册表项为:
ControlSet001\Control\ComputerName\ComputerName
得到主机名为:WIN-LO6FAF3DTFE
第二题:
CTF{192.168.202.131}
CTF{WIN-LO6FAF3DTFE}
三、获取游戏名称和服务器IP
为了了解Rick玩了什么游戏,需要从命令行里看看有没有启动什么exe文件,使用cmdline命令,最终经过简单的过滤,发现LunarMS是一款比较老的游戏。
然后要获取对应的服务器IP地址,只需要查看刚才执行的netscan命令里的对应进程号,即708
服务器IP地址为:77.102.199.102
第三题:
CTF{LunarMS}
CTF{77.102.199.102}
四、获取游戏账号
既然是玩这个LunarMS的游戏,那么就用memdump把对应708进程的内存dump出来
Dump出来后再使用strings去搜索对应字符串Lunar-3
疑似账号:0tt3r8r33z3,提交成功。
第四题:CTF{0tt3r8r33z3}
五、获取游戏角色名称
使用strings搜索对应的签名显然没有奏效,一种思路是将上面dump出的708进程的文件使用二进制编辑软件打开,这里签名用到了正则,取最后一部分,搜索5a0c0000 hex串,结果有185个结果。
另一种思路是使用volatility里的yarascan,将要搜索的签名转换为对应的Yara rules:
/\x64(.{6,8})\x40\x06(.{18})\x5a\x0c\x00\x00/
于是定位到了角色名称为M0rtyL0L
第五题:CTF{M0rtyL0L}
六、获取邮箱密码
从题目中可以get到Rick会使用Windows的剪贴板功能,volatility里有专门查看剪贴板内容的命令clipboard
第六题:CTF{M@il_Pr0vid0rs}
七、获取感染恶意软件名称
首先使用pstree查看进程之间的关系
可以看到vmware-tray.exe是Rick And Morty的子进程,这就很奇怪了,因为vmware-tray.exe是vmware workstation的托盘程序,不可能是它的子进程。使用memdump将对应的3720进程导出尝试通过上传到virustotal里识别,但是文件太大。
继续查看对应3720进程调用的DLL文件
可见程序从Temp目录下执行,显然上面的Rick And Morty充当的是一个dropper用来释放恶意程序的。
第七题:CTF{vmware-tray.exe}