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
voidsyscall — Implant y C2 multiplataforma impulsados por syscalls — syscalls directas (Win), syscalls en crudo (Linux), canales HTTPS/DNS/ICMP. Sin capa winapi. | Kitploit
Herramientas/GitHubGitHub/voidsecsoftwares/voidsyscall
Escalada de PrivilegiosHerramientas de Cifrado/DescifradoMecanismos de PersistenciaEvasión de IDS/IPSMovimiento LateralPost-ExplotaciónAnálisis de MalwarePruebas de PenetraciónComando y ControlRed TeamingDesarrollo de PayloadsTroyano de Acceso Remoto
1819hace 1 díaAún no revisado

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
GitHubvoidsecsoftwares/voidsyscall

voidsyscall

Implant y C2 multiplataforma impulsados por syscalls — syscalls directas (Win), syscalls en crudo (Linux), canales HTTPS/DNS/ICMP. Sin capa winapi.

Ver Repositorio

voidsyscall

go license platform c2 syscalls

Cero WinAPI. Cada primitiva NT se resuelve en tiempo de ejecución desde ntdll en memoria — las instrucciones SYSCALL se emiten directamente mediante stubs de ensamblador Plan9, sin tabla de importaciones, sin tocar los hooks de ntdll en modo usuario. C2 sobre HTTPS / DNS / ICMP, AES-256-GCM por mensaje. Windows nativo. Compilaciones para Linux. Compilaciones para macOS.

Esto no es una librería de envoltura de syscalls. Es un framework de implante completo donde cada operación — desde inyectar código hasta leer archivos o persistir en el registro — pasa por syscalls Nt* en crudo resueltas al arrancar desde la tabla de exportación de ntdll actual. No existen llamadas a WinAPI en el binario. Nada que un EDR pueda enganchar en modo usuario.


Qué contiene

Motor de syscalls

  • Resolución de SSN en tiempo de ejecución: PEB → LDR → base de ntdll → tabla de exportación PE → coincidencia de hash djb2 → escaneo de prólogo para B8 xx xx 00 00 0F 05 (directo) o 4C 8B D1 B8 xx xx 00 00 0F 05 (Hells Gate). Cada nombre de función se hashea en tiempo de compilación — sin cadenas en texto plano en el binario.
  • Syscall directa: ensamblador Plan9 (asm_amd64.s) carga el SSN en EAX, establece 7 argumentos a mano, ejecuta SYSCALL. Retorno vía RAX/RDX.
  • Syscall indirecta: localiza un gadget 0F 05 C3 (syscall;ret) dentro de ntdll, llama a través de él. La trampa de CPU aterriza dentro de ntdll — la pila de llamadas muestra frames de ntdll, no frames del implante. Ningún hook de modo usuario sobrevive.
  • Huella de SSN: vuelca todos los SSN resueltos de la compilación actual de ntdll, genera un hash de huella. Exporta como hex, importa en otra máquina. Detecta desajustes de compilación antes de que te quemen.
  • Unhook: bloquea .text como RWX, copia los bytes originales desde el ntdll mapeado en disco, restaura la protección, vacía la icache, aniquila la caché de SSN. Cada hook de modo usuario colocado por cualquier EDR desaparece.

Inyección — 4 métodos, rotación polimórfica

El agente rota automáticamente entre técnicas de inyección. Cada llamada usa un método diferente — dos inyecciones nunca se ven iguales en forense.

Anti-análisis — 13+ métodos de detección

Ejecuta todas las comprobaciones, devuelve un informe de amenaza puntuado. Auto-destrucción en Crítico.

Operaciones de token

Todo vía syscalls Nt*, sin WinAPI.

  • EnablePrivilege(index) — establece cualquier privilegio por LUID
  • EnableAllTokenPrivileges() — 20 privilegios a la vez (Debug, Impersonate, TCB, Backup, Restore, etc.)
  • GetProcessTokenIntegrityLevel() — consulta la integridad obligatoria
  • StealProcessToken(pid) — abre + duplica el token de otro proceso
  • ImpersonateThread() / RevertToSelf()

