ir-rescue 由两个姊妹脚本组成,用于从 32 位和 64 位 Windows 系统 (ir-rescue-win) 以及 Unix 系统 (ir-rescue-nix) 收集大量的 取证数据。脚本遵循易失性顺序以及执行过程中会发生变化的工件(例如,Windows 上的预取文件),旨在用于 事件响应 在分析和调查过程的不同阶段。每个脚本描述如下:
ir-rescue-win 完全用 Batch 编写,可以设置为对特定类型的 实时数据 和来自可用卷影复制服务 (VSS) 副本的 历史数据 执行全面且定制化的采集。 ir-rescue-win 使用了内置的 Windows 命令以及来自 Sysinternals 和 NirSoft 的知名第三方工具(其中一些是开源的)。为了使其具有横向兼容性,未使用 PowerShell 和 Windows 管理规范 (WMI)。
ir-rescue-nix 使用 Bash(v4+)编写,并使用了内置的 Unix 命令。某些使用的命令可能不符合 POSIX 标准,因此可能在某些类 Unix 系统或变体(尤其是较旧的操作系统)上不可用。
ir-rescue 旨在根据数据类型对数据收集进行分组。例如,所有与网络相关的数据(例如打开的文件共享和传输控制协议 (TCP) 连接)被归为一组,而正在运行的进程、服务和任务则归入恶意软件类别。数据类型的采集以及其他通用选项在一个简单的 配置文件 中指定。需要注意的是,脚本会启动大量命令和工具,从而在系统上留下相当大的 痕迹(例如,内存中的字符串、预取文件、程序执行缓存)。运行时间取决于计算能力、磁盘写入吞吐量和配置的设置。如果设置了安全删除,并且转储 64 位内存(通常为 8 GB),磁盘性能尤其重要,这可能会花费大量时间。
ir-rescue 是为事件响应和取证分析师以及安全从业人员编写的,并被思科、百事可乐、SaskTel、Praetorian 和 Counteractive Security 等公司使用。它代表了一种简化主机数据收集的努力,无论调查需求如何,并且在无法远程访问或实时分析时,减少对现场支持的依赖。因此,它可以用于在取证活动中利用已捆绑的工具和命令。
ir-rescue 依赖于许多 用于从主机收集特定数据的第三方实用程序。工具的版本在最后一节中列出,并按原样随包提供,因此,在运行 ir-rescue 之前必须接受它们的许可证和用户协议。请注意,根据 Sysinternals 软件许可条款,Sysinternals 实用程序不能重新分发给他人复制。因此,ir-rescue 不再与 Sysinternals 实用程序一起发布,因此,必须在 Sysinternals Live Repository 中下载第三部分工具列表和参考中列举的所有条目,并将它们移动到适当的文件夹中,以便脚本运行。
下面给出了工具集的描述和组织,如果适用,同时包含 Windows 工具的 32 位和 64 位版本:
tools-nix/:ir-rescue-nix 的第三方工具文件夹:
ascii/:*.txt 格式的文本 ASCII 艺术文件;cfg/:配置文件:
ir-rescue-nix.conf:ir-rescue-nix 的主配置文件;nonrecursive-(hidden|md5sum).txt:隐藏文件和 md5sum 非递归位置;nonrecursive.txt:多个工具的非递归位置;recursive-(exec|hidden|md5sum).txt:可执行文件、隐藏文件和 md5sum 递归位置;recursive.txt:多个工具的递归位置;mem/:内存工具:
AVML-0.21(64 位 ELF):转储内存;ir-rescue-win 需要在具有 管理员权限 的命令控制台运行,而 ir-rescue-nix 需要在具有 root 权限 的命令行窗口运行。两者都不需要参数,并使用各自的配置文件来设置所需选项。因此,只需如下执行脚本文件即可:
ir-rescue-win-v1.w.x.bat,或./ir-rescue-nix-v1.y.z.sh。某些执行递归搜索或扫描的工具仅设置为在特定文件夹上递归。这使得数据收集更有针对性,同时考虑到运行时间性能,因为这些指定的文件夹由于恶意软件的广泛使用而可能是分析的位置。Windows 和 Unix 系统的 递归搜索 和 非递归搜索 的位置可在配置文件夹下的相应文本文件中随意更改。某些工具具有专用的文件,指定了需要递归和不递归的特定位置。这些文件命名为 recursive-<tool>.txt 和 nonrecursive-<tool>.txt,其中 <tool> 替换为工具名称。每个文件必须每行包含一个 完整路径位置,末尾不带反斜杠或正斜杠。
在运行时,所有打印到标准输出 (STDOUT) 和标准错误 (STDERR) 通道的字符都会被记录到 UTF-8 编码的文本文件中。这意味着工具的输出会存储在相应的文件夹和文本文件中。状态 ASCII 消息仍会打印到控制台,以便检查执行进度。在 %TEMP%\ir-rescue-win 或 /tmp/ir-rescue-nix 下创建的一个临时文件夹用于存储运行时数据(例如,内存转储驱动程序和指向 VSS 副本的链接),并在完成后删除。数据文件夹在初始化时作为占位符创建。收集后,如果未收集到数据(例如,空的浏览器缓存),空文件夹可能会被删除。最后,数据会被压缩到一个受密码保护的存档中,如果设置为这样做,则随后会被删除。
ir-rescue-win 和 ir-rescue-nix 各自的配置文件主要由简单的二进制指令(true 或 false)组成,用于控制脚本的常规行为、要收集的数据类型以及要运行的高级工具。以井号 (#) 开头的行被视为注释。这些注释用于简要说明每个选项的作用、枚举文件夹、文件或注册表项以提供一些上下文,以及列出相关工具。以下描述仅适用于 ir-rescue-win,但它们作为示例来帮助理解整体方法和 ir-rescue-nix 的配置文件。
对于 ir-rescue-win,数据分组为由以下指令给出的类型:
activity:此选项设置用户活动数据的收集;disk:此选项设置磁盘数据的收集;events:此选项设置 Windows 事件日志的收集;filesystem:此选项设置与 NTFS 和文件相关的数据的收集;malware:此选项设置可用于发现恶意软件的系统数据的收集;memory:此选项设置内存的收集;network:此选项设置网络数据的收集;registry:此选项设置系统和用户注册表的收集;system:此选项设置系统相关信息的收集;web:此选项设置浏览历史记录和缓存的收集。一方面,由 sigcheck、density、iconsext 和 yara 选项设置的高级工具的使用独立于对数据类型收集所做的配置。另一方面,与数据类型各自主要选项相关的指令是绑定在一起的,这意味着如果主要选项设置为 false,则这些指令将被忽略。例如,memory-dump=true(指示工具转储随机存取存储器 (RAM) 的选项)如果 memory=false 则被忽略。<option>-all 选项也是如此,该选项为了方便将某个数据类型的全部选项设置为 true,但 <option>-vss 除外。脚本支持通过 Windows 内核命名空间创建指向副本的硬链接来从 所有可用的 VSS 副本 检索数据,可以通过 vss=true 启用此功能。每个主要选项都有自己的 <option>-vss 选项,用于启用或禁用该特定数据类型的 VSS 数据采集。请注意,由 malware-startup 和 web-(chrome|ie|mozilla) 选项收集的数据也会受密码保护,密码为 "infected"(不含引号)。在运行时,配置文件中未找到或被注释掉的所有选项均设置为 ,包括最终压缩存档的密码。
进一步注意,iconsext 选项用于查找使用异常框架(例如 Python)编译并设置 PE 图标的二进制文件。此外,YARA 规则需要具有 *.yar 文件扩展名,并放置在 tools-win\yara\rules\ 文件夹中。所有高级工具的输出都存储在 malware 结果文件夹中。
下面是一个最小配置文件示例,设置了 RAM 的收集(包括实时和历史分页内存)、系统注册表以及文本格式的 Windows 事件日志,以及使用密码 "infected"(不含引号)压缩最终数据文件夹。请注意,此配置跳过了历史系统注册表文件的收集。```
killself=false sdelete=false zip=true zpassword=infected ascii=false
events=true memory=true registry=true
vss=true
events-all=false events-txt=true
memory-all=false memory-vss=true memory-dump=true memory-pagefile=true
registry-all=false registry-vss=false registry-system=true
# 第三方工具列表与参考
## Windows
* **Sysinternals**:[Sysinternals](https://technet.microsoft.com/en-us/sysinternals/ "Sysinternals 网站") 工具主要由 Mark Russinovich 开发,并依据 [Sysinternals 软件许可条款](https://docs.microsoft.com/en-us/sysinternals/license-terms "Sysinternals 软件许可条款") 免费使用。*ir-rescue-win* 使用的工具完整列表为:`accesschk[64].exe` (v6.02)、`autoruns[64].exe` (v13.62)、`autorunsc[64].exe` (v13.61)、`handle[64].exe` (v4.1)、`Listdlls[64].exe` (v3.2)、`logonsessions[64].exe` (v1.4)、`ntfsinfo[64].exe` (v1.2)、`psfile[64].exe` (v1.03)、`PsGetsid[64].exe` (v1.45)、`Psinfo[64].exe` (v1.78)、`pslist[64].exe` (v1.4)、`psloggedon[64].exe` (v1.35)、`psloglist.exe` (v2.71)、`PsService[64].exe` (v2.25)、`sdelete(32|64).exe` (v2.0)、`sigcheck[64].exe` (v2.52)、`tcpvcon.exe` (v3.01)。
* **NirSoft**:[NirSoft](http://www.nirsoft.net/ "NirSoft 网站") 工具套件由 Nir Sofer 开发,以便件免费软件形式发布。*ir-rescue-win* 使用的工具完整列表为:`AlternateStreamView[64].exe` (v1.51)、`BrowserAddonsView[64].exe` (v1.05)、`BrowsingHistoryView[64].exe` (v1.86)、`ChromeCacheView.exe` (v1.67)、`DriverView[64].exe` (v1.47)、`iconsext.exe` (v1.47)、`IECacheView.exe` (v1.58)、`LastActivityView.exe` (v1.16)、`MozillaCacheView.exe` (v1.69)、`nircmdc[64].exe` (v2.81)、`OfficeIns[64].exe` (v1.20)、`USBDeview[64].exe` (v2.61)、`WinPrefetchView[64].exe` (v1.35)。
* **The Sleuth Kit (TSK)** (v4.4.1):[TSK](http://www.sleuthkit.org/ "TSK 网站") 是一款开源取证工具,用于在文件系统级别分析硬盘。*ir-rescue-win* 使用 `fls.exe` 遍历 MFT,使用 `mmcat.exe` 转储磁盘引导扇区,使用 `mmls.exe` 显示磁盘分区表信息。
* **winpmem_1.6.2** (v1.6.2):[Pmem](https://github.com/google/rekall "Rekall GitHub 仓库") 套件是开源 Recall 内存分析框架的一部分,*ir-rescue-win* 使用它来转储内存。
* **md5deep[64].exe** (v4.4):[md5deep](http://md5deep.sourceforge.net/ "md5deep 网站") 工具是开源的,由 Jesse Kornblum 维护。
* **EDD.exe** (v2.0.1):[加密磁盘检测器](https://www.magnetforensics.com/free-tool-encrypted-disk-detector/) 是 Magnet Forensics 提供的免费工具,用于检测特定的磁盘加密软件。
* **exiftool.exe** (v10.55):[ExifTool](http://owl.phy.queensu.ca/~phil/exiftool/ "ExifTool 网站") 是一款免费的元数据解析器和编辑器,支持 LNK 文件等多种文件格式,由 Phil Harvey 开发。
* **JLECmd.exe** (v0.9.6.1):[JLECmd](https://github.com/EricZimmerman/JLECmd "JLECmd GitHub 仓库") 是一款开源、MIT 许可的解析器,用于解析自动和自定义目标跳转列表,支持 Windows 7 至 Windows 10。该工具由 Eric Zimmerman 开发,需要 .NET v4.6。
* **RawCopy[64].exe** (v1.0.0.15) 与 **ExtractUsnJrnl[64].exe** (v1.0.0.3):[RawCopy](https://github.com/jschicht/RawCopy "RawCopy GitHub 仓库")(本质上是 TSK 中 **ifind** 和 **icat** 的组合)和 [ExtractUsnJrnl](https://github.com/jschicht/ExtractUsnJrnl "ExtractUsnJrnl GitHub 仓库") 是开源的 NTFS 工具,用于提取数据和特殊文件,由 Joakim Schicht 开发。
* **rifiuti-vista[64].exe** (v.0.6.1):[Rifiuti2](https://github.com/abelcheung/rifiuti2 "Rifiuti2 GitHub 仓库") 是一款开源的回收站解析器,基于 BSD 许可证发布。
* **densityscout[64].exe** (build 45):[DensityScout](https://www.cert.at/downloads/software/densityscout_en.html "DensityScout 网站") 工具用于计算熵值,由 Christian Wojner 编写,基于 ISC 许可证发布。
* **YARA** (v3.5.0):[YARA](http://virustotal.github.io/yara/ "Yara 网站") 是一款开源的恶意软件签名方案,可用于扫描特定的指标。
* **Cygwin**:[Cygwin](http://www.cygwin.com/ "Cygwin 网站") 项目是开源的,*ir-rescue-win* 仅使用 GNU `tr.exe` (v8.24-3) 和 `grep.exe` (v2.21) 工具(使用 32 位 DLL)过滤输出。
* **7za.exe** (v9.20):[7-Zip](http://www.7-zip.org/) 是一款开源压缩工具,由 Igor Pavlov 开发,基于 GNU LGPL 许可证发布。
## Unix
* **AVML-0.21**(Acquire Volatile Memory for Linux):[AVML](https://github.com/microsoft/avml) 是一款用 Rust 编写的 X86_64 用户态易失内存获取工具,旨在部署为静态二进制文件。AVML 无需事先知道目标操作系统发行版或内核版本即可获取内存,也无需在目标上进行编译或指纹识别。AVML 是在 Ubuntu 18.04.5 LTS 虚拟机上按照[文档描述](https://github.com/microsoft/avml#building-on-ubuntu)编译的。该二进制文件应能在许多[系统和内核版本](https://github.com/microsoft/avml#tested-distributions)上运行。
# 变更历史
* ***ir-rescue-win-v1.4.4***:将部分 `filesystem` 选项移至一个新的 `disk` 选项下,该选项还包括全新的 `disk-encryption`,用于检测各类磁盘加密软件。
* ***ir-rescue-win-v1.4.3***:现在将 `malware-dlls` 输出中的进程参数过滤到独立文件中;用更全面的选项 (`filesystem-info`) 替换了 `filesystem-table`,用于检索磁盘和分区信息;将 [LECmd.exe (v0.9.2.0)](https://github.com/EricZimmerman/LECmd "LECmd GitHub 仓库") 替换为 [exiftool.exe (v10.55)](http://owl.phy.queensu.ca/~phil/exiftool/ "ExifTool 网站") 用于解析 LNK 文件;并增加了一些命令。
* ***ir-rescue-win-v1.4.2***:移除了 RegRipper (`registry-parse`)(过于笨重,最好在后期处理注册表配置单元)。
* ***ir-rescue-win-v1.4.1***:增加了应用程序崩溃转储的收集 (`memory-appdumps`);增加了注册表配置单元的文本导出与解析 (`registry-text` 和 `registry-parse`);增加了引导扇区的转储与解析 (`filesystem-boot` 和 `filesystem-table`);并进行了一些常规改进。
* ***ir-rescue-win-v1.4.0***:重构了数据收集顺序与输出;通过可配置选项 (`outpath`、`rm-glog`、`vss-limit` 和 `drives-limit`) 扩展了功能;增加了 NirSoft 的 `BrowserAddonsView[64].exe` 以及一个更简洁的全局日志文件。
# 作者
[@dfernan__](https://twitter.com/dfernan__)
tools-win\:ir-rescue-win 的第三方工具文件夹:
activ\:用于解析用户和系统活动工件的工具;
exiftool.exe:解析链接 (LNK) 文件;JLECmd.exe:解析自动和自定义目标跳转列表;LastActivityView.exe:显示用户和系统活动(如登录和注销)的迷你时间线;rifiuti-vista[64].exe:解析回收站文件;USBDeview[64].exe:列出之前和当前连接的 USB 设备;ascii\:*.txt 格式的文本 ASCII 艺术文件;cfg\:配置文件:
ir-rescue-win.conf:ir-rescue-win 的主配置文件;nonrecursive-(acl|iconsext|md5deep).txt:accesschk[64].exe、iconsext.exe 和 md5deep[64].exe 的非递归位置;nonrecursive.txt:多个工具的非递归位置;recursive-(acl|iconsext|md5deep).txt:accesschk[64].exe、iconsext.exe 和 md5deep[64].exe 的递归位置;recursive.txt:多个工具的递归位置;cygwin\:Cygwin 工具和动态链接库 (DLL):
tr.exe:用于切除非打印字符;grep.exe:用于使用正则表达式过滤日期;disk\:磁盘工具:
EDD.exe:测试磁盘加密软件;evt\:Windows 事件工具:
psloglist.exe:提取 Windows 事件日志;fs\:文件系统工具:
tsk\:Sleuth Kit (TSK) 工具和 DLL:
fls.exe:遍历主文件表 (MFT);mcat.exe:输出分区的内容;mmls.exe:显示磁盘分区表 (DOS, GPT) 的信息;AlternateStreamView[64].exe:列出备用数据流 (ADS);ExtractUsnJrnl[64].exe:提取 C:\$Extend\$UsnJrnl (NTFS 日志) 文件,去除稀疏零;md5deep[64].exe:计算消息摘要 5 (MD5) 哈希值;ntfsinfo[64].exe:显示 NTFS 相关信息;RawCopy[64].exe:在 NTFS 级别提取数据;mal\:恶意软件工具:
autoruns[64].exe:将自动运行位置转储为自动运行二进制格式;autorunsc[64].exe:列出自动运行位置;BrowserAddonsView[64].exe:列出多个浏览器的插件和扩展;densityscout[64].exe:计算基于熵的度量,用于检测打包器和加密器;DriverView[64].exe:列出已加载的内核驱动程序;handle[64].exe:列出对象句柄;iconsext.exe:从可移植可执行 (PE) 文件提取图标;Listdlls[64].exe:列出已加载的 DLL;OfficeIns[64].exe:列出已安装的 Microsoft Office 加载项;pslist[64].exe:列出正在运行的进程;PsService[64].exe:列出服务;sigcheck[64].exe:检查 PE 文件中的数字签名;mem\:内存工具:
winpmem_1.6.2.exe:转储内存;net\:网络工具:
psfile[64].exe:列出远程打开的文件;tcpvcon.exe:列出 TCP 连接、端口和 UDP 端口;sys\:系统工具:
accesschk[64].exe:列出指定位置的用户权限;logonsessions[64].exe:列出当前活动的登录会话;PsGetsid[64].exe:在安全标识符 (SID) 和用户名之间进行转换;Psinfo[64].exe:显示系统软件和硬件信息;psloggedon[64].exe:列出本地登录且其配置文件在注册表中的用户;web\:Web 工具:
BrowsingHistoryView[64].exe:列出多个浏览器的浏览历史;ChromeCacheView.exe:显示 Google Chrome 缓存;IECacheView.exe:显示 Internet Explorer 缓存;MozillaCacheView.exe:显示 Mozilla Firefox 缓存;yara\:YARA 工具和签名:
rules\:*.yar 规则文件夹;yara(32|64).exe:YARA 主可执行文件;yarac(32|64).exe:YARA 规则编译器;7za.exe:压缩文件和文件夹;nircmdc[64].exe:功能广泛,其中包括截取屏幕截图;sdelete(32|64).exe:安全删除文件和文件夹;data\:运行时创建的用于存储收集数据的文件夹:
<HOSTNAME>-<DATE>\:<DATE> 遵循 YYYYMMDD 格式:
ir-rescue-win\:ir-rescue 相关数据的文件夹
ir-rescue-win.log:状态消息的详细日志文件;ir-rescue-win-global.log:包含过去运行的 ir-rescue-win 命令的全局日志文件;screenshot-#:仅适用于 ir-rescue-win 的编号屏幕截图;falseWinPrefetchView[64].exe:显示预取文件的内容;