镜像取证笔记
镜像取证
活取证是在主机存活时发现系统被入侵,然后直接把机器的运行内存 dump 下来,对运行内存进行分析,还原一些进程的中的信息。
主要的工作包括但不限于
- 抓取文件 metadata (元数据)
- 创建时间线
- 命令历史
- 分析日志文件
- 哈希摘要
- 转存内存信息
而死取证是对机器的磁盘做镜像之后进行分析,在关机后制作硬盘镜像,分析镜像(MBR硬盘分区,GPT全局分区表,LVM逻辑卷)是否存在病毒,木马等恶意程序。
不管是那种取证方式都应尽量避免破环犯罪现场,例如通过内存转储工具对内存进行快照,通过磁盘克隆工具对磁盘进行克隆,方便后期的分析工作。
磁盘取证
DiskGenius
DiskGenius 是一款国产收费软件,存在免费版可供使用。
使用 DiskGenius 可以自由对磁盘作许多操作,同时它也可以进行恢复数据、读取磁盘映像等操作。(需要注意的是,很多操作需要付费后才可使用)
使用 DiskGenius 磁盘取证会更加方便。
ext 磁盘映像挂载
在 Windows 中可以使用 explore2fs 临时挂载 ext 文件系统的磁盘映像,但是我们只可以看到未被删除的文件,同时也不可以进行写的操作。
ext3 / ext4 磁盘映像恢复已删除文件
我们可以使用 extundelete
软件恢复 ext3 / ext4
磁盘映像下已经被删除的文件,但无法保证任何特定文件都能够被取消删除。
extundelete
是 Linux 的软件,例如 Debian
系的发行版我们都可以直接使用 apt install extundelete
安装此软件。
只需使用以下简单命令便可以恢复已删除文件。
1 | extundelete disk-image --restore-all |
FTK Imager
FTK Imager 是免费的一个挂载映像和导出映像的软件,可以使用其来挂载读取磁盘映像,但需要注意的是,由于是免费软件,仅支持基础的功能,但读取的数据较为原始,可以直接查看到删除和未使用的分区。
相对来说,本人更推荐使用 DiskGenius。
BitLocker
BitLocker 是微软开发的一款磁盘加密软件,用于加密卷和映像,支持使用明文密码来加密卷或映像。
要想恢复 BitLocker 加密后的文件,需要使用明文密码、恢复密钥或备份文件之一来解密。
使用 BitLocker 加密就一定会需要让你导出恢复密钥,所以可以在文件夹中寻找恢复密钥的存在。
Elcomsoft Forensic Disk Decryptor
Elcomsoft Forensic Disk Decryptor,简写 EFDD,是一款从内存镜像中提取密钥信息的软件,支持对 BitLocker 和 Veracrypt 的密钥提取。
使用 Extract keys
功能即可提取密钥。
使用 Decrypt or mount disk
功能即可使用密钥解密加密卷。
对于 Veracrypt 密钥提取的前提是,设置了密码保存在内存中。
对于 .vmdk
文件可能需要解压缩。
LUKS
LUKS 是流行在 Linux 上的卷加密软件,对标 Windows 平台上的
BitLocker。
hashcat 只需要加密文件系统的前 2 MB 即可推断密码是否已被破解,所以一般建议切割以加速爆破。
1 | dd if=file of=file-cut bs=512 count=4097 |
随后跑命令
1 | hashcat -m 14600 -a 3 file-cut ?d?d?d?d?d?d |
Veracrypt
Veracrypt 是一款基于 Truecrypt 的开源软件,同款竞品是微软的 BitLocker,用于加密卷和映像,支持使用明文密码和文件来进行加密卷或映像。
进行挂载加密卷或映像时,可以按照下图示例使用。
当使用 veracrypt 进行隐藏数据时,没有可识别特征,只能通过密码进行爆破(Hashcat 和 John 均支持对 veracrypt 哈希值的密码爆破)。
唯一可能识别的特征是,数据是不可读的,同时大小是整的,这是由于加密出来的结果是自选的,一般人类更爱整数。
同时 veracrypt 还存在隐藏卷和隐藏密码,这也是无法寻找特征的技术。
需要注意的是,veracrypt 特点是可以使用任意密钥文件进行加密,所以密钥的保存较为灵活。
不过 veracrypt 在解密时存在选项
在内存中缓存密码和密钥文件
,这将导致 veracrypt
的密码可以在内存映像中找到。
空白填充
在主流文件系统中,为保证读写 I/O 效率,通常会将硬盘数据进行对齐,如 14 kb 文件会占用 16 kb 的存储空间,同时,同一个文件夹下的文件很有可能在硬盘数据上间隔很远。
由于这些约定,磁盘软件并不会对其进行识别,但需要注意的是有可能在其中会暗藏数据。
查看这部分没有被索引的数据,可以通过 DiskGenius 进行扇区编辑。
内存取证
内存取证主要依赖于 volatility
工具,现在已经更新到
python3 的版本了。
具体有关 volatility3
的操作可以参考 volatility3 使用笔记。
插件
bitlocker
bitlocker 是 volatility2
的一款插件,用于提取内存镜像中
bitlocker 的密钥信息,包括 FVEK,TWEAK 等。
可以使用软件 bdemount
和 FVEK,TWEAK 一起进行挂载
bitlocker 加密卷。
-k 密钥,例如:FVEK:TWEAK
-o 以字节为单位指定卷偏移
-p 指定密码
-r 指定恢复密码
-s 指定包含启动密钥的文件,该文件扩展名为.BEK
示例:
1 | bdemount -k 0d393d80bf512f5e501a8bfad3272965:cf71859b45775123fcc1dad3007d1c41 D.dd ./crypt-1 |
其他
AccessData
Registry Viewer
注册表查看器,相比起系统的 regedit 更加美观直接。
DumpIt
一款内存取证软件,用于导出内存镜像。
fulleventlogview
Windows 事件查看器升级版,读取速度更加快且更加直接。
NtfsStreamsEditor2
NTFS 流编辑器。
ProcessMonitor
系统进程监视软件,相当于 Filemon+Regmon,即文件监视和注册表监视。
SecurityQuestionsView
可以查看 Windows 的安全问题。
Structured Storage Viewer
结构化存储查看器,主要功能是 Windows 下许多结构化存储的文件的可视化。
特殊软件数据
Firefox
PasswordFox 可以从
Users\Semah\AppData\Roaming\Mozilla\Firefox\Profiles\pyb51x2n.default-release
目录中提取出密码。
GameMaker
可以使用工具 UndertaleModTool 进行拆包分析。
在 Users\username\AppData\Roaming\WhatsApp\Databases
目录下,数据库文件 msgstore.db
明文保存聊天记录。
GUI
对于拥有 GUI 的程序,其输出的 GUI
图像会被存在相关联的内存中,如果我们将其相关的内存转储(memdump
),通过手工处理(比如说利用GIMP)可以在其中寻找到
GUI 图像。
便笺
便笺数据被存放在 StickyNotes.snt
中。
在 Windows7 中的路径在
%APPDATA%\Roaming\StickyNotes\StickyNotes.snt
。在 Windows10 中的路径在
%LOCALAPPDATA%\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\plum.sqlite
使用脚本可以导出、还原便笺数据:StickyParser
使用 MiTEC 提供的免费软件也可以查看 snt 数据:Structured Storage Viewer
Windows 诊断数据
EventTranscript.db
是 Windows
诊断数据库,有时其中可能会有一些信息,可以使用 EventTranscriptParser
提取其中的数据。
该工具目前支持以下功能。
- 提取 Microsoft Edge 浏览历史记录
- 提取应用程序清单
- 提取无线扫描结果。
- 提取成功的 WiFi 连接事件
- 提取用户的默认首选项(视频播放器、默认浏览器等...)
- 提取SRUM信息
- 应用程序执行
- 应用网络使用情况
- 提取应用程序执行活动