Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Kam1n0-Community — 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. | Kitploit
Ferramentas/GitHubGitHub/mcgill-dmas/kam1n0-community
Análise de VulnerabilidadesAnálise de CódigoEngenharia ReversaFuzzingAnálise de BináriosAprendizado de Máquina
GitHubmcgill-dmas/kam1n0-community

Kam1n0-Community

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.

Ver Repositório
6271246há 3 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

O que é Kam1n0 v2?

image GitHub (pre-)release Github All Releases JDK PRs Welcome

Build latest development release (Windows) Test release build (Windows)

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.

Asm-Clone

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

  • Application Type: Asm-Clone
  • O serviço original de pesquisa de clones usado no Kam1n0 v1.x.
  • Atualmente suporta Meta-PC, ARM, PowerPC e TMS320c6 (experimental).
  • Suporta pesquisa de clones de subgrafos dentro de uma certa família de código assembly.
    • + Boa interpretabilidade do resultado: divide-se em subgrafos.
    • + Preciso para pesquisar dentro da família de código fornecida.
    • + Bom para diferenciar várias correções ou versões de binários grandes.
    • - Relativamente mais sensível a mudanças no conjunto de instruções, otimizações e ofuscação.
    • - Necessário pré-definir a sintaxe da linguagem de código assembly.
    • - Necessário ter código assembly da mesma família escolhida no repositório.

Sym1n0

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.

  • Application Type: Sym1n0 (apenas v2)
  • Pesquisa de clones por execução simbólica e execução concreta.
  • Diferencia funções com base em seus diferentes comportamentos de E/S.
  • Pesquisa de clones realizada no grafo sintático abstrato construído a partir do Vex IR (alimentado pelo LibVex).
    • + Pesquisa de clones entre diferentes famílias de código assembly.
      • Por exemplo, binários x86 indexados, mas a consulta é código ARM.
    • + Pesquisa de clones de subgrafos.
    • + Suporta uma ampla gama de famílias através do LibVex.
      • x86, AMD64, MIPS32, MIPS64, PowerPC32, PowerPC64, ARM32 e ARM64.
    • + Uma abordagem híbrida dinâmica-estática eficiente.
    • + Ideal para analisar firmware compilado para diferentes processadores.
    • - Sensível a manipulação pesada de grafos (como achatamento completo).
    • - Sensível a quebra em grande escala da integridade do bloco básico.

Asm2Vec

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.

  • Aproveita o aprendizado de representação.
  • Entende a relação semântica lexical do código assembly.
    • + Estado da arte para pesquisa de clones contra técnicas pesadas de ofuscação de código.
      • (>0,8 de precisão para todas as opções aplicadas no O-LLVM, múltiplas iterações).
    • + Estado da arte para pesquisa de clones contra otimização de código.
      • (>0,8 de precisão entre O0 e O3, >0,94 de precisão entre O2 e O3)
    • + Resultado ainda melhor do que a abordagem dinâmica mais recente.
    • + Muito mais eficiente do que abordagens dinâmicas recentes.
    • + Não precisa definir a arquitetura. Ele aprende sozinho lendo um grande volume de código.
    • + Abordagem estática: eficiente e escalável.
    • - Sem subgrafos.
    • - Assume que o código assembly vem da mesma família de processadores.
    • - Abordagem estática: não pode reconhecer jump table, etc.

Executable Classification

Neste aplicativo, o usuário define um conjunto de classes de software que são baseadas em parentesco funcional e fornece binários pertencentes a cada classe. Então o sistema automaticamente agrupa funções em clusters nos quais as funções estão conectadas direta ou indiretamente por relação de clone. Os clusters que são discriminativos para a classificação são mantidos e servem como assinaturas de suas classes. Dado um binário alvo, o sistema mostra o grau em que ele pertence a cada classe de software.

  • Usa Asm2Vec como modelo de computação de similaridade de funções
    • + Fornece resultados de classificação interpretáveis.
    • + Aprende características comuns (ou seja, clusters de funções) de cada classe.
    • + Capaz de lidar com conjuntos de dados menores e desbalanceados do que um modelo de machine learning comum.
    • - A limitação é que a suposição de que binários na mesma classe compartilham algumas funções comuns deve ser válida para o sistema funcionar.

