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
Kam1n0-Community — Piattaforma di analisi assembly scalabile per indicizzazione, ricerca di cloni e classificazione di eseguibili utilizzando tecniche statiche, dinamiche e di apprendimento automatico su più architetture. | Kitploit
Strumenti/GitHubGitHub/mcgill-dmas/kam1n0-community
Analisi delle VulnerabilitàAnalisi del CodiceReverse EngineeringFuzzingAnalisi di BinariMachine Learning
GitHubmcgill-dmas/kam1n0-community

Kam1n0-Community

Piattaforma di analisi assembly scalabile per indicizzazione, ricerca di cloni e classificazione di eseguibili utilizzando tecniche statiche, dinamiche e di apprendimento automatico su più architetture.

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

Cos'è Kam1n0 v2?

image GitHub (pre-)release Github All Releases JDK PRs Welcome

Build latest development release (Windows) Test release build (Windows)

Kam1n0 v2.x è una piattaforma scalabile per la gestione e l'analisi di assembly. Permette a un utente di indicizzare una (grande) collezione di binari in diversi repository e fornisce servizi analitici come la ricerca di cloni e la classificazione. Supporta l'accesso multi-tenant e la gestione dei repository di assembly utilizzando il concetto di Applicazione. Un'istanza di applicazione contiene il proprio repository esclusivo e fornisce un servizio analitico specializzato. Considerando la versatilità dei compiti di reverse engineering, il server Kam1n0 v2.x fornisce attualmente tre diversi tipi di applicazioni per la ricerca di cloni: Asm-Clone, Sym1n0 e Asm2Vec, e una classificazione degli eseguibili basata su Asm2Vec. Nuovi tipi di applicazione possono essere aggiunti alla piattaforma.

Un utente può creare più istanze di applicazione. Un'istanza di applicazione può essere condivisa tra un gruppo specifico di utenti. L'accesso in lettura/scrittura e lo stato di attivazione del repository dell'applicazione possono essere controllati dal proprietario dell'applicazione. Il server Kam1n0 v2.x può servire le applicazioni contemporaneamente utilizzando diversi pool di risorse condivise.

Kam1n0 è stato sviluppato da Steven H. H. Ding e Miles Q. Li sotto la supervisione di Benjamin C. M. Fung del Data Mining and Security Lab presso la McGill University in Canada. Ha vinto il secondo premio al Hex-Rays Plug-In Contest 2015. Se trovi Kam1n0 utile, ti preghiamo di citare i nostri articoli:

  • S. H. H. Ding, B. C. M. Fung, and P. Charland. Kam1n0: MapReduce-based Assembly Clone Search for Reverse Engineering. In Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (SIGKDD), pages 461-470, San Francisco, CA: ACM Press, August 2016.

  • S. H. H. Ding, B. C. M. Fung, and P. Charland. Asm2Vec: boosting static representation robustness for binary clone search against code obfuscation and compiler optimization. In Proceedings of the 40th IEEE Symposium on Security and Privacy (S&P), 18 pages, San Francisco, CA: IEEE Computer Society, May 2019.

Asm-Clone

