
Logiciel d'attaque par accès direct à la mémoire (DMA)
PCILeech utilise des périphériques matériels PCIe pour lire et écrire la mémoire du système cible. Ceci est réalisé en utilisant le DMA via PCIe. Aucun pilote n'est nécessaire sur le système cible.
PCILeech fonctionne également sans matériel, avec une large gamme de méthodes d'acquisition mémoire logicielles supportées par la bibliothèque LeechCore - y compris la capture de mémoire vive distante à l'aide de DumpIt ou WinPmem. PCILeech supporte également la capture locale de mémoire et un certain nombre de formats de fichiers de dump mémoire.
PCILeech supporte plusieurs dispositifs d'acquisition mémoire. À la fois matériels et logiciels. Le matériel basé sur USB3380 ne peut lire que 4 Go de mémoire nativement, mais peut lire toute la mémoire si un module noyau (KMD) est d'abord inséré dans le noyau du système cible. Le matériel basé sur FPGA et les méthodes logicielles peuvent lire toute la mémoire.
PCILeech est capable d'insérer une large gamme d'implants noyau dans les noyaux ciblés - permettant un accès facile à la RAM vive et au système de fichiers via un « lecteur monté ». Il est également possible de supprimer l'exigence de mot de passe de connexion, de charger des pilotes non signés, d'exécuter du code et de lancer des shells système. PCILeech fonctionne sous Windows et Linux. Les systèmes cibles supportés sont actuellement les versions x64 de : UEFI, Linux, FreeBSD et Windows. Cela nécessite un accès en écriture à la mémoire (matériel USB3380, matériel FPGA, LiveCloudKd ou CVE-2018-1038 « Total Meltdown »).
Pour commencer, clonez les sources du dépôt ou téléchargez les derniers binaires, modules et fichiers de configuration.
Le frontend graphique PushPin pour PCILeech rend les tâches RedTeam courantes super faciles. Notez que PushPin ne fait pas partie de la distribution officielle de PCILeech.







