
Cargador de shellcode en Go que combina múltiples técnicas de evasión
Hades es un loader de prueba de concepto que combina varias técnicas de evasión con el objetivo de eludir los mecanismos defensivos comúnmente utilizados por los AV/EDR modernos.
La forma más sencilla es probablemente construir el proyecto en Linux usando make.
git clone https://github.com/f1zm0/hades && cd hades
make
Luego puedes llevar el ejecutable a un host Windows x64 y ejecutarlo con .\hades.exe [opciones].
PS > .\hades.exe -h
'||' '||' | '||''|. '||''''| .|'''.|
|| || ||| || || || . ||.. '
||''''|| | || || || ||''| ''|||.
|| || .''''|. || || || . '||
.||. .||. .|. .||. .||...|' .||.....| |'....|'
version: dev [11/01/23] :: @f1zm0
Uso:
hades -f <ruta_archivo> [-t selfthread|remotethread|queueuserapc]
Opciones:
-f, --file <str> ruta del archivo de shellcode (.bin)
-t, --technique <str> técnica de inyección [selfthread, remotethread, queueuserapc]
Inyecta shellcode que ejecuta calc.exe con la técnica queueuserapc:
.\hades.exe -f calc.bin -t queueuserapc
Bypass de hooks en modo usuario con ordenamiento de RVA de syscalls (NtQueueApcThread hookeado con frida-trace y manejador personalizado)

Bypass de callback de instrumentación con syscalls indirectas (la DLL inyectada proviene de syscall-detect por jackullrich)

En la última versión, las capacidades de syscall directa han sido reemplazadas por syscalls indirectas proporcionadas por acheron. Si por alguna razón deseas usar la versión anterior del loader que usaba syscalls directas, debes pasar explícitamente la etiqueta direct_syscalls al compilador, que determinará qué archivos deben incluirse y excluirse de la compilación.
GOOS=windows GOARCH=amd64 go build -ldflags "-s -w" -tags='direct_syscalls' -o dist/hades_directsys.exe cmd/hades/main.go
Advertencia
Este proyecto ha sido creado únicamente con fines educativos, para experimentar con el desarrollo de malware en Go y aprender más sobre el paquete unsafe y la extraña sintaxis de Go Assembly. No lo uses en sistemas que no te pertenezcan. El desarrollador de este proyecto no se hace responsable de ningún daño causado por el uso inadecuado de esta herramienta.
Un agradecimiento a las siguientes personas que compartieron su conocimiento y código que inspiraron esta herramienta:
Este proyecto está licenciado bajo la Licencia GPLv3 - consulta el archivo LICENSE para más detalles.