神器volatility
介绍
说到内存取证,必须要提到volatility
Volatility是开源的Windows,Linux,MaC,Android的内存取证分析工具,由python编写成,命令行操作,支持各种操作系统。
使用
判断镜像信息,获取操作系统类型1
volatility -f ?.img/raw/... imageinfo
知道操作系统类型后,用--profile
指定1
volatility -f ?.img --profile=...
查看当前显示的notepad文本1
volatility -f file.raw --profile=WinXPSP2x86 notepad
查看当前运行的进程1
volatility -f file.raw --profile=WinXPSP2x86 psscan/pslist
扫描所有的文件列表(常常结合grep)1
volatility -f file.raw --profile=WinXPSP2x86 filescan
根据offset提取出文件1
volatility -f file.raw --profile=WinXPSP2x86 dumpfiles -D . -Q 0x.....
扫描 Windows 的服务1
volatility -f file.raw --profile=WinXPSP2x86 svcscan
查看网络连接1
volatility -f file.raw --profile=WinXPSP2x86 connscan
查看命令行上的操作1
volatility -f file.raw --profile=WinXPSP2x86 cmdscan
根据pid dump出相应的进程1
volatility -f easy_dump.img --profile=Win7SP1x64 memdump -p 2580 -D 目录
护网杯easy_dump
这个题目当时队友做出倒数第二步的时候剩下8秒,最终排名64名,前60进决赛,有点可惜。其实这题并不难。。估计600M劝退了很多人。
首先我们拿到一个600M的img文件,放到volatility
里,首先imageinfo
一般--profile
就用第一个,然后,在指定--profile
的基础上,pslist
一波看到有一个notepad.exe
,把它dump出来binwalk
一下,发现一堆东西然后foremost
,拿到一些好东西~有两个一样的zip,解压一下看看发现又有一个img,这个img就不一样了,不能用volatility
跑其实这时候strings一波已经能看到里面的很多东西查到挂载img文件的方法mount -o loop message.img /mnt
挂载一波,然后到/mnt
目录下,由于之前strings
的时候看到有.开头的文件,这里有意识地用ls -a
可以看到一个hint.txt
,一个.Trash-0
,分别看一下.Trash-0
是一个目录,里面有个文件有可疑的字符串,hint.txt
看上去像个点阵,于是尝试画出来,根据点阵画图脚本如下1
2
3
4
5
6
7
8
9
10
11
12
13from PIL import Image
with open('hint.txt','r') as f:
points = f.readlines()
pic=Image.new('RGB',(600,600),'black')
pix=pic.load()
for i in points:
i=i.strip().split(' ')
pix[int(i[0]),int(i[1])]=(255,255,255)
pic.save('out.png','png')
get an image扫一波:提示是维吉尼亚的key,联想到刚刚的那串可疑字符串,拿去解密一下,getflag。
InCTF 2018 Evil Crypter
题目给了个900多M的raw文件,很有可能就是内存取证了。直接imageinfo
看看然后指定profile
,pslist
把notepad.exe
拿出来看看,发现没什么东西。于是filescan
,找一些关键目录可以看到Desktop
有一个图片,还有个evilscript.py.py
,还有个vip.txt
,都拿出来。然后读一下,发现py文件是个很简单的加密,而vip.txt
则是加密后的结果简单脚本逆出原文拿了一半的flag,这时候把目光转到图片,直接看看不出什么东西。拿到steghide
,用一半的flag做密码,成功提取出另一半flag。