Operaciones de VAD

  • EnumVirtualMemory() — recorre todas las regiones virtuales vía NtQueryVirtualMemory
  • FindWritableExecRegions() — encuentra regiones comprometidas PAGE_EXECUTE_READWRITE
  • HideRegion() — establece PAGE_NOACCESS para ocultar memoria de los escáneres
  • UnhideRegion() — restaura la protección original

E/S de archivos — todas syscalls Nt*

NtCreateFile → NtReadFile / NtWriteFile → NtClose. Cero llamadas a CreateFileA, ReadFile, WriteFile o DeleteFileW. ReadFileContents(), WriteFileContents(), DeleteFileNt(), FileExists().

Persistencia en el registro — todas syscalls Nt*

NtCreateKey → NtSetValueKey. AddRunKeyPersistence(), RemoveRunKeyPersistence(). Sin RegCreateKeyEx, RegSetValueEx ni ninguna llamada a Advapi32.

Operaciones de handles

  • EnumerateSystemHandles() — todos los handles abiertos en el sistema vía NtQuerySystemInformation(SystemHandleInformation)
  • FindEDRHandles() — compara los PIDs propietarios contra 30+ nombres de procesos EDR conocidos (MsSense, CrowdStrike, Sentinel, Cylance, Carbon Black, etc.)
  • CloseEDRHandles() — cierra los handles de monitorización que el EDR colocó en tu proceso
  • IsProcessMonitored() — comprobación booleana: ¿estamos siendo vigilados?

Cifrado de memoria

  • Vault: Cifrado XOR en memoria con re-clave automática por temporizador. El texto plano nunca se almacena en crudo. La re-clave descifra → genera nueva clave → re-cifra. Los volcados forenses del heap entre intervalos de re-clave obtienen basura.
  • SecureDelete: borrado de 3 pasadas (aleatorio → ceros → unos → ceros) antes de NtFreeVirtualMemory.
  • StackEncrypt: cifra buffers asignados en la pila antes del retorno. La reutilización del marco de pila hace que el forense no sea fiable.

Parches de evasión AMSI / ETW

  • PatchAMSI() — AmsiScanBuffer → MOV EAX, 0; RET
  • PatchETW() — EtwEventWrite → RET
  • PatchNtTraceEvent() — NtTraceEvent → RET
  • PatchDbgUiRemoteBreakin() — breakin de hilo → RET
  • PatchInstrumentationCallbacks() — ThreadHideFromDebugger

Canales C2

Todos los canales implementan la interfaz Channel. Añadir NTP, DoH o TURN significa implementar la interfaz — cero cambios en el agente.

Criptografía

AEAD AES-256-GCM por mensaje. Nonce único de 12 bytes por mensaje. Llavero por implante. Derivación de clave basada en passphrase disponible. 3 tests, todos pasando.


Estructura