Platform Overview

A figura abaixo mostra os principais componentes de UI e funcionalidades do Kam1n0 v2.x. Adotamos um design material. Em geral, cada usuário tem uma lista de aplicativos, uma lista de trabalhos em execução e uma lista de arquivos de resultado.

  • A lista de aplicativos mostra as instâncias de aplicativo pertencentes ao usuário e compartilhadas por outros.
  • A lista de trabalhos em execução mostra o progresso em execução para uma consulta grande (como chrome.dll) e o procedimento de indexação.
  • A lista de arquivos de resultado exibe os resultados salvos. Mais detalhes do design da UI podem ser encontrados em nosso tutorial detalhado.

Instalação

A versão atual do Kam1n0 consiste em dois instaladores: o servidor core e o plug-in do IDA Pro.

InstaladorComponentes incluídosDescrição
Kam1n0-Server.msiMecanismo principalMecanismo principal fornecendo serviço de indexação e pesquisa.
WorkbenchUma interface de usuário para gerenciar os repositórios e o serviço em execução.
Interface web do usuárioInterface web do usuário para pesquisar/indexar arquivos binários e funções assembly.
Visual C++ redistributable para VS 15Dependência para z3.
Kam1n0-IDA-Plugin.msiPlug-inConectores e interface do usuário.
Wheels PyPI para CefpythonMecanismo de renderização para a interface do usuário.
PyPI e wheels dependentesGerenciamento de pacotes para Python. Incluído para IDA 6.8 e 6.9.

Instalando o Servidor Kam1n0

O mecanismo principal do Kam1n0 é puramente escrito em Java. Você precisa das seguintes dependências:

  • [Obrigatório] A distribuição x64 mais recente 11.x JRE/JDK da Oracle.
  • [Opcional] A versão mais recente do IDA Pro com o plug-in idapython instalado. O plug-in Python e o runtime já devem estar instalados com o IDA Pro. Reinstale o IDA Pro se necessário.

Baixe o arquivo Kam1n0-Server.msi da nossa página de releases. Siga as instruções para instalar o servidor. Será solicitado que você selecione um caminho de instalação. O IDA Pro é opcional se o servidor não tiver que lidar com nenhuma desmontagem. Em outras palavras, o lado do cliente usa o plugin Kam1n0 para IDA Pro. É fortemente sugerido ter o IDA Pro instalado com o servidor Kam1n0. O servidor Kam1n0 detectará automaticamente seu IDA Pro procurando pelo aplicativo padrão que você usa para abrir arquivos .i64.

Instalando o Plug-in do IDA Pro

O plug-in do Kam1n0 para IDA Pro é escrito em Python para a lógica e em HTML/JavaScript para a renderização. As seguintes dependências são necessárias para sua instalação:

  • [Obrigatório] IDA Pro (>6.7) com o plug-in idapython instalado. O plug-in Python e o runtime já devem estar instalados com o IDA Pro. Reinstale o IDA Pro se necessário.

Em seguida, baixe o instalador Kam1n0-IDA-Plugin.msi da nossa página de releases. Siga as instruções para instalar o plug-in e o runtime. Observe que o plug-in deve ser instalado na pasta de plugins do IDA Pro, localizada em $IDA_PRO_PATH$/plugins. Por exemplo, no Windows, o caminho pode ser C:/Program Files (x86)/IDA 6.95/plugins. O instalador detectará e validará o caminho.

