Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Linpmem — Драйвер ядра Linux для захвата физической памяти, обеспечивающий доступ на чтение к любому физическому адресу, включая зарезервированную память и дыры в памяти, с информацией о CR3 и сервисами трансляции виртуальных адресов в физические. | Kitploit
Инструменты/GitHubGitHub/velocidex/linpmem
Криминалистика памятиФорензикаЦифровая криминалистикаРеагирование на Инциденты
GitHubvelocidex/linpmem

Linpmem

Драйвер ядра Linux для захвата физической памяти, обеспечивающий доступ на чтение к любому физическому адресу, включая зарезервированную память и дыры в памяти, с информацией о CR3 и сервисами трансляции виртуальных адресов в физические.

Репозиторий
10512111 год назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Linpmem – инструмент для захвата физической памяти для Linux

alt text

Linpmem – это инструмент только для Linux x64 для чтения физической памяти.

Как и его аналог для Windows, Winpmem, это не традиционный дампер памяти. Linpmem предоставляет API для чтения с любого физического адреса, включая зарезервированную память и дыры памяти, но также может использоваться для обычного дампа памяти. Кроме того, драйвер предлагает различные режимы доступа для чтения физической памяти, такие как байтовый, словесный, двойной словесный, четверной словесный и буферный режим, причем буферный режим подходит в большинстве стандартных случаев. Если чтение требует выровненного чтения байт/слово/двойное слово/четверное слово, Linpmem сделает именно это.

В настоящее время Linpmem включает:

  1. Чтение с физического адреса (режимы доступа: байт, слово, двойное слово, четверное слово или буфер)
  2. Сервис информации CR3 (указание целевого процесса по pid)
  3. Сервис преобразования виртуального адреса в физический

Управление кэшем будет добавлено в будущем для поддержки специализированных режимов чтения.

Сводная таблица

  • Сборка драйвера ядра
  • Загрузка драйвера
  • Использование
    • Демонстрационный код
    • Инструмент командной строки
    • Библиотека
    • Инструмент для дампа памяти
  • Библиотека
  • Протестированные дистрибутивы Linux
  • Обработка Secure Boot
  • Известные проблемы
  • В разработке
  • Планы на будущее
  • Благодарности

Сборка драйвера ядра

По крайней мере сейчас, вы должны скомпилировать драйвер Linpmem самостоятельно. Метод загрузки предварительно скомпилированного драйвера Linpmem на других системах Linux в настоящее время находится в разработке, но еще не завершен. Тем не менее, скомпилировать драйвер Linpmem несложно, в основном это выполнение команды 'make'.

Шаг 1 - получение правильных заголовочных файлов

Вам понадобятся make и компилятор C. (Мы рекомендуем gcc, но clang также должен работать).

Убедитесь, что у вас установлены linux-headers (используя любой пакетный менеджер вашего целевого дистрибутива Linux). Точное имя пакета может отличаться в вашем дистрибутиве. Быстрый (независимый от дистрибутива) способ проверить, установлен ли пакет:

ls -l /usr/lib/modules/`uname -r`/

Вот и все, можно переходить к шагу 2.

Чужая система: В настоящее время, если вы хотите скомпилировать драйвер для другой системы, например, потому что вы хотите создать дамп памяти, но не можете скомпилировать на целевой системе, вам необходимо загрузить пакет заголовков непосредственно из репозиториев пакетов дистрибутива Linux этой системы. Дважды проверьте, что версия пакета точно соответствует релизу и версии ядра, работающим на чужой системе. Если другая система использует самостоятельно скомпилированное ядро, вам необходимо получить копию каталога сборки этого ядра. Затем укажите расположение любого из этих каталогов в переменной окружения KDIR.

export KDIR=path/to/extracted/header/package/or/kernel/root

Шаг 2 - make

Скомпилировать драйвер просто, просто введите:

make

