
Software di Attacco tramite Accesso Diretto alla Memoria (DMA)
PCILeech utilizza dispositivi hardware PCIe per leggere e scrivere la memoria del sistema di destinazione. Ciò viene ottenuto utilizzando DMA su PCIe. Non sono necessari driver sul sistema di destinazione.
PCILeech funziona anche senza hardware insieme a un'ampia gamma di metodi di acquisizione della memoria software supportati dalla libreria LeechCore – inclusa la cattura di memoria live remota utilizzando DumpIt o WinPmem. PCILeech supporta anche la cattura locale della memoria e numerosi formati di file di dump della memoria.
PCILeech supporta molteplici dispositivi di acquisizione della memoria. Sia basati su hardware che software. L'hardware basato su USB3380 è in grado di leggere nativamente solo 4 GB di memoria, ma può leggere tutta la memoria se prima viene inserito un modulo kernel (KMD) nel kernel del sistema di destinazione. L'hardware basato su FPGA e i metodi basati su software sono in grado di leggere tutta la memoria.
PCILeech è in grado di inserire un'ampia gamma di impianti kernel nei kernel di destinazione – consentendo un facile accesso alla RAM live e al filesystem tramite un "drive montato". È anche possibile rimuovere il requisito della password di accesso, caricare driver non firmati, eseguire codice e generare shell di sistema. PCILeech funziona su Windows e Linux. I sistemi di destinazione supportati sono attualmente le versioni x64 di: UEFI, Linux, FreeBSD e Windows. Ciò richiede accesso in scrittura alla memoria (hardware USB3380, hardware FPGA, LiveCloudKd o CVE-2018-1038 "Total Meltdown").
Per iniziare, clona i sorgenti nel repository o scarica gli ultimi binari, moduli e file di configurazione.
L'interfaccia grafica PushPin per PCILeech rende le attività RedTeam comuni estremamente semplici. Nota che PushPin non fa parte della distribuzione ufficiale di PCILeech.







