Инструмент для исследования безопасности DMA через PCIe с использованием FPGA-адаптеров для чтения и записи памяти целевых систем.
Кастомная прошивка Flipper Zero с расширенными функциями Sub-GHz, NFC, RFID и BadUSB.
Прошивка для ESP32 с Wi-Fi/Bluetooth-атаками, включая deauth, beacon spam, sniffing и анализ пакетов.
Многофункциональная прошивка для ESP32 с Wi-Fi, Bluetooth, RF, IR и NFC функциями для тестирования безопасности.
Превращает ESP32 в универсальный аппаратный хакерский инструмент с поддержкой I2C, UART, SPI, CAN, Sub-GHz, RFID, Wi-Fi, …
git clone https://github.com/ufrisk/pcileech.git cd pcileech git submodule update --init --recursive mkdir build cd build cmake .. make
PCILeech использует аппаратные устройства PCIe для чтения и записи памяти целевой системы. Это достигается с помощью DMA по шине PCIe. На целевой системе не требуется установка драйверов.
PCILeech также работает без аппарурного обеспечения вместе с широким спектром программных методов захвата памяти, поддерживаемых библиотекой LeechCore — включая захват удалённой живой памяти с помощью DumpIt или WinPmem. PCILeech также поддерживает локальный захват памяти и ряд форматов файлов дампов памяти.
PCILeech поддерживает несколько устройств для захвата памяти. Как аппаратных, так и программных методов. Аппаратное обеспечение на базе USB3380 может нативно читать только 4 ГБ памяти, но способно прочитать всю память, если в ядро целевой системы сначала загружен kernel module (KMD). Аппаратное обеспечение на базе FPGA и программные методы способны прочитать всю память.
PCILeech способен внедрять широкий спектр ядренных имплантов в целевые ядра — позволяя легко получить доступ к живой оперативной памяти и файловой системе через «подключённый диск». Также возможно удаление требования пароля при входе в систему, загрузка неподписанных драйверов, выполнение кода и запуск системных оболочек. PCILeech работает на Windows и Linux. Поддерживаемые целевые системы включают x64 версии: UEFI, Linux, FreeBSD и Windows. Это требует доступа на запись в память (аппаратное обеспечение USB3380, FPGA, LiveCloudKd или CVE-2018-1038 «Total Meltdown»).
Чтобы начать работу, клонируйте источники из репозитория или загрузите последние бинарные файлы, модули и конфигурационные файлы.
Grafический интерфейс PushPin для PCILeech делает распространённые задачи RedTeam чрезвычайно простыми. Обратите внимание, что PushPin не является частью официального дистрибутива PCILeech.






