
Plataforma de análisis de ensamblado escalable para indexación, búsqueda de clones y clasificación de ejecutables mediante técnicas estáticas, dinámicas y de aprendizaje automático en múltiples arquitecturas.
Kam1n0 v2.x es una plataforma escalable de gestión y análisis de ensamblador. Permite a un usuario indexar primero una colección (grande) de binarios en diferentes repositorios y proporcionar diferentes servicios analíticos como la búsqueda de clones y la clasificación. Soporta acceso multiinquilino y gestión de repositorios de ensamblador mediante el concepto de Aplicación. Una instancia de aplicación contiene su propio repositorio exclusivo y proporciona un servicio analítico especializado. Considerando la versatilidad de las tareas de ingeniería inversa, el servidor Kam1n0 v2.x actualmente proporciona tres tipos diferentes de aplicaciones de búsqueda de clones: Asm-Clone, Sym1n0 y Asm2Vec, y una clasificación de ejecutables basada en Asm2Vec. Se pueden añadir nuevos tipos de aplicación a la plataforma.
Un usuario puede crear múltiples instancias de aplicación. Una instancia de aplicación se puede compartir entre un grupo específico de usuarios. El acceso de lectura-escritura al repositorio de la aplicación y su estado de activación/desactivación pueden ser controlados por el propietario de la aplicación. El servidor Kam1n0 v2.x puede atender las aplicaciones concurrentemente utilizando varios grupos de recursos compartidos.
Kam1n0 fue desarrollado por Steven H. H. Ding y Miles Q. Li bajo la supervisión de Benjamin C. M. Fung del Data Mining and Security Lab de la Universidad McGill en Canadá. Ganó el segundo premio en el Hex-Rays Plug-In Contest 2015. Si encuentra Kam1n0 útil, por favor cite nuestro artículo:
S. H. H. Ding, B. C. M. Fung, y P. Charland. Kam1n0: MapReduce-based Assembly Clone Search for Reverse Engineering. En Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (SIGKDD), páginas 461-470, San Francisco, CA: ACM Press, agosto 2016.
S. H. H. Ding, B. C. M. Fung, y P. Charland. Asm2Vec: boosting static representation robustness for binary clone search against code obfuscation and compiler optimization. En Proceedings of the 40th IEEE Symposium on Security and Privacy (S&P), 18 páginas, San Francisco, CA: IEEE Computer Society, mayo 2019.
Las aplicaciones Asm-Clone intentan resolver el problema de búsqueda eficiente de subgrafos (es decir, el problema de isomorfismo de grafos) para funciones de ensamblador (tiempo promedio de consulta <1.3 s y tiempo promedio de indexación <30 ms con 2.3M funciones). Dada una función objetivo (la de la izquierda como se muestra a continuación), puede identificar los subgrafos clonados entre otras funciones en el repositorio (el de la derecha como se muestra a continuación).
Búsqueda de clones semántica mediante pruebas de fuzzing diferenciadas y resolución de restricciones. Un enfoque híbrido dinámico-estático eficiente y escalable (tiempo promedio de consulta <1 s y tiempo promedio de indexación <100 ms con 1.5M funciones). Dada una función objetivo (la de la izquierda como se muestra a continuación), puede identificar los subgrafos clonados entre otras funciones en el repositorio (el de la derecha como se muestra a continuación). Soporta visualización del grafo de sintaxis abstracta.
Asm2Vec aprovecha el aprendizaje de representaciones. Comprende la relación semántica léxica del código ensamblador. Por ejemplo, los registros xmm* están semánticamente relacionados con operaciones vectoriales como addps. memcpy es similar a strcpy. El gráfico a continuación muestra diferentes funciones de ensamblador compiladas a partir del mismo código fuente de gmpz_tdiv_r_2exp en libgmp. De izquierda a derecha, las funciones de ensamblador se compilan con la opción GCC O0, la opción GCC O3, la opción de aplanamiento del grafo de flujo de control del ofuscador O-LLVM y la opción de grafo de flujo de control falso del ofuscador LLVM. Asm2Vec puede identificarlas estáticamente como clones.