*) macOS High Sierra e versioni successive non sono supportati.
PCILeech supporta metodi di acquisizione della memoria sia basati su hardware che su software. Tutta l'acquisizione della memoria è gestita dalla libreria LeechCore.
Di seguito è riportato un riepilogo dei metodi di acquisizione della memoria basati su hardware supportati. Tutti i metodi basati su hardware sono supportati sia su Windows che su Linux. I metodi basati su FPGA tuttavia hanno una leggera penalità prestazionale su Linux e raggiungeranno al massimo circa: 90 MB/s rispetto a 150 MB/s su Windows.
Di seguito è riportato un riepilogo dei metodi di acquisizione della memoria basati su software supportati. Si noti che LeechService fornisce solo una connessione di rete a una libreria LeechCore remota. È possibile utilizzare sia metodi di acquisizione hardware che software una volta connessi.
Assicurati di avere la versione più recente di PCILeech visitando il repository github di PCILeech all'indirizzo: https://github.com/ufrisk/pcileech
Scarica gli ultimi binari, moduli e file di configurazione dall'ultima release. In alternativa, clona il repository e compila dai sorgenti.
Consulta la guida PCILeech su Windows per informazioni sull'esecuzione di PCILeech su Windows.
Il driver USB Google Android deve essere installato se viene utilizzato hardware USB3380. Scarica il driver USB Google Android da: http://developer.android.com/sdk/win-usb.html#download Decomprimi il driver.
I driver FTDI devono essere installati se viene utilizzato FPGA con scheda aggiuntiva FT601 USB3 o PCIeScreamer. Scarica la FTD3XX.dll a 64 bit da FTDI e posizionala accanto a pcileech.exe.
Per montare la RAM live e il file system di destinazione come drive in Windows, è necessario installare la libreria del file system Dokany2. Scarica e installa l'ultima versione stabile di Dokany2 all'indirizzo: https://github.com/dokan-dev/dokany/releases/latest
Consulta la guida PCILeech su Linux per informazioni sull'esecuzione di PCILeech su Linux.
Consulta le pagine wiki del progetto per ulteriori esempi. Il wiki è in fase di costruzione e le informazioni potrebbero ancora mancare.
Montare la RAM live e il file system del sistema di destinazione, richiede che un KMD sia caricato. In questo esempio viene utilizzato 0x11abc000.
pcileech.exe mount -kmd 0x11abc000Mostrare l'aiuto per un impianto kernel specifico, in questo caso l'impianto kernel lx64_filepull.
pcileech.exe lx64_filepull -helpMostrare l'aiuto per il comando dump.
pcileech.exe dump -helpScaricare tutta la memoria dal sistema di destinazione, presupponendo che un modulo kernel sia caricato all'indirizzo: 0x7fffe000.
pcileech.exe dump -kmd 0x7fffe000Forzare lo scaricamento della memoria al di sotto di 4 GB inclusi i dispositivi mappati in memoria accessibili utilizzando l'approccio USB2 più stabile su USB3380.
pcileech.exe dump -force -device usb3380://usb=2Ricevere TLP PCIe (Transaction Layer Packets) e stamparli a schermo (richiede una scheda FPGA configurata correttamente).
pcileech.exe tlp -vv -wait 1000Sondare/Enumerare la memoria del sistema di destinazione per pagine di memoria leggibili e memoria massima. (Solo hardware FPGA).
pcileech.exe probeScaricare tutta la memoria tra gli indirizzi min e max, senza fermarsi sulle pagine fallite. L'accesso nativo alla memoria a 64 bit è supportato solo su hardware FPGA.
pcileech.exe dump -min 0x0 -max 0x21e5fffff -forceScaricare tutta la memoria, provare a localizzare la mappa di memoria dal registro del sistema di destinazione per evitare di scaricare memoria potenzialmente non valida che potrebbe bloccare il sistema di destinazione.
pcileech.exe dump -memmap autoForzare l'uso di un dispositivo specifico (invece di rilevarlo automaticamente). Il dispositivo pmem non viene rilevato automaticamente.
pcileech.exe pagedisplay -min 0x1000 -device pmemScaricare memoria remota da un LeechAgent remoto utilizzando connessione crittografata e autenticata mutualmente da kerberos.
pcileech.exe dump -device pmem -remote rpc://[email protected]Eseguire lo script di analisi Python find-rwx.py su un computer remoto utilizzando l'ambiente Python integrato di LeechAgent.
pcileech.exe agent-execpy -in find-rwx.py -device pmem -remote rpc://[email protected]Patchare la memoria del processo virtuale del pid 432 (lsass.exe in questo esempio).
pcileech.exe patch -pid 432 -sig unlock_win10x64.sigTrovi tutto un po' opprimente? O vuoi solo fare una domanda veloce? Unisciti al server della comunità DMA PCILeech e MemProcFS su Discord!
I binari si trovano nella sezione release di questo repository. Se si desidera compilare una versione personalizzata, è possibile farlo. Consulta le guide PCILeech su Windows o PCILeech su Linux per ulteriori informazioni sulla compilazione di PCILeech. PCILeech dipende anche da LeechCore e opzionalmente (per funzionalità aggiuntive) da The Memory Process File System, che devono essere entrambi compilati separatamente.
PCILeech, MemProcFS e LeechCore sono open source ma non a contribuzione aperta. PCILeech, MemProcFS e LeechCore offrono un'architettura di plugin altamente flessibile che consentirà contributi sotto forma di plugin. Se desideri effettuare un contributo, diverso da un plugin, ai progetti principali, ti preghiamo di contattarmi prima di iniziare lo sviluppo.
v1.0-v3.6
v4.0
leechcore.dll/leechcore.so. Nuovi dispositivi includono:
v4.1
agent-forensic.
./pcileech mount /home/user/fusemnt/leechfs -kmd <indirizzo_kmd>none.-bar-ro e -bar-rw.-psname aggiunta.Ultimo:
-no-kmd-mem per disabilitare opzionalmente l'accesso alla memoria KMD quando KMD è caricato (può essere utile per ragioni di stabilità in alcuni casi).-kmd WIN11_X64 - firma KMD per Windows 11 (alias per WIN10_X64_3).| Dispositivo | Tipo | Interfaccia | Velocità | Accesso memoria a 64-bit | Accesso TLP PCIe | Sponsor Progetto |
|---|
| ZDMA | FPGA | Thunderbolt3 | 1000MB/s | Sì | Sì | 💖 |
| GBOX | FPGA | OCuLink | 400MB/s | Sì | Sì | 💖 |
| LeetDMA | FPGA | USB-C | 190MB/s | Sì | Sì | 💖 |
| CaptainDMA M2 | FPGA | USB-C | 190MB/s | Sì | Sì | 💖 |
| CaptainDMA M2 100T | FPGA | USB-C | 220MB/s | Sì | Sì | 💖 |
| CaptainDMA 4.1th | FPGA | USB-C | 190MB/s | Sì | Sì | 💖 |
| CaptainDMA 75T | FPGA | USB-C | 200MB/s | Sì | Sì | 💖 |
| CaptainDMA 100T | FPGA | USB-C | 220MB/s | Sì | Sì | 💖 |
| AC701/FT601 | FPGA | USB3 | 190MB/s | Sì | Sì | |
| USB3380-EVB | USB3380 | USB3 | 150MB/s | No | No | |
| DMA patched HP iLO | BMC | TCP | 1MB/s | Sì | No |
| Dispositivo | Tipo | Volatile | Scrittura | Supporto Linux | Plugin |
|---|
| Dump di memoria fisica RAW | File | No | No | Sì | No |
| Dump di crash Microsoft completo | File | No | No | Sì | No |
| Dump core ELF completo | File | No | No | Sì | No |
| VMware | Memoria Live | Sì | Sì | No | No |
| File di salvataggio memoria VMware | File | No | No | Sì | No |
| TotalMeltdown | CVE-2018-1038 | Sì | Sì | No | No |
| DumpIt /LIVEKD | Memoria Live | Sì | No | No | No |
| WinPMEM | Memoria Live | Sì | No | No | No |
| LiveKd | Memoria Live | Sì | No | No | No |
| LiveCloudKd | Memoria Live | Sì | Sì | No | Sì |
| Stato salvato Hyper-V | File | No | No | No | Sì |
| LeechAgent* | Remoto | No | No |