
Moteur d'injection en assembleur x64 utilisant SROP et Zero-Copy Injection pour contourner les EDR/XDR et les moniteurs du noyau. Délivre des charges utiles chiffrées par XOR avec une surface de détection minimale.
Phantom-Evasion-Loader est un moteur d'injection autonome, pur assemblage x64, conçu pour minimiser la surface de détection des solutions EDR/XDR modernes et des moniteurs de niveau noyau comme Falco (eBPF). Il exploite des techniques avancées telles que le SROP et l'injection zéro-copie pour délivrer des charges utiles comme un fantôme dans la machine.
Contrairement aux injecteurs traditionnels et bruyants, ce moteur est conçu pour la furtivité. Il ne crie pas « JE SUIS UN MALWARE » au noyau. Au lieu de cela, il imite le comportement légitime de débogage système, effectuant des opérations mémoire chirurgicales qui restent sous le radar de l'analyse comportementale.
Détournement SROP (Sigreturn Oriented Programming) : Au lieu de définir manuellement les registres un par un via des appels ptrace bruyants, il utilise rt_sigreturn (Appel système 15) pour manipuler l'ensemble du contexte CPU en une seule transaction d'apparence légitime.
Injection zéro-copie (process_vm_writev) : Il abandonne les anciennes boucles PTRACE_POKEDATA, lentes et fortement surveillées. En utilisant process_vm_writev (Appel système 311), il achemine la charge utile directement de la mémoire du chargeur vers le processus cible en une seule opération, contournant les signatures standard d'« Injection de code ».
Réduction de la surface de détection (Falco/EDR) : Lors de tests de résistance réels, cette architecture a réduit le bruit d'alerte par défaut de Falco de plus de 200 lignes de logs « Critique/Avertissement » à seulement 8 lignes de bruit « Faible priorité/Débogage ».
Déchiffrement en mémoire à l'exécution (XOR) : La charge utile reste chiffrée en mémoire et n'est déchiffrée qu'à la milliseconde de l'injection. Cela contrecarre les scanners statiques de shellcode et les analyses de chaînes mémoire basiques.
Énumération dynamique des cibles : Analyse automatiquement le système de fichiers /proc pour localiser et cibler les services root à privilèges élevés comme cron, systemd ou sshd.
Ce chargeur se fait passer pour un « Débogueur de défauts système ». Lorsqu'il est renommé en strace ou gdb, la plupart des règles EDR marquent le ptrace_attach initial comme une tâche administrative. Le « travail lourd » ultérieur – allouer 8 Mo de mémoire et injecter l'agent – reste totalement invisible grâce à l'implémentation SROP et process_vm_writev.
Comme on le voit ci-dessous, l'architecture polymorphe CMOV et l'injection zéro-copie aveuglent complètement les ML statiques et les EDR de nouvelle génération.
🔥 Mise à jour sur les tests armés : Le chargeur a également été testé en intégrant un shellcode d'agent Ghost-C2 entièrement armé et chiffré en XOR. Grâce à la routine de déchiffrement en mémoire masquée par l'architecture sans branche, le taux de détection est resté parfaitement 0/65.



🎯 Validation avancée en sandbox : Après le succès de l'analyse statique, le chargeur a subi des tests comportementaux sur la plateforme sandbox d'entreprise Hatching Triage. Malgré l'exécution de l'injection SROP complète et le déploiement de shellcode C2 en direct, le chargeur a obtenu une évasion remarquable face aux heuristiques comportementales modernes.
Résultats de la sandbox Triage :
/proc/*/comm signalées)Constat critique : Alors que la sandbox a identifié la reconnaissance de surface (découverte de processus), elle n'a pas réussi à détecter le mécanisme d'injection principal ni l'activité post-compromission. Cela démontre que des techniques utilisateur sophistiquées peuvent atteindre une évasion substantielle face aux moteurs d'analyse comportementale.
📊 Voir le rapport Triage complet
Le chargeur a maintenu avec succès une furtivité opérationnelle pendant les phases les plus critiques : injection mémoire, obfuscation d'appel système via SROP, et établissement de balise C2 - validant l'efficacité de l'architecture sans branche + appel système direct face à la détection en sandbox de nouvelle génération.
Par souci de sécurité et de modularité, ce dépôt ne contient pas de charge utile malveillante active. La section c2_payload est fournie comme espace réservé.
Pour effectuer un test d'intégration à grande échelle :
Rendez-vous sur mon projet https://github.com/JM00NJ/ICMP-Ghost-A-Fileless-x64-Assembly-C2-Agent.
Accédez au répertoire Phantom_Loader.
Copiez le shellcode pré-compilé depuis loader.asm et collez-le dans ce moteur.
Avertissement : Lorsque vous utilisez un shellcode personnalisé, assurez-vous qu'il est chiffré en XOR avec la clé 0xACDAABBBA2BC1337 et que la taille de la charge utile est correctement mise à jour dans la Phase 3 du code source.
Le chargeur implémente un mécanisme de déchiffrement XOR progressif. Pour préparer votre shellcode :
Utilisez le script xor.py fourni.
Il traite les chaînes hexadécimales brutes et les chiffre à l'aide d'une clé Little-Endian de 8 octets (0xACDAABBBA2BC1337).
Cela garantit que l'instruction xor r10, r14 dans le code source assembleur restaure correctement les instructions originales à l'exécution.
Blog / Article technique : https://netacoding.com/posts/phantom-evasion-loader-blog/
Auteur : https://github.com/JM00NJ
Ce projet est sous licence GNU AGPLv3. J'ai choisi cette licence pour garantir que la recherche reste ouverte et bénéfique à la communauté.
Si la nature copyleft de l'AGPLv3 ne correspond pas à vos exigences commerciales ou à votre environnement propriétaire, n'hésitez pas à me contacter via les Issues GitHub ou par email pour des licences personnalisées ou des opportunités de collaboration.
Ce projet est développé à des fins éducatives et pour des tests de pénétration autorisés uniquement. L'auteur n'est pas responsable de toute utilisation abusive. L'utilisation de cet outil contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation écrite explicite est illégale.