PCILeech

Hardware & Industrial v4.19 · 16.01.2025 активный

Инструмент для исследования безопасности DMA через PCIe с использованием FPGA-адаптеров для чтения и записи памяти целевых систем.

v4.19
16.01.2025 current

Установка
git clone https://github.com/ufrisk/pcileech.git
cd pcileech
git submodule update --init --recursive
mkdir build
cd build
cmake ..
make
показать оригинал переведено ИИ

PCILeech Summary:

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.

Capabilities:

  • Получение памяти целевой системы со скоростью более 150 МБ/с.
  • Получение удалённой памяти через удалённый LeechService.
  • Запись данных в память целевой системы.
  • 4 ГБ памяти могут быть доступны в нативном режиме DMA (аппаратное обеспечение USB3380).
  • ВСЯ память может быть доступна в нативном режиме DMA (аппаратное обеспечение FPGA).
  • ВСЯ память может быть доступна, если загружен kernel module (KMD).
  • Прямой доступ к PCIe TLP (аппаратное обеспечение FPGA).
  • Монтирование живой ОЗУ как файловой системы [Linux, Windows, macOS Sierra*].
  • Монтирование файловой системы как диска [Linux, Windows, macOS Sierra*].
  • Выполнение ядренных функций на целевой системе.
  • Запуск системной оболочки и других исполняемых файлов [Windows].
  • Передача и загрузка файлов [Linux, FreeBSD, Windows, macOS Sierra*].
  • Изменение / разблокировка (удаление требования пароля) [Windows, macOS Sierra*].
  • Легко создавать собственные ядренные shellcode и/или собственные сигнатуры.
  • Подключение к удалённому LeechAgent через сеть для удалённого:
    • Дамп физической памяти через сеть.
    • Выполнение скриптов анализа памяти на Python на удалённом хосте.
  • Множество дополнительных функций, не перечисленных здесь ...

*) macOS High Sierra и более новые версии не поддерживаются.

Memory Acquisition Methods:

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 из последнего выпуска. Либо клонируйте репозиторий и соберите из исходников.

Windows:

Пожалуйста, ознакомьтесь с 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

Linux:

Пожалуйста, ознакомьтесь с 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

Ограничения/Известные проблемы:

  • Не работает, если ОС использует IOMMU/VT-d. Это включено по умолчанию в macOS (если не отключено в режиме восстановления). Полная работа Windows 10/11 с включёнными функциями виртуализации на уровне безопасности не гарантируется.
  • Последние версии Windows и Linux блокируют DMA по умолчанию.

PCILeech и MemProcFS сообщество:

Слишком сложно? Или хотите задать быстрый вопрос? Присоединяйтесь к Discord-серверу сообщества PCILeech и MemProcFS!

Сборка:

Бинарные файлы находятся в разделе releases этого репозитория. Если один желает собрать собственную версию, это возможно. Для получения более подробной информации о сборке PCILeech обратитесь к страницам PCILeech on Windows или PCILeech on Linux. PCILeech также зависит от LeechCore и, при желании (для некоторой дополнительной функциональности), от файловой системы Memory Process File System, которые необходимо также собрать отдельно.

Contributing:

PCILeech, MemProcFS и LeechCore являются открытыми исходными проектами, но не открыты для свободного вклада. PCILeech, MemProcFS и LeechCore предоставляют высоко гибкую архитектуру плагинов, которая позволит вносить Contributions в виде плагинов. Если вы хотите внести свой вклад, отличный от плагинов, в основные проекты, пожалуйста, свяжитесь со мной перед началом разработки.

Links:

  • Twitter: Twitter
  • Discord: Discord - PCILeech/MemProcFS
  • PCILeech: https://github.com/ufrisk/pcileech
  • PCILeech FPGA: https://github.com/ufrisk/pcileech-fpga
  • LeechCore: https://github.com/ufrisk/LeechCore
  • MemProcFS: https://github.com/ufrisk/MemProcFS
  • Blog: http://blog.frizk.net
  • PushPin: GUI for PCILeech: https://github.com/LuckyPi/PushPin

Changelog:

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, которые необходимо также собрать отдельно.

Contributing:

PCILeech, MemProcFS и LeechCore являются открытыми исходными проектами, но не принимают свободные вклады. PCILeech, MemProcFS и LeechCore предоставляют высоко гибкую архитектуру плагинов, которая позволяет вносить Contributions в виде плагинов. Если вы хотите внести свой вклад, отличный от плагинов, в основные проекты, пожалуйста, свяжитесь со мной перед началом разработки.

Links:

  • Twitter: Twitter
  • Discord: Discord - PCILeech/MemProcFS
  • PCILeech: https://github.com/ufrisk/pcileech
  • PCILeech FPGA: https://github.com/ufrisk/pcileech-fpga
  • LeechCore: https://github.com/ufrisk/LeechCore
  • MemProcFS: https://github.com/ufrisk/MemProcFS
  • Blog: http://blog.frizk.net
  • PushPin: GUI for PCILeech: https://github.com/LuckyPi/PushPin

Changelog:

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).

Войдите, чтобы оставить комментарий