
Python-basiertes Tool zur Generierung von Shellcode aus PIC C
SHGenOB ist ein auf Python basierendes Werkzeug, das Shellcode aus in C geschriebenem positionsunabhängigem Code (Position Independent Code, PIC) erzeugt. Es automatisiert den Prozess des Kompilierens von C-Code, des Extrahierens des .text-Abschnitts und optional des Verschlüsselns des resultierenden Shellcodes mittels XOR-Verschlüsselung.
Dieses Projekt basiert vollständig auf diesem Dokument von hasherezade.
Wichtiger Hinweis für SHGenOB-Benutzer: Damit dieses Tool zur Shellcode-Erzeugung korrekt funktioniert, muss der C-Code in der Eingabedatei als positionsunabhängiger Code (PIC) geschrieben sein. Das Tool geht davon aus, dass der bereitgestellte Code die unten beschriebenen PIC-Prinzipien und -Eigenschaften erfüllt.
Positionsunabhängiger Code (PIC) ist eine Art von Maschinencode, der unabhängig von seiner absoluten Speicheradresse ausgeführt werden kann. Diese Eigenschaft macht PIC besonders nützlich für die Erstellung von Shellcode, gemeinsam genutzten Bibliotheken und bestimmten Arten von Malware. Zu den Hauptmerkmalen von PIC gehören:
PIC ist in Szenarien unerlässlich, in denen die genaue Ladeadresse des Codes nicht im Voraus bekannt ist, was es zu einem entscheidenden Konzept in der Shellcode-Entwicklung und in bestimmten Bereichen der Systemprogrammierung macht. Stellen Sie bei der Verwendung von SHGenOB sicher, dass Ihr eingegebener C-Code diesen PIC-Prinzipien folgt, um effektiven und zuverlässigen Shellcode zu erzeugen.
pip install pefile argparse
Führen Sie das Skript über die Befehlszeile mit der folgenden Syntax aus:
python shgenob.py --code-file <path_to_c_file> [--masm-file <path_to_masm_file>] [--debug] [--xor-key <key>]
Argumente:
--code-file oder -cf: (Erforderlich) Pfad zur Datei main.c, die den PIC-Code enthält--masm-file oder -mf: (Optional) Pfad zu einer externen .masm-Datei, um zusätzliche Assembly-Logik in den Shellcode aufzunehmen--debug oder -d: (Optional) Debug-Modus aktivieren (überspringt die Bereinigung der Zwischendateien)--xor-key oder -xk: (Optional) XOR-Schlüssel zum Verschlüsseln des Shellcodes (Format: AA,BB,CC)Beispiele:
# Basisnutzung
python shgenob.py --code-file main.c
# Mit externer MASM-Datei
python shgenob.py --code-file main.c --masm-file custom_logic.masm
# Mit allen Optionen
python shgenob.py --code-file main.c --masm-file custom_logic.masm --debug --xor-key AA,BB,CC
save_to_file(content, filename): Speichert den angegebenen Inhalt in einer Datei im aktuellen Verzeichniscleanup(): Löscht Zwischendateien (.asm, .exe, .obj, .lnk) im aktuellen Verzeichnisxor_encrypt(shellcode, key): Verschlüsselt Shellcode mit XOR unter Verwendung des angegebenen Schlüsselsinsert_shellcode_into_loader(formatted_shellcode, loader_file): Fügt Shellcode in die Loader-Vorlage einextract_text_section(file_path, key): Extrahiert den .text-Abschnitt aus einer PE-Datei und verschlüsselt ihn optionalfind_file(root_dir, file_name): Sucht eine Datei im angegebenen Verzeichnis und seinen Unterverzeichnissenrun_command_with_vcvars(command, vcvars_path): Führt einen Befehl mit festgelegten Visual-Studio-Umgebungsvariablen auscompile_cpp_file(cpp_file, vcvars_path, output_exe): Kompiliert eine C++-Datei mit dem Visual-Studio-Compilermodify_asm_file(asm_file): Modifiziert die erzeugte Assembly-Datei für die Shellcode-Kompatibilitätmain(cpp_file, args): Hauptfunktion, die den Shellcode-Erzeugungsprozess orchestriertVerwenden Sie das Flag --debug, um den Bereinigungsprozess zu überspringen und Zwischendateien zu untersuchen. Dies ist nützlich zur Fehlerbehebung und zum Verständnis des Shellcode-Erzeugungsprozesses.
Beiträge zur Verbesserung von SHGenOB sind willkommen. Bitte befolgen Sie diese Schritte: