
Software de Ataque de Acceso Directo a Memoria (DMA)
PCILeech utiliza dispositivos hardware PCIe para leer y escribir la memoria del sistema objetivo. Esto se logra usando DMA a través de PCIe. No se necesitan controladores en el sistema objetivo.
PCILeech también funciona sin hardware junto con una amplia gama de métodos de adquisición de memoria por software compatibles con la biblioteca LeechCore, incluyendo la captura de memoria viva remota usando DumpIt o WinPmem. PCILeech también admite la captura local de memoria y varios formatos de archivos de volcado de memoria.
PCILeech admite múltiples dispositivos de adquisición de memoria. Tanto basados en hardware como en software. El hardware basado en USB3380 solo puede leer 4 GB de memoria de forma nativa, pero puede leer toda la memoria si primero se inserta un módulo del kernel (KMD) en el kernel del sistema objetivo. El hardware basado en FPGA y los métodos basados en software pueden leer toda la memoria.
PCILeech es capaz de insertar una amplia gama de implantes de kernel en los kernels objetivo, lo que permite un fácil acceso a la RAM viva y al sistema de archivos a través de una "unidad montada". También es posible eliminar el requisito de contraseña de inicio de sesión, cargar controladores no firmados, ejecutar código y generar shells del sistema. PCILeech se ejecuta en Windows y Linux. Los sistemas objetivo compatibles actualmente son las versiones x64 de: UEFI, Linux, FreeBSD y Windows. Esto requiere acceso de escritura a la memoria (hardware USB3380, hardware FPGA, LiveCloudKd o CVE-2018-1038 "Total Meltdown").
Para comenzar, clone las fuentes en el repositorio o descargue los últimos binarios, módulos y archivos de configuración.
El frontend GUI PushPin para PCILeech hace que las tareas comunes de RedTeam sean muy fáciles. Tenga en cuenta que PushPin no forma parte de la distribución oficial de PCILeech.







