Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
SHGenOb — Strumento basato su Python per generare Shellcode da PIC C | Kitploit
Strumenti/GitHubGitHub/oldboy21/shgenob
Strumenti di Crittografia/DecrittografiaGenerazione di PayloadExploitShellcodeAnalisi MalwareAnalisi di BinariApprendimento e FormazioneGenerazione di Shellcode
GitHuboldboy21/shgenob

SHGenOb

Strumento basato su Python per generare Shellcode da PIC C

Vedi Repository
4351410 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

SHGenOB: Generatore di Shellcode da Codice C PIC

Introduzione

SHGenOB è uno strumento basato su Python progettato per generare shellcode da codice Position Independent Code (PIC) scritto in C. Automatizza il processo di compilazione del codice C, estrae la sezione .text e, opzionalmente, cripta lo shellcode risultante utilizzando la crittografia XOR.

Questo progetto è interamente basato su questo di hasherezade.

Codice Position Independent (PIC)

Nota importante per gli utenti di SHGenOB: Affinché questo strumento di generazione di shellcode funzioni correttamente, il codice C nel file di input deve essere scritto come codice Position Independent (PIC). Lo strumento presuppone che il codice fornito segua i principi e le caratteristiche del PIC come descritto di seguito.

Il codice Position Independent (PIC) è un tipo di codice macchina che può essere eseguito indipendentemente dal suo indirizzo di memoria assoluto. Questa caratteristica rende il PIC particolarmente utile nella creazione di shellcode, librerie condivise e alcuni tipi di malware. Le caratteristiche principali del PIC includono:

  • Indipendenza dall'indirizzo: il PIC può essere eseguito correttamente indipendentemente da dove viene caricato in memoria.
  • Nessun riferimento di memoria fisso: evita l'uso di indirizzi assoluti, basandosi invece su indirizzamento relativo o altre tecniche per fare riferimento a posizioni di memoria.
  • Autosufficiente: il PIC include tipicamente tutti i dati necessari all'interno del codice stesso, riducendo le dipendenze esterne.
  • Stack-Strings: dichiarare le stringhe come array di char forza il compilatore a spingerle nello stack e non nella sezione .data o .pdata del file PE.
  • Senza rilocazioni: non richiede che il linker esegua rilocazioni, rendendolo più veloce da caricare ed eseguire.
  • Dimensioni ridotte: il PIC spesso produce dimensioni binarie inferiori rispetto al codice dipendente dalla posizione.
  • Indirizzamento relativo ai registri: utilizza frequentemente l'indirizzamento relativo ai registri per accedere ai dati ed eseguire salti.
  • Uso di offset: invece di indirizzi assoluti, il PIC utilizza offset dal puntatore di istruzione corrente.
  • Tecniche specifiche della piattaforma: diverse architetture CPU possono richiedere tecniche diverse per ottenere l'indipendenza dalla posizione.

Il PIC è essenziale in scenari in cui l'indirizzo di caricamento esatto del codice non è noto in anticipo, rendendolo un concetto cruciale nello sviluppo di shellcode e in alcune aree della programmazione di sistema. Quando si utilizza SHGenOB, assicurarsi che il codice C di input segua questi principi PIC per generare shellcode efficaci e affidabili.

Caratteristiche

  • Compila codice C PIC utilizzando gli strumenti Microsoft Visual Studio
  • Estrae la sezione .text dall'eseguibile compilato
  • Cripta opzionalmente lo shellcode utilizzando la crittografia XOR
  • Inserisce lo shellcode generato in un template di loader
  • Compila e testa il loader con lo shellcode generato
  • Supporta la modalità debug per l'ispezione di file intermedi
  • Pulisce i file intermedi dopo l'esecuzione riuscita

