
Skalierbare Assembly-Analyseplattform zur Indexierung, Klonsuche und Klassifikation ausführbarer Dateien mittels statischer, dynamischer und maschineller Lernverfahren für mehrere Architekturen.
Kam1n0 v2.x ist eine skalierbare Plattform zur Verwaltung und Analyse von Assembler-Code. Sie ermöglicht einem Benutzer, zunächst eine (große) Sammlung von Binärdateien in verschiedene Repositories zu indizieren und bietet verschiedene Analysedienste wie Clone-Suche und Klassifizierung. Sie unterstützt Multi-Tenancy-Zugriff und -Verwaltung von Assembly-Repositories durch das Konzept der Application. Eine Anwendungsinstanz enthält ihr eigenes exklusives Repository und bietet einen spezialisierten Analysedienst. Angesichts der Vielseitigkeit von Reverse-Engineering-Aufgaben bietet der Kam1n0 v2.x-Server derzeit drei verschiedene Arten von Clone-Such-Anwendungen: Asm-Clone, Sym1n0 und Asm2Vec, sowie eine Klassifizierung ausführbarer Dateien auf Basis von Asm2Vec. Neue Anwendungstypen können der Plattform hinzugefügt werden.
Ein Benutzer kann mehrere Anwendungsinstanzen erstellen. Eine Anwendungsinstanz kann mit einer bestimmten Gruppe von Benutzern geteilt werden. Der Lese-/Schreibzugriff auf das Anwendungs-Repository und der Ein-/Aus-Status können vom Anwendungsbesitzer gesteuert werden. Der Kam1n0 v2.x-Server kann die Anwendungen gleichzeitig über mehrere gemeinsam genutzte Ressourcenpools bedienen.
Kam1n0 wurde von Steven H. H. Ding und Miles Q. Li unter der Leitung von Benjamin C. M. Fung vom Data Mining and Security Lab an der McGill University in Kanada entwickelt. Es gewann den zweiten Preis beim Hex-Rays Plug-In Contest 2015. Wenn Sie Kam1n0 nützlich finden, zitieren Sie bitte unsere Arbeiten:
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-Anwendungen versuchen, das effiziente Subgraph-Suchproblem (d.h. das Graph-Isomorphieproblem) für Assembler-Funktionen zu lösen (durchschnittliche Abfragezeit <1,3s und durchschnittliche Indexzeit <30ms bei 2,3 Mio. Funktionen). Bei einer gegebenen Zielfunktion (links im Bild) kann es die geklonten Subgraphen unter anderen Funktionen im Repository identifizieren (rechts im Bild).
Semantische Clone-Suche durch differenziertes Fuzz-Testing und Constraint-Lösung. Ein effizienter und skalierbarer dynamisch-statischer hybrider Ansatz (durchschnittliche Abfragezeit <1s, durchschnittliche Indexzeit <100ms bei 1,5 Mio. Funktionen). Bei einer gegebenen Zielfunktion (links im Bild) kann das geklonte Subgraphen unter anderen Funktionen im Repository identifiziert werden (rechts im Bild). Unterstützt Visualisierung von abstrakten Syntaxgraphen.
Asm2Vec nutzt Repräsentationslernen. Es versteht die lexikalisch-semantische Beziehung von Assemblercode. Zum Beispiel sind xmm*-Register semantisch mit Vektoroperationen wie addps verwandt. memcpy ist ähnlich wie strcpy. Die Grafik unten zeigt verschiedene Assemblerfunktionen, die aus demselben Quellcode von gmpz_tdiv_r_2exp in libgmp kompiliert wurden. Von links nach rechts sind die Assemblerfunktionen mit GCC O0-Option, GCC O3-Option, O-LLVM-Obfuscator Control Flow Graph, Flattening-Option und LLVM-Obfuscator Bogus Control Flow Graph-Option kompiliert. Asm2Vec kann sie statisch als Klone identifizieren.