Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
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
AlphaGolang — Script IDApython per l'analisi di binari Golang | Kitploit
Strumenti/GitHubGitHub/sentinelabs/alphagolang
Analisi StaticaReverse EngineeringDebuggerAnalisi MalwareAnalisi di Binari
GitHubsentinelabs/alphagolang

AlphaGolang

Script IDApython per l'analisi di binari Golang

Vedi Repository
672732 anni 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

AlphaGolang

di Juan Andres Guerrero-Saade (JAG-S @ SentinelLabs)

Descrizione:

AlphaGolang è una raccolta di script IDAPython per aiutare i reverse engineer di malware a padroneggiare i binari Go. L'idea è di suddividere gli script in passaggi concreti, evitando così script monolitici fragili, e imitando la metodologia che un analista potrebbe seguire nell'affrontare un binario Go.

Gli script sono rilasciati sotto licenza GPL (in onore del GolangLoaderAssist originale di Tim Strazzere che abbiamo rifattorizzato e aggiornato per python3, grazie a Tim :) ). I contributi sono benvenuti e incoraggiati!

Requisiti: IDA Pro (idealmente v7.6+) e Python3 (ew) I primi due passi (recreate_pclntab e function_discovery_and_renaming) funzioneranno su IDA v7.5-, ma gli script successivi richiedono IDAv7.6+. Le versioni più recenti sono il target ideale per i nuovi script in futuro.

Riferimento originale: Presentazione al Mandiant Cyber Defense Summit 2021 (Video in attesa)

Metodologia di Analisi di AlphaGolang

  • Step 0: Regola YARA per identificare binari Go (PE/ELF/MachO)

    • identify_go_binaries.yara
      • Controllo semplice dell'header + regex per la stringa Go build ID.
      • Probabilmente si potrebbe migliorare l'intervallo di lunghezza del build ID.
  • Step 1: Ricreare la tabella pcln

    • recreate_pclntab.py (compatibile con IDA v7.5-)
      • Ricrea la sezione gopclntab tramite euristiche
      • Utile principalmente per IDA v7.5-
  • Step 2: Scoprire funzioni percorrendo la tabella pcln e aggiungere nomi a tutte

    • function_renaming.py (compatibile con IDA v7.5-)
      • Separato da golang loader assist
      • Scopre in modo brute-force le funzioni mancanti basandosi sulla tabella pcln
      • Risolti alcuni problemi di pulizia dei nomi delle funzioni dalla transizione a py3
      • Rifattorizzato per aggiungere miglioramenti per Go v1.18 basati su Panchan di Akamai! Grazie ad Alex (CycleOfTheAbsurd).
  • Step 3: Portare in superficie le funzioni generate dall'utente

    • categorize_go_folders.py (Richiede IDA v7.6+)
      • Classifica automaticamente le funzioni in cartelle
      • Richiede IDAv7.6 + l'opzione 'mostra cartelle' abilitata nella vista funzioni
      • AGGIORNAMENTO 16.05.2022: Risolto conflitto con l'ordinamento cartelle di IDA v7.7
      • Si consiglia vivamente di ripristinare i metadati da Lumina prima di eseguire questo plugin.
  • Step 4: Correggere i riferimenti alle stringhe

    • fix_string_cast.py
      • Separato da golang loader assist
      • Aggiunta logica per annullare la definizione di blob di stringhe esistenti prima di definire una nuova stringa
      • Nuovi controlli di validità lo rendono molto più efficace
  • Step 5: Estrarre informazioni sui tipi (di Ivan Kwiatkowski)

    • extract_types.py
      • Commenta gli argomenti di tutte le chiamate a newobject, makechan, ecc.
      • Applica il tipo C corretto a questi oggetti e li rinomina
      • Ottiene il nome leggibile dall'uomo e lo aggiunge come commento

Correzioni in sospeso e spazio per contributi:

  • fix_string_cast.py - Necessita ancora di refactoring + migliori euristiche per il caricamento delle stringhe - Può portare a blocco in binari di grandi dimensioni. - Mancano alcuni meccanismi di caricamento indiretto delle stringhe.
  • extract_types.py
    • Attualmente funziona su file PE e Mach-O cercando i nomi di sezione hardcoded .rdata o __rodata.
    • È necessario un controllo/implementazione adeguata per le dimensioni codificate in varint.

Prossimi passi:

  • Tracciare i riferimenti alle stringhe nelle funzioni generate dall'utente
  • Generare automaticamente firme YARA basate sulle funzioni generate dall'utente
  • Generare output pseudocodice di Hex-Rays per le funzioni generate dall'utente
  • Impostare automaticamente breakpoint per l'analisi dinamica degli argomenti
  • ???

Crediti a:

  • Tim Strazzere per il rilascio dell'originale golang_loader_assist
  • Milan Bohacek (Avast Software s.r.o.) per il suo inestimabile aiuto nel comprendere l'API idatree.
  • Joakim Kennedy (Intezer)
  • Ivan Kwiatkowski (Kaspersky GReAT) per lo step 5.
  • Igor Kuznetsov (Kaspersky GReAT)
  • Alex (alias CycleOfTheAbsurd) di ESET per il refactoring dello Step 2 per il supporto a Go v1.18.
Scarica lo strumento