Requisiti

  • Sistema operativo Windows
  • Python 3.6 o superiore
  • Microsoft Visual Studio 2022 Community Edition (o versione compatibile)
  • I seguenti pacchetti Python:
    • pefile
    • argparse
  • Un compilatore C (cl.exe) e un assemblatore (ml64.exe) da Visual Studio
  • File vcvars64.bat da Visual Studio (per impostare l'ambiente di compilazione)

Installazione

  1. Installare Python 3.6 o superiore da python.org
  2. Installare Microsoft Visual Studio 2022 Community Edition
  3. Installare i pacchetti Python richiesti:

pip install pefile argparse

  1. Clonare o scaricare questo repository sul proprio computer locale

Utilizzo

Eseguire lo script dalla riga di comando con la seguente sintassi:

root@kitploit:~
python shgenob.py --code-file <percorso_del_file_c> [--masm-file <percorso_del_file_masm>] [--debug] [--xor-key <chiave>]

Argomenti:

  • --code-file o -cf: (Obbligatorio) Percorso del file main.c contenente il codice PIC
  • --masm-file o -mf: (Opzionale) Percorso di un file .masm esterno da includere per logica assembly aggiuntiva nello shellcode
  • --debug o -d: (Opzionale) Abilita la modalità debug (salta la pulizia dei file intermedi)
  • --xor-key o -xk: (Opzionale) Chiave XOR per criptare lo shellcode (formato: AA,BB,CC)

Esempi:

root@kitploit:~
# Utilizzo base
python shgenob.py --code-file main.c

# Con file MASM esterno
python shgenob.py --code-file main.c --masm-file custom_logic.masm

# Con tutte le opzioni
python shgenob.py --code-file main.c --masm-file custom_logic.masm --debug --xor-key AA,BB,CC

Descrizione delle funzioni

  1. save_to_file(content, filename): Salva il contenuto fornito in un file nella directory corrente
  2. cleanup(): Elimina i file intermedi (.asm, .exe, .obj, .lnk) nella directory corrente
  3. xor_encrypt(shellcode, key): Cripta lo shellcode usando XOR con la chiave fornita
  4. insert_shellcode_into_loader(formatted_shellcode, loader_file): Inserisce lo shellcode nel template del loader
  5. extract_text_section(file_path, key): Estrae la sezione .text da un file PE e opzionalmente la cripta
  6. find_file(root_dir, file_name): Cerca un file nella directory data e nelle sue sottodirectory
  7. run_command_with_vcvars(command, vcvars_path): Esegue un comando con le variabili d'ambiente di Visual Studio impostate
  8. compile_cpp_file(cpp_file, vcvars_path, output_exe): Compila un file C++ usando il compilatore Visual Studio
  9. modify_asm_file(asm_file): Modifica il file assembly generato per la compatibilità con lo shellcode
  10. main(cpp_file, args): Funzione principale che orchestra il processo di generazione dello shellcode

Flusso di lavoro

  1. Analizza gli argomenti della riga di comando
  2. Individua gli strumenti di Visual Studio (vcvars64.bat, cl.exe, ml64.exe)
  3. Compila il file C di input in assembly
  4. Modifica il file assembly generato
  5. Assembla il file assembly modificato
  6. Estrae la sezione .text dall'eseguibile risultante
  7. Opzionalmente cripta lo shellcode estratto
  8. Salva lo shellcode in un file
  9. Inserisce lo shellcode in un template di loader
  10. Compila il loader
  11. Testa il loader con lo shellcode generato
  12. Pulisce i file intermedi (tranne in modalità debug)

Debug

Usare il flag --debug per saltare il processo di pulizia e ispezionare i file intermedi. Utile per la risoluzione dei problemi e per comprendere il processo di generazione dello shellcode.

Considerazioni sulla sicurezza

  • Questo strumento è destinato esclusivamente a scopi educativi e di test autorizzati
  • Lo shellcode generato potrebbe essere rilevato da software antivirus
  • Utilizzare la crittografia (chiave XOR) per offuscare lo shellcode, ma notare che si tratta di una forma base di offuscamento
  • Assicurarsi di avere il permesso di utilizzare questo strumento sui sistemi target

Limitazioni

  • Attualmente supporta solo Windows e la toolchain di Microsoft Visual Studio
  • Gestione degli errori limitata per alcuni casi limite
  • La crittografia XOR è una forma base di offuscamento e potrebbe non essere sufficiente per tutti i casi d'uso

Contribuire

I contributi per migliorare SHGenOB sono benvenuti. Seguire questi passaggi:

  1. Fare un fork del repository
  2. Creare un nuovo branch per la propria funzionalità
  3. Eseguire il commit delle modifiche
  4. Caricare sul branch
  5. Creare una nuova Pull Request
Scarica lo strumento