…
计算机取证
取证过程所遵循的基本原则:
- 维护证据完整性;
- 数字取证可以无限数量拷贝分析;
- 数字HASH可以验证数据完整性;
- 维护监管链;
- 标准操作步骤;
- 证物使用按照流程规范,即使事后证明流程有误(免责);
- 取证分析全部过程记录文档。
考虑事项:
- 不要破坏数据现场(实际几乎无法实现,除非是虚拟机);
- 寄存器,CPU缓存,IO设备缓存等易失性存储器几乎无法获取;
- 系统内存是易失存储器中主要的取证对象,不修改无法获取其中数据;
- 非易失存储器通常使用完整镜像拷贝保存;
- 正常关机(会被恶意软件察觉)还是直接拔掉电源(会损坏数据)。
证据搜索:数据->信息>证据。
取证方法:
- 活取证
- 抓取文件metadata,创建时间线,历史命令,分析日志,哈希摘要,转存内存信息;
- 使用未受感染的干净程序取证(包括cd,ls等常用指令,甚至终端程序)
- U盘/网络存储收集到的证据
- 死取证
- 关机后制作硬盘镜像,分析镜像(MBR,GPT,LVM)
内存取证
内存中保存着非常重要的信息。一旦内存数据被窃取,该机器上包括系统信息,系统用户,应用软件信息,应用软件缓存(如Web服务中的session等)都会被窃取。
内存取证工具:
- 内存Dump工具:Dumpit;
- 内存文件与内存大小接近,RAW格式。
该工具可以一键保存内存转储文件到桌面,也可以存到其他位置。
以Windows为例:
分析工具 volatillity:
1 2 3 4 5 6
| volatillity imageinfo -f xp.raw volatillity hivelist -f xp.raw --profile=WinXPSP3x86 volatillity -f xp.raw --profile=WinXPSP3x86 hivedump -o 0xe124f8a8 volatillity -f xp.raw --profile=WinXPSP3x86 printkey -K "SAM\Domains\Account\Users\Names" volatillity -f xp.raw --profile=WinXPSP3x86 printkey -K "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" volatillity -f xp.raw --profile=WinXPSP3x86 userassist
|
在Kali系统中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| volatillity -f xp.raw --profile=Win7SP1x64 pslist
volatillity -f xp.raw --profile=Win7SP1x64 memdump -p 1456 -D mem/
hexeditor 1456.dmp strings 1456.dmp strings 1456.dmp | more strings 1456.dmp | grep password
volatillity -f xp.raw --profile=Win7SP1x64 pstree
volatillity -f xp.raw --profile=Win7SP1x64 hivelist
volatillity -f xp.raw --profile=Win7SP1x64 hivedump -o 0xfffff8a0004a5010
volatillity -f xp.raw --profile=Win7SP1x64 printkey -K "SAM\Domains\Account\Users\Names"
volatillity -f xp.raw --profile=Win7SP1x64 printkey -K "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
volatillity -f xp.raw --profile=Win7SP1x64 hashdump -y system虚存地址 -s SAM虚存地址
volatillity -f xp.raw --profile=Win7SP1x64 userassist
volatillity -f xp.raw --profile=Win7SP1x64 cmdscan
volatillity -f xp.raw --profile=Win7SP1x64 netscan volatillity -f xp.raw --profile=Win7SP1x64 connscan
volatillity -f xp.raw --profile=Win7SP1x64 iehistory
volatillity -f xp.raw --profile=Win7SP1x64 usnparser --output=csv --output-file=usn.csv
volatillity -f xp.raw --profile=Win7SP1x64 timeliner
|
内存取证发现恶意软件简易流程:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| volatillity imageinfo -f xp.raw
volatillity -f xp.raw --profile=WinXPSP3x86 pstree
volatillity -f xp.raw --profile=WinXPSP3x86 connscan
volatillity -f xp.raw --profile=WinXPSP3x86 getsids -p 111,222
volatillity -f xp.raw --profile=WinXPSP3x86 dlllist -p 111,222
volatillity -f xp.raw --profile=WinXPSP3x86 malfind -D result/
volatillity -f xp.raw --profile=WinXPSP3x86 malfind -p 111 -D result/
|
活取证
内存还原文字
procdump工具:下载
strings工具:下载
1 2 3 4 5
| procdump -ma notepad.exe notepad.dmp
strings notepad.dmp > notepad.txt
|
内存还原图像
获取内存:
1 2
| procdump -ma mspaint.exe mspaint.dmp
|
进入Kali:
修改mspaint.dmp
文件名为mspaint.data
。
安装gimp:
打开gimp,选择文件类型.raw
,打开mspaint.data
文件,通过修改偏移与图像类型,一点点调试得到可能有图片的位置,再微调宽度得到图像。
内存还原密码
当前的用户密码明文一般存在lsass.exe进程。
1
| procdump -ma lsass.exe lsass.dmp
|
打开mimikatz,输入命令:
1 2
| sekurlsa::minidump lsass.dmp sekurlsa::logonPasswords
|
即可查看相应内容。
死取证
硬盘镜像
通过Kali光盘进入取证模式访问计算机,准备生成镜像文件。
打开guymager,使用两种方式查找硬盘。选择硬盘,右键,产生镜像。产生的镜像可以加入Meta信息和哈希值以防止篡改。
查看镜像可以用:
- DFF工具(digital forensics framework)。
- Autopsy(web架构)。
- Extundelete:适用ext3,ext4文件系统。
1
| extundelete [device-file] --restore-file [restore location]
|
- iPhone Backup Analyzer:只能用于分析iTunes生成的备份文件。
- Foremost:从内测中恢复图片,支持raw,dd,iso,vmem等格式。
1
| foremost -t jpeg,gif,png,doc -i 7.raw
|
网络取证
可以参考《协议分析》:全流量镜像还原历史。