
Программное обеспечение для атак с прямым доступом к памяти (DMA)
PCILeech использует аппаратные устройства PCIe для чтения и записи памяти целевой системы. Это достигается с помощью DMA через PCIe. Драйверы на целевой системе не требуются.
PCILeech также работает без аппаратного обеспечения совместно с широким спектром программных методов получения памяти, поддерживаемых библиотекой LeechCore, включая захват удаленной оперативной памяти с помощью DumpIt или WinPmem. PCILeech также поддерживает локальный захват памяти и ряд форматов файлов дампа памяти.
PCILeech поддерживает несколько устройств для захвата памяти. Как аппаратных, так и программных. Аппаратура на базе USB3380 может читать только 4 ГБ памяти в собственном режиме, но может читать всю память, если в ядро целевой системы сначала будет загружен модуль ядра (KMD). Аппаратура на базе FPGA и программные методы могут читать всю память.
PCILeech способен внедрять широкий спектр имплантов ядра в целевые ядра, предоставляя легкий доступ к оперативной памяти и файловой системе через «смонтированный диск». Также возможно удаление требования пароля при входе, загрузка неподписанных драйверов, выполнение кода и запуск системных оболочек. PCILeech работает на Windows и Linux. Поддерживаемые целевые системы — это x64 версии: UEFI, Linux, FreeBSD и Windows. Для этого требуется доступ на запись к памяти (аппаратура USB3380, аппаратура FPGA, LiveCloudKd или CVE-2018-1038 «Total Meltdown»).
Для начала клонируйте исходники из репозитория или загрузите последние бинарные файлы, модули и конфигурационные файлы.
Графический интерфейс PushPin для PCILeech делает типичные задачи RedTeam очень простыми. Обратите внимание, что PushPin не является частью официального дистрибутива PCILeech.







*) macOS High Sierra и выше не поддерживаются.
PCILeech поддерживает как аппаратные, так и программные методы захвата памяти. Весь захват памяти обрабатывается библиотекой LeechCore.
Ниже приведена сводка поддерживаемых аппаратных методов захвата памяти. Все аппаратные методы захвата памяти поддерживаются как в Windows, так и в Linux. Однако методы на базе FPGA имеют небольшое снижение производительности в Linux и достигают максимума примерно 90 МБ/с по сравнению с 150 МБ/с в Windows.
Ниже приведена сводка поддерживаемых программных методов захвата памяти. Обратите внимание, что LeechService предоставляет только сетевое подключение к удаленной библиотеке LeechCore. После подключения можно использовать как аппаратные, так и программные методы захвата памяти.
Пожалуйста, убедитесь, что у вас самая последняя версия PCILeech, посетив репозиторий PCILeech на GitHub: https://github.com/ufrisk/pcileech
Загрузите последние бинарные файлы, модули и конфигурационные файлы из последнего релиза. Также можно клонировать репозиторий и собрать из исходников.
Пожалуйста, ознакомьтесь с руководством PCILeech на Windows для получения информации о запуске PCILeech в Windows.
Если используется аппаратура USB3380, необходимо установить драйвер Google Android USB. Загрузите драйвер Google Android USB с: http://developer.android.com/sdk/win-usb.html#download Распакуйте драйвер.
Если используется FPGA с дополнительной картой FT601 USB3 или PCIeScreamer, необходимо установить драйверы FTDI. Загрузите 64-битную версию FTD3XX.dll с сайта FTDI и поместите её рядом с pcileech.exe.
Чтобы смонтировать оперативную память и файловую систему целевой системы как диск в Windows, необходимо установить библиотеку файловой системы Dokany2. Пожалуйста, загрузите и установите последнюю стабильную версию Dokany2 по адресу: https://github.com/dokan-dev/dokany/releases/latest
Пожалуйста, ознакомьтесь с руководством PCILeech на Linux для получения информации о запуске PCILeech в Linux.
Пожалуйста, посмотрите страницы вики проекта для дополнительных примеров. Вики находится в стадии наполнения, информация может отсутствовать.
Монтирование оперативной памяти и файловой системы целевой системы, требует загрузки KMD. В этом примере используется 0x11abc000.
pcileech.exe mount -kmd 0x11abc000Показать справку для конкретного импланта ядра, в данном случае импланта lx64_filepull.
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 (пакетов уровня транзакций) и вывод их на экран (требуется правильно настроенная плата 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://[email protected]Выполнение скрипта анализа на Python find-rwx.py на удаленном компьютере с использованием встроенной среды Python LeechAgent.
pcileech.exe agent-execpy -in find-rwx.py -device pmem -remote rpc://[email protected]Патч виртуальной памяти процесса с pid 432 (в данном примере lsass.exe).
pcileech.exe patch -pid 432 -sig unlock_win10x64.sigВсё это кажется сложным? Или просто хотите задать быстрый вопрос? Присоединяйтесь к серверу сообщества PCILeech и MemProcFS DMA в Discord!
Бинарные файлы находятся в разделе релизов этого репозитория. Если вы хотите собрать собственную версию, это возможно. Пожалуйста, посмотрите PCILeech на Windows или PCILeech на Linux для получения дополнительной информации о сборке PCILeech. PCILeech также зависит от LeechCore и, опционально (для некоторых дополнительных функций), от The Memory Process File System, которые должны быть собраны отдельно.
PCILeech, MemProcFS и LeechCore являются открытыми, но не с открытым участием. PCILeech, MemProcFS и LeechCore предлагают очень гибкую архитектуру плагинов, которая позволяет вносить вклад в виде плагинов. Если вы хотите внести вклад, отличный от плагина, в основные проекты, пожалуйста, свяжитесь со мной перед началом разработки.
v1.0-v3.6
v4.0
leechcore.dll/leechcore.so. Новые устройства включают:
v4.1
agent-forensic.
./pcileech mount /home/user/fusemnt/leechfs -kmd <your_kmd_address>none.-bar-ro и -bar-rw.-psname.Последнее:
-no-kmd-mem для выборочного отключения доступа к памяти KMD при загрузке KMD (может быть полезна для стабильности в некоторых случаях).-kmd WIN11_X64 — сигнатура KMD для Windows 11 (псевдоним для WIN10_X64_3).| Устройство | Тип | Интерфейс | Скорость | Доступ к 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 | Да | Нет |
| Устройство | Тип | Энергозависимость | Запись | Поддержка 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* | Удаленный | Нет | Нет |