
Plataforma escalável de análise de assembly para indexação, busca de clones e classificação de executáveis usando técnicas estáticas, dinâmicas e de aprendizado de máquina em múltiplas arquiteturas.
Kam1n0 v2.x é uma plataforma escalável de gerenciamento e análise de assembly. Ela permite que um usuário primeiro indexe uma coleção (grande) de binários em diferentes repositórios e forneça diferentes serviços analíticos, como pesquisa de clones e classificação. Ela suporta acesso multi-inquilino e gerenciamento de repositórios de assembly usando o conceito de Aplicativo. Uma instância de aplicativo contém seu próprio repositório exclusivo e fornece um serviço analítico especializado. Considerando a versatilidade das tarefas de engenharia reversa, o servidor Kam1n0 v2.x atualmente fornece três tipos diferentes de aplicativos de pesquisa de clones: Asm-Clone, Sym1n0 e Asm2Vec, e uma classificação executável baseada em Asm2Vec. Novos tipos de aplicativo podem ser adicionados à plataforma.
Um usuário pode criar várias instâncias de aplicativo. Uma instância de aplicativo pode ser compartilhada entre um grupo específico de usuários. O acesso de leitura-escrita ao repositório do aplicativo e o status ativo/inativo podem ser controlados pelo proprietário do aplicativo. O servidor Kam1n0 v2.x pode atender aos aplicativos concorrentemente usando vários pools de recursos compartilhados.
Kam1n0 foi desenvolvido por Steven H. H. Ding e Miles Q. Li sob a supervisão de Benjamin C. M. Fung do Data Mining and Security Lab na McGill University, no Canadá. Ele ganhou o segundo prêmio no Hex-Rays Plug-In Contest 2015. Se você achar Kam1n0 útil, por favor cite nosso artigo:
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.
Os aplicativos Asm-Clone tentam resolver o problema eficiente de busca de subgrafos (ou seja, problema de isomorfismo de grafos) para funções de assembly (<1,3s de tempo médio de consulta e <30ms de tempo médio de indexação com 2,3M funções). Dada uma função alvo (a da esquerda, como mostrado abaixo), ele pode identificar os subgrafos clonados entre outras funções no repositório (o da direita, como mostrado abaixo).
Pesquisa de clones semânticos por teste de fuzz diferenciado e resolução de restrições. Uma abordagem híbrida dinâmica-estática eficiente e escalável (<1s de tempo médio de consulta e <100ms de tempo médio de indexação com 1,5M funções). Dada uma função alvo (a da esquerda, como mostrado abaixo), ele pode identificar os subgrafos clonados entre outras funções no repositório (o da direita, como mostrado abaixo). Suporta visualização de grafo sintático abstrato.
Asm2Vec aproveita o aprendizado de representação. Ele entende a relação semântica lexical do código assembly. Por exemplo, registradores xmm* estão semanticamente relacionados a operações vetoriais como addps. memcpy é semelhante a strcpy. O gráfico abaixo mostra diferentes funções assembly compiladas a partir do mesmo código fonte de gmpz_tdiv_r_2exp no libgmp. Da esquerda para a direita, as funções assembly são compiladas com a opção GCC O0, opção GCC O3, Graph do Fluxo de Controle do ofuscador O-LLVM, opção Flattening e opção Bogus Control Flow Graph do ofuscador LLVM. Asm2Vec pode identificá-las estaticamente como clones.