Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
meltdown — Demo proof-of-concept e libreria libkdump che dimostrano l'attacco microarchitetturale Meltdown, con fuga di memoria kernel e fisica su CPU Intel vulnerabili. | Kitploit
Strumenti/GitHubGitHub/isec-tugraz/meltdown
Memory ForensicsAnalisi delle VulnerabilitàExploitEsfiltrazione DatiCrittografiaSicurezza HardwarePaper e RicercaBinary ExploitationArchived
GitHubisec-tugraz/meltdown

meltdown

Demo proof-of-concept e libreria libkdump che dimostrano l'attacco microarchitetturale Meltdown, con fuga di memoria kernel e fisica su CPU Intel vulnerabili.

4.2k520194 anni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi RepositorySito web

Meltdown Proof-of-Concept

Questo repository contiene diverse applicazioni che dimostrano il bug Meltdown. Per informazioni tecniche sul bug, fare riferimento al paper:

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

Le applicazioni in questo repository sono costruite con libkdump, una libreria che abbiamo sviluppato per il paper. Questa libreria semplifica lo sfruttamento del bug adattandosi automaticamente a determinate proprietà dell'ambiente.

Video

Questo repository contiene diversi video che dimostrano Meltdown

  • Video #1 mostra come Meltdown può essere usato per spiare in tempo reale l'inserimento di una password.
  • Video #2 mostra come Meltdown rivela il contenuto della memoria fisica.
  • Video #3 mostra come Meltdown ricostruisce una foto dalla memoria.
  • Video #4 mostra come Meltdown ricostruisce una foto dalla memoria codificata con il formato di file FLIF.
  • Video #5 mostra come Meltdown rivela memoria non in cache.

Demo

Questo repository contiene cinque demo per dimostrare diversi casi d'uso. Tutte le demo sono testate su Ubuntu 16.04 con un Intel Core i7-6700K, ma dovrebbero funzionare su qualsiasi sistema Linux con qualsiasi CPU Intel moderna dal 2010 in poi.

Per risultati ottimali, raccomandiamo una CPU veloce che supporti Intel TSX (ad es. qualsiasi Intel Core i7-5xxx, i7-6xxx o i7-7xxx). Inoltre, ogni demo dovrebbe essere vincolata a un singolo core della CPU, ad es. con taskset.

Dipendenza di build per le demo

Come prerequisito, è necessario installare glibc-static sulla propria macchina.

Per sistemi basati su RPM:

sudo yum install -y glibc-static

Demo #1: Un primo test (test)

Questa è la demo più basilare. Usa Meltdown per leggere indirizzi accessibili dal proprio spazio di indirizzamento, senza violare alcun meccanismo di isolamento.

Se questa demo non funziona, molto probabilmente anche le demo rimanenti non funzioneranno. Le ragioni sono molteplici, ad es. la CPU potrebbe essere troppo lenta, non supportare l'esecuzione out-of-order, il timer ad alta risoluzione non è abbastanza preciso (specialmente nelle VM), il sistema operativo non supporta gestori di segnali personalizzati, ecc.

Build ed esecuzione

make
taskset 0x1 ./test

Se si vede un output simile a questo

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

allora la demo di base funziona.

Demo #2: Violare KASLR (kaslr)

A partire dal kernel Linux 4.12, KASLR (Kernel Address Space Layout Randomizaton) è attivo per impostazione predefinita. Ciò significa che la posizione del kernel (e anche la mappa fisica diretta che mappa l'intera memoria fisica) cambia ad ogni riavvio.

Questa demo usa Meltdown per rivelare la randomizzazione (segreta) della mappa fisica diretta. Questa demo richiede privilegi di root per velocizzare il processo. Il paper descrive una variante che non richiede privilegi di root.

Build ed esecuzione

make
sudo taskset 0x1 ./kaslr

Dopo alcuni secondi, si dovrebbe vedere qualcosa di simile a questo

[+] Direct physical map offset: 0xffff880000000000

Demo #3: Test di affidabilità (reliability)

Questa demo verifica quanto affidabilmente possa essere letta la memoria fisica. Per questa demo, è necessario l'offset della mappa fisica diretta (ad es. dalla demo #2) oppure è necessario disabilitare KASLR specificando nokaslr nella riga di comando del kernel.

Build ed esecuzione

Compilare e avviare reliability. Se KASLR è abilitato, il primo parametro è l'offset della mappa fisica diretta. Altrimenti, il programma non richiede alcun parametro.

make
sudo taskset 0x1 ./reliability 0xffff880000000000

Dopo alcuni secondi, si dovrebbe ottenere un output simile a questo:

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

Demo #4: Leggere la memoria fisica (physical_reader)

Questa demo legge la memoria da un processo diverso leggendo direttamente la memoria fisica. Per questa demo, è necessario l'offset della mappa fisica diretta (ad es. dalla demo #2) oppure è necessario disabilitare KASLR specificando nokaslr nella riga di comando del kernel.

In linea di principio, questo programma può leggere indirizzi fisici arbitrari. Tuttavia, poiché la memoria fisica contiene molti dati non leggibili dall'uomo, forniamo uno strumento di test (secret), che inserisce una stringa leggibile dall'uomo in memoria e fornisce direttamente l'indirizzo fisico di questa stringa.

Build ed esecuzione

Per la demo, eseguire prima secret (come root) per ottenere l'indirizzo fisico di una stringa leggibile dall'uomo:

make
sudo ./secret

Dovrebbe produrre un output simile a questo:

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

Mentre il programma secret è in esecuzione, avviare physical_reader. Il primo parametro è l'indirizzo fisico stampato da secret. Se KASLR non è disabilitato, il secondo parametro è l'offset della mappa fisica diretta.

taskset 0x1 ./physical_reader 0x390fff400 0xffff880000000000

Dopo alcuni secondi, si dovrebbe ottenere un output simile a questo:

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

If you can read this, this is really bad

Demo #5: Dump della memoria (memdump)

Questa demo esegue il dump del contenuto della memoria. Come le demo #3 e #4, usa la mappa fisica diretta per eseguire il dump del contenuto della memoria fisica in un formato simile a un hexdump.

Ancora una volta, poiché la memoria fisica contiene molti contenuti non leggibili dall'uomo, forniamo uno strumento di test per riempire grandi quantità di memoria fisica con stringhe leggibili dall'uomo.

Build ed esecuzione

Per la demo, eseguire prima memory_filler per riempire la memoria con stringhe leggibili dall'uomo. Il primo argomento è la quantità di memoria (in gigabyte) da riempire.

make
./memory_filler 9

Poi, eseguire lo strumento memdump per eseguire il dump del contenuto della memoria. Se si è eseguito memory_filler in precedenza, si dovrebbero vedere alcuni frammenti di stringhe. Se si ha Firefox o Chrome con più schede aperte, si potrebbero anche vedere parti dei siti web aperti o chiusi di recente.

Il primo parametro è l'indirizzo fisico da cui deve iniziare il dump (lasciare vuoto per iniziare dal primo gigabyte). Il secondo parametro è la quantità di byte che si desidera leggere; per leggere tutto, dare -1. Se KASLR non è disabilitato, il terzo parametro è l'offset della mappa fisica diretta.

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

Si dovrebbe ottenere un hexdump di parti della memoria (potenzialmente contenente anche segreti come password, vedere l'esempio nel paper), ad es.:

Scarica lo strumento