
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.
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.
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).
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.
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.