
Plateforme d'analyse d'assemblage évolutive pour l'indexation, la recherche de clones et la classification d'exécutables à l'aide de techniques statiques, dynamiques et d'apprentissage automatique sur plusieurs architectures.
Kam1n0 v2.x est une plateforme évolutive de gestion et d'analyse d'assembly. Elle permet à un utilisateur d'indexer d'abord une (grande) collection de binaires dans différents dépôts et de fournir divers services analytiques tels que la recherche de clones et la classification. Elle prend en charge l'accès multi-tenant et la gestion des dépôts d'assembly en utilisant le concept d'Application. Une instance d'application contient son propre dépôt exclusif et fournit un service analytique spécialisé. Compte tenu de la polyvalence des tâches de rétro-ingénierie, le serveur Kam1n0 v2.x propose actuellement trois types d'applications de recherche de clones : Asm-Clone, Sym1n0 et Asm2Vec , ainsi qu'une classification d'exécutables basée sur Asm2Vec. De nouveaux types d'applications peuvent être ajoutés ultérieurement à la plateforme.
Un utilisateur peut créer plusieurs instances d'application. Une instance d'application peut être partagée entre un groupe spécifique d'utilisateurs. L'accès en lecture-écriture au dépôt de l'application et son état d'activation/désactivation peuvent être contrôlés par le propriétaire de l'application. Le serveur Kam1n0 v2.x peut servir les applications simultanément en utilisant plusieurs pools de ressources partagées.
Kam1n0 a été développé par Steven H. H. Ding et Miles Q. Li sous la supervision de Benjamin C. M. Fung du Data Mining and Security Lab à l'Université McGill au Canada. Il a remporté le deuxième prix du Hex-Rays Plug-In Contest 2015. Si vous trouvez Kam1n0 utile, veuillez citer notre article :
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.
Les applications Asm-Clone tentent de résoudre le problème de recherche efficace de sous-graphes (c'est-à-dire le problème d'isomorphisme de graphes) pour les fonctions d'assembly (temps de requête moyen <1,3 s et temps d'indexation moyen <30 ms pour 2,3 millions de fonctions). Étant donné une fonction cible (celle de gauche comme illustré ci-dessous), elle peut identifier les sous-graphes clonés parmi d'autres fonctions du dépôt (celui de droite comme illustré ci-dessous).
Recherche de clones sémantiques par fuzz testing différencié et résolution de contraintes. Une approche hybride dynamique-statique efficace et évolutive (temps de requête moyen <1 s et temps d'indexation moyen <100 ms pour 1,5 million de fonctions). Étant donné une fonction cible (celle de gauche comme illustré ci-dessous), elle peut identifier les sous-graphes clonés parmi d'autres fonctions du dépôt (celui de droite comme illustré ci-dessous). Prend en charge la visualisation du graphe syntaxique abstrait.
Asm2Vec exploite l'apprentissage par représentation. Il comprend la relation sémantique lexicale du code d'assembly. Par exemple, les registres xmm* sont sémantiquement liés aux opérations vectorielles telles que addps. memcpy est similaire à strcpy. Le graphique ci-dessous présente différentes fonctions d'assembly compilées à partir du même code source de gmpz_tdiv_r_2exp dans libgmp. De gauche à droite, les fonctions d'assembly sont compilées avec les options GCC O0, GCC O3, l'obfuscateur O-LLVM Control Flow Graph, l'option Flattening et l'option LLVM obfuscator Bogus Control Flow Graph. Asm2Vec peut les identifier statiquement comme clones.