Hades 是一款概念验证加载器,它结合了多种规避技术,旨在绕过现代 AV/EDR 常用的防御机制。
最简单的方法可能是在 Linux 上使用 make 构建项目。
git clone https://github.com/f1zm0/hades && cd hades
make
然后将可执行文件带到 x64 Windows 主机上,用 .\hades.exe [options] 运行。
PS > .\hades.exe -h
'||' '||' | '||''|. '||''''| .|'''.|
|| || ||| || || || . ||.. '
||''''|| | || || || ||''| ''|||.
|| || .''''|. || || || . '||
.||. .||. .|. .||. .||...|' .||.....| |'....|'
version: dev [11/01/23] :: @f1zm0
Usage:
hades -f <filepath> [-t selfthread|remotethread|queueuserapc]
Options:
-f, --file <str> Shellcode 文件路径 (.bin)
-t, --technique <str> 注入技术 [selfthread, remotethread, queueuserapc]
使用 queueuserapc 技术注入生成 calc.exe 的 shellcode:
.\hades.exe -f calc.bin -t queueuserapc
通过系统调用 RVA 排序绕过用户模式钩子(使用 frida-trace 和自定义处理程序钩住了 NtQueueApcThread)

通过间接系统调用绕过 Instrumentation Callback(注入的 DLL 来自 syscall-detect,作者 jackullrich)

在最新版本中,直接系统调用功能已被 acheron 提供的间接系统调用所取代。如果出于某种原因您想使用旧版(采用直接系统调用)的加载器,需要显式地向编译器传递 direct_syscalls 标签,编译器将据此确定需要包含和排除哪些文件。
GOOS=windows GOARCH=amd64 go build -ldflags "-s -w" -tags='direct_syscalls' -o dist/hades_directsys.exe cmd/hades/main.go
警告
本项目仅用于教育目的,用于尝试用 Go 编写恶意软件,并学习更多关于 unsafe 包和奇怪的 Go Assembly 语法。请勿将其用于您不拥有的系统上。本项目的开发者不对因不当使用此工具造成的任何损害负责。
感谢以下分享了知识和代码的人们,他们启发了这个工具:
本项目采用 GPLv3 许可证 — 详见 LICENSE 文件。