Возможно, вы захотите проверить precompiler.h перед сборкой и выбрать, компилировать для релиза или отладки (например, с отладочной печатью). Сейчас не так много других настроек прекомпилятора.

Загрузка драйвера

Модуль linpmem.ko можно загрузить с помощью insmod path-to-linpmem.ko и выгрузить с помощью rmmod path-to-linpmem.ko. (Это загрузит драйвер только на время работы.) Если вы компилировали для отладки, также посмотрите вывод dmesg.

После загрузки, для взаимодействия с драйвером, необходимо создать устройство:

mknod /dev/linpmem c 42 0

Если не удается связаться с драйвером, возможно, проверьте в логе dmesg, что '42' действительно является зарегистрированным major-номером:

[12827.900168] linpmem: registered chrdev with major 42

Хотя обычно ядро пытается действительно назначить этот номер.

Вы можете использовать chown на устройстве, чтобы передать его вашему пользователю, если вы не хотите все время держать открытой root-консоль. (Или просто продолжайте использовать его в root-консоли.)

  • Следите за выводом dmesg. Пожалуйста, сообщайте об ошибках, если вы их видите!
  • Внимание: если в dmesg есть сообщение об ошибке от Linpmem с требованием перезагрузиться, лучше сделать это немедленно.
  • Внимание: это ранняя версия.

Использование

Демонстрационный код

Существует пример кода, демонстрирующий и подробно объясняющий, как взаимодействовать с драйвером. Ссылка на пользовательский API также находится в ./userspace_interface/linpmem_shared.h.

  1. cd demo
  2. gcc -o test test.c
  3. (sudo) ./test // <= требуется sudo, если вы не использовали chown на устройстве.

Этот код важен, если вы хотите понять, как напрямую взаимодействовать с драйвером вместо использования библиотеки. Его также можно использовать как краткий функциональный тест.

Инструмент командной строки

Существует (опциональный) базовый инструмент командной строки для Linpmem, pmem CLI tool. Он доступен здесь: https://github.com/vobst/linpmem-cli. Помимо исходного кода, есть также предварительно скомпилированный CLI-инструмент, а также предварительно скомпилированная статическая библиотека и заголовочные файлы, которые можно найти здесь (подписано). Примечание: это предварительная версия, обязательно проверяйте обновления, так как вскоре последуют многие дополнения и улучшения.

Инструмент pmem CLI можно использовать для тестирования различных функций Linpmem (относительно) безопасным и удобным способом. Linpmem также может быть загружен этим инструментом вместо использования insmod/rmmod, с некоторыми дополнительными опциями в будущем. Это также имеет преимущество — pmem автоматически создает нужное устройство для немедленного использования. Он чрезвычайно портативен и работает на любой системе Linux (и, фактически, был протестирован даже на Linux 2.6).

$ ./pmem -h
Command-line client for the linpmem driver

Usage: pmem [OPTIONS] [COMMAND]

Commands:
  insmod  Load the linpmem driver
  help    Print this message or the help of the given subcommand(s)

Options:
  -a, --address <ADDRESS>            Address for physical read operations
  -v, --virt-address <VIRT_ADDRESS>  Translate address in target process' address space (default: current process)
  -s, --size <SIZE>                  Size of buffer read operations
  -m, --mode <MODE>                  Access mode for read operations [possible values: byte, word, dword, qword, buffer]
  -p, --pid <PID>                    Target process for cr3 info and virtual-to-physical translations
      --cr3                          Query cr3 value of target process (default: current process)
      --verbose                      Display debug output
  -h, --help                         Print help (see more with '--help')
  -V, --version                      Print version

Если вы хотите скомпилировать CLI-инструмент самостоятельно, перейдите в его каталог и следуйте инструкциям в (cli) Readme для сборки. В противном случае просто загрузите предварительно собранную программу — она должна работать на любом Linux. Чтобы загрузить драйвер ядра с помощью CLI-инструмента:

# pmem insmod path/to/linpmem.ko
Скачать инструмент