网络与系统安全

计算机取证

取证过程所遵循的基本原则:

  • 维护证据完整性;
    • 数字取证可以无限数量拷贝分析;
    • 数字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  # 信息文件,关注profile
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
# 查看某进程内存,-D 输出到目录,-p 进程PID
volatillity -f xp.raw --profile=Win7SP1x64 memdump -p 1456 -D mem/
# 借助工具查看进程内存
hexeditor 1456.dmp # 查看16进制数据
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
# 查看某注册表蜂巢的内容,使用相应的虚内存地址
# 例如查看 \SystemRoot\System32\Config\SOFTWARE 蜂巢
# 可以看到系统上所有注册安装的软件
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
# IE历史信息
volatillity -f xp.raw --profile=Win7SP1x64 iehistory
# USN日志记录插件
# NTFS特性,用于追踪硬盘内容变化(不记录具体变更内容)
# 下载地址 https://raw.githubusercontent.com/tomspencer/volatillity/master/usnparser/usnparser.py
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
# 分析 利用PID查看SID,可多个
volatillity -f xp.raw --profile=WinXPSP3x86 getsids -p 111,222
# 分析 DLL 调用情况
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/
# 对可疑程序利用杀软检查
# 或使用网站virustital查看

活取证

内存还原文字

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:

1
apt-get install 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

网络取证

可以参考《协议分析》:全流量镜像还原历史。