*) macOS High Sierra y superiores no son compatibles.
PCILeech admite métodos de adquisición de memoria basados tanto en hardware como en software. Toda la adquisición de memoria es manejada por la biblioteca LeechCore.
A continuación encontrará un resumen de los métodos de adquisición de memoria basados en hardware compatibles. Todos los métodos de adquisición de memoria basados en hardware son compatibles tanto en Windows como en Linux. Sin embargo, los métodos basados en FPGA tienen una ligera penalización de rendimiento en Linux y alcanzarán un máximo de aproximadamente 90 MB/s en comparación con 150 MB/s en Windows.
A continuación encontrará un resumen de los métodos de adquisición de memoria basados en software compatibles. Tenga en cuenta que LeechService solo proporciona una conexión de red a una biblioteca LeechCore remota. Es posible utilizar tanto hardware como software para la adquisición de memoria una vez conectado.
Asegúrese de tener la versión más reciente de PCILeech visitando el repositorio de PCILeech en GitHub en: https://github.com/ufrisk/pcileech
Obtenga los últimos binarios, módulos y archivos de configuración de la última versión. Alternativamente, clone el repositorio y compile desde el código fuente.
Consulte la guía PCILeech en Windows para obtener información sobre cómo ejecutar PCILeech en Windows.
El controlador USB de Google Android debe estar instalado si se utiliza hardware USB3380. Descargue el controlador USB de Google Android desde: http://developer.android.com/sdk/win-usb.html#download Descomprima el controlador.
Los controladores FTDI deben estar instalados si se utiliza FPGA con la tarjeta adicional FT601 USB3 o PCIeScreamer. Descargue la versión de 64 bits FTD3XX.dll de FTDI y colóquela junto a pcileech.exe.
Para montar la RAM viva y el sistema de archivos del objetivo como unidad en Windows, se debe instalar la biblioteca del sistema de archivos Dokany2. Descargue e instale la última versión estable de Dokany2 en: https://github.com/dokan-dev/dokany/releases/latest
Consulte la guía PCILeech en Linux para obtener información sobre cómo ejecutar PCILeech en Linux.
Consulte las páginas wiki del proyecto para más ejemplos. La wiki está en fase de construcción y es posible que aún falte información.
Montar RAM viva y sistema de archivos del sistema objetivo, requiere que se haya cargado un KMD. En este ejemplo se utiliza 0x11abc000.
pcileech.exe mount -kmd 0x11abc000Mostrar ayuda para un implante de kernel específico, en este caso el implante de kernel lx64_filepull.
pcileech.exe lx64_filepull -helpMostrar ayuda para el comando dump.
pcileech.exe dump -helpVolcar toda la memoria del sistema objetivo dado que un módulo del kernel está cargado en la dirección: 0x7fffe000.
pcileech.exe dump -kmd 0x7fffe000Forzar volcado de memoria por debajo de 4GB incluyendo dispositivos mapeados en memoria accesibles usando el enfoque USB2 más estable en USB3380.
pcileech.exe dump -force -device usb3380://usb=2Recibir TLPs PCIe (Paquetes de Capa de Transacción) e imprimirlos en pantalla (se requiere placa de desarrollo FPGA configurada correctamente).
pcileech.exe tlp -vv -wait 1000Sondear/Enumerar la memoria del sistema objetivo para páginas de memoria legibles y memoria máxima. (Solo hardware FPGA).
pcileech.exe probeVolcar toda la memoria entre las direcciones mín y máx, no detenerse en páginas fallidas. El acceso nativo a memoria de 64 bits solo es compatible con hardware FPGA.
pcileech.exe dump -min 0x0 -max 0x21e5fffff -forceVolcar toda la memoria, intentar localizar el mapa de memoria desde el registro del sistema objetivo para evitar volcar memoria potencialmente inválida que pueda congelar el objetivo.
pcileech.exe dump -memmap autoForzar el uso de un dispositivo específico (en lugar de la detección automática predeterminada). El dispositivo pmem no se detecta automáticamente.
pcileech.exe pagedisplay -min 0x1000 -device pmemVolcar memoria remota desde un LeechAgent remoto usando conexión cifrada y autenticada mutuamente por kerberos.
pcileech.exe dump -device pmem -remote rpc://[email protected]Ejecutar el script de análisis de Python find-rwx.py en una computadora remota usando el entorno Python integrado de LeechAgent.
pcileech.exe agent-execpy -in find-rwx.py -device pmem -remote rpc://[email protected]Parchear memoria de proceso virtual de pid 432 (lsass.exe en este ejemplo).
pcileech.exe patch -pid 432 -sig unlock_win10x64.sig¿Encuentra todo esto un poco abrumador? ¿O simplemente quiere hacer una pregunta rápida? ¡Únase al servidor de la comunidad DMA de PCILeech y MemProcFS en Discord!
Los binarios se encuentran en la sección de versiones de este repositorio. Si se desea compilar una versión propia, es posible hacerlo. Consulte la guía PCILeech en Windows o PCILeech en Linux para obtener más información sobre cómo compilar PCILeech. PCILeech también depende de LeechCore y opcionalmente (para algunas funcionalidades adicionales) de The Memory Process File System, que deben compilarse por separado.
PCILeech, MemProcFS y LeechCore son de código abierto pero no de contribución abierta. PCILeech, MemProcFS y LeechCore ofrecen una arquitectura de complementos altamente flexible que permitirá contribuciones en forma de complementos. Si desea realizar una contribución, que no sea un complemento, a los proyectos principales, comuníquese conmigo antes de comenzar a desarrollar.
v1.0-v3.6
v4.0
leechcore.dll/leechcore.so de LeechCore. Nuevos dispositivos incluyen:
v4.1
agent-forensic de LeechAgent.
./pcileech mount /home/user/fusemnt/leechfs -kmd <su_dirección_kmd>none añadido.-bar-ro y -bar-rw añadidas.-psname añadida.Latest:
-no-kmd-mem para deshabilitar opcionalmente el acceso a memoria KMD cuando KMD está cargado (puede ser útil por motivos de estabilidad en algunos casos).-kmd WIN11_X64 - firma KMD de Windows 11 (alias de WIN10_X64_3).| Dispositivo | Tipo | Interfaz | Velocidad | Acceso a memoria de 64 bits | Acceso PCIe TLP | Proyecto Patrocinador |
|---|
| 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 | |
| HP iLO con parche DMA | BMC | TCP | 1MB/s | Sí | No |
| Dispositivo | Tipo | Volátil | Escritura | Soporte Linux | Complemento |
|---|
| Volcado de memoria física RAW | Archivo | No | No | Sí | No |
| Volcado completo de bloqueo de Microsoft | Archivo | No | No | Sí | No |
| Volcado completo de núcleo ELF | Archivo | No | No | Sí | No |
| VMware | Memoria viva | Sí | Sí | No | No |
| Archivo de guardado de memoria de VMware | Archivo | No | No | Sí | No |
| TotalMeltdown | CVE-2018-1038 | Sí | Sí | No | No |
| DumpIt /LIVEKD | Memoria viva | Sí | No | No | No |
| WinPMEM | Memoria viva | Sí | No | No | No |
| LiveKd | Memoria viva | Sí | No | No | No |
| LiveCloudKd | Memoria viva | Sí | Sí | No | Sí |
| Estado guardado de Hyper-V | Archivo | No | No | No | Sí |
| LeechAgent* | Remoto | No | No |