Configurando Kam1n0 em sistemas baseados em Ubuntu/Debian

  • Certifique-se de ter a versão Oracle do Java 11. (Não o default-jdk no apt.)

    • Adicione o PPA da Oracle e então atualize seu repositório de pacotes: sudo add-apt-repository ppa:webupd8team/java
      • Se você encontrar algum erro (como ~webupd8team not found), se estiver em um proxy, certifique-se de definir e exportar suas variáveis de ambiente http_proxy e https_proxy, e tente novamente com a opção -E no sudo. Além disso, se você estiver recebendo um erro de 'add-apt repository command not found', tente: sudo apt install -y software-properties-common.
    • Depois: sudo apt-get update, e sudo apt-get install oracle-java8-installer
      • Verifique sua versão do Java com java -version; você pode precisar definir manualmente a variável de ambiente JAVA_HOME (em /etc/environment), JAVA_HOME=/usr/lib/jvm/java-11-oracle
  • Baixe a última versão para Linux (Kam1n0-IDA-Plugin.tar.gz e Kam1n0-Server.tar.gz) do Kam1n0-Community.

  • Extraia os dois tarballs (ou seja, tar –xvzf Kam1n0-IDA-Plugin.tar.gz e tar –xvzf Kam1n0-Server.tar.gz)

  • O arquivo Kam1n0-Server.tar.gz criará o diretório do servidor.

  • Dentro do diretório server, você deve ver um arquivo chamado kam1n0.properties, onde você definirá várias configurações para o kam1n0; isso é muito importante.

  • Defina kam1n0.data.path para onde você gostaria que seus dados relacionados ao kam1n0 fossem gravados. Escolhemos colocá-lo no mesmo local onde mantemos nosso server. kam1n0.ida.home se refere aonde sua instalação do IDA está localizada. Comente esta linha (e kam1n0.ida.batch, a linha seguinte) se você não tem IDA e não planeja usar kam1n0 para desmontagem. Para mais informações (precisas) sobre o arquivo kam1n0.properties, veja o arquivo kam1n0.properties.explained.

  • Execute o workbench do servidor kam1n0: java -jar kam1n0-server-workbench.jar. Isso deve fazer com que uma janela apareça, que solicita que você realmente inicie o kam1n0. Alternativamente, execute o servidor kam1n0: java -jar kam1n0-server.jar --start. Isso inicia o servidor a partir do console sem uma janela.

  • Para conectar e usar, vá para 127.0.0.1:8571 (a porta padrão que o kam1n0 escuta deve ser 8571, mas pode ser alterada no kam1n0.properties) no seu navegador. Você deve ver a bela interface web do kam1n0. A partir daí, siga o tutorial no repositório Kam1n0-Community se você não sabe como usar o kam1n0.

Compatibilidade com versões anteriores

Os repositórios de código assembly e arquivos de configuração usados em versões anteriores (<2.0.0) não são mais suportados pela versão mais recente. Entre em contato conosco se precisar migrar seus repositórios antigos.

Documentação

  • Tutorial do Servidor Kam1n0
    • Configuração e Inicialização do Mecanismo
    • Registrar uma conta e fazer login
    • Criar um aplicativo
    • Compartilhamento e Controle de Acesso do Aplicativo
    • Preparando os dados
    • A URL do aplicativo para o Plugin do IDA Pro
    • Indexar arquivos binários
    • Pesquisar com uma função assembly
      • Visualização do grafo de fluxo
      • Visualização de diff de texto
      • Visualização de grupo de clones
    • Pesquisar com um arquivo binário
    • Navegar por um resultado de pesquisa de clones
      • As caixas de resumo
      • Detalhes
  • Tutorial do Plug-in do IDA Pro
    • Funcionalidades
    • Exemplo passo a passo
      • Preparando os dados
      • Inicialização do mecanismo e URL do aplicativo
      • Configuração de conexão
      • Indexação a partir do plug-in
      • Pesquisa de funções
      • Análise de composição
      • Pesquisa de fragmento assembly
      • Caixa de pesquisa
    • Como o Plug-in Funciona
      • Interface do Usuário
      • Sincronização

Desenvolvimento

