
Outil basé sur Python pour générer du Shellcode à partir de PIC C
SHGenOB est un outil basé sur Python conçu pour générer du shellcode à partir de code indépendant de la position (PIC) écrit en C. Il automatise le processus de compilation du code C, l'extraction de la section .text et, éventuellement, le chiffrement du shellcode résultant à l'aide d'un chiffrement XOR.
Ce projet est entièrement basé sur ce document de hasherezade.
Note importante pour les utilisateurs de SHGenOB : Pour que cet outil de génération de shellcode fonctionne correctement, le code C du fichier d'entrée doit être écrit en tant que code indépendant de la position (PIC). L'outil suppose que le code fourni respecte les principes et caractéristiques du PIC décrits ci-dessous.
Le code indépendant de la position (PIC) est un type de code machine qui peut être exécuté indépendamment de son adresse mémoire absolue. Cette caractéristique rend le PIC particulièrement utile pour créer du shellcode, des bibliothèques partagées et certains types de logiciels malveillants. Les principales caractéristiques du PIC sont les suivantes :
Le PIC est essentiel dans les scénarios où l'adresse de chargement exacte du code n'est pas connue à l'avance, ce qui en fait un concept crucial dans le développement de shellcode et dans certains domaines de la programmation système. Lorsque vous utilisez SHGenOB, assurez-vous que votre code C d'entrée suit ces principes PIC afin de générer un shellcode efficace et fiable.
pip install pefile argparse
Exécutez le script à partir de la ligne de commande avec la syntaxe suivante :
python shgenob.py --code-file <chemin_vers_fichier_c> [--masm-file <chemin_vers_fichier_masm>] [--debug] [--xor-key <clé>]
Arguments :
--code-file ou -cf : (Obligatoire) Chemin vers le fichier main.c contenant le code PIC--masm-file ou -mf : (Facultatif) Chemin vers un fichier .masm externe pour inclure une logique assembleur supplémentaire dans le shellcode--debug ou -d : (Facultatif) Active le mode débogage (ignore le nettoyage des fichiers intermédiaires)--xor-key ou -xk : (Facultatif) Clé XOR pour chiffrer le shellcode (format : AA,BB,CC)Exemples :
# Utilisation de base
python shgenob.py --code-file main.c
# Avec un fichier MASM externe
python shgenob.py --code-file main.c --masm-file custom_logic.masm
# Avec toutes les options
python shgenob.py --code-file main.c --masm-file custom_logic.masm --debug --xor-key AA,BB,CC
save_to_file(content, filename) : Enregistre le contenu donné dans un fichier du répertoire courantcleanup() : Supprime les fichiers intermédiaires (.asm, .exe, .obj, .lnk) du répertoire courantxor_encrypt(shellcode, key) : Chiffre le shellcode à l'aide d'un XOR avec la clé fournieinsert_shellcode_into_loader(formatted_shellcode, loader_file) : Insère le shellcode dans le modèle de chargeurextract_text_section(file_path, key) : Extrait la section .text d'un fichier PE et la chiffre éventuellementfind_file(root_dir, file_name) : Recherche un fichier dans le répertoire donné et ses sous-répertoiresrun_command_with_vcvars(command, vcvars_path) : Exécute une commande avec les variables d'environnement Visual Studio définiescompile_cpp_file(cpp_file, vcvars_path, output_exe) : Compile un fichier C++ à l'aide du compilateur Visual Studiomodify_asm_file(asm_file) : Modifie le fichier assembleur généré pour la compatibilité du shellcodemain(cpp_file, args) : Fonction principale qui orchestre le processus de génération du shellcodeUtilisez l'indicateur --debug pour ignorer le processus de nettoyage et inspecter les fichiers intermédiaires. Cela est utile pour résoudre les problèmes et comprendre le processus de génération du shellcode.
Les contributions visant à améliorer SHGenOB sont les bienvenues. Veuillez suivre ces étapes :