FridaExtract 是一个基于 Frida.re 的 RunPE 提取工具。RunPE 类型注入是恶意软件常用的技术,用于将代码隐藏在另一个进程中。它也是许多加壳器的最后阶段 : )
注意:Frida 现在也支持使用 "MapViewOfSection" 技术提取注入的 PE 文件,该技术最佳描述见此处。
使用 FridaExtract,您可以自动提取并重建一个通过 RunPE 方法注入的 PE 文件...并绕过这些加壳器!
已经有大量优秀的工具可以提取 RunPE 注入的代码,FridaExtract 并不比它们更好。但它更容易安装、更容易构建(哈哈)、更容易运行,也更容易修改。无需编译器,无需构建环境,只需简单的 "pip install" 即可启动并运行。
代码经过了特别的注释和组织,目的是作为您构建自己 Frida 项目的模板。这更像是一个概念验证,演示了如何在 Windows 环境中设置钩子。请随意以任何方式复制-粘贴-修改!
警告: FridaExtract 仅适用于 Windows 32 位系统。目前 wow64 存在一些神秘的错误,因此我们建议坚持使用 Windows 7 32 位或 Windows Server 2008 32 位。
pip install frida 安装 FridaFridaExtract 只能提取 RunPE 注入的 PE 文件,因此功能相当有限。如果您使用的虚拟机易于快照-运行-还原,那么您可以盲目地对每个恶意软件样本尝试 FridaExtract,看看会得到什么,但我们不推荐这样做。相反,FridaExtract 是沙盒的一个好补充(我们喜爱 malwr)。首先在沙盒中运行样本,并注意 API 调用。
对于 RunPE 技术,如果您看到以下 API 调用,则 FridaExtract 可能适合您:
对于 MapViewOfSection 技术,如果您看到以下 API 调用,则 FridaExtract 可能适合您:
默认情况下,FridaExtract 将尝试自动提取注入的 PE 文件、重建它,并将其转储到名为 dump.bin 的文件中。
python FridaExtract.py bad.exe
可以使用 --out_file 命令指定转储文件。
python FridaExtract.py bad.exe --out_file extracted.exe
如果您尝试提取的加壳 PE 文件需要参数,可以使用 --args 命令传递参数。多个参数可以作为逗号分隔传递。
python FridaExtract.py bad.exe --args password
FridaExtract 将自动尝试将转储的内存重建为 PE 文件。如果这不起作用,而您只想要一个写入子进程的所有内存的原始转储,可以使用 --raw 命令。重建的 PE 将不会写入转储文件,而是按地址顺序写入原始内存段。
python FridaExtract.py bad.exe --raw
FridaExtract 使用对以下 API 的钩子来提取注入的 PE 文件:
要跟踪这些 API 并打印结果,请使用 -v 或 --verbose 命令。
python FridaExtract.py bad.exe --verbose
Frida 使用用户态钩子,这很容易被绕过。如果您需要一个更健壮的 DBI 工具,请尝试 PIN!使用 PIN 提取 RunPE 的一个很好的示例由此处提供。
Frida 会向您正在分析的进程注入一个 JavaScript 运行时,它不是隐蔽的。关于恶意软件如何检测 Frida 的概述,请查看这里。