Skip to content
KitploitKITPLOIT
FerramentasBlog
Log in
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
Ferramentas/GitHubGitHub/accenture/vulfi
Análise EstáticaAnálise de VulnerabilidadesEngenharia ReversaAnálise de Binários
GitHubaccenture/vulfi

VulFi

Plugin do IDA Pro para pesquisa baseada em consultas dentro do binário, útil principalmente para pesquisa de vulnerabilidades.

Ver Repositório
6697415há 1 anoRevisado 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

VulFi v3.0

Introdução

A ferramenta VulFi (Vulnerability Finder) é um plugin para o IDA Pro que pode ser usado para auxiliar na caça de bugs em binários. Seu principal objetivo é fornecer uma visão única com todas as referências cruzadas para as funções mais interessantes (como strcpy, sprintf, system, etc.). Para casos onde um decompilador Hexrays pode ser usado, ele tentará descartar chamadas a essas funções que não são interessantes do ponto de vista de pesquisa de vulnerabilidades (pense em algo como strcpy(dst,"Hello World!")). Sem o decompilador, as regras são muito mais simples (para não depender de arquitetura) e, portanto, descartam apenas os casos mais óbvios.

Veja Changelog para mais informações sobre atualizações.

Instalação

Coloque os arquivos vulfi.py, vulfi_prototypes.json e vulfi_rules.json na pasta de plugins do IDA (cp vulfi* <IDA_PLUGIN_FOLDER>).

Preparando o Arquivo de Banco de Dados

Antes de executar o VulFi, certifique-se de que você tenha um bom entendimento do binário com o qual está trabalhando. Tente identificar todas as funções padrão (strcpy, memcpy, etc.) e nomeie-as adequadamente. O plugin não diferencia maiúsculas de minúsculas e, portanto, MEMCPY, Memcpy e memcpy são nomes válidos. No entanto, observe que a busca pela função requer correspondência exata. Isso significa que memcpy? ou std_memcpy (ou qualquer outra variante) não serão detectados como uma função padrão e, portanto, não serão considerados ao procurar por vulnerabilidades potenciais. Se você estiver trabalhando com um binário desconhecido, você precisa primeiro definir as opções do compilador em Options > Compiler. Depois disso, o VulFi fará o possível para filtrar todos os falsos positivos óbvios (como chamadas para printf com uma string constante como primeiro parâmetro). Observe que, embora o plugin seja feito sem vínculos com uma arquitetura específica, alguns processadores não têm suporte completo para especificar tipos e, nesse caso, o VulFi simplesmente marcará todas as referências cruzadas para funções padrão potencialmente perigosas, permitindo que você prossiga com a análise manual. Nesses casos, você pode se beneficiar dos recursos de rastreamento do plugin.

Uso

Varredura

Para iniciar a varredura, selecione a opção Search > VulFi no menu da barra superior. Isso iniciará uma nova varredura ou lerá resultados anteriores armazenados no arquivo idb/i64. Os dados são salvos automaticamente sempre que você salva o banco de dados.

Assim que a varredura for concluída ou os resultados anteriores forem carregados, uma tabela será apresentada com uma visão contendo as seguintes colunas:

  • IssueName - Usado como título para o problema suspeito.
  • FunctionName - Nome da função.
  • FoundIn - A função que contém a referência potencialmente interessante.
  • Address - O endereço da chamada detectada.
  • Status - O status de revisão, inicialmente Not Checked é atribuído a cada novo item. Os outros status são False Positive, Suspicious e Vulnerable. Eles podem ser definidos usando o menu de clique direito em um determinado item e devem refletir os resultados da revisão manual da chamada de função em questão.
  • Priority - Uma tentativa de priorizar chamadas mais interessantes sobre as menos interessantes. Os valores possíveis são High, Medium e Low (também Info para casos em que o scanner não conseguiu identificar todos os parâmetros corretamente). As prioridades são definidas juntamente com outras regras no arquivo vulfi_rules.json.
  • Comment - Um comentário definido pelo usuário para o determinado item.

Caso não haja dados dentro do arquivo idb/i64 ou o usuário decida realizar uma nova varredura. O plugin perguntará se deve executar a varredura usando as regras padrão incluídas ou se deve usar um arquivo de regras personalizado. Observe que executar uma nova varredura com dados já existentes não sobrescreve os itens encontrados anteriormente identificados pela regra com o mesmo nome daqueles com resultados armazenados anteriormente. Portanto, executar a varredura novamente não exclui comentários existentes e atualizações de status.

basic

No menu de contexto de clique direito dentro da visão do VulFi, você também pode remover o item dos resultados ou remover todos os itens. Observe que quaisquer comentários ou atualizações de status serão perdidos após realizar esta operação. A partir da versão 2.1, o VulFi também suporta operações realizadas em múltiplos itens selecionados de uma só vez. Isso permite que vários itens sejam marcados com um determinado status, excluídos ou o mesmo comentário adicionado a várias linhas. Às vezes acontece que a operação não atualiza corretamente. Quando isso ocorrer, atualize a interface do usuário (Ctrl+U) algumas vezes até que as alterações sejam refletidas.

Investigação

Sempre que você quiser inspecionar a instância detectada de uma possível função vulnerável, basta clicar duas vezes em qualquer lugar da linha desejada e o IDA o levará ao local de memória que foi identificado como potencialmente interessante. Usando o clique direito e a opção Set Vulfi Comment, você pode inserir um comentário para a instância (para justificar o status, por exemplo).

Adicionando Mais Funções

O plugin também permite criar regras personalizadas. Essas regras podem ser definidas na interface do IDA (ideal para funções únicas) ou fornecidas como um arquivo de regras personalizado (ideal para regras que visam cobrir múltiplas funções).

Na Interface

Quando você quiser rastrear uma função personalizada, identificada durante a análise, clique com o botão direito em qualquer lugar dentro do corpo dela e selecione Add <name> function to VulFi. Você também pode destacar e clicar com o botão direito em um nome de função na visão atual de desmontagem/decompilador para evitar mudar para o corpo da função.

add custom

Conjunto Personalizado de Regras

Também é possível carregar um arquivo personalizado com um conjunto de múltiplas regras. Para criar um arquivo de regras personalizado com a estrutura abaixo, você pode usar o arquivo de modelo incluído aqui.

[   // An array of rules
    {
        "name": "RULE NAME", // The name of the rule
        "function_names":[
            "function_name_to_look_for" // List of all function names that should be matched against the conditions defined in this rule
        ],
        "wrappers":true,    // Look for wrappers of the above functions as well (note that the wrapped function has to also match the rule)
        "mark_if":{
            "High":"True",  // If evaluates to True, mark with priority High (see Rules below)
            "Medium":"False", // If evaluates to True, mark with priority Medium (see Rules below)
            "Low": "False" // If evaluates to True, mark with priority Low (see Rules below)
        }
    }
]

Um exemplo de regra que procura todas as referências cruzadas para a função malloc e verifica se seu parâmetro não é constante e se o valor de retorno da função é verificado é mostrado abaixo:

{
    "name": "Possible Null Pointer Dereference",
    "function_names":[
        "malloc"
    ],
    "wrappers":false,
    "mark_if":{
        "High":"not param[0].is_constant() and not function_call.return_value_checked()",
        "Medium":"False",
        "Low": "False"
    }
}

Regras

Auxiliares para construções não-função

Baixar ferramenta