
IDPS & SandBox & AntiVirus TUEUR FURTIF. MorphAES est le premier moteur de shellcode polymorphe au monde, doté de propriétés métamorphiques et de la capacité de contourner les sandboxes, ce qui le rend indétectable pour un IDPS ; il est également multiplateforme et indépendant des bibliothèques.
IDPS & SandBox & AntiVirus : Tueur furtif.

MorphAES est le premier moteur de shellcode polymorphe au monde, avec des propriétés métamorphiques et la capacité de contourner les sandboxes, ce qui le rend indétectable pour un IDPS. Il est également multiplateforme et indépendant des bibliothèques.
Propriétés :
Dépendances pour le morpheur :
Dépendances pour l'exécution du code :
Néanmoins, il existe certaines limitations (alias aspects white-hat) :
Vous devrez assembler mon implémentation personnalisée AESNI-128-ECB en utilisant un CPU Intel x64 et la placer dans le même dossier que le script Python.
Pour Linux :
sudo apt-get install python
as --64 AES.s -o AES.o
ld AES.o -o AES
Exécutez le script Python et entrez votre shellcode ou rien pour un shell Linux par défaut. Vous pouvez également spécifier votre propre adresse d'exécution.
Il est également possible de compiler et d'exécuter sur Windows/BSD/Mac, mais je suis encore en phase de test.
Vous pouvez tester le PoC Linux en assembleur :
as --64 shellcodePoC.s -o shellcodePoC.o
ld shellcodePoC.o -o shellcodePoC
./shellcodePoC
ou en C :
gcc -m64 -fno-stack-protector -z execstack shellcode.c -o shellcode
./shellcode
Chaque fichier est commenté et expliqué
À ce stade, il devrait être assez évident que les hachages seront différents à chaque fois, mais comparons les SSDEEP de 2 exécutables Linux du même shellcode :
Eh bien, il y a quelque chose en commun, mais globalement ce sont deux signatures différentes. Qu'en est-il du shellcode lui-même :
Des signatures presque totalement différentes pour le même shellcode morphe !
À la date de publication, l'exécutable n'était détecté comme shellcode que par 2 antivirus sur 53 (AVG et Ikarus) sur virustotal, mais maintenant, il échoue tout simplement à analyser.
Du point de vue du reverser, IDA ne verra rien non plus.
Radare2 ne montrerait les vraies instructions que si assemblé par l'assembleur lui-même, cependant il ne détecte aucune activité crypto ou suspecte pour l'exécutable.
Bien que je ne l'aie pas testé personnellement, je pense que FortiSandbox, Sophos Sandstorm, Blue Coat, GateWatcher et leurs dérivés pourraient échouer lamentablement...
En gros, il peut transformer le code d'un script-kid (ou d'un code connu) en un zero-day.
Les IDPS échoueront car il est presque impossible de créer une signature et difficile de faire une analyse par expressions régulières ou heuristique.
La plupart des sandboxes n'utilisent pas directement les instructions AES-NI d'Intel, donc elles n'exécuteront pas le code, donc « tout va bien » pour elles, alors que ce n'est pas le cas.
La seule façon de vaincre ce type de shellcode est d'utiliser un sandboxing approprié et/ou une IA.
Bien sûr, DEP/NX/CANARY/ASLR devraient également fonctionner.
Notez que l'exécution entière est réalisée en assembleur pur, aucun Python (ou OpenSSL) n'est nécessaire pour l'exécution du shellcode car j'utilise uniquement des instructions assembleur intégrées, il est donc indépendant du système (certes, vous devrez l'assembler pour chaque système en adaptant les instructions/opcodes, mais ils restent les mêmes).
C'est encore un travail en cours, je vais implémenter les moteurs Windows et BSD/Mac et les PoCs dès que possible.
Les IDPS et les sandboxes appartiennent au passé.
"La tradition devient notre sécurité, et lorsque l'esprit est en sécurité, il est en décadence."
Jiddu Krishnamurti