介绍
Hooka 是一款多功能的 Shellcode 加载器生成器,能够生成具有多种功能的加载器。它继承了其他工具的优点,如 BokuLoader、Freeze 或 Shhhloader,并尝试实现更多的规避功能。Hooka 的开发语言是 Go 语言,这使得它在性能和可扩展性上具有优势。
为什么选择 Golang?
Golang 是一门高效、简洁的编程语言,非常适合开发高性能的工具。而 Hooka 也正是基于 Golang 开发,使得它在各种执行环境下都能够高效运行。
主要功能
Hooka 提供了强大的功能,以下是其关键特性:
多种 Shellcode 注入技术
- SuspendedProcess:通过挂起的进程注入 Shellcode。
- ProcessHollowing:使用进程空洞技术进行注入。
- NtCreateThreadEx:通过 NtCreateThreadEx 创建线程进行注入。
- EtwpCreateEtwThread:通过 ETW 线程注入。
- NtQueueApcThreadEx:利用 APC 线程队列进行注入。
- No-RWX:无可执行权限区的技术。
支持多种 Shellcode 来源
- 从原始文件、PE 文件、DLL 或 URL 获取 Shellcode。
输出格式支持 EXE 和 DLL
可以生成 EXE 或 DLL 格式的加载器,方便在不同的场景下使用。
加密和混淆 Shellcode
- 支持多种加密算法:AES、3DES、RC4、XOR。
- 默认启用 AMSI 和 ETW 补丁。
- 使用 Shikata Ga Nai 混淆技术。
高级防御和规避功能
- 反沙箱检测:多种沙箱检测技术。
- ACG Guard 保护:防止 AV/EDR 修改已存在的可执行代码。
- DLL 注入保护:阻止非 Microsoft 签名的 DLL 注入到创建的进程。
- 用户模式挂钩解除:使用多种技术解除用户模式挂钩,包括经典解除、DLL 全面解除、Perun’s Fart 技术等。
- 事件日志线程挂起:通过 Phant0m 技术挂起事件日志线程。
其他功能
- 签名:可以用真实或伪造证书签名生成的加载器。
- 字符串混淆:通过 Caesar 加密法混淆字符串。
- 压缩代码:使用 Golang 编译和 UPX 压缩生成的加载器。
- 二进制熵计算:计算生成加载器的熵。
- 哈希计算:支持 MD5、SHA1 和 SHA256 校验和计算。
安装
1 克隆仓库:
git clone https://github.com/D3Ext/Hooka
2 进入目录并构建:
cdHooka
make
3 在 build/
目录中找到生成的二进制文件。
使用方法
帮助面板
UsageofHooka:
REQUIRED:
-i,--input string payload to injectinraw format,as PE,as DLL or from a URL
-o,--output string name of output file(i.e.loader.exe)
-f,--format string format of the payload to generate(available:exe,dll)(default exe)
EXECUTION:
--proc string process to spawn(insuspended state)when neededforgiven execution technique(default notepad.exe)
--exec string technique used to load shellcode(default"SuspendedProcess"):
SuspendedProcess
ProcessHollowing
NtCreateThreadEx
EtwpCreateEtwThread
NtQueueApcThreadEx
No-RWX
AUXILIARY:
-a,--arch string architecture of the loader to generate(default amd64)
-c,--cert string certificate to sign generated loader with(i.e.cert.pfx)
-d,--domain string domain used to sign loader(i.e.www.microsoft.com)
ENCODING:
--enc string encrypts shellcode using given algorithm(available:aes,3des,rc4,xor)(default none)
--sgn useShikataGaNaito encode generated loader(it must be installed on path)
--strings obfuscate strings usingCaesarcipher
EVASION:
--unhook string unhooking technique to use(available:full,peruns)
--sandbox enable sandbox evasion
--no-amsi don't patch AMSI
--no-etw don't patch ETW
--hashing use hashes to retrievefunctionpointers
--acg enable ACGGuardto prevent AV/EDR from modifying existing executable code
--blockdlls prevent non-MicrosoftsignedDLLsfrom injectinginchild processes
--phantom suspendEventLogthreads usingPhant0mtechnique.Highprivileges needed,otherwise loader skips this step
--sleep delay shellcode execution using a custom sleepfunction
EXTRA:
--calc use a calc.exe shellcode to test loader capabilities(don't provide input file)
--compress compress generated loader using Golang compiler and UPX if it's installed
-r,--rand use a randomsetof parameters to create a random loader(justfortesting purposes)
-v,--verbose enable verbose to print extra information
-h,--help print help panel
使用示例
生成一个简单的 EXE 加载器:
hooka-i shellcode.bin-o loader.exe
生成一个 DLL 加载器:
hooka-i shellcode.bin-o loader.dll-f dll
使用自定义配置:
hooka -i shellcode.bin -o loader.exe --exec NtCreateThreadEx --unhook full --sleep 60 --acg
待办事项
- 添加直接和间接的系统调用支持。
- 添加 Chacha20 加密算法支持。
- 更多 OPSEC 功能。
- 整体改进。
库
官方 Golang 包提供了大部分上述功能,详情请参考 官方文档。
参考资料
- C-Sto/BananaPhone
- timwhitez/Doge-Gabh
- Ne0nd0g/go-shellcode
- optiv/Freeze
- f1zm0/acheron
- Enelg52/OffensiveGo
- trickster0/TartarusGate
项目地址
项目地址:https://github.com/D3Ext/Hooka
免责声明
使用本工具时,请自行承担风险!作者对工具的任何不当使用不承担责任。
原文始发于微信公众号(sec0nd安全):Hooka - 多功能Shellcode加载器生成器
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论