
Direct Memory Access (DMA) Angriffssoftware
PCILeech nutzt PCIe-Hardwaregeräte, um Zielsystemspeicher zu lesen und zu schreiben. Dies wird durch DMA über PCIe erreicht. Auf dem Zielsystem sind keine Treiber erforderlich.
PCILeech funktioniert auch ohne Hardware zusammen mit einer Vielzahl von Software-Methoden zur Speichererfassung, die von der LeechCore-Bibliothek unterstützt werden – einschließlich der Erfassung von Remote-Live-Speicher mit DumpIt oder WinPmem. PCILeech unterstützt auch die lokale Erfassung von Speicher und eine Reihe von Speicherdump-Dateiformaten.
PCILeech unterstützt mehrere Speichererfassungsgeräte. Sowohl hardware- als auch softwarebasierte. USB3380-basierte Hardware kann nativ nur 4 GB Speicher lesen, ist aber in der Lage, den gesamten Speicher zu lesen, wenn zuerst ein Kernelmodul (KMD) in den Zielsystemkernel eingefügt wird. FPGA-basierte Hardware und softwarebasierte Methoden können den gesamten Speicher lesen.
PCILeech ist in der Lage, eine breite Palette von Kernel-Implants in die Zielkernel einzuschleusen – was einen einfachen Zugriff auf Live-RAM und das Dateisystem über ein „gemountetes Laufwerk“ ermöglicht. Es ist auch möglich, die Anforderung eines Anmeldepassworts zu entfernen, nicht signierte Treiber zu laden, Code auszuführen und System-Shells zu starten. PCILeech läuft unter Windows und Linux. Unterstützte Zielsysteme sind derzeit die x64-Versionen von: UEFI, Linux, FreeBSD und Windows. Dies erfordert Schreibzugriff auf den Speicher (USB3380-Hardware, FPGA-Hardware, LiveCloudKd oder CVE-2018-1038 „Total Meltdown“).
Um loszulegen, klonen Sie die Quellen im Repository oder laden Sie die neuesten Binärdateien, Module und Konfigurationsdateien herunter.
Das PushPin GUI Frontend für PCILeech macht gängige RedTeam-Aufgaben super einfach. Beachten Sie, dass PushPin nicht Teil der offiziellen PCILeech-Distribution ist.