Le applicazioni Asm-Clone tentano di risolvere il problema efficiente della ricerca di sottografi (cioè il problema dell'isomorfismo di grafi) per le funzioni assembly (tempo medio di interrogazione <1.3 s e tempo medio di indicizzazione <30 ms con 2,3 milioni di funzioni). Data una funzione target (quella a sinistra come mostrato sotto), può identificare i sottografi clonati tra altre funzioni nel repository (quella a destra come mostrato sotto).

  • Tipo di applicazione: Asm-Clone
  • Il servizio di ricerca di cloni originale utilizzato in Kam1n0 v1.x.
  • Attualmente supporta Meta-PC, ARM, PowerPC e TMS320c6 (sperimentale).
  • Supporta la ricerca di cloni di sottografi all'interno di una certa famiglia di codice assembly.
    • + Buona interpretabilità del risultato: scomposto in sottografi.
    • + Preciso per la ricerca all'interno della famiglia di codice data.
    • + Buono per differenziare varie patch o versioni di binari di grandi dimensioni.
    • - Relativamente più sensibile a modifiche del set di istruzioni, ottimizzazioni e offuscamento.
    • - Necessità di predefinire la sintassi del linguaggio assembly.
    • - Necessità di avere codice assembly della stessa famiglia scelta nel repository.

Sym1n0

Ricerca di cloni semantici tramite fuzz testing differenziato e risoluzione di vincoli. Un approccio ibrido dinamico-statico efficiente e scalabile (tempo medio di interrogazione <1 s e tempo medio di indicizzazione <100 ms con 1,5 milioni di funzioni). Data una funzione target (quella a sinistra come mostrato sotto), può identificare i sottografi clonati tra altre funzioni nel repository (quella a destra come mostrato sotto). Supporta la visualizzazione del grafo sintattico astratto.

  • Tipo di applicazione: Sym1n0 (solo v2)
  • Ricerca di cloni tramite esecuzione simbolica ed esecuzione concreta.
  • Differenzia le funzioni in base al loro diverso comportamento I/O.
  • La ricerca di cloni viene condotta sul grafo sintattico astratto costruito da Vex IR (alimentato da LibVex).
    • + Ricerca di cloni tra diverse famiglie di codice assembly.
      • Ad esempio, binari x86 indicizzati ma la query è codice ARM.
    • + Ricerca di cloni di sottografi.
    • + Supporta un'ampia gamma di famiglie tramite LibVex.
      • x86, AMD64, MIPS32, MIPS64, PowerPC32, PowerPC64, ARM32 e ARM64.
    • + Un approccio ibrido dinamico-statico efficiente.
    • + Ideale per analizzare firmware compilati per diversi processori.
    • - Sensibile alla manipolazione pesante del grafo (come un appiattimento completo).
    • - Sensibile alla rottura su larga scala dell'integrità del blocco di base.

Asm2Vec

Asm2Vec sfrutta l'apprendimento di rappresentazioni. Comprende la relazione semantica lessicale del codice assembly. Ad esempio, i registri xmm* sono semanticamente correlati a operazioni vettoriali come addps. memcpy è simile a strcpy. Il grafico seguente mostra diverse funzioni assembly compilate dallo stesso codice sorgente di gmpz_tdiv_r_2exp in libgmp. Da sinistra a destra, le funzioni assembly sono compilate con GCC O0, GCC O3, O-LLVM obfuscator Control Flow Graph, Flattening e LLVM obfuscator Bogus Control Flow Graph. Asm2Vec può identificarle staticamente come cloni.

  • Sfrutta l'apprendimento di rappresentazioni.
  • Comprende la relazione semantica lessicale del codice assembly.
    • + All'avanguardia per la ricerca di cloni contro tecniche di offuscamento pesante del codice.
      • (>0,8 accuratezza per tutte le opzioni applicate in O-LLVM, iterazioni multiple).
    • + All'avanguardia per la ricerca di cloni contro ottimizzazioni del codice.
      • (>0,8 accuratezza tra O0 e O3, >0,94 accuratezza tra O2 e O3).
    • + Risultato persino migliore dell'approccio dinamico più recente.
    • + Molto più efficiente degli approcci dinamici recenti.
    • + Non è necessario definire l'architettura. Impara autonomamente leggendo grandi volumi di codice.
    • + Approccio statico: efficiente e scalabile.
    • - Nessun sottografo.
    • - Presuppone che il codice assembly provenga dalla stessa famiglia di processori.
    • - Approccio statico: non può riconoscere tabelle di salto, ecc.

Classificazione degli eseguibili

In questa applicazione, l'utente definisce un insieme di classi software basate sulla correlazione funzionale e fornisce binari appartenenti a ciascuna classe. Quindi il sistema raggruppa automaticamente le funzioni in cluster in cui le funzioni sono collegate direttamente o indirettamente da relazioni di cloni. I cluster che sono discriminanti per la classificazione vengono mantenuti e fungono da firme delle loro classi. Dato un binario target, il sistema mostra il grado di appartenenza a ciascuna classe software.

  • Utilizza Asm2Vec come modello di calcolo della somiglianza delle funzioni.

    • + Fornisce risultati di classificazione interpretabili.
    • + Apprende caratteristiche comuni (cioè cluster di funzioni) di ciascuna classe.
    • + In grado di gestire dataset più piccoli e squilibrati rispetto a un normale modello di machine learning.
    • - Il limite è che l'assunzione che i binari nella stessa classe condividano alcune funzioni comuni deve essere vera affinché il sistema funzioni.

Panoramica della piattaforma

La figura seguente mostra i principali componenti dell'interfaccia utente e le funzionalità di Kam1n0 v2.x. Adottiamo un material design. In generale, ogni utente ha un elenco di applicazioni, un elenco di lavori in esecuzione e un elenco di file di risultati.

  • L'elenco delle applicazioni mostra le istanze di applicazione possedute dall'utente e condivise da altri.
  • L'elenco dei lavori in esecuzione mostra l'avanzamento per una query di grandi dimensioni (come chrome.dll) e la procedura di indicizzazione.
  • L'elenco dei file di risultati mostra i risultati salvati. Maggiori dettagli sul design dell'interfaccia utente sono disponibili nel nostro tutorial dettagliato.

Istruzioni per l'installazione

La versione corrente di Kam1n0 consiste in due installer: il server principale e il plug-in per IDA Pro.

InstallerComponenti inclusiDescrizione
Kam1n0-Server.msiMotore principaleMotore principale che fornisce il servizio per l'indicizzazione e la ricerca.
WorkbenchUn'interfaccia utente per gestire i repository e il servizio in esecuzione.
Interfaccia utente webInterfaccia utente web per cercare/indicizzare file binari e funzioni assembly.
Visual C++ redistributable per VS 15Dipendeza per z3.
Kam1n0-IDA-Plugin.msiPlug-inConnettori e interfaccia utente.
Pacchetti PyPI per CefpythonMotore di rendering per l'interfaccia utente.
Pacchetti PyPI e dipendenzeGestione dei pacchetti per Python. Inclusi per IDA 6.8 e 6.9.

Installazione del server Kam1n0

Il motore principale di Kam1n0 è scritto puramente in Java. Hai bisogno delle seguenti dipendenze:

  • [Richiesto] L'ultima distribuzione x64 11.x JRE/JDK da Oracle.
  • [Opzionale] L'ultima versione di IDA Pro con il plug-in idapython installato. Il plug-in Python e il runtime dovrebbero essere già installati con IDA Pro. Reinstallare IDA Pro se necessario.

Scarica il file Kam1n0-Server.msi dalla nostra pagina delle release. Segui le istruzioni per installare il server. Ti verrà chiesto di selezionare un percorso di installazione. IDA Pro è opzionale se il server non deve gestire alcun disassemblaggio. In altre parole, il lato client utilizza il plug-in Kam1n0 per IDA Pro. Si consiglia vivamente di avere IDA Pro installato con il server Kam1n0. Il server Kam1n0 rileverà automaticamente il tuo IDA Pro cercando l'applicazione predefinita che usi per aprire file .i64.

Installazione del plug-in per IDA Pro

Il plug-in Kam1n0 per IDA Pro è scritto in Python per la logica e in HTML/JavaScript per il rendering. Le seguenti dipendenze sono richieste per la sua installazione:

  • [Richiesto] IDA Pro (>6.7) con il plug-in idapython installato. Il plug-in Python e il runtime dovrebbero essere già installati con IDA Pro. Reinstallare IDA Pro se necessario.

Successivamente, scarica l'installer Kam1n0-IDA-Plugin.msi dalla nostra pagina delle release. Segui le istruzioni per installare il plug-in e il runtime. Tieni presente che il plug-in deve essere installato nella cartella dei plug-in di IDA Pro situata in $IDA_PRO_PATH$/plugins. Ad esempio, su Windows, il percorso potrebbe essere C:/Program Files (x86)/IDA 6.95/plugins. L'installer rileverà e convaliderà il percorso.

Impostazione di Kam1n0 su sistemi basati su Ubuntu/Debian

  • Assicurati di avere la versione Oracle di Java 11. (Non default-jdk in apt.)

    • Aggiungi il PPA di Oracle e poi aggiorna il repository dei pacchetti: sudo add-apt-repository ppa:webupd8team/java
      • Se incontri errori (ad esempio ~webupd8team not found), se sei su un proxy, assicurati di impostare ed esportare le variabili d'ambiente http_proxy e https_proxy, e riprova con l'opzione -E su sudo. Inoltre, se ricevi un errore "add-apt repository command not found", prova: sudo apt install -y software-properties-common.
    • Successivamente: sudo apt-get update e sudo apt-get install oracle-java8-installer
      • Verifica la tua versione di Java con java -version; potresti dover impostare manualmente la variabile d'ambiente JAVA_HOME (in /etc/environment), JAVA_HOME=/usr/lib/jvm/java-11-oracle
  • Scarica l'ultima release per Linux (Kam1n0-IDA-Plugin.tar.gz e Kam1n0-Server.tar.gz) da Kam1n0-Community.

  • Estrai i due tarball (es. tar –xvzf Kam1n0-IDA-Plugin.tar.gz e tar –xvzf Kam1n0-Server.tar.gz)

  • Il file Kam1n0-Server.tar.gz creerà la directory del server.

  • All'interno della directory server, dovresti vedere un file chiamato kam1n0.properties, dove imposterai varie configurazioni per kam1n0; questo è molto importante.

  • Imposta kam1n0.data.path sul percorso in cui desideri che i dati relativi a kam1n0 vengano scritti. Noi scegliamo di metterlo nello stesso posto in cui manteniamo il server. kam1n0.ida.home si riferisce a dove si trova la tua installazione di IDA. Commenta questa riga (e kam1n0.ida.batch, la riga successiva) se non hai IDA e non intendi usare kam1n0 per il disassemblaggio. Per maggiori informazioni (accurate) sul file kam1n0.properties, consulta il file kam1n0.properties.explained.

  • Esegui kam1n0-server-workbench: java -jar kam1n0-server-workbench.jar. Questo dovrebbe far apparire una finestra che ti chiede di avviare kam1n0. In alternativa, esegui kam1n0-server: java -jar kam1n0-server.jar --start. Questo avvia il server dalla console senza finestra.

  • Per connetterti e usarlo, vai a 127.0.0.1:8571 (la porta predefinita su cui kam1n0 ascolta dovrebbe essere 8571, ma può essere cambiata in kam1n0.properties) nel tuo browser. Dovresti vedere la bella interfaccia web di kam1n0. Da lì, segui il tutorial sul repo Kam1n0-Community se non sai come usare kam1n0.

Compatibilità all'indietro

I repository di codice assembly e i file di configurazione utilizzati nelle versioni precedenti (<2.0.0) non sono più supportati dall'ultima versione. Contattaci se hai bisogno di migrare i tuoi vecchi repository.

Documentazione

  • Tutorial del server Kam1n0
    • Configurazione e avvio del motore
    • Registrare un account e accedere
    • Creare un'applicazione
    • Condivisione dell'applicazione e controllo degli accessi
    • Preparazione dei dati
    • L'URL dell'applicazione per il plug-in IDA Pro
    • Indicizzare file binari
    • Cercare con una funzione assembly
      • Vista del grafo di flusso
      • Vista delle differenze testuali
      • Vista del gruppo di cloni
    • Cercare con un file binario
    • Sfogliare un risultato di ricerca di cloni
      • I riquadri di riepilogo
      • Dettagli
  • Tutorial del plug-in IDA Pro
    • Funzionalità
    • Esempio guidato
      • Preparazione dei dati
      • Avvio del motore e URL per il plug-in IDA Pro
      • Configurazione della connessione
      • Indicizzazione dal plug-in
      • Ricerca di funzioni
      • Analisi della composizione
      • Ricerca di frammenti assembly
      • Casella di ricerca
    • Come funziona il plug-in
      • Interfaccia utente
      • Sincronizzazione

Sviluppo

Clona l'ultimo branch stabile (non dimenticare --recursive!):```bash git clone --recursive -b master2.x --single-branch https://github.com/McGill-DMaS/Kam1n0-Community

root@kitploit:~
## Importazione del progetto.
IntelliJ: Importa la root /kam1n0/kam1n0/ come progetto Maven. Tutti i sottomoduli verranno caricati di conseguenza.
EclipseEE: Aggiungi il repository git clonato alla vista git. Importa tutti i progetti Maven dal repository git.
Potrebbe essere necessario modificare il classpath per risolvere eventuali errori.
Tutti i percorsi delle risorse vengono modificati dinamicamente quando si esegue all'interno di un IDE (tramite il sottomodulo kam1n0-resources).

Per compilare il progetto:```
cd /kam1n0/kam1n0
mvn -DskipTests clean package
mvn -DskipTests package

I binari risultanti si trovano in /kam1n0/build-bins/

Per eseguire il codice di test, dovrai prima scaricare chromedriver.exe da http://chromedriver.chromium.org/ e aggiungere il suo percorso assoluto in una variabile d'ambiente chiamata webdriver.chrome.driver. È anche richiesto che sia installato un browser Chrome nel sistema. Il codice di test avvierà un'istanza del browser per testare le interfacce UI. L'intera procedura di test richiederà circa 3 ore.``` cd /kam1n0/kam1n0 mvn -DskipTests clean package # you can skip this one if you already built the package mvn -DskipTests package # you can skip this one if you already built the package mvn -DforkMode=never test

root@kitploit:~
Questi comandi compilano solo Java con ruote precompilate di libvex e z3. Funziona immediatamente.  
La compilazione di libvex e z3 dipende dalla piattaforma. Usiamo un fork di libvex da Angr.  
Script di build più seri, così come gli installer per Windows/Linux, sono disponibili in `/kam1n0-builds/`.

* kam1n0: Il codice sorgente del server.
* kam1n0-builds: Codice sorgente dell'installer e script per creare la distribuzione.
* kam1n0-clients: Il codice sorgente dei client.

## Versioni binarie

Abbiamo un server Jenkin per lo sviluppo e la distribuzione continui. L'ultima versione stabile verrà pubblicata qui. Periodicamente sincronizzeremo il nostro ramo sperimentale interno con questo repository.

## Licenza

Il software è stato sviluppato da [Steven H. H. Ding](http://stevending.net/), [Miles Q. Li](http://milesqli.github.io/) e [Benjamin C. M. Fung](http://dmas.lab.mcgill.ca/fung/) presso il [McGill Data Mining and Security Lab](http://dmas.lab.mcgill.ca/) e il [Queen's L1NNA Research Laboratory](https://l1nna.com/) in Canada. È distribuito sotto la licenza Apache versione 2.0. Fare riferimento a [LICENSE.txt](https://github.com/mcgill-dmas/kam1n0-community/blob/master2.x/LICENSE.txt) per i dettagli.

Copyright 2014-2021 McGill University e i Ricercatori. Tutti i diritti riservati.

## Riconoscimenti

![image](https://img.shields.io/badge/Proudly%20Funded%20by-Defence%20Research%20&%20Development%20Canada%20(DRDC)-orange.svg?style=for-the-badge)

![image](https://img.shields.io/badge/Proudly%20Funded%20by-NSERC%20Canada%20Research%20%20Chairs%20Program-blue.svg?style=for-the-badge)

![image](https://img.shields.io/badge/Special%20thanks%20to-Philippe%20Charland,%20DRDC-orange.svg?style=for-the-badge)

![image](https://img.shields.io/badge/Acknowledgement-NVIDIA%20Corporation%20for%20donating%20the%20Titan%20Xp%20used%20for%20this%20research-blue.svg?style=for-the-badge)

![image](https://img.shields.io/badge/Built%20in-Data%20Mining%20and%20Security%20Lab,%20SIS,%20McGill%20Univrsity-red.svg?style=for-the-badge)

![image](https://img.shields.io/badge/Built%20in-L1NNA%20Research%20Laboratory,%20CS,%20Queen%27s%20Univrsity-red.svg?style=for-the-badge)
Scarica lo strumento
  • Comunicazione bidirezionale