Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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
sandsifter — O fuzzer de processador x86 | Kitploit
Ferramentas/GitHubGitHub/battelle/sandsifter
Análise de VulnerabilidadesEngenharia ReversaFuzzingSegurança de HardwareAnálise de BináriosPapers e PesquisaAprendizado e Educação
GitHubbattelle/sandsifter

sandsifter

O fuzzer de processador x86

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

s a n d s i f t e r

: o fuzzer de processadores x86

Visão geral

O sandsifter audita processadores x86 em busca de instruções ocultas e bugs de hardware, gerando sistematicamente código de máquina para percorrer o conjunto de instruções de um processador e monitorando a execução em busca de anomalias. O sandsifter já revelou instruções secretas de processadores de todos os principais fornecedores; bugs de software onipresentes em desmontadores, montadores e emuladores; falhas em hipervisores empresariais; e bugs de hardware, tanto benignos quanto críticos para a segurança, em chips x86.

Com a multitude de processadores x86 existentes, o objetivo da ferramenta é permitir que os usuários verifiquem seus próprios sistemas em busca de instruções ocultas e bugs.

Para executar uma auditoria básica no seu processador:

sudo ./sifter.py --unk --dis --len --sync --tick -- -P1 -t

demo_sandsifter

O computador é sistematicamente varrido em busca de instruções anômalas. Na metade superior, você pode ver as instruções que o sandsifter está testando atualmente no processador. Na metade inferior, o sandsifter relata as anomalias que encontra.

A busca levará de algumas horas a alguns dias, dependendo da velocidade e da complexidade do seu processador. Quando terminar, resuma os resultados:

./summarize.py data/log

demo_summarizer

Normalmente, vários milhões de instruções não documentadas serão encontrados no seu processador, mas geralmente se enquadram em um pequeno número de grupos diferentes. Após agrupar as anomalias, a ferramenta summarize tenta atribuir cada instrução a uma categoria de problema:

  • Bug de software (por exemplo, um bug no seu hipervisor ou desmontador),
  • Bug de hardware (um bug na sua CPU), ou
  • Instrução não documentada (uma instrução que existe no processador, mas não é reconhecida pelo fabricante)

Pressione 'Q' para sair e obter um resumo em texto da varredura do sistema:

Os resultados de uma varredura às vezes podem ser difíceis de classificar automaticamente pelas ferramentas, e podem exigir análise manual. Para obter ajuda na análise dos seus resultados, sinta-se à vontade para enviar o arquivo ./data/log para [email protected]. Nenhuma informação pessoal, além da marca, modelo e revisão do processador (de /proc/cpuinfo), está incluída neste log.

Resultados

A varredura com o sandsifter revelou recursos não documentados de processadores em dezenas de categorias de opcodes, falhas em hipervisores empresariais, bugs em quase todas as principais ferramentas de desmontagem e emulação, e bugs críticos de hardware que abrem vulnerabilidades de segurança no próprio processador.

Detalhes dos resultados podem ser encontrados no whitepaper do projeto.

(TODO: enumeração detalhada dos resultados aqui)

Compilação

O sandsifter exige primeiro a instalação do desmontador Capstone: http://www.capstone-engine.org/. O Capstone normalmente pode ser instalado com:

sudo apt-get install libcapstone3 libcapstone-dev
sudo pip install capstone

O sandsifter pode ser compilado com:

make

e então é executado com

sudo ./sifter.py --unk --dis --len --sync --tick -- -P1 -t

Flags

As flags são passadas para o sifter com --flag, e para o injetor com -- -f.

Exemplo:

sudo ./sifter.py --unk --dis --len --sync --tick -- -P1 -t

Flags do sifter:

--len
	search for length differences in all instructions (instructions that
	executed differently than the disassembler expected, or did not
	exist when the disassembler expected them to

--dis
	search for length differences in valid instructions (instructions that
	executed differently than the disassembler expected)

--unk
	search for unknown instructions (instructions that the disassembler doesn't
	know about but successfully execute)

--ill
	the inverse of --unk, search for invalid disassemblies (instructions that do
	not successfully execute but that the disassembler acknowledges)

--tick
	periodically write the current instruction to disk

--save
	save search progress on exit

--resume
	resume search from last saved state

--sync
	write search results to disk as they are found

--low-mem
	do not store results in memory

Flags do injetor:

-b
	mode: brute force

-r
	mode: randomized fuzzing

-t
	mode: tunneled fuzzing

-d
	mode: externally directed fuzzing

-R
	raw output mode

-T
	text output mode

-x
	write periodic progress to stderr

-0
	allow null dereference (requires sudo)

-D
	allow duplicate prefixes

-N
	no nx bit support

-s seed
	in random search, seed value

-B brute_depth
	in brute search, maximum search depth

-P max_prefix
	maximum number of prefixes to search

-i instruction
	instruction at which to start search (inclusive)

-e instruction
	instruction at which to end search (exclusive)

-c core
	core on which to perform search

-X blacklist
	blacklist the specified instruction

-j jobs
	number of simultaneous jobs to run

-l range_bytes
	number of base instruction bytes in each sub range

Teclas

m: Mode - altera o modo de busca (força bruta, aleatório ou túnel) para o sifter

q: Quit - sai do sifter

p: Pause - pausa ou retoma a busca

Algoritmos

A varredura suporta quatro algoritmos de busca diferentes, que podem ser definidos na linha de comando ou alternados por teclas de atalho.

  • A busca aleatória gera instruções aleatórias para testar; geralmente produz resultados rapidamente, mas não consegue encontrar instruções ocultas e bugs complexos.
  • A busca por força bruta tenta instruções incrementalmente, até um comprimento especificado pelo usuário; em quase todas as situações, ela tem desempenho pior do que a busca aleatória.
  • A busca dirigida ou orientada por mutação é projetada para criar instruções novas e cada vez mais complexas por meio de algoritmos genéticos; embora promissora, essa abordagem nunca foi totalmente implementada e é deixada como um esqueleto para pesquisas futuras.
  • O tunelamento é a abordagem descrita na apresentação e no whitepaper e, em quase todos os casos, oferece o melhor equilíbrio entre minúcia e velocidade.

Dicas

  • sudo

    Para obter melhores resultados, a ferramenta deve ser executada como usuário root. Isso é necessário para que o processo possa mapear na memória uma página no endereço 0, o que exige permissões de root. Essa página impede que muitas instruções causem seg-fault em acessos à memória, o que permite uma análise de falhas mais precisa.

  • Prefixos

    A principal limitação para a profundidade de uma busca de instruções é o número de bytes de prefixo a explorar, sendo que cada byte de prefixo adicional aumenta o espaço de busca em cerca de um fator de 10. Limite os bytes de prefixo com a flag -P.

  • Cores

    A interface do sifter é projetada para um terminal de 256 cores. Embora os detalhes variem bastante dependendo do seu terminal, isso pode ser aproximadamente feito com:

    export TERM='xterm-256color'
    
  • GUI

    A interface assume que o terminal tem pelo menos um determinado tamanho; se a interface não estiver renderizando corretamente, tente aumentar o tamanho do terminal; isso muitas vezes pode ser feito diminuindo o tamanho da fonte do terminal.

    Em alguns casos, pode ser desejável ou necessário executar a ferramenta sem a interface gráfica. Isso pode ser feito executando o injetor diretamente:

    sudo ./injector -P1 -t -0
    

    Para filtrar os resultados de uma invocação direta do injetor, o grep pode ser usado. Por exemplo,

    sudo ./injector -P1 -r -0 | grep '\.r' | grep -v sigill
    
Baixar ferramenta