
プロセスインジェクションに関連するサンプルと資料のコレクション
Linux 向けのプロセスインジェクション手法を包括的にまとめたコレクションです。実行中のプロセスにコードを注入するさまざまな方法を紹介しています。これらの例は、教育目的、セキュリティ研究、および低レベルな Linux プロセス操作の理解を目的としています。
プロセスインジェクションは、別のプロセスのコンテキストでコードを実行するために使用される手法です。マルウェアと関連付けられることが多いですが、これらの手法は以下の目的にも役立ちます:
ディレクトリ:ptrace/
ptrace() システムコールを使用して、プロセスのメモリにシェルコードを直接書き込み、実行をリダイレクトする古典的なプロセスインジェクション手法です。
主な特徴:
ユースケース:低レベルなプロセス制御と直接コードインジェクションの理解
ディレクトリ:ld_preload/
LD_PRELOAD 環境変数を使用して、他のすべてのライブラリより先にライブラリをロードする関数インターセプション(関数の差し替え)手法です。
主な特徴:
ユースケース:関数フック、API モニタリング、動作の変更
ディレクトリ:proc_mem/
/proc/<pid>/mem ファイルシステムインターフェースを介した直接メモリ書き込みと、プロセス制御のための ptrace を組み合わせた手法です。
主な特徴:
ユースケース:高速なバルクメモリインジェクション、従来の ptrace の制限の回避
ディレクトリ:dlopen_inject/
実行をハイジャックして dlopen() を呼び出させることで、実行中のプロセスに共有ライブラリをロードさせる高度な手法です。
主な特徴:
ユースケース:高度な永続的インジェクション、実行時ライブラリ操作
# Build ptrace injection
cd ptrace && make all
# Build LD_PRELOAD injection
cd ../ld_preload && make all
# Build /proc/mem injection
cd ../proc_mem && make all
# Build dlopen injection
cd ../dlopen_inject && make all
各手法は同様のパターンに従います:
ターゲットプロセスを起動:
cd <technique>/victim-process
./sample
表示された PID をメモする
インジェクションを実行:
cd <technique>
sudo ./<injector> <PID> [additional args]
結果を確認:ターゲットプロセスの出力で注入されたコードの実行を確認する
各手法の詳細な手順については、個別の README ファイルを参照してください。
Yama ptrace_scope:ptrace を特権ユーザーに制限する
echo 1 | sudo tee /proc/sys/kernel/yama/ptrace_scope
SELinux/AppArmor:強制アクセス制御
モニタリング:auditd を使用して ptrace およびプロセスインジェクションの試行をログ記録する
auditctl -a exit,always -F arch=b64 -S ptrace
実行時整合性チェック:プロセスメモリを定期的に検証する
コードサイニング:ライブラリの署名を検証する
/proc/<pid>/maps を監視して、予期しないメモリ領域やライブラリを検出するlsof、pmap、プロセス監視ユーティリティなどのツールを使用する重要:これらの手法は、許可された環境でのみ使用してください:
このリポジトリは教育および研究目的専用です。 著者はこれらの手法の悪用について責任を負いません。どのシステムでテストする場合でも、必ず適切な許可を取得してください。
権限拒否エラー:
sudo で実行する/proc/sys/kernel/yama/ptrace_scope を確認するインジェクションが静かに失敗する:
セグメンテーションフォルト:
具体的なトラブルシューティングのガイダンスについては、各手法の README を参照してください。
コントリビューションを歓迎します! 追加候補:
man 2 ptrace - プロセストレーシングシステムコールman 5 proc - /proc ファイルシステムのドキュメントman 3 dlopen - 動的ライブラリのロード詳細は LICENSE.txt を参照してください。
このソフトウェアは教育目的で「現状のまま」提供されます。責任を持って倫理的に使用してください。所有していないシステムでセキュリティ手法をテストする前に、必ず適切な許可を取得してください。
| 手法 | 複雑さ | ステルス性 | 永続性 | 速度 | 実行中プロセスで動作 |
|---|
| ptrace | 中 | 低 | なし | 中 | あり |
| LD_PRELOAD | 低 | 非常に低 | なし | 高速 | なし |
| /proc/mem | 中 | 低 | なし | 高速 | あり |
| dlopen | 高 | 中 | あり | 中 | あり |