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.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
meltdown — Demos de prova de conceito e biblioteca libkdump que demonstram o ataque microarquitetural Meltdown, vazando memória do kernel e memória física em CPUs Intel vulneráveis. | Kitploit
Ferramentas/GitHubGitHub/isec-tugraz/meltdown
Forensia de MemóriaAnálise de VulnerabilidadesExploraçãoExfiltração de DadosCriptografiaSegurança de HardwarePapers e PesquisaExploração de BináriosArchived
GitHubisec-tugraz/meltdown

meltdown

Demos de prova de conceito e biblioteca libkdump que demonstram o ataque microarquitetural Meltdown, vazando memória do kernel e memória física em CPUs Intel vulneráveis.

4.2k52019há 4 anosAinda não revisado

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
Ver RepositórioSite

Prova de Conceito do Meltdown

Este repositório contém várias aplicações que demonstram o bug Meltdown. Para informações técnicas sobre o bug, consulte o artigo:

  • Meltdown por Lipp, Schwarz, Gruss, Prescher, Haas, Mangard, Kocher, Genkin, Yarom e Hamburg

As aplicações neste repositório são construídas com libkdump, uma biblioteca que desenvolvemos para o artigo. Esta biblioteca simplifica a exploração do bug ao adaptar-se automaticamente a certas propriedades do ambiente.

Vídeos

Este repositório contém vários vídeos que demonstram o Meltdown

  • Vídeo #1 mostra como o Meltdown pode ser usado para espionar em tempo real uma entrada de senha.
  • Vídeo #2 mostra como o Meltdown vaza conteúdo da memória física.
  • Vídeo #3 mostra como o Meltdown reconstrói uma foto a partir da memória.
  • Vídeo #4 mostra como o Meltdown reconstrói uma foto a partir da memória que está codificada com o formato de arquivo FLIF.
  • Vídeo #5 mostra como o Meltdown vaza memória não armazenada em cache.

Demos

Este repositório contém cinco demos para demonstrar diferentes casos de uso. Todos os demos são testados no Ubuntu 16.04 com um Intel Core i7-6700K, mas devem funcionar em qualquer sistema Linux com qualquer CPU Intel moderna desde 2010.

Para melhores resultados, recomendamos uma CPU rápida que suporte Intel TSX (por exemplo, qualquer Intel Core i7-5xxx, i7-6xxx ou i7-7xxx). Além disso, cada demo deve ser fixado a um núcleo de CPU, por exemplo, com taskset.

Dependência de compilação para os demos

Como pré-requisito, você precisa instalar o glibc-static na sua máquina.

Para sistemas baseados em RPM:

sudo yum install -y glibc-static

Demo #1: Um primeiro teste (test)

Este é o demo mais básico. Ele usa o Meltdown para ler endereços acessíveis do próprio espaço de endereçamento, sem quebrar nenhum mecanismo de isolamento.

Se este demo não funcionar para você, os demos restantes provavelmente também não funcionarão. As razões são várias, por exemplo, a CPU pode ser muito lenta, não suportar execução fora de ordem, o temporizador de alta resolução não ser preciso o suficiente (especialmente em VMs), o sistema operacional não suportar manipuladores de sinais personalizados, etc.

Compilar e Executar

make
taskset 0x1 ./test

Se você vir uma saída semelhante a esta

Expect: Welcome to the wonderful world of microarchitectural attacks
   Got: Welcome to the wonderful world of microarchitectural attacks

então o demo básico funciona.

Demo #2: Quebrando o KASLR (kaslr)

A partir do kernel Linux 4.12, o KASLR (Kernel Address Space Layout Randomizaton) está ativo por padrão. Isso significa que a localização do kernel (e também o mapa físico direto que mapeia toda a memória física) muda a cada reinicialização.

Este demo usa o Meltdown para vazar a randomização (secreta) do mapa físico direto. Este demo requer privilégios de root para acelerar o processo. O artigo descreve uma variante que não requer privilégios de root.

