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.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
TriforceAFL — Fuzzing AFL/QEMU com emulação de sistema completo. | Kitploit
Ferramentas/GitHubGitHub/nccgroup/triforceafl
Análise Dinâmica (Sandboxing)Análise de VulnerabilidadesFuzzingTestes de PenetraçãoAnálise de Binários
GitHubnccgroup/triforceafl

TriforceAFL

Fuzzing AFL/QEMU com emulação de sistema completo.

Ver Repositório
64413717há 9 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

Novo: Para aqueles que desejam brincar com TriforceAFL e TLSF, Richard Johnson criou um Dockerfile que instala ambos (e até compila um kernel Linux para você). Ele está disponível aqui https://hub.docker.com/r/moflow/afl-triforce/tags/.

Também novo: o afl-tmin agora funciona com o forkserver!

https://github.com/nccgroup/TriforceAFL Jesse Hertz [email protected] Tim Newsham [email protected]

Esta é uma versão corrigida do AFL que suporta fuzzing de sistema completo usando QEMU. O QEMU incluído foi atualizado para permitir o rastreamento de ramificações ao executar um emulador de sistema para x86_64. Instruções extras foram adicionadas para iniciar o forkserver do AFL, definir configurações de fuzzing e marcar o início e o fim dos casos de teste.

Nota: nem todas as ferramentas do AFL foram testadas com as novas alterações. Estas ferramentas passaram por alguns testes:

  • afl-fuzz - corrigido para suportar -QQ
  • afl-showmap - corrigido para suportar -QQ e forkserver (com batching)
  • afl-cmin - corrigido para suportar -QQ e usar forkserver, stdin não é mais suportado
  • afl-analyze - corrigido para suportar -QQ
  • afl-tmin - corrigido para suportar -QQ, mas não suporta forkserver!

Para construir:

make


Para obter um mapa de cobertura:

echo hello > /tmp/hello ./afl-showmap -o coverage.txt -QQ --
./afl-qemu-system-trace -kernel ../bzImage
-initrd ../initramfs.cpio.gz -m 1G -nographic
-append "console=ttyS0" -aflFile /tmp/hello cat coverage.txt


Para fuzzar:

figure out what addrs to use below...

egrep ' (panic|log_store)$' ../mykern/kallsyms ffffffff8108e570 t log_store ffffffff8181064b T panic

mkdir inputs echo hello > inputs/hello ./afl-fuzz -i inputs -o outputs -QQ --
afl-qemu-system-trace -kernel bzImage -initrd root.cpio.gz
-m 1G -nographic -append "console=ttyS0"
-aflPanicAddr ffffffff8181064b -aflDmesgAddr ffffffff8108e570
-aflFile @@

(Nota: diferente de quando se usa a opção "-Q", você deve especificar a linha de comando completa para afl-qemu-system-trace ao usar a opção "-QQ").

Para mais detalhes sobre como usar esta versão modificada do AFL, veja nosso fuzzer de syscalls do Linux em https://github.com/nccgroup/TriforceLinuxSyscallFuzzer.


Novas flags do AFL: -QQ - use qemu em emulação de sistema completo em vez do modo de usuário (-Q)

Novas flags do QEMU: -aflFile - O nome do arquivo que contém as entradas do fuzzer -aflPanicAddr - Um endereço de pânico do kernel para detecção de pânico -aflDmesgAddr - Endereço no kernel Linux da função de registro (logging) do dmesg para detectar registro e interceptar mensagens de log

Novas instruções do QEMU: 0f 24 - aflCall edi=1 startForkserver(esi=enableTicks) Start AFL's fork server. After this point each test will run in a separate forked child. If enableTicks is non-zero, QEMU will re-enable the CPUs timer after forking a child, otherwise it will not be enabled. edi=2 getWork(esi=ptr, edx=sz) Fill ptr[0..sz] with the next input test case. Returns the actual size filled (<= sz). edi=3 startWork(esi=ptr) Tell AFL to start tracing. The argument points to a buffer with two quadwords giving the start and end address of the code to trace. Instructions outside of this range are not traced. edi=4 doneWork(esi=exitCode) Tell AFL that the test case has completed. If a panic is detected, AFL will stop the test case immediately. Otherwise it will run until doneWork is called. The exitCode specified is returned to AFL. (The code can, but currently does not, OR in the value 64 to all exit codes if any dmesg logs were detected during the test case.)