Clone o último branch estável (não se esqueça do --recursive!):```bash git clone --recursive -b master2.x --single-branch https://github.com/McGill-DMaS/Kam1n0-Community

root@kitploit:~
## Importando o projeto.
IntelliJ: Importe a raiz /kam1n0/kam1n0/ como um projeto maven. Todos os submódulos serão carregados de acordo.
EclipseEE: Adicione o repositório git clonado à visualização git. Importe todos os projetos maven do repositório git.
Talvez seja necessário modificar o classpath para resolver qualquer erro.
Todos os caminhos de recursos são modificados dinamicamente quando executados dentro de uma IDE (através do submódulo kam1n0-resources).

Para construir o projeto:```
cd /kam1n0/kam1n0
mvn -DskipTests clean package
mvn -DskipTests package

Os binários resultantes podem ser encontrados em /kam1n0/build-bins/

Para executar o código de teste, você precisará primeiro baixar chromedriver.exe de http://chromedriver.chromium.org/ e adicionar seu caminho absoluto a uma variável de ambiente chamada webdriver.chrome.driver. Também é necessário que haja um navegador chrome instalado no sistema. O código de teste iniciará uma instância do navegador para testar as interfaces de IU. O procedimento de teste completo levará aproximadamente 3 horas.``` cd /kam1n0/kam1n0 mvn -DskipTests clean package # you can skip this one if you already built the package mvn -DskipTests package # you can skip this one if you already built the package mvn -DforkMode=never test

root@kitploit:~
Estes comandos apenas compilam Java com wheels pré-compilados de libvex e z3. Funciona imediatamente.
A compilação de libvex e z3 depende da plataforma. Usamos um fork do libvex do Angr.
Scripts de compilação mais completos, bem como instaladores para Windows/Linux, podem ser encontrados em /kam1n0-builds/

* kam1n0: O código-fonte do servidor.
* kam1n0-builds: Código-fonte do instalador e scripts para compilar a distribuição.
* kam1n0-clients: O código-fonte dos clientes.

## Lançamentos Binários

Temos um servidor Jenkins para desenvolvimento e entrega contínuos. O lançamento estável mais recente será postado aqui. Periodicamente, sincronizaremos nosso branch experimental interno com este repositório.

## Licenciamento

O software foi desenvolvido por [Steven H. H. Ding](http://stevending.net/), [Miles Q. Li](http://milesqli.github.io/) e [Benjamin C. M. Fung](http://dmas.lab.mcgill.ca/fung/) no [McGill Data Mining and Security Lab](http://dmas.lab.mcgill.ca/) e no [Queen's L1NNA Research Laboratory](https://l1nna.com/) no Canadá. É distribuído sob a Licença Apache Versão 2.0. Consulte [LICENSE.txt](https://github.com/mcgill-dmas/kam1n0-community/blob/master2.x/LICENSE.txt) para obter detalhes.

Direitos autorais 2014-2021 McGill University e os Pesquisadores. Todos os direitos reservados.

## Agradecimentos

![image](https://img.shields.io/badge/Proudly%20Funded%20by-Defence%20Research%20&%20Development%20Canada%20(DRDC)-orange.svg?style=for-the-badge)

![image](https://img.shields.io/badge/Proudly%20Funded%20by-NSERC%20Canada%20Research%20%20Chairs%20Program-blue.svg?style=for-the-badge)

![image](https://img.shields.io/badge/Special%20thanks%20to-Philippe%20Charland,%20DRDC-orange.svg?style=for-the-badge)

![image](https://img.shields.io/badge/Acknowledgement-NVIDIA%20Corporation%20for%20donating%20the%20Titan%20Xp%20used%20for%20this%20research-blue.svg?style=for-the-badge)

![image](https://img.shields.io/badge/Built%20in-Data%20Mining%20and%20Security%20Lab,%20SIS,%20McGill%20Univrsity-red.svg?style=for-the-badge)

![image](https://img.shields.io/badge/Built%20in-L1NNA%20Research%20Laboratory,%20CS,%20Queen%27s%20Univrsity-red.svg?style=for-the-badge)
Baixar ferramenta
  • Comunicação Bidirecional