*) macOS High Sierra et versions ultérieures ne sont pas supportés.
PCILeech supporte à la fois les méthodes d'acquisition mémoire matérielles et logicielles. Toute l'acquisition mémoire est gérée par la bibliothèque LeechCore.
Veuillez trouver ci-dessous un résumé des méthodes d'acquisition mémoire matérielles supportées. Toutes les méthodes d'acquisition mémoire matérielles sont supportées sur Windows et Linux. Les méthodes basées sur FPGA souffrent cependant d'une légère pénalité de performance sous Linux et culminent à environ 90 Mo/s contre 150 Mo/s sous Windows.
Veuillez trouver ci-dessous un résumé des méthodes d'acquisition mémoire logicielles supportées. Veuillez noter que LeechService fournit uniquement une connexion réseau à une bibliothèque LeechCore distante. Il est possible d'utiliser à la fois l'acquisition mémoire matérielle et logicielle une fois connecté.
Veuillez vous assurer que vous disposez de la version la plus récente de PCILeech en visitant le dépôt github PCILeech à l'adresse : https://github.com/ufrisk/pcileech
Obtenez les derniers binaires, modules et fichiers de configuration depuis la dernière version. Alternativement, clonez le dépôt et compilez depuis les sources.
Veuillez consulter le guide PCILeech sur Windows pour des informations sur l'exécution de PCILeech sous Windows.
Le pilote USB Google Android doit être installé si un matériel USB3380 est utilisé. Téléchargez le pilote USB Google Android depuis : http://developer.android.com/sdk/win-usb.html#download Décompressez le pilote.
Les pilotes FTDI doivent être installés si un FPGA est utilisé avec la carte d'extension USB3 FT601 ou PCIeScreamer. Téléchargez la version 64 bits FTD3XX.dll depuis FTDI et placez-la à côté de pcileech.exe.
Pour monter la RAM vive et le système de fichiers cible en tant que lecteur sous Windows, la bibliothèque de système de fichiers Dokany2 doit être installée. Veuillez télécharger et installer la dernière version stable de Dokany2 à l'adresse : https://github.com/dokan-dev/dokany/releases/latest
Veuillez consulter le guide PCILeech sur Linux pour des informations sur l'exécution de PCILeech sous Linux.
Veuillez consulter les pages wiki du projet pour plus d'exemples. Le wiki est en phase de construction et des informations peuvent encore manquer.
Monter la RAM vive et le système de fichiers du système cible, nécessite qu'un KMD soit chargé. Dans cet exemple, 0x11abc000 est utilisé.
pcileech.exe mount -kmd 0x11abc000Afficher l'aide pour un implant noyau spécifique, dans ce cas l'implant noyau lx64_filepull.
pcileech.exe lx64_filepull -helpAfficher l'aide pour la commande dump.
pcileech.exe dump -helpDumper toute la mémoire du système cible à condition qu'un module noyau soit chargé à l'adresse : 0x7fffe000.
pcileech.exe dump -kmd 0x7fffe000Forcer le dump de la mémoire en dessous de 4 Go, y compris les périphériques mappés en mémoire accessibles, en utilisant l'approche USB2 plus stable sur USB3380.
pcileech.exe dump -force -device usb3380://usb=2Recevoir des TLP PCIe (Paquets de couche de transaction) et les afficher à l'écran (carte de développement FPGA correctement configurée requise).
pcileech.exe tlp -vv -wait 1000Sonder/Énumérer la mémoire du système cible pour les pages mémoire lisibles et la mémoire maximale. (Matériel FPGA uniquement).
pcileech.exe probeDumper toute la mémoire entre les adresses min et max, ne pas s'arrêter en cas d'échec sur les pages. L'accès natif à la mémoire 64 bits n'est supporté que sur le matériel FPGA.
pcileech.exe dump -min 0x0 -max 0x21e5fffff -forceDumper toute la mémoire, essayer de localiser la carte mémoire à partir du registre du système cible pour éviter de dumper une mémoire potentiellement invalide qui pourrait bloquer la cible.
pcileech.exe dump -memmap autoForcer l'utilisation d'un dispositif spécifique (au lieu de la détection automatique par défaut). Le périphérique pmem n'est pas détecté automatiquement.
pcileech.exe pagedisplay -min 0x1000 -device pmemDumper la mémoire distante depuis un LeechAgent distant en utilisant une connexion chiffrée et mutuellement authentifiée par Kerberos.
pcileech.exe dump -device pmem -remote rpc://[email protected]Exécuter le script d'analyse Python find-rwx.py sur un ordinateur distant en utilisant l'environnement Python intégré de LeechAgent.
pcileech.exe agent-execpy -in find-rwx.py -device pmem -remote rpc://[email protected]Patcher la mémoire virtuelle du processus de pid 432 (lsass.exe dans cet exemple).
pcileech.exe patch -pid 432 -sig unlock_win10x64.sigTout cela vous semble un peu écrasant ? Ou vous voulez juste poser une question rapide ? Rejoignez le serveur communautaire DMA PCILeech et MemProcFS sur Discord !
Les binaires se trouvent dans la section des versions de ce dépôt. Si l'on souhaite compiler sa propre version, c'est possible. Veuillez consulter PCILeech sur Windows ou PCILeech sur Linux pour plus d'informations sur la compilation de PCILeech. PCILeech dépend également de LeechCore et optionnellement (pour certaines fonctionnalités supplémentaires) de The Memory Process File System, qui doivent tous deux être compilés séparément.
PCILeech, MemProcFS et LeechCore sont open source mais pas ouverts aux contributions. PCILeech, MemProcFS et LeechCore offrent une architecture de plugins très flexible qui permet des contributions sous forme de plugins. Si vous souhaitez apporter une contribution, autre qu'un plugin, aux projets principaux, veuillez me contacter avant de commencer à développer.
v1.0-v3.6
v4.0
leechcore.dll/leechcore.so est maintenant utilisée à la place. Les nouveaux périphériques incluent :
v4.1
agent-forensic.
./pcileech mount /home/user/fusemnt/leechfs -kmd <your_kmd_address>none ajoutée.-bar-ro et -bar-rw ajoutées.-psname ajoutée.Dernières :
-no-kmd-mem pour désactiver optionnellement l'accès mémoire KMD lorsque KMD est chargé (peut être utile pour des raisons de stabilité dans certains cas).-kmd WIN11_X64 - signature KMD pour Windows 11 (alias pour WIN10_X64_3).| Appareil | Type | Interface | Vitesse | Accès mémoire 64 bits | Accès TLP PCIe | Sponsor du projet |
|---|
| ZDMA | FPGA | Thunderbolt3 | 1000MB/s | Oui | Oui | 💖 |
| GBOX | FPGA | OCuLink | 400MB/s | Oui | Oui | 💖 |
| LeetDMA | FPGA | USB-C | 190MB/s | Oui | Oui | 💖 |
| CaptainDMA M2 | FPGA | USB-C | 190MB/s | Oui | Oui | 💖 |
| CaptainDMA M2 100T | FPGA | USB-C | 220MB/s | Oui | Oui | 💖 |
| CaptainDMA 4.1th | FPGA | USB-C | 190MB/s | Oui | Oui | 💖 |
| CaptainDMA 75T | FPGA | USB-C | 200MB/s | Oui | Oui | 💖 |
| CaptainDMA 100T | FPGA | USB-C | 220MB/s | Oui | Oui | 💖 |
| AC701/FT601 | FPGA | USB3 | 190MB/s | Oui | Oui | |
| USB3380-EVB | USB3380 | USB3 | 150MB/s | Non | Non | |
| DMA patched HP iLO | BMC | TCP | 1MB/s | Oui | Non |
| Appareil | Type | Volatile | Écriture | Support Linux | Plugin |
|---|
| RAW physical memory dump | Fichier | Non | Non | Oui | Non |
| Full Microsoft Crash Dump | Fichier | Non | Non | Oui | Non |
| Full ELF Core Dump | Fichier | Non | Non | Oui | Non |
| VMware | Mémoire vive | Oui | Oui | Non | Non |
| VMware memory save file | Fichier | Non | Non | Oui | Non |
| TotalMeltdown | CVE-2018-1038 | Oui | Oui | Non | Non |
| DumpIt /LIVEKD | Mémoire vive | Oui | Non | Non | Non |
| WinPMEM | Mémoire vive | Oui | Non | Non | Non |
| LiveKd | Mémoire vive | Oui | Non | Non | Non |
| LiveCloudKd | Mémoire vive | Oui | Oui | Non | Oui |
| Hyper-V Saved State | Fichier | Non | Non | Non | Oui |
| LeechAgent* | Distant | Non | Non |