*) macOS High Sierra und höher werden nicht unterstützt.
PCILeech unterstützt sowohl hardwarebasierte als auch softwarebasierte Methoden der Speichererfassung. Die gesamte Speichererfassung wird von der LeechCore-Bibliothek verwaltet.
Nachfolgend finden Sie eine Zusammenfassung der unterstützten hardwarebasierten Speichererfassungsmethoden. Alle hardwarebasierten Speichererfassungsmethoden werden sowohl unter Windows als auch unter Linux unterstützt. Die FPGA-basierten Methoden haben jedoch unter Linux einen leichten Leistungsnachteil und erreichen maximal etwa 90 MB/s im Vergleich zu 150 MB/s unter Windows.
Nachfolgend finden Sie eine Zusammenfassung der unterstützten softwarebasierten Speichererfassungsmethoden. Bitte beachten Sie, dass der LeechService lediglich eine Netzwerkverbindung zu einer entfernten LeechCore-Bibliothek bereitstellt. Nach der Verbindung können sowohl hardware- als auch softwarebasierte Speichererfassung verwendet werden.
Bitte stellen Sie sicher, dass Sie die aktuellste Version von PCILeech haben, indem Sie das PCILeech GitHub-Repository besuchen unter: https://github.com/ufrisk/pcileech
Holen Sie sich die neuesten Binärdateien, Module und Konfigurationsdateien aus dem neuesten Release. Alternativ klonen Sie das Repository und bauen Sie aus dem Quellcode.
Weitere Informationen zur Ausführung von PCILeech unter Windows finden Sie im PCILeech unter Windows-Leitfaden.
Der Google Android USB-Treiber muss installiert sein, wenn USB3380-Hardware verwendet wird. Laden Sie den Google Android USB-Treiber herunter von: http://developer.android.com/sdk/win-usb.html#download Entpacken Sie den Treiber.
FTDI-Treiber müssen installiert sein, wenn FPGA mit FT601 USB3-Addon-Karte oder PCIeScreamer verwendet wird. Laden Sie die 64-Bit FTD3XX.dll von FTDI herunter und platzieren Sie sie neben pcileech.exe.
Um Live-RAM und das Ziel-Dateisystem als Laufwerk unter Windows einzubinden, muss die Dokany2-Dateisystembibliothek installiert sein. Bitte laden Sie die neueste stabile Version von Dokany2 herunter und installieren Sie sie unter: https://github.com/dokan-dev/dokany/releases/latest
Weitere Informationen zur Ausführung von PCILeech unter Linux finden Sie im PCILeech unter Linux-Leitfaden.
Weitere Beispiele finden Sie auf den Projekt-Wiki-Seiten. Das Wiki befindet sich in der Aufbauphase und Informationen können noch fehlen.
Live-RAM und Dateisystem des Zielsystems einbinden, erfordert, dass ein KMD geladen ist. In diesem Beispiel wird 0x11abc000 verwendet.
pcileech.exe mount -kmd 0x11abc000Hilfe für ein bestimmtes Kernel-Implantat anzeigen, in diesem Fall das lx64_filepull Kernel-Implantat.
pcileech.exe lx64_filepull -helpHilfe für den dump-Befehl anzeigen.
pcileech.exe dump -helpDen gesamten Speicher des Zielsystems ausdumpen, vorausgesetzt, ein Kernelmodul ist an Adresse: 0x7fffe000 geladen.
pcileech.exe dump -kmd 0x7fffe000Erzwungenes Dumpen des Speichers unter 4 GB, einschließlich zugänglicher speichergemappter Geräte, unter Verwendung des stabileren USB2-Ansatzes auf USB3380.
pcileech.exe dump -force -device usb3380://usb=2PCIe TLPs (Transaction Layer Packets) empfangen und auf dem Bildschirm ausgeben (korrekt konfiguriertes FPGA-Entwicklungsboard erforderlich).
pcileech.exe tlp -vv -wait 1000Den Speicher des Zielsystems nach lesbaren Speicherseiten und maximalem Speicher durchsuchen/Auflisten (nur FPGA-Hardware).
pcileech.exe probeDen gesamten Speicher zwischen den Adressen min und max dumpen, nicht bei fehlgeschlagenen Seiten anhalten. Nativer Zugriff auf 64-Bit-Speicher wird nur auf FPGA-Hardware unterstützt.
pcileech.exe dump -min 0x0 -max 0x21e5fffff -forceDen gesamten Speicher dumpen, versuchen, die Speicherkarte aus der Zielsystem-Registry zu ermitteln, um das Dumpen von potenziell ungültigem Speicher zu vermeiden, der das Zielsystem einfrieren könnte.
pcileech.exe dump -memmap autoDie Verwendung eines bestimmten Geräts erzwingen (anstatt es standardmäßig automatisch zu erkennen). Das pmem-Gerät wird nicht automatisch erkannt.
pcileech.exe pagedisplay -min 0x1000 -device pmemRemote-Speicher von einem entfernten LeechAgent dumpen, wobei die Verbindung durch Kerberos verschlüsselt und gegenseitig authentifiziert wird.
pcileech.exe dump -device pmem -remote rpc://[email protected]Das Python-Analyse-Skript find-rwx.py auf einem entfernten Computer ausführen, unter Verwendung der eingebetteten Python-Umgebung des LeechAgent.
pcileech.exe agent-execpy -in find-rwx.py -device pmem -remote rpc://[email protected]Virtuellen Prozessspeicher der PID 432 patchen (in diesem Beispiel lsass.exe).
pcileech.exe patch -pid 432 -sig unlock_win10x64.sigFinden Sie das alles etwas überwältigend? Oder möchten Sie einfach nur eine schnelle Frage stellen? Treten Sie der PCILeech und MemProcFS DMA-Community auf Discord bei!
Die Binärdateien befinden sich im Releases-Bereich dieses Repositorys. Wenn Sie eine eigene Version erstellen möchten, ist das möglich. Weitere Informationen zum Erstellen von PCILeech finden Sie im PCILeech unter Windows oder PCILeech unter Linux. PCILeech ist auch abhängig von LeechCore und optional (für einige zusätzliche Funktionen) vom Memory Process File System, die beide separat erstellt werden müssen.
PCILeech, MemProcFS und LeechCore sind Open Source, aber nicht für offene Beiträge. PCILeech, MemProcFS und LeechCore bieten eine hochflexible Plugin-Architektur, die Beiträge in Form von Plugins ermöglicht. Wenn Sie einen Beitrag, der kein Plugin ist, zu den Kernprojekten leisten möchten, kontaktieren Sie mich bitte, bevor Sie mit der Entwicklung beginnen.
v1.0-v3.6
v4.0
leechcore.dll/leechcore.so wird stattdessen verwendet. Neue Geräte umfassen:
v4.1
agent-forensic.
./pcileech mount /home/user/fusemnt/leechfs -kmd <your_kmd_address>none hinzugefügt.-bar-ro und -bar-rw hinzugefügt.-psname-Option hinzugefügt.Neueste:
-no-kmd-mem-Option, um den KMD-Speicherzugriff bei geladenem KMD optional zu deaktivieren (kann in manchen Fällen aus Stabilitätsgründen nützlich sein).-kmd WIN11_X64 - Windows 11 KMD-Signatur (Alias für WIN10_X64_3).| Gerät | Typ | Schnittstelle | Geschwindigkeit | 64-Bit-Speicherzugriff | PCIe TLP Zugriff | Projekt Sponsor |
|---|
| ZDMA | FPGA | Thunderbolt3 | 1000MB/s | Ja | Ja | 💖 |
| GBOX | FPGA | OCuLink | 400MB/s | Ja | Ja | 💖 |
| LeetDMA | FPGA | USB-C | 190MB/s | Ja | Ja | 💖 |
| CaptainDMA M2 | FPGA | USB-C | 190MB/s | Ja | Ja | 💖 |
| CaptainDMA M2 100T | FPGA | USB-C | 220MB/s | Ja | Ja | 💖 |
| CaptainDMA 4.1th | FPGA | USB-C | 190MB/s | Ja | Ja | 💖 |
| CaptainDMA 75T | FPGA | USB-C | 200MB/s | Ja | Ja | 💖 |
| CaptainDMA 100T | FPGA | USB-C | 220MB/s | Ja | Ja | 💖 |
| AC701/FT601 | FPGA | USB3 | 190MB/s | Ja | Ja | |
| USB3380-EVB | USB3380 | USB3 | 150MB/s | Nein | Nein | |
| DMA-gepatchter HP iLO | BMC | TCP | 1MB/s | Ja | Nein |
| Gerät | Typ | Flüchtig | Schreiben | Linux Unterstützung | Plugin |
|---|
| RAW physischer Speicherdump | Datei | Nein | Nein | Ja | Nein |
| Vollständiger Microsoft Crash Dump | Datei | Nein | Nein | Ja | Nein |
| Vollständiger ELF Core Dump | Datei | Nein | Nein | Ja | Nein |
| VMware | Live Speicher | Ja | Ja | Nein | Nein |
| VMware Speicher-Save-Datei | Datei | Nein | Nein | Ja | Nein |
| TotalMeltdown | CVE-2018-1038 | Ja | Ja | Nein | Nein |
| DumpIt /LIVEKD | Live Speicher | Ja | Nein | Nein | Nein |
| WinPMEM | Live Speicher | Ja | Nein | Nein | Nein |
| LiveKd | Live Speicher | Ja | Nein | Nein | Nein |
| LiveCloudKd | Live Speicher | Ja | Ja | Nein | Ja |
| Hyper-V Gespeicherter Zustand | Datei | Nein | Nein | Nein | Ja |
| LeechAgent* | Remote | Nein | Nein |