Compilar e Executar

make
sudo taskset 0x1 ./kaslr

Após alguns segundos, você deverá ver algo semelhante a isto

[+] Direct physical map offset: 0xffff880000000000

Demo #3: Teste de confiabilidade (reliability)

Este demo testa quão confiavelmente a memória física pode ser lida. Para este demo, você precisa do deslocamento do mapa físico direto (por exemplo, do demo #2) ou precisa desabilitar o KASLR especificando nokaslr na linha de comando do kernel.

Compilar e Executar

Compile e inicie reliability. Se você tiver o KASLR habilitado, o primeiro parâmetro é o deslocamento do mapa físico direto. Caso contrário, o programa não requer parâmetro.

make
sudo taskset 0x1 ./reliability 0xffff880000000000

Após alguns segundos, você deverá obter uma saída semelhante a esta:

[-] Success rate: 99.93% (read 1354 values)

Demo #4: Ler memória física (physical_reader)

Este demo lê memória de um processo diferente lendo diretamente a memória física. Para este demo, você precisa do deslocamento do mapa físico direto (por exemplo, do demo #2) ou precisa desabilitar o KASLR especificando nokaslr na linha de comando do kernel.

Em princípio, este programa pode ler endereços físicos arbitrários. No entanto, como a memória física contém muitos dados não legíveis por humanos, fornecemos uma ferramenta de teste (secret), que coloca uma string legível por humanos na memória e fornece diretamente o endereço físico desta string.

Compilar e Executar

Para o demo, primeiro execute secret (como root) para obter o endereço físico de uma string legível por humanos:

make
sudo ./secret

Ele deverá exibir algo como isto:

[+] Secret: If you can read this, this is really bad
[+] Physical address of secret: 0x390fff400
[+] Exit with Ctrl+C if you are done reading the secret

Enquanto o programa secret estiver em execução, inicie physical_reader. O primeiro parâmetro é o endereço físico impresso por secret. Se você não tiver o KASLR desabilitado, o segundo parâmetro é o deslocamento do mapa físico direto.

taskset 0x1 ./physical_reader 0x390fff400 0xffff880000000000

Após alguns segundos, você deverá obter uma saída semelhante a esta:

[+] Physical address       : 0x390fff400
[+] Physical offset        : 0xffff880000000000
[+] Reading virtual address: 0xffff880390fff400

If you can read this, this is really bad

Demo #5: Despejar a memória (memdump)

Este demo despeja o conteúdo da memória. Como os demos #3 e #4, ele usa o mapa físico direto para despejar o conteúdo da memória física em um formato semelhante a um hexdump.

Novamente, como a memória física contém muito conteúdo não legível por humanos, fornecemos uma ferramenta de teste para preencher grandes quantidades da memória física com strings legíveis por humanos.

Compilar e Executar

Para o demo, primeiro execute memory_filler para preencher a memória com strings legíveis por humanos. O primeiro argumento é a quantidade de memória (em gigabytes) a preencher.

make
./memory_filler 9

Em seguida, execute a ferramenta memdump para despejar o conteúdo da memória. Se você executou memory_filler antes, deverá ver alguns fragmentos de string. Se você tiver o Firefox ou Chrome com várias abas abertas, também poderá ver partes dos sites que estão abertos ou foram fechados recentemente.

O primeiro parâmetro é o endereço físico no qual o despejo deve começar (deixe vazio para começar no primeiro gigabyte). O segundo parâmetro é a quantidade de bytes que você deseja que sejam lidos; para ler tudo, forneça -1. Se você não tiver o KASLR desabilitado, o terceiro parâmetro é o deslocamento do mapa físico direto.

taskset 0x1 ./memdump 0x240000000 -1 0xffff880000000000 # start at 9 GB

Você deverá obter um hexdump de partes da memória (potencialmente contendo até segredos como senhas, veja o exemplo no artigo), por exemplo:

Baixar ferramenta