root@kitploit:~
voidsyscall/
  syscallwin/          Direct/indirect NT syscalls + evasion
    asm_amd64.s        Syscall/IndirectSyscall/ReadGSBase/SetGSBase/asm_cpuid/asm_rdtsc
    resolve.go         PEB→LDR→ntdll walk, PE export parse, SSN cache, prologue scan
    stubs.go           ~25 Nt* wrappers, DirectSyscall, IndirectSyscallByHash
    hash.go            djb2 hash (string + UTF-16 pointer)
    constants.go       MEM_*, PAGE_*, THREAD_*, TOKEN_*, OBJ_*, REG_*, FILE_*, STATUS_*
    unhook.go          UnhookNtdll, SelfDel
    peb.go             PEB patching (BeingDebugged, NtGlobalFlag, Heap, DebugPort)
    token.go           Privilege escalation, token theft, impersonation
    vad.go             VAD enumeration, hide/unhide regions
    files.go           File I/O via Nt* syscalls
    registry.go        Registry persistence via Nt* syscalls
    fingerprint.go     SSN dump, build fingerprint, hex export/import
    inject_advanced.go 4 injection methods: section mapping, hollow, APC, module stomp
    antianalysis.go    VM/sandbox/debug/timing detection, scored threat report
    handles.go         System handle enumeration, EDR handle killer
    memcrypt.go        Vault (re-keying XOR), SecureDelete, StackEncrypt, WipeMemory
  syscallnix/          Linux/darwin raw syscalls
  patches/             AMSI, ETW, NtTraceEvent, DbgUiRemoteBreakin, InstrumentationCallbacks
  loader/              CreateThread/APC/module-stomp injection
  channels/            HTTP, DNS (TXT), ICMP — Channel interface
  crypto/              AES-256-GCM, envelope, passphrase variant (3 tests)
  server/              SessionManager, Task Queue, interactive REPL
  agent/               Config, beacon loop, 10 task handlers
  cmd/server/main.go   CLI with REPL
  cmd/agent/main.go    Windows-only entrypoint

Compilación

root@kitploit:~
GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o voidsyscall-agent.exe   ./cmd/agent
GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o voidsyscall-server.exe  ./cmd/server
GOOS=linux   GOARCH=amd64 go build -ldflags="-s -w" -o server-linux            ./cmd/server
GOOS=darwin  GOARCH=arm64 go build -ldflags="-s -w" -o server-darwin           ./cmd/server

Ofuscación con garble:

root@kitploit:~
GOOS=windows GOARCH=amd64 garble -literals -tiny build -ldflags="-s -w" \
    -o voidsyscall-agent.exe ./cmd/agent

Uso

Servidor

root@kitploit:~
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
./voidsyscall-server.exe --cert cert.pem --key key.pem --https-port 443

Agente

root@kitploit:~
./voidsyscall-agent.exe -c agent/example-config.json

Protocolo de tareas


Internals de la resolución de SSN

  1. ReadGSBase (asm) → GS:[0x60] → TEB
  2. TEB+0x60 → PEB. PEB+0x18 → Ldr
  3. Recorrer InMemoryOrderModuleList → coincidir ntdll.dll vía hash djb2
  4. Base → IMAGE_DOS_HEADER → e_lfanew → IMAGE_NT_HEADERS → DataDirectory[0] = Tabla de Exportación
  5. Recorrer AddressOfNames[], djb2 cada uno, coincidir objetivo
  6. Resolver ordinal → AddressOfFunctions[ordinal] → dirección de función
  7. Escanear prólogo para B8 xx xx 00 00 0F 05 (directo), B8 xx xx 00 00 C3 (early-ret), o 4C 8B D1 B8 xx xx 00 00 0F 05 (Hells Gate)

Sin nombres de funciones en el binario. Solo hashes djb2. La instrucción syscall evita cada hook de modo usuario.


Manejadores de tareas del agente

root@kitploit:~
TaskShell       // exec via cmd.exe
TaskInject      // polymorphic: section/hollow/APC/stomp
TaskPatch       // AMSI/ETW/both
TaskEvasion     // PEB patches + VM/sandbox/debug/timing detection
TaskHandles     // enumerate + kill EDR monitoring handles
TaskFingerprint // dump SSN build fingerprint
TaskToken       // privilege escalation + impersonation
TaskVault       // encrypted in-memory storage
TaskSleep       // jitter-aware sleep
TaskExit        // clean shutdown

Estado

Entregado: Bucle de beacon, cola de tareas, 3 canales C2, 4 métodos de inyección, 10+ comprobaciones de evasión, enumeración/cierre de handles, manipulación de tokens, operaciones de VAD, E/S de archivos, persistencia en el registro, huella de SSN, cifrado de memoria, parcheo de AMSI/ETW, criptografía AES-GCM, gestión de sesiones, REPL interactivo. 3 tests de criptografía pasan. go build limpio en Windows.