Novo driver de bloco do QEMU: -drive filename=privmem: Este driver de bloco mantém a imagem do drive em memória copy-on-write para que as alterações nunca sejam persistidas no disco. Alterações feitas por um caso de teste são isoladas de outros casos de teste.

================== american fuzzy lop

Escrito e mantido por Michal Zalewski [email protected]

Copyright 2013, 2014, 2015, 2016 Google Inc. Todos os direitos reservados. Liberado sob os termos e condições da Licença Apache, Versão 2.0.

Para novas versões e informações adicionais, confira: http://lcamtuf.coredump.cx/afl/

Para trocar ideias com outros usuários ou ser notificado sobre grandes novidades, envie um e-mail para [email protected].

** Veja QuickStartGuide.txt se você não tiver tempo para ler este arquivo. **

  1. Desafios do fuzzing guiado

Fuzzing é uma das estratégias mais poderosas e comprovadas para identificar problemas de segurança em software do mundo real; é responsável pela grande maioria dos bugs de execução remota de código e escalonamento de privilégios encontrados até hoje em software crítico para a segurança.

Infelizmente, o fuzzing também é relativamente superficial; mutações cegas e aleatórias tornam muito improvável alcançar certos caminhos de código no software testado, deixando algumas vulnerabilidades firmemente fora do alcance dessa técnica.

Houve inúmeras tentativas de resolver esse problema. Uma das primeiras abordagens - pioneira de Tavis Ormandy - é a destilação de corpus. O método depende de sinais de cobertura para selecionar um subconjunto de sementes interessantes de um corpus massivo e de alta qualidade de arquivos candidatos e, em seguida, submetê-los a fuzzing por meios tradicionais. A abordagem funciona excepcionalmente bem, mas exige que esse corpus esteja prontamente disponível. Além disso, as medições de cobertura de blocos fornecem apenas uma compreensão muito simplista do estado do programa e são menos úteis para orientar o esforço de fuzzing a longo prazo.

Outras pesquisas mais sofisticadas concentraram-se em técnicas como análise de fluxo de programa ("execução concólica"), execução simbólica ou análise estática. Todos esses métodos são extremamente promissores em ambientes experimentais, mas tendem a sofrer de problemas de confiabilidade e desempenho em usos práticos - e atualmente não oferecem uma alternativa viável às técnicas de fuzzing "dumb".

  1. A abordagem do afl-fuzz

O American Fuzzy Lop é um fuzzer de força bruta combinado com um algoritmo genético extremamente simples, mas sólido como uma rocha, guiado por instrumentação. Ele usa uma forma modificada de cobertura de arestas para capturar sem esforço mudanças sutis e em escala local no fluxo de controle do programa.

Simplificando um pouco, o algoritmo geral pode ser resumido como:

  1. Carregar os casos de teste iniciais fornecidos pelo usuário na fila,

  2. Pegar o próximo arquivo de entrada da fila,

  3. Tentar reduzir o caso de teste ao menor tamanho que não altere o comportamento medido do programa,

  4. Mutar repetidamente o arquivo usando uma variedade equilibrada e bem pesquisada de estratégias tradicionais de fuzzing,

  5. Se alguma das mutações geradas resultar em uma nova transição de estado registrada pela instrumentação, adicionar a saída mutada como uma nova entrada na fila.

  6. Ir para 2.

Os casos de teste descobertos também são periodicamente eliminados para remover aqueles que foram superados por descobertas mais novas e de maior cobertura; e passam por várias outras etapas de minimização de esforço orientadas por instrumentação.

Baixar ferramenta