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
sandsifter — O fuzzer de processador x86 | Kitploit
Ferramentas/GitHubGitHub/xoreaxeaxeax/sandsifter
Análise de VulnerabilidadesEngenharia ReversaFuzzingSegurança de HardwareAnálise de Binários
GitHubxoreaxeaxeax/sandsifter

sandsifter

O fuzzer de processador x86

Ver Repositório
5.1k35550há 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 processador 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 pesquisar o conjunto de instruções de um processador e monitorando a execução em busca de anomalias. O sandsifter descobriu instruções secretas de processadores de todos os principais fornecedores; bugs de software ubíquos em disassemblers, assemblers e emuladores; falhas em hypervisors 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 e bugs ocultos.

Para executar uma auditoria básica no seu processador:

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

demo_sandsifter

O computador é varrido sistematicamente 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 pesquisa levará de algumas horas a alguns dias, dependendo da velocidade e complexidade do seu processador. Quando estiver concluída, resuma os resultados:

./summarize.py data/log

demo_summarizer

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

  • Bug de software (por exemplo, um bug no seu hypervisor ou disassembler),
  • 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 baseado em texto da varredura do sistema:

Os resultados de uma varredura às vezes podem ser difíceis para as ferramentas classificarem automaticamente, 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 descobriu recursos de processador não documentados em dezenas de categorias de opcodes, falhas em hypervisors empresariais, bugs em quase todas as principais ferramentas de desmontagem e emulação, e bugs de hardware críticos 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)

Construção

O Sandsifter requer a instalação prévia do disassembler 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 construído 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 injector com -- -f.

Exemplo:

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

Flags do sifter:

--len
	busca por diferenças de comprimento em todas as instruções (instruções que
	executaram de forma diferente do esperado pelo disassembler, ou que não
	existiam quando o disassembler as esperava)

--dis
	busca por diferenças de comprimento em instruções válidas (instruções que
	executaram de forma diferente do esperado pelo disassembler)

--unk
	busca por instruções desconhecidas (instruções que o disassembler não
	conhece, mas que executam com sucesso)

--ill
	o inverso de --unk, busca por desmontagens inválidas (instruções que não
	executam com sucesso mas que o disassembler reconhece)

--tick
	escreve periodicamente a instrução atual no disco

--save
	salva o progresso da pesquisa ao sair

--resume
	retoma a pesquisa a partir do último estado salvo

--sync
	escreve os resultados da pesquisa no disco à medida que são encontrados

--low-mem
	não armazena resultados na memória

Flags do injector:

-b
	modo: força bruta

-r
	modo: fuzzing aleatório

-t
	modo: fuzzing tunelado

-d
	modo: fuzzing dirigido externamente

-R
	modo de saída bruta

-T
	modo de saída de texto

-x
	escreve progresso periódico no stderr

-0
	permite dereferência nula (requer sudo)

-D
	permite prefixos duplicados

-N
	sem suporte a bit NX

-s seed
	em pesquisa aleatória, valor da semente

-B brute_depth
	em pesquisa de força bruta, profundidade máxima de pesquisa

-P max_prefix
	número máximo de prefixos a pesquisar

-i instruction
	instrução na qual iniciar a pesquisa (inclusive)

-e instruction
	instrução na qual terminar a pesquisa (exclusive)

-c core
	núcleo no qual realizar a pesquisa

-X blacklist
	inclui na lista negra a instrução especificada

-j jobs
	número de trabalhos simultâneos para executar

-l range_bytes
	número de bytes base de instrução em cada subfaixa

Teclas

m: Modo - altera o modo de pesquisa (força bruta, aleatório ou tunelado) para o sifter

q: Sair - sai do sifter

p: Pausar - pausa ou retoma a pesquisa

Algoritmos

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

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

Dicas

  • sudo

    Para 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 requer permissões de root. Esta página evita 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 pesquisa de instrução é o número de bytes de prefixo a explorar, com cada byte de prefixo adicional aumentando o espaço de pesquisa 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 muito dependendo do seu terminal, isso pode ser aproximadamente feito com:

    export TERM='xterm-256color'
    
  • Interface Gráfica

    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 geralmente 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 injector diretamente:

    sudo ./injector -P1 -t -0
    
Baixar ferramenta