Aún no: Agente autónomo para Linux (existen compilaciones, sin lógica de agente), rotación de claves de sesión, loader por etapas, canales NTP/DoH, programación de persistencia.

Agradecimientos

  • carved4/go-native-syscall
  • Enelg52/OffensiveGo
  • am0nsec/HellsGate
  • f1zm0/acheron
  • Sliver C2

Licencia

MIT — LICENSE

Descargar herramienta
MétodoCómo funcionaPor qué es sigiloso
Mapeo de secciónNtCreateSection → NtMapViewOfSection (remoto) → NtCreateThreadExSin asignación RWX en el VAD. La sección está respaldada por archivo. Los escáneres de memoria ven PAGE_EXECUTE_READ, no PAGE_EXECUTE_READWRITE.
Process hollowNtCreateUserProcess (suspendido) → NtSuspendProcess → base de imagen a cero → asignar + escribir shellcode → NtSetContextThread (RIP = shellcode) → NtResumeProcessEl proceso aparece como un svchost.exe legítimo en el taskmgr. Solo difiere el contenido de la memoria.
Encolado de APCEnumerar hilos vía NtQuerySystemInformation → NtOpenThread → NtQueueApcThreadNo se crea un hilo nuevo. Sin TEB nuevo. Sin asignación de pila nueva. Se dispara cuando el hilo entra en espera alertable.
Module stompingAsignar en el objetivo → escribir cabecera PE mínima + shellcode → NtCreateThreadEx en el punto de entradaLa lista de módulos muestra un nombre de DLL plausible. La cabecera PE es lo suficientemente válida para engañar a la enumeración de módulos.
ComprobaciónMétodo
Detección de VMEscaneo de firma de hipervisor CPUID leaf 0x40000000 (VMware, VirtualBox, Hyper-V, KVM, Xen, QEMU, Parallels) + fallback leaf 0x40000001
Detección de sandboxRecuento de CPU, artefactos de registro (VMware Tools, VBox Guest Additions, servicios VMware/VBox), escaneo de procesos de sandbox (30+ nombres conocidos: wireshark, procmon, x64dbg, ida, etc.)
Detección de depuradorPEB.BeingDebugged, PEB.NtGlobalFlag, flags de depuración del heap, ProcessDebugPort, ProcessDebugObjectHandle, ProcessDebugFlags, breakpoints de hardware DR0-7, comprobación de single-step por temporización
Anomalía de temporizaciónBasado en RDTSC: 50 muestras de latencia de NtQuerySystemInformation, media/desviación estándar, marca si >10% de las muestras exceden 3σ de varianza. Detecta la sobrecarga de instrumentación.
Evasión de PEBParchea BeingDebugged, NtGlobalFlag, flags de ProcessHeap, DebugPort, ThreadHideFromDebugger — todo vía lecturas del segmento GS + NtWriteVirtualMemory. Sin llamadas a API.
CanalFormato en el cableRequisitos
HTTPSPOST binario, framing personalizado, UA/ruta aleatorizadoscertificado TLS
DNSsubdominio <idx>-<total>-<base32>, respuesta TXTresolución DNS
ICMPv4payload en ID+seq de echo request/replysocket crudo (root/Admin)
TareaBytePayload
shell0x01comando UTF-8
inject0x02PID (4 bytes LE) + shellcode
patch0x030x01=AMSI, 0x02=ETW, 0x03=ambos
sleep0x04segundos (4 bytes LE)
evasion0x100x01=completo, 0x02=VM, 0x03=sandbox, 0x04=debug, 0x05=timing, 0x06=informe
handles0x110x01=contar, 0x02=enumerar EDR, 0x03=cerrar EDR, 0x04=¿monitorizado?
vault0x12operaciones de almacenamiento cifrado
fingerprint0x13volcar huella de compilación de SSN
token0x140x01=habilitar todo, 0x02=integridad, 0x03=privilegio debug, 0x04=impersonar
exit0xFF—
  • Extraer SSN de 2 bytes → almacenar en caché map[uint32]uint16