Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
acheron — syscalls indirectos para evasión de AV/EDR en ensamblador de Go | Kitploit
Herramientas/GitHubGitHub/f1zm0/acheron
ShellcodeRed TeamingDesarrollo de Payloads
GitHubf1zm0/acheron

acheron

syscalls indirectos para evasión de AV/EDR en ensamblador de Go

Ver Repositorio
390507hace 3 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

latest release version Go Reference Go Report Card project license Issues Twitter Follow

Acerca de

Acheron es una librería inspirada en SysWhisper3/FreshyCalls/RecycledGate, con la mayor parte de la funcionalidad implementada en ensamblador de Go.

El paquete acheron se puede usar para añadir capacidades de syscall indirecta a tus herramientas ofensivas en Golang, para eludir AV/EDR que utilizan hooks en modo usuario y instrumentation callbacks para detectar syscalls anómalas que no retornan a ntdll.dll cuando la transición de llamada regresa del kernel al espacio de usuario.

Características principales

  • Sin dependencias
  • Implementación en Go puro y ensamblador de Go
  • Soporte para funciones de cifrado/hashing de cadenas personalizadas para contrarrestar el análisis estático

Cómo funciona

Se realizan los siguientes pasos al crear una nueva instancia de proxy de syscall:

  1. Recorrer el PEB para obtener la dirección base de ntdll.dll en memoria
  2. Analizar el directorio de exportaciones para obtener la dirección de cada función exportada
  3. Calcular el número de servicio del sistema para cada función Zw*
  4. Enumerar gadgets syscall;ret limpios/sin hook en ntdll.dll, para usar como trampolines
  5. Crear la instancia de proxy, que se puede usar para realizar syscalls indirectas (o directas)

Inicio rápido

Integrar acheron en tus herramientas ofensivas es bastante fácil. Puedes instalar el paquete con:

root@kitploit:~
go get -u github.com/f1zm0/acheron

Luego solo necesitas llamar a acheron.New() para crear una instancia de proxy de syscall y usar acheron.Syscall() para realizar una syscall indirecta para APIs Nt*.

Ejemplo mínimo:

root@kitploit:~
package main

import (
    "fmt"
    "unsafe"

    "github.com/f1zm0/acheron"
)

func main() {
    var (
        baseAddr uintptr
        hSelf = uintptr(0xffffffffffffffff)
    )

    // creates Acheron instance, resolves SSNs, collects clean trampolines in ntdll.dlll, etc.
    ach, err := acheron.New()
    if err != nil {
        panic(err)
    }

    // indirect syscall for NtAllocateVirtualMemory
    s1 := ach.HashString("NtAllocateVirtualMemory")
    if retcode, err := ach.Syscall(
        s1,                                     // function name hash
        hSelf,                                  // arg1: _In_     HANDLE ProcessHandle,
        uintptr(unsafe.Pointer(&baseAddr)),     // arg2: _Inout_  PVOID *BaseAddress,
        uintptr(unsafe.Pointer(nil)),           // arg3: _In_     ULONG_PTR ZeroBits,
        0x1000,                                 // arg4: _Inout_  PSIZE_T RegionSize,
        windows.MEM_COMMIT|windows.MEM_RESERVE, // arg5: _In_     ULONG AllocationType,
        windows.PAGE_EXECUTE_READWRITE,         // arg6: _In_     ULONG Protect
    ); err != nil {
        panic(err)
    }
    fmt.Printf(
        "allocated memory with NtAllocateVirtualMemory (status: 0x%x)\n",
        retcode,
    )

    // ...
}

Ejemplos

Los siguientes ejemplos están incluidos en el repositorio:

EjemploDescripción
sc_injectPoC de inyección de procesos extremadamente simple, con soporte para syscalls directas e indirectas

Otros proyectos que usan acheron:

  • hades

Contribuir

¡Las contribuciones son bienvenidas! A continuación se presentan algunas de las cosas que sería bueno tener en el futuro:

  • Soporte para 32 bits
  • Otros tipos de resolución (ej. HalosGate/TartarusGate)
  • Más ejemplos

Si tienes sugerencias o ideas, no dudes en abrir un issue o un PR.

Referencias

  • Golang UK Conference 2016 - Michael Munday - Dropping Down Go Functions in Assembly
  • https://github.com/am0nsec/HellsGate
  • https://sektor7.net/#!res/2021/halosgate.md
  • https://github.com/trickster0/TartarusGate
  • https://github.com/klezVirus/SysWhispers3
  • https://github.com/crummie5/FreshyCalls
  • https://github.com/boku7/AsmHalosGate
  • https://github.com/thefLink/RecycledGate
  • https://github.com/C-Sto/BananaPhone
  • https://winternl.com/detecting-manual-syscalls-from-user-mode/
  • https://www.usenix.org/legacy/events/vee06/full_papers/p154-bhansali.pdf
  • https://redops.at/en/blog/direct-syscalls-a-journey-from-high-to-low

Notas adicionales

El nombre es una referencia al río Aqueronte en la mitología griega, que es el río por donde las almas de los muertos son llevadas al inframundo.

Nota
Este proyecto usa versionado semántico. Las versiones menores y de parche no deberían romper la compatibilidad con versiones anteriores. Las versiones mayores solo se usarán para cambios importantes que rompan la compatibilidad.

Advertencia
Este proyecto ha sido creado solo con fines educativos. No lo uses en sistemas que no te pertenezcan. El desarrollador de este proyecto no es responsable de ningún daño causado por el uso inadecuado de la biblioteca.

Licencia

Este proyecto está licenciado bajo la Licencia MIT - consulta el archivo LICENSE para más detalles.

Descargar herramienta
process_snapshot
Usando syscalls indirectas para tomar instantáneas de procesos con syscalls
custom_hashfuncEjemplo de función de codificación/hashing personalizada que se puede usar con acheron