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
Linpmem — Driver del kernel Linux per l'acquisizione di memoria fisica, che consente l'accesso in lettura a qualsiasi indirizzo fisico, inclusi memoria riservata e buchi di memoria, con informazioni CR3 e servizi di traduzione da virtuale a fisico. | Kitploit
Strumenti/GitHubGitHub/velocidex/linpmem
Memory ForensicsInformatica ForenseDigital ForensicsRisposta agli Incidenti
GitHubvelocidex/linpmem

Linpmem

Driver del kernel Linux per l'acquisizione di memoria fisica, che consente l'accesso in lettura a qualsiasi indirizzo fisico, inclusi memoria riservata e buchi di memoria, con informazioni CR3 e servizi di traduzione da virtuale a fisico.

Vedi Repository
10512121 anno faRevisionato da Kitploit

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

Linpmem — uno strumento di acquisizione della memoria fisica per Linux

alt text

Linpmem è uno strumento solo per Linux x64 per leggere la memoria fisica.

Come la sua controparte Windows, Winpmem, non è uno strumento tradizionale di dump della memoria. Linpmem offre un'API per leggere da qualsiasi indirizzo fisico, inclusa la memoria riservata e i buchi di memoria, ma può essere utilizzato anche per il normale dump della memoria. Inoltre, il driver offre una varietà di modalità di accesso per leggere la memoria fisica, come le modalità byte, word, dword, qword e buffer, dove la modalità buffer è appropriata nella maggior parte dei casi standard. Se la lettura richiede una lettura allineata byte/word/dword/qword, Linpmem farà esattamente questo.

Attualmente, le funzionalità di Linpmem includono:

  1. Lettura da indirizzo fisico (modalità di accesso byte, word, dword, qword o buffer)
  2. Servizio informazioni CR3 (specificare il processo di destinazione tramite pid)
  3. Servizio di traduzione da indirizzo virtuale a fisico

Il controllo della cache verrà aggiunto in futuro per supportare le modalità di accesso specializzate.

Tabella riassuntiva

  • Costruire il driver del kernel
  • Caricare il driver
  • Utilizzo
    • Codice dimostrativo
    • Strumento CLI
    • Libreria
    • Strumento di dump della memoria
  • Libreria
  • Distribuzioni Linux testate
  • Gestione dell'avvio protetto (Secure Boot)
  • Problemi noti
  • In lavorazione
  • Lavori futuri
  • Riconoscimenti

Costruire il driver del kernel

Almeno per ora, devi compilare il driver Linpmem da solo. È in lavorazione, ma non ancora terminato, un metodo per caricare un driver Linpmem precompilato su altri sistemi Linux. Detto questo, compilare il driver Linpmem non è difficile, sostanzialmente si esegue 'make'.

Passo 1 - Ottenere gli header giusti

Hai bisogno di make e di un compilatore C. (Raccomandiamo gcc, ma anche clang dovrebbe funzionare).

Assicurati di avere installati i linux-headers (usando qualsiasi gestore di pacchetti abbia la tua distribuzione Linux di destinazione). Il nome esatto del pacchetto può variare a seconda della distribuzione. Un modo rapido (indipendente dalla distribuzione) per verificare se hai il pacchetto installato:

ls -l /usr/lib/modules/`uname -r`/

Questo è tutto, puoi procedere al passo 2.

Sistema estraneo: Attualmente, se vuoi compilare il driver per un altro sistema, ad esempio perché vuoi creare un dump della memoria ma non puoi compilare sulla macchina di destinazione, devi scaricare il pacchetto header direttamente dai repository dei pacchetti della distribuzione Linux di quel sistema. Ricontrolla che la versione del pacchetto corrisponda esattamente alla versione della release e del kernel in esecuzione sul sistema estraneo. Se l'altro sistema utilizza un kernel auto-compilato, devi ottenere una copia della directory di compilazione di quel kernel. Quindi, imposta il percorso di una delle due directory nella variabile d'ambiente KDIR.

export KDIR=path/to/extracted/header/package/or/kernel/root

Passo 2 - make

Compilare il driver è semplice, basta digitare:

