Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
meltdown — Demos de prueba de concepto y la librería libkdump que demuestran el ataque de microarquitectura Meltdown, filtrando memoria del kernel y memoria física en CPUs Intel vulnerables. | Kitploit
Herramientas/GitHubGitHub/isec-tugraz/meltdown
Forensia de MemoriaAnálisis de VulnerabilidadesExplotaciónExfiltración de DatosCriptografíaSeguridad de HardwarePapers e InvestigaciónExplotación de BinariosArchived
GitHubisec-tugraz/meltdown

meltdown

Demos de prueba de concepto y la librería libkdump que demuestran el ataque de microarquitectura Meltdown, filtrando memoria del kernel y memoria física en CPUs Intel vulnerables.

4.2k52019hace 4 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver RepositorioSitio web

Prueba de concepto de Meltdown

Este repositorio contiene varias aplicaciones que demuestran el error de Meltdown. Para obtener información técnica sobre el error, consulte el artículo:

  • Meltdown de Lipp, Schwarz, Gruss, Prescher, Haas, Mangard, Kocher, Genkin, Yarom y Hamburg

Las aplicaciones de este repositorio están construidas con libkdump, una biblioteca que desarrollamos para el artículo. Esta biblioteca simplifica la explotación del error al adaptarse automáticamente a ciertas propiedades del entorno.

Vídeos

Este repositorio contiene varios vídeos que demuestran Meltdown

  • Vídeo n.º 1 muestra cómo se puede usar Meltdown para espiar en tiempo real una entrada de contraseña.
  • Vídeo n.º 2 muestra cómo Meltdown filtra el contenido de la memoria física.
  • Vídeo n.º 3 muestra cómo Meltdown reconstruye una foto desde la memoria.
  • Vídeo n.º 4 muestra cómo Meltdown reconstruye una foto desde la memoria que está codificada con el formato de archivo FLIF.
  • Vídeo n.º 5 muestra cómo Meltdown filtra memoria no cacheada.

Demos

Este repositorio contiene cinco demos para demostrar diferentes casos de uso. Todas las demos están probadas en Ubuntu 16.04 con un Intel Core i7-6700K, pero deberían funcionar en cualquier sistema Linux con cualquier CPU Intel moderna desde 2010.

Para obtener los mejores resultados, recomendamos una CPU rápida que admita Intel TSX (por ejemplo, cualquier Intel Core i7-5xxx, i7-6xxx o i7-7xxx). Además, cada demo debería fijarse a un núcleo de CPU, por ejemplo con taskset.

Dependencia de compilación para las demos

Como requisito previo, necesita instalar glibc-static en su máquina.

Para sistemas basados en RPM:

sudo yum install -y glibc-static

Demo n.º 1: Una primera prueba (test)

Esta es la demo más básica. Usa Meltdown para leer direcciones accesibles desde su propio espacio de direcciones, sin romper ningún mecanismo de aislamiento.

Si esta demo no funciona en su caso, lo más probable es que las demos restantes tampoco funcionen. Las razones son múltiples, por ejemplo, la CPU podría ser demasiado lenta, no admitir ejecución fuera de orden, el temporizador de alta resolución no ser lo suficientemente preciso (especialmente en máquinas virtuales), el sistema operativo no admitir manejadores de señales personalizados, etc.

Compilar y ejecutar

make
taskset 0x1 ./test

Si ve una salida similar a esta

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

entonces la demo básica funciona.

Demo n.º 2: Romper KASLR (kaslr)

A partir del kernel de Linux 4.12, KASLR (Kernel Address Space Layout Randomizaton) está activo por defecto. Esto significa que la ubicación del kernel (y también el mapa físico directo que asigna toda la memoria física) cambia con cada reinicio.

Esta demo usa Meltdown para filtrar la aleatorización (secreta) del mapa físico directo. Esta demo requiere privilegios de root para acelerar el proceso. El artículo describe una variante que no requiere privilegios de root.

Compilar y ejecutar

make
sudo taskset 0x1 ./kaslr

Después de unos segundos, debería ver algo similar a esto

[+] Direct physical map offset: 0xffff880000000000

Demo n.º 3: Prueba de fiabilidad (reliability)

Esta demo prueba cuán fiablemente se puede leer la memoria física. Para esta demo, o bien necesita el desplazamiento del mapa físico directo (por ejemplo, de la demo n.º 2) o tiene que deshabilitar KASLR especificando nokaslr en la línea de comandos del kernel.

Compilar y ejecutar

Compile e inicie reliability. Si tiene KASLR habilitado, el primer parámetro es el desplazamiento del mapa físico directo. De lo contrario, el programa no requiere ningún parámetro.

make
sudo taskset 0x1 ./reliability 0xffff880000000000

Después de unos segundos, debería obtener una salida similar a esta:

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

Demo n.º 4: Leer memoria física (physical_reader)

Esta demo lee memoria de un proceso diferente leyendo directamente la memoria física. Para esta demo, o bien necesita el desplazamiento del mapa físico directo (por ejemplo, de la demo n.º 2) o tiene que deshabilitar KASLR especificando nokaslr en la línea de comandos del kernel.

En principio, este programa puede leer direcciones físicas arbitrarias. Sin embargo, como la memoria física contiene muchos datos no legibles por humanos, proporcionamos una herramienta de prueba (secret), que coloca una cadena legible por humanos en la memoria y proporciona directamente la dirección física de esta cadena.

Compilar y ejecutar

Para la demo, primero ejecute secret (como root) para obtener la dirección física de una cadena legible por humanos:

make
sudo ./secret

Debería mostrar algo como esto:

[+] 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

Mientras el programa secret se está ejecutando, inicie physical_reader. El primer parámetro es la dirección física impresa por secret. Si no tiene KASLR deshabilitado, el segundo parámetro es el desplazamiento del mapa físico directo.

taskset 0x1 ./physical_reader 0x390fff400 0xffff880000000000

Después de unos segundos, debería obtener una salida similar a esta:

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

If you can read this, this is really bad

Demo n.º 5: Volcar la memoria (memdump)

Esta demo vuelca el contenido de la memoria. Al igual que las demos n.º 3 y n.º 4, usa el mapa físico directo para volcar el contenido de la memoria física en un formato similar a un hexdump.

De nuevo, como la memoria física contiene mucho contenido no legible por humanos, proporcionamos una herramienta de prueba para llenar grandes cantidades de la memoria física con cadenas legibles por humanos.

Compilar y ejecutar

Para la demo, primero ejecute memory_filler para llenar la memoria con cadenas legibles por humanos. El primer argumento es la cantidad de memoria (en gigabytes) que se va a llenar.

make
./memory_filler 9

Luego, ejecute la herramienta memdump para volcar el contenido de la memoria. Si ejecutó memory_filler antes, debería ver algunos fragmentos de cadenas. Si tiene Firefox o Chrome con varias pestañas abiertas, también podría ver partes de los sitios web que están abiertos o que se cerraron recientemente.

El primer parámetro es la dirección física en la que debe comenzar el volcado (déjelo vacío para comenzar en el primer gigabyte). El segundo parámetro es la cantidad de bytes que desea leer; para leerlo todo, indique -1. Si no tiene KASLR deshabilitado, el tercer parámetro es el desplazamiento del mapa físico directo.

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

Debería obtener un hexdump de partes de la memoria (que potencialmente incluso contenga secretos como contraseñas, consulte el ejemplo en el artículo), por ejemplo:

Descargar herramienta