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
Ponce — Vencedor do concurso de plugins da IDA 2016! Execução Simbólica a um clique de distância! | Kitploit
Ferramentas/GitHubGitHub/illera88/ponce
Engenharia ReversaDepuradoresAnálise de MalwareCTFAnálise de Binários
GitHubillera88/ponce

Ponce

Vencedor do concurso de plugins da IDA 2016! Execução Simbólica a um clique de distância!

Ver Repositório
1.6k8575há 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
Site

Build for Windows Build for OSX Build for Linux

Ponce

Ponce (pronunciado [ 'poN θe ] pon-they ) é um plugin do IDA Pro que fornece aos utilizadores a capacidade de realizar análise de contaminação (taint analysis) e execução simbólica sobre binários de forma fácil e intuitiva. Com o Ponce, está a um clique de obter todo o poder da execução simbólica de ponta. Totalmente escrito em C/C++.

Porquê?

A execução simbólica não é um conceito novo na comunidade de segurança. Existe há muitos anos, mas só por volta de 2015 é que projetos open source como o Triton e o Angr foram criados para responder a esta necessidade. Apesar da disponibilidade destes projetos, os utilizadores finais são muitas vezes deixados a implementar casos de uso específicos por si próprios.

Respondemos a estas necessidades criando o Ponce, um plugin IDA que implementa execução simbólica e análise de contaminação dentro do desassemblador/debugger mais utilizado por engenheiros reversos.

Instalação

O Ponce funciona com binários x86 e x64 em qualquer versão do IDA >= 7.0. Instalar o plugin é tão simples como copiar os ficheiros apropriados das últimas builds para a pasta plugins\ no seu diretório de instalação do IDA.

Certifique-se de que utiliza o binário do Ponce compilado para a sua versão do IDA para evitar incompatibilidades.

Suporte de SO

O Ponce funciona nativamente no Windows, Linux e OSX!

Casos de uso

  • Desenvolvimento de exploits: O Ponce pode ajudá-lo a criar um exploit de forma muito mais eficiente, pois o desenvolvedor de exploits pode ver facilmente que partes da memória e que registos controla, bem como possíveis endereços que podem ser aproveitados como gadgets ROP.
  • Análise de malware: Outra utilização do Ponce relaciona-se com código malicioso. Analisar os comandos que uma determinada família de malware suporta é facilmente determinado ao simbolizar um comando simples conhecido e negando todas as condições onde o comando está a ser verificado.
  • Reversão de protocolos: Um dos usos mais interessantes do Ponce é a possibilidade de reconhecer números mágicos (magic numbers), cabeçalhos ou mesmo protocolos inteiros necessários para entrada de utilizador controlada. Por exemplo, o Ponce pode ajudá-lo a listar todos os argumentos aceites para um binário de linha de comandos ou extrair o formato de ficheiro necessário para um analisador de ficheiros específico.
  • CTF: O Ponce acelera o processo de engenharia reversa de binários durante CTFs. Como o Ponce está totalmente integrado no IDA, não precisa de se preocupar com o tempo de configuração. Está pronto a ser utilizado!

O plugin será executado automaticamente, guiando-o pela configuração inicial na primeira vez que for executado. A configuração será guardada num ficheiro de configuração, para que não tenha de se preocupar novamente com a janela de configuração.

Modos de utilização

  • Motor de contaminação (Tainting engine): Este motor é utilizado para determinar, a cada passo da execução do binário, que partes da memória e registos são controláveis pela entrada do utilizador.
  • Motor simbólico: Este motor mantém um estado simbólico dos registos e de parte da memória a cada passo no caminho de execução de um binário.

Exemplos

Negar e injetar uma condição

No próximo gif podemos ver a utilização da contaminação automática e como podemos negar uma condição e injetá-la na memória durante a depuração:

  • Selecionamos o motor simbólico e definimos a opção para simbolizar argv.
  • Identificamos a condição que precisa de ser satisfeita para ganhar o crackMe.
  • Negamos e injetamos a solução sempre que um byte da nossa entrada é verificado contra a chave.
  • Finalmente, obtemos a chave elite que foi injetada na memória e, portanto, alcançamos o código Win.

O código fonte do crackme pode ser encontrado aqui

crackmexor_negate_and_inject

Usando o motor de contaminação para rastrear entrada controlada pelo utilizador

Neste exemplo podemos ver o uso do motor de contaminação com o cmake. Estamos:

  • A passar um ficheiro como argumento para o cmake para que ele o analise.
  • Selecionamos que queremos usar o motor de contaminação.
  • Contaminamos o buffer que ```fread()```` lê do ficheiro.
  • Retomamos a execução sob controlo do debugger para ver onde a entrada contaminada é movida.
  • O Ponce renomeará as funções contaminadas. Estas são as funções sobre as quais o utilizador tem influência, não as funções simplesmente executadas.

cmake_tainting_fread

Usar Negar, Injetar e Restaurar

No próximo exemplo estamos a usar o motor de snapshot:

  • A passar um ficheiro como argumento.
  • Selecionamos que queremos usar o motor simbólico.
  • Contaminamos o buffer que ```fread()```` lê do ficheiro.
  • Criamos um snapshot na função que analisa o buffer lido do ficheiro.
  • Quando uma condição é avaliada, negamo-la, injetamos a solução na memória e restauramos o snapshot com ela.
  • A solução será "válida", satisfazendo assim as condições existentes.

fread_test_negate_restore_inject O código fonte do exemplo pode ser encontrado aqui

Utilização

Nesta secção listaremos as diferentes opções do Ponce, bem como os atalhos de teclado:

  • Aceder à configuração e às janelas de contaminação/simbólica: Edit > Ponce > Show Config (Ctl+Shift+P e Ctl+Alt+T)

2016-09-15 11_39_08-configuracion

  • Ativar/Desativar o rastreio do Ponce (Ctl+Shift+E)

2016-09-15 11_31_34-

  • Simbolizar/contaminar um registo (Ctl+Shift+R)

2016-09-15 11_32_32-

  • Simbolizar/contaminar memória. Pode ser feito a partir da IDA View ou da Hex View (Ctl+Shift+M)

2016-09-15 11_32_52-ida - testproject idb testproject exe c__users_default default-pc_documents_vi2016-09-15 11_33_10-taint _ symbolize memory range

Baixar ferramenta