make

Questo dovrebbe produrre linpmem.ko nella directory di lavoro corrente.

Potresti voler controllare precompiler.h prima e scegliere se compilare per release o debug (ad esempio, con stampa di debug). Al momento non ci sono molte altre impostazioni del precompilatore.

Caricare il driver

Il modulo linpmem.ko può essere caricato usando insmod path-to-linpmem.ko e rimosso con rmmod path-to-linpmem.ko. (Questo caricherà il driver solo per questa sessione di uptime.) Se hai compilato per debug, dai anche un'occhiata a dmesg.

Dopo il caricamento, per comunicare con il driver, devi creare il dispositivo:

mknod /dev/linpmem c 42 0

Se non riesci a comunicare con il driver, controlla potenzialmente il log di dmesg per verificare che '42' sia effettivamente il major registrato:

[12827.900168] linpmem: registered chrdev with major 42

Anche se di solito il kernel cerca di assegnare effettivamente questo numero.

Puoi usare chown sul dispositivo per darlo al tuo utente, se non vuoi tenere aperta una console di root tutto il tempo. (O usa semplicemente una console di root.)

  • Controlla l'output di dmesg. Segnala errori se ne vedi!
  • Attenzione: se c'è un messaggio di errore dmesg da Linpmem che dice di riavviare, è meglio farlo immediatamente.
  • Attenzione: questa è una versione iniziale.

Utilizzo

Codice dimostrativo

C'è un codice di esempio che mostra e spiega (in dettaglio) come interagire con il driver. Il riferimento all'API user-space può essere trovato inoltre in ./userspace_interface/linpmem_shared.h.

  1. cd demo
  2. gcc -o test test.c
  3. (sudo) ./test // <= hai bisogno di sudo se non hai usato chown sul dispositivo.

Questo codice è importante se vuoi capire come interagire direttamente con il driver invece di usare una libreria. Può anche essere usato come un breve test di funzionalità.

Strumento da riga di comando

C'è uno strumento da riga di comando (opzionale) per Linpmem, lo strumento CLI pmem. Si trova qui: https://github.com/vobst/linpmem-cli. Oltre al codice sorgente, sono disponibili anche uno strumento CLI precompilato, così come la libreria statica precompilata e gli header, che possono essere trovati qui (firmati). Nota: questa è una versione preliminare, controlla gli aggiornamenti, poiché molte aggiunte e migliorie seguiranno a breve.

Lo strumento CLI pmem può essere utilizzato per testare le varie funzioni di Linpmem in modo (relativamente) sicuro e comodo. Linpmem può anche essere caricato da questo strumento invece di usare insmod/rmmod, con alcune opzioni extra in futuro. Questo ha anche il vantaggio che pmem crea automaticamente il dispositivo giusto per te per un uso immediato. È estremamente portabile e funziona su qualsiasi sistema Linux (e, di fatto, è stato testato anche su un Linux 2.6).

$ ./pmem -h
Client da riga di comando per il driver linpmem

Utilizzo: pmem [OPZIONI] [COMANDO]

Comandi:
  insmod  Carica il driver linpmem
  help    Stampa questo messaggio o l'aiuto del sottocomando specificato

Opzioni:
  -a, --address <INDIRIZZO>             Indirizzo per operazioni di lettura fisica
  -v, --virt-address <VIRT_ADDRESS>     Traduci l'indirizzo nello spazio di indirizzi del processo di destinazione (predefinito: processo corrente)
  -s, --size <DIMENSIONE>               Dimensione delle operazioni di lettura buffer
  -m, --mode <MODALITÀ>                 Modalità di accesso per le operazioni di lettura [valori possibili: byte, word, dword, qword, buffer]
  -p, --pid <PID>                       Processo di destinazione per informazioni cr3 e traduzioni virtuale-fisica
      --cr3                             Interroga il valore cr3 del processo di destinazione (predefinito: processo corrente)
      --verbose                         Mostra output di debug
  -h, --help                            Stampa l'aiuto (vedi di più con '--help')
  -V, --version                         Stampa la versione
Scarica lo strumento