镜像取证笔记

镜像取证

活取证是在主机存活时发现系统被入侵,然后直接把机器的运行内存 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 operation

当使用 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 进行拆包分析。

WhatsApp

Users\username\AppData\Roaming\WhatsApp\Databases 目录下,数据库文件 msgstore.db 明文保存聊天记录。

GUI

对于拥有 GUI 的程序,其输出的 GUI 图像会被存在相关联的内存中,如果我们将其相关的内存转储(memdump),通过手工处理(比如说利用GIMP)可以在其中寻找到 GUI 图像。

参考链接:https://medium.com/mii-cybersec/remote-desktop-connection-mstsc-exe-screen-in-a-memory-dump-analysis-e7e00895dd4a

便笺

便笺数据被存放在 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信息
    • 应用程序执行
    • 应用网络使用情况
  • 提取应用程序执行活动