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
gimphash — Calcolo simile a Imphash su binari Golang | Kitploit
Strumenti/GitHubGitHub/nextronsystems/gimphash
Analisi HashReverse EngineeringAnalisi MalwareAnalisi di Binari
GitHubnextronsystems/gimphash

gimphash

Calcolo simile a Imphash su binari Golang

Vedi Repository
5014 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

gimphash

gimphash è un metodo proposto per calcolare un equivalente di imphash per i binari Go. Il suo nome sta per Go-import-hash.

I binari Golang contengono le loro dipendenze come parte dell'eseguibile. Queste dipendenze includono sia i pacchetti della libreria standard sia le dipendenze di terze parti e possono essere usate, analogamente a un imphash classico, per identificare un progetto Golang.

Le dipendenze possono essere elencate usando la pclntab che fa parte di ogni binario Golang (vedi anche questo post del blog di Mandiant). La pclntab contiene una serie di elementi interessanti per il reverse engineering; per il gimphash useremo i nomi delle funzioni che vi sono contenuti.

Calcolo

  1. Individuare la pclntab all'interno di un binario Golang
  2. Enumerare le funzioni Golang usando la functab all'interno della pclntab e iterare sui loro nomi:
    1. Ignorare i nomi di funzione che iniziano con go. o type. (artefatti di compilazione, internals del runtime)
    2. Se un nome di funzione contiene vendor/, scartare quella sottostringa e tutto ciò che la precede (ad es. trasformare vendor/golang.org/x/text in golang.org/x/text)
    3. Ignorare i nomi di funzione che contengono internal/
    4. Ignorare i nomi di funzione che iniziano con uno dei seguenti pacchetti della libreria standard:
      • runtime
      • sync
      • syscall
      • type
      • time
      • unicode
      • reflect
      • strconv
    5. Ignorare i nomi di funzione che non sono pubblici o i cui receiver non sono pubblici. Per farlo:
      1. Trovare l'ultimo / nel nome della funzione. Se non viene trovato nessun /, usare l'inizio. Partendo da quella posizione, trovare il successivo ..
      2. Estrarre il nome di base della funzione come tutto ciò che segue quel .. Se non viene trovato nessun ., usare tutto ciò che segue l'indice / calcolato nel passaggio precedente.
      3. Ignorare la funzione se il primo carattere alfanumerico nel nome di base della funzione è un carattere minuscolo.
      4. Se esiste un altro . all'interno del nome di base della funzione, ignorare la funzione se il primo carattere alfanumerico dopo quel . è un carattere minuscolo.
    6. Memorizzare il nome risultante, se finora non è stato ignorato, in un elenco ordinato
  3. Calcolare l'hash SHA-256 sui nomi concatenati (nessun delimitatore)

Implementazioni Proof of Concept

Questo repository contiene codice proof-of-concept nei seguenti linguaggi:

  • C
  • Go

La sezione release contiene binari precompilati per Windows e Linux.

Esempi di Utilizzo

Esegui il calcolatore Gimphash su un singolo file

root@kitploit:~
./c_gimphash_linux /mnt/malware-repo/Godoh/godoh-windows64.exe
8200e76e42c4e9cf2bb308d76c017cbdcde5cbbf95e99e02b14d05e7b21505f3 /mnt/mal/Godoh/godoh-windows64.exe

Esegui il calcolatore Gimphash su un repository di malware

root@kitploit:~
find /mnt/malware-repo/ -type f -exec ./go_gimphash_linux {} \; 2>/dev/null
...

Esempio di Clustering

Screenshot 2022-07-02 at 10 11 38

Scarica lo strumento