1、概述
# 1)什么是 Volatility
Volatility
是开源的Windows,Linux,MaC,Android的内存取证分析工具。基于Python
开发而成,可以分析内存中的各种数据。Volatility
支持对32位或64位Wnidows、Linux、Mac、Android操作系统的RAM数据进行提取与分析。
volatility
使用:
volatility -f <文件名> --profile=<配置文件> <插件> [插件参数]
# 2)什么是objdump
objdump
命令是Linux下的反汇编目标文件或者可执行文件的命令。objdump
工具可以用来显示二进制文件的信息,就是以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。
# 3)什么是BitDefender(bdscan)
Bitdefender(bdscan)
是一款适用于Unix和Linux环境的防病毒扫描程序,具有检测和删除特洛伊木马,rootkit,流氓软件,广告软件,垃圾邮件等功能。
# 4)前提条件:
已经通过Kali
对MS10-061
漏洞进行攻击,取证收集
# 2、实验步骤
1)确定Volatility
的配置文件
2)提取网络连接信息
3)关联可疑网络连接与进程ID
4)关联文件与进程ID
5)关联DLL与后门程序
6)扫描后门程序
# 3、配置分析环境
1)登录到Kali
2)设置 Volatility
执行程序权限
3)将Volatility
路径添加到环境变量中
# 4 、确定要使用的Volatility 的配置文件
1)查看取证文件
2)查看镜像信息
vol.py imageinfo -f ms10_061.dd
Volatility
将检测镜像的操作系统版本信息,需要一点时间,耐心等待
检测结果提示建议的配置文件是:WinXPSP2x86,WinXPSP3x86
,在这儿我们用WinXPSP2x86
好了
# 5、关联网络连接与进程ID
# 1)检测网络连接
vol.py --profile=WinXPSP2x86 -f ms10_061.dd connections
vol.py --profile=WinXPSP2x86 -f ms10_061.dd connscan //查看网络连接状态
其中139
是NetBIOS
端口,445
是SMB
端口,9999
是 Meterpreter
会话 回连端口,7777
是Helix
内存取证收集端口
其中 PID 392
就是Meterpreter
会话回连进程的ID
# 2)查看进程信息
vol.py --profile=WinXPSP2x86 -f ms10_061.dd pslist | egrep '(Offset|----------|392)'
其中,PID:进程号,PPID是进程的父进程号
还可以用 pstree
以树形结构查看进程表
从进程中我们看到一个很可疑的进程名:g9bMJIYNoBtyOS
,而且它还包括cmd
的子进程
# 3)使用(dlllist
)显示进程加载的DLL
vol.py --profile=WinXPSP2x86 -f ms10_061.dd dlllist | grep "g9bMJIYNoBtyOS"
通过这一步分析,我们可以得出以下结果:
g9bMJIYNoBtyOS
这个可疑的进程(PID:392
)连接到了远程主机192.168.1.34
的9999
端口,而且目录是 C:\WINDOWS\system32
通常来说此目录(C:\ WINDOWS \ system32
)应仅包含系统特定的程序(可执行文件)和库(DLL
)
# 6、关联文件与DLL
objdump g9bMJIYNoBtyOS.exe -x -D | grep "DLL Name"
WSOCK32.dll
是一个用于网络连接(TCP/IP连接)的Windows库文件
# 7、从内存中查找隐藏的恶意程序
使用 malfind
参数分析进程ID
1)首先在进程中搜索 svchost
进程
svchost.exe
是承载多个Windows服务的系统进程
vol.py --profile=WinXPSP2x86 -f ms10_061.dd pslist | grep svchost
然后我们用 malfind
参数搜索进程中隐藏或注入的DLL/代码
vol.py --profile=WinXPSP2x86 -f ms10_061.dd malfind -p 864,944
拿svchost
的进程ID
进行查找,没有发现
再拿可疑进程ID试试
这次显示了很多信息
# 8、使用BitDefender扫描可执行文件
bdscan --no-archive --action=ignore g9bMJIYNoBtyOS.exe | tee ms10_061_bdscan.txt
# 9、从注册表提取用户信息
使用 hivelist
参数在内存中找到注册表配置单元的虚拟地址,以及在磁盘上的完整路径
1)查找 system
和SAM
两个注册表键值的虚拟地址
vol.py --profile=WinXPSP2x86 -f ms10_061.dd hivelist | egrep '(system$|SAM$)'
2)然后通过 hashdump
将文件保存出来
3)提取管理员SAM
文件
4)使用John
破解管理员密码
cat /dev/null > /root/.john/john.pot //清除pot文件,里面包含以前破解的密码
john --format=nt admin_sam.txt | tee admin_passwd.txt //--format=nt表示为WindowsNT密码