*) macOS High Sierra и более новые версии не поддерживаются.
PCILeech поддерживает как аппаратные, так и программные методы захвата памяти. Все операции захвата памяти обрабатываются библиотекой LeechCore.
Ниже приведена сводка поддерживаемых методов аппаратного захвата памяти. Все методы аппаратного захвата памяти поддерживаются как на Windows, так и на Linux. Однако FPGA-методы имеют небольшую потерю производительности на Linux и достигают максимум около 90 МБ/с по сравнению с 150 МБ/с на Windows.
| Устройство | Тип | Интерфейс | Скорость | Поддержка 64-битного доступа к памяти | Доступ к PCIe TLP | Проект Спонсор |
|---|---|---|---|---|---|---|
| ZDMA | FPGA | Thunderbolt3 | 1000MB/s | Да | Да | 💖 |
| GBOX | FPGA | OCuLink | 400MB/s | Да | Да | 💖 |
| LeetDMA | FPGA | USB-C | 190MB/s | Да | Да | 💖 |
| CaptainDMA M2 | FPGA | USB-C | 190MB/s | Да | Да | 💖 |
| CaptainDMA M2 100T | FPGA | USB-C | 220MB/s | Да | Да | 💖 |
| CaptainDMA 4.1th | FPGA | USB-C | 190MB/s | Да | Да | 💖 |
| CaptainDMA 75T | FPGA | USB-C | 200MB/s | Да | Да | 💖 |
| CaptainDMA 100T | FPGA | USB-C | 220MB/s | Да | Да | 💖 |
| AC701/FT601 | FPGA | USB3 | 190MB/s | Да | Да | |
| USB3380-EVB | USB3380 | USB3 | 150MB/s | Нет | Нет | |
| DMA patched HP iLO | BMC | TCP | 1MB/s | Да | Нет |
Ниже приведена сводка поддерживаемых методов программного захвата памяти. Обратите внимание, что LeechService предоставляет только сетевое соединение с удалённой библиотекой LeechCore. После подключения возможно использование как аппаратных, так и программных методов захвата памяти.
| Устройство | Тип | Изменчивый | Запись | Поддержка Linux | Плагин |
|---|---|---|---|---|---|
| RAW physical memory dump | Файл | Нет | Нет | Да | Нет |
| Full Microsoft Crash Dump | Файл | Нет | Нет | Да | Нет |
| Full ELF Core Dump | Файл | Нет | Нет | Да | Нет |
| VMware | Живая память | Да | Да | Нет | Нет |
| VMware memory save file | Файл | Нет | Нет | Да | Нет |
| TotalMeltdown | CVE-2018-1038 | Да | Да | Нет | Нет |
| DumpIt /LIVEKD | Живая память | Да | Нет | Нет | Нет |
| WinPMEM | Живая память | Да | Нет | Нет | Нет |
| LiveKd | Живая память | Да | Нет | Нет | Нет |
| LiveCloudKd | Живая память | Да | Да | Нет | Да |
| Hyper-V Saved State | Файл | Нет | Нет | Нет | Да |
| LeechAgent* | Удалённый | Нет | Нет | ||
| Установка PCILeech: | |||||
| ==================== | |||||
| Пожалуйста, убедитесь, что у вас установлена последняя версия PCILeech, посетив репозиторий PCILeech на GitHub по адресу: https://github.com/ufrisk/pcileech |
Получите последние binaries, modules and configuration files из последнего выпуска. Либо клонируйте репозиторий и соберите из исходников.
Пожалуйста, ознакомьтесь с PCILeech on Windows для информации о запуске PCILeech на Windows.
Драйвер USB Google Android необходимо установить при использовании оборудования USB3380. Скачайте драйвер USB Google Android по адресу: http://developer.android.com/sdk/win-usb.html#download Извлеките драйвер.
Драйверы FTDI необходимо установить при использовании FPGA с адаптером FT601 USB3 или PCIeScreamer. Скачайте 64-битную версию FTD3XX.dll с сайта FTDI и поместите её рядом с pcileech.exe.
Для монтирования живой оперативной памяти и файловой системы целевой системы как диска в Windows необходимо установить библиотеку файловой системы Dokany2. Пожалуйста, загрузите и установите последнюю стабильную версию Dokany2 по адресу: https://github.com/dokan-dev/dokany/releases/latest
Пожалуйста, ознакомьтесь с PCILeech on Linux для информации о запуске PCILeech на Linux.
Пожалуйста, ознакомьтесь с страницами вики проекта для получения дополнительных примеров. Вики находится в стадии разработки, и информация может быть неполной.
Монтирование живой оперативной памяти и файловой системы целевой системы, требуется загрузка драйвера ядра (KMD). В этом примере используется адрес 0x11abc000.
* pcileech.exe mount -kmd 0x11abc000
Отображение справки для конкретного имплантанта ядра, в данном случае lx64_filepull kernel implant.
* pcileech.exe lx64_filepull -help
Отображение справки для команды dump.
* pcileech.exe dump -help
Извлечение всей памяти целевой системы при условии, что модуль ядра загружен по адресу: 0x7fffe000.
* pcileech.exe dump -kmd 0x7fffe000
Вынудительное извлечение памяти ниже 4 ГБ, включая доступные устройства с памятью, с использованием более стабильного подхода USB2 на USB3380.
* pcileech.exe dump -force -device usb3380://usb=2
Приём PCIe TLP (Transaction Layer Packets) и вывод их на экран (требуется правильно настроенная плата FPGA).
* pcileech.exe tlp -vv -wait 1000
Определение/перечисление памяти целевой системы для обнаружения доступных страниц памяти и максимального объёма памяти (только для оборудования FPGA).
* pcileech.exe probe
Извлечение всей памяти между адресами min и max, без остановки при ошибках страниц. Прямой доступ к 64-битной памяти поддерживается только на оборудовании FPGA.
* pcileech.exe dump -min 0x0 -max 0x21e5fffff -force
Извлечение всей памяти с попыткой определения карты памяти из реестра целевой системы для избежания извлечения потенциально недопустимой памяти, которая может заморозить целевую систему.
* pcileech.exe dump -memmap auto
Принудительное использование конкретного устройства (вместо автоматического определения). Устройство pmem не определяется автоматически.
* pcileech.exe pagedisplay -min 0x1000 -device pmem
Извлечение удалённой памяти с удалённого LeechAgent с использованием шифрования и взаимной аутентификации Kerberos.
* pcileech.exe dump -device pmem -remote rpc://computer$@ad.contoso.com
Выполнение файла анализа Python find-rwx.py на удалённом компьютере с использованием встроенной среды Python LeechAgent.
* pcileech.exe agent-execpy -in find-rwx.py -device pmem -remote rpc://computer$@ad.contoso.com
Патчинг виртуальной памяти процесса с PID 432 (в данном примере lsass.exe).
* pcileech.exe patch -pid 432 -sig unlock_win10x64.sig
Слишком сложно? Или хотите задать быстрый вопрос? Присоединяйтесь к Discord-серверу сообщества PCILeech и MemProcFS!
Бинарные файлы находятся в разделе releases этого репозитория. Если один желает собрать собственную версию, это возможно. Для получения более подробной информации о сборке PCILeech обратитесь к страницам PCILeech on Windows или PCILeech on Linux. PCILeech также зависит от LeechCore и, при желании (для некоторой дополнительной функциональности), от файловой системы Memory Process File System, которые необходимо также собрать отдельно.
PCILeech, MemProcFS и LeechCore являются открытыми исходными проектами, но не открыты для свободного вклада. PCILeech, MemProcFS и LeechCore предоставляют высоко гибкую архитектуру плагинов, которая позволит вносить Contributions в виде плагинов. Если вы хотите внести свой вклад, отличный от плагинов, в основные проекты, пожалуйста, свяжитесь со мной перед началом разработки.
Previous releases (click to expand):
v1.0-v3.6 * Initial release and various updates. please see individual relases for more information.
v4.0
* Major cleanup and internal refactorings.
* FPGA max memory auto-detect and more stable dumping strategy.
* New stable Windows 10 kernel injects with FPGA hardware on non-virtualization based security systems.
* User mode injects (experimental).
* Removal of built-in device support - the LeechCore leechcore.dll/leechcore.so library is now used instead. New devices include:
* Memory dump files (raw linear dump files and microsoft crash dump files).
* Hyper-V save files.
* Live memory via DumpIt / WinPmem.
* remote devices via -remote setting.
* Removal of API and built-in Memory Process File System - please use the more capable APIs in the LeechCore and Memory Process File System instead.
* Multiple other changes and syntax updates.
v4.1 * LeechAgent support - remote memory acquisition and analysis.
v4.2 * Signature updates: * Linux kernel module - LINUX_X64_48 (latest versions) * Win10 1903 kernel module - WIN10_X64_2 (requires windows version of PCILeech)
v4.3 * Bug fixes. * Support for new device (NeTV2 / RawUDP) via LeechCore library.
v4.4 * Bug fixes and stability improvements. * Support for MemProcFS v3 library. * Code signing of binaries. * "tlploop" command.
v4.5 * Bug fixes. * Support for v2 of the LeechCore memory acquisition library. * MemProcFS integration when running on Windows. * Support for user-defined physical memory map (-memmap option).
v4.6 * Support for LiveCloudKd.
v4.7 * Bug fixes. * WIN10_X64_3 new stable kernel signature for Windows 10 - including Win10 2004 release. * Unlock signature updates - Win10/Linux (NB! most recent kernels on Linux not yet supported).
v4.8 * Bug fixes. * Better support for recent x64 Linux kernels.
v4.9 * Bug fixes. * Signature updates. * Better support for recent x64 Linux kernels (Ubuntu 21.04). * Unmount of monted driver when CTRL+C pressed.
v4.10 * Linux support for Windows 10 built-in signatures (dependency on MemProcFS v4.0). * Separate releases for Windows and Linux. * General cleanup.
Бинарные файлы находятся в разделе releases этого репозитория. Если один желает собрать собственную версию, это возможно. Для получения более подробной информации о сборке PCILeech обратитесь к страницам PCILeech on Windows или PCILeech on Linux. PCILeech также зависит от LeechCore и, при желании (для некоторых дополнительных функций), от файловой системы Memory Process File System, которые необходимо также собрать отдельно.
PCILeech, MemProcFS и LeechCore являются открытыми исходными проектами, но не принимают свободные вклады. PCILeech, MemProcFS и LeechCore предоставляют высоко гибкую архитектуру плагинов, которая позволяет вносить Contributions в виде плагинов. Если вы хотите внести свой вклад, отличный от плагинов, в основные проекты, пожалуйста, свяжитесь со мной перед началом разработки.
Previous releases (click to expand):
v1.0-v3.6 * Initial release and various updates. please see individual relases for more information.
v4.0
* Major cleanup and internal refactorings.
* FPGA max memory auto-detect and more stable dumping strategy.
* New stable Windows 10 kernel injects with FPGA hardware on non-virtualization based security systems.
* User mode injects (experimental).
* Removal of built-in device support - the LeechCore leechcore.dll/leechcore.so library is now used instead. New devices include:
* Memory dump files (raw linear dump files and microsoft crash dump files).
* Hyper-V save files.
* Live memory via DumpIt / WinPmem.
* remote devices via -remote setting.
* Removal of API and built-in Memory Process File System - please use the more capable APIs in the LeechCore and Memory Process File System instead.
* Multiple other changes and syntax updates.
v4.1 * LeechAgent support - remote memory acquisition and analysis.
v4.2 * Signature updates: * Linux kernel module - LINUX_X64_48 (latest versions) * Win10 1903 kernel module - WIN10_X64_2 (requires windows version of PCILeech)
v4.3 * Bug fixes. * Support for new device (NeTV2 / RawUDP) via LeechCore library.
v4.4 * Bug fixes and stability improvements. * Support for MemProcFS v3 library. * Code signing of binaries. * "tlploop" command.
v4.5 * Bug fixes. * Support for v2 of the LeechCore memory acquisition library. * MemProcFS integration when running on Windows. * Support for user-defined physical memory map (-memmap option).
v4.6 * Support for LiveCloudKd.
v4.7 * Bug fixes. * WIN10_X64_3 new stable kernel signature for Windows 10 - including Win10 2004 release. * Unlock signature updates - Win10/Linux (NB! most recent kernels on Linux not yet supported).
v4.8 * Bug fixes. * Better support for recent x64 Linux kernels.
v4.9 * Bug fixes. * Signature updates. * Better support for recent x64 Linux kernels (Ubuntu 21.04). * Unmount of monted driver when CTRL+C pressed.
v4.10
* Linux support for Windows 10 built-in signatures (dependency on MemProcFS v4.0).
* Separate releases for Windows and Linux.
* General cleanup.
v4.11
* Поддержка памяти живых ВМ VMWare Workstation/Player.
* Поддержка удалённого анализа памяти с помощью LeechAgent (команда agent-forensic).
* Запуск MemProcFS в режиме форензики на удалённом хосте.
* Получение данных в формате JSON, совместимом с ElasticSearch.
v4.12
* Поддержка 32-битных систем (бинарник pcileech).
v4.13
* Исправление ошибок.
* Улучшения в монтировании:
- Поддержка файловой системы Windows-хоста: обновление до Dokany2 (ВНИМАНИЕ! Требуется установить Dokany2!).
- Поддержка файловой системы Linux-хоста: добавлена поддержка FUSE.
Пример: ./pcileech mount /home/user/fusemnt/leechfs -kmd <адрес_вашего_kmd>
- Теперь возможен доступ к другим локальным дискам помимо C: на целевых системах Windows.
* Поддержка Visual Studio 2022.
v4.14
* Поддержка виртуальной памяти процессов (только Windows).
- Команды: search, patch, write, display, pagedisplay
- Пример: pcileech patch -pid 732 -sig unlock_win10x64.sig
v4.15 * Поддержка MemProcFS v5.0
v4.16
* Улучшения производительности FPGA.
* Добавлена команда none.
* Добавлены опции -bar-ro и -bar-rw.
v4.17
* Поддержка I/O BAR.
* Улучшения для Linux:
- Обновление сигнатуры KMD (LINUX_X64_48) для поддержки последних ядер Ubuntu.
- Обновление модулей ядра для поддержки последних ядер.
- Новая сигнатура KMD - LINUX_X64_MAP - указание файла System.map целевой системы через опцию -in.
- Новый модуль ядра: lx64_exec_root.
* Улучшения производительности Linux PCIe FPGA.
v4.18
* Добавлена команда benchmark.
* Обновлены сигнатуры разблокировки.
* Добавлена опция -psname.
v4.19 * Улучшения стабильности и загрузки модулей ядра для Linux. * Добавлена поддержка компиляции с clang для Linux. * Добавлена поддержка macOS.
Latest:
* Исправление ошибок.
* Поддержка Linux LeechAgent через gRPC (LeechCore v2.21).
* Добавлена опция -no-kmd-mem для отключения доступа к памяти KMD при загрузке (может быть полезна для стабильности в некоторых случаях).
* Добавлена опция -kmd WIN11_X64 - сигнатура KMD для Windows 11 (псевдоним для WIN10_X64_3).