
Motor de inyección en ensamblador x64 que utiliza SROP y Zero-Copy Injection para eludir EDR/XDR y monitores del kernel. Entrega payloads cifrados con XOR con una superficie de detección mínima.
Phantom-Evasion-Loader es un motor de inyección independiente, escrito en x64 Assembly puro, diseñado para minimizar la superficie de detección de las soluciones modernas EDR/XDR y monitores a nivel de kernel como Falco (eBPF). Aprovecha técnicas avanzadas como SROP e Inyección Zero-Copy para entregar payloads como un fantasma en la máquina.
A diferencia de los inyectores tradicionales y ruidosos, este motor está construido para el sigilo. No grita "SOY MALWARE" al kernel. En su lugar, imita el comportamiento legítimo de depuración del sistema, realizando operaciones de memoria quirúrgicas que pasan desapercibidas para el análisis de comportamiento.
Secuestro SROP (Sigreturn Oriented Programming): En lugar de establecer registros uno por uno mediante llamadas ptrace ruidosas, utiliza rt_sigreturn (Syscall 15) para manipular todo el contexto de la CPU en una única transacción de apariencia legítima.
Inyección Zero-Copy (process_vm_writev): Descarta los antiguos bucles PTRACE_POKEDATA, lentos y muy monitorizados. Al utilizar process_vm_writev (Syscall 311), canaliza el payload directamente desde la memoria del cargador al proceso objetivo de una sola vez, evitando las firmas estándar de "Inyección de Código".
Reducción de la superficie de detección (Falco/EDR): En pruebas de estrés del mundo real, esta arquitectura redujo el ruido de alertas predeterminadas de Falco de más de 200 líneas de registros "Críticos/Advertencia" a solo 8 líneas de ruido de "Depuración de baja prioridad".
Descifrado en memoria en tiempo de ejecución (XOR): El payload permanece cifrado en memoria y solo se descifra en el milisegundo de la inyección. Esto frustra los escáneres estáticos de shellcode y los análisis básicos de cadenas de memoria.
Enumeración dinámica de objetivos: Analiza automáticamente el sistema de archivos /proc para localizar y apuntar a servicios root de alto privilegio como cron, systemd o sshd.
Este cargador se hace pasar por un "Depurador de fallos del sistema". Cuando se renombra a strace o gdb, la mayoría de las reglas EDR marcan el ptrace_attach inicial como una tarea administrativa. El "trabajo pesado" posterior —asignar 8MB de memoria e inyectar el agente— permanece completamente invisible gracias a la implementación de SROP y process_vm_writev.
Como se ve a continuación, la arquitectura polimórfica CMOV y la inyección zero-copy ciegan por completo a los EDR estáticos ML y de próxima generación.
🔥 Actualización sobre pruebas armadas: El cargador se probó adicionalmente incrustando un shellcode de agente Ghost-C2 completamente armado y cifrado con XOR. Gracias a la rutina de descifrado en memoria enmascarada por la arquitectura libre de bifurcaciones, la tasa de detección se mantuvo en un impecable 0/65.



🎯 Validación avanzada en sandbox: Tras el éxito del análisis estático, el cargador se sometió a pruebas de comportamiento en la plataforma sandbox empresarial Hatching Triage. A pesar de ejecutar la inyección completa basada en SROP y desplegar shellcode C2 en vivo, el cargador logró una evasión notable frente a las heurísticas de comportamiento modernas.
Resultados del sandbox Triage:
/proc/*/comm marcadas)Hallazgo crítico: Mientras el sandbox identificó el reconocimiento a nivel de superficie (descubrimiento de procesos), no logró detectar el mecanismo de inyección principal ni la actividad posterior al compromiso. Esto demuestra que las técnicas sofisticadas en espacio de usuario pueden lograr una evasión sustancial frente a los motores de análisis de comportamiento.
📊 Ver informe completo de Triage
El cargador mantuvo con éxito el sigilo operativo durante las fases más críticas: inyección de memoria, ofuscación de syscalls mediante SROP y establecimiento de la baliza C2, validando la efectividad de la arquitectura libre de bifurcaciones + syscall directa frente a la detección en sandbox de próxima generación.
Por seguridad y modularidad, este repositorio no contiene un payload malicioso activo. La sección c2_payload se proporciona como marcador de posición.
Para realizar una prueba de integración a gran escala:
Vaya a mi proyecto https://github.com/JM00NJ/ICMP-Ghost-A-Fileless-x64-Assembly-C2-Agent.
Navegue al directorio Phantom_Loader.
Copie el shellcode precompilado de loader.asm y péguelo en este motor.
Advertencia: Cuando use shellcode personalizado, asegúrese de que esté cifrado con XOR usando la clave 0xACDAABBBA2BC1337 y que el tamaño del payload esté correctamente actualizado en la Fase 3 del código fuente.
El cargador implementa un mecanismo de descifrado XOR rotativo. Para preparar su shellcode:
Use el script xor.py proporcionado.
Procesa cadenas hexadecimales sin procesar y las cifra usando una clave Little-Endian de 8 bytes (0xACDAABBBA2BC1337).
Esto garantiza que la instrucción xor r10, r14 en el código fuente en Assembly restaure correctamente las instrucciones originales en tiempo de ejecución.
Blog / Artículo técnico: https://netacoding.com/posts/phantom-evasion-loader-blog/
Autor: https://github.com/JM00NJ
Este proyecto está licenciado bajo GNU AGPLv3. Elegí esto para garantizar que la investigación permanezca abierta y beneficiosa para la comunidad.
Si la naturaleza copyleft de AGPLv3 no se alinea con sus requisitos comerciales o entorno propietario, no dude en contactarnos a través de Issues de GitHub o correo electrónico para obtener licencias personalizadas u oportunidades de colaboración.
Este proyecto se desarrolla con fines educativos y para pruebas de penetración autorizadas exclusivamente. El autor no se hace responsable de ningún uso indebido. Operar esta herramienta contra sistemas que no posee o para los cuales no tiene permiso explícito por escrito para realizar pruebas es ilegal.