Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
dirtycow-lab — Dirty COW(CVE-2016-5195)を対象とした教育用PoC。ロギング、ptraceフォールバック、バイナリペイロード対応を備えています。 | Kitploit
ツール/GitHubGitHub/mohammadamin382/dirtycow-lab
特権昇格脆弱性分析エクスプロイトペネトレーションテスト学習と教育レッドチーミングバイナリエクスプロイトラボと実践
GitHubmohammadamin382/dirtycow-lab

dirtycow-lab

Dirty COW(CVE-2016-5195)を対象とした教育用PoC。ロギング、ptraceフォールバック、バイナリペイロード対応を備えています。

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

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有

Dirty COW 教育用 PoC(CVE-2016-5195)

⚠️ 法的注意事項

このコードは教育目的専用です。悪意のある使用は固く禁じられており、違法です。

📖 Dirty COW とは?

Dirty COW(CVE-2016-5195)は、Linux カーネルのコピーオンライト(COW)機構における競合状態を悪用した Linux カーネルの権限昇格の脆弱性です。この脆弱性は、2007 年にリリースされたバージョン 2.6.22 以降、以下のバージョンより前の Linux カーネルに影響します。

  • 4.8.3
  • 4.7.9
  • 4.4.26

技術詳細

この脆弱性はカーネルのメモリ管理システムで発生します。

  1. コピーオンライト(COW): プロセスが MAP_PRIVATE でファイルをマッピングした場合、変更はプライベートコピーに対して行われるべきです
  2. 競合状態: madvise(MADV_DONTNEED) と /proc/self/mem への書き込みの間で競合する 2 つのスレッド
  3. 悪用: 特定のタイミング条件の下で、書き込みが COW 保護を迂回し、元のファイルを変更できる可能性があります

影響

  • 権限昇格: root が所有する読み取り専用ファイルを変更
  • システム侵害: /etc/passwd などのシステムファイルを変更して root アクセスを取得する可能性
  • データ整合性: 重要なシステムファイルの不正な変更

🛡️ テストのためのセキュリティ上の注意

⚠️ 重要: 隔離された環境でのみテストしてください

本番システムや、自分が所有していないシステムでは決して実行しないでください!

推奨テスト環境:

  1. 仮想マシン(VM): VMware、VirtualBox、KVM を使用
  2. コンテナ: 脆弱なカーネルを持つ Docker コンテナ
  3. 隔離ラボ: 重要なデータのない専用テストマシン
  4. カーネル要件: Linux カーネルバージョン 2.6.22 から 4.8.2

安全なテスト方法:

# 1. 最初にカーネルバージョンを確認
uname -r

# 2. 隔離されたテストディレクトリを作成
mkdir /tmp/dirtycow_test
cd /tmp/dirtycow_test

# 3. 無害なファイルのみでテスト
./main -t /tmp/test_file -v

# 4. システムリソースを監視
top -p $(pgrep -f main)

🚀 コンパイルと使用方法

前提条件

# 必要なパッケージをインストール(Ubuntu/Debian)
sudo apt-get update
sudo apt-get install build-essential libssl-dev

# 必要なパッケージをインストール(CentOS/RHEL)
sudo yum install gcc openssl-devel

コンパイル

# 標準コンパイル
make

# デバッグバージョン
make main-debug

# 手動コンパイル
gcc -o main main.c -lpthread -lssl -lcrypto

基本的な使用方法

# デフォルト設定での簡単なテスト
./main

# カスタムターゲットを使用した詳細モード
./main -t /tmp/testfile -v

# 複数プロセスでの高度な使用法
./main -t /tmp/target -n 4 -r 3 -D -v

# ファイルからのバイナリペイロード
./main -f payload.bin -P -D -n 2

コマンドラインオプション

オプション説明デフォルト最大値
-t <file>ターゲットファイルのパス/tmp/dirty_cow_test-
-p <payload>カスタムテキストペイロードテスト文字列-
-f <file>ファイルからバイナリペイロードを読み込む--
-i <num>反復回数10,000,000100,000,000
-n <num>並行プロセス数18
-r <num>再試行回数110
-P/proc/self/mem の代わりに ptrace を使用無効-
-D動的オフセットスキャンを有効化無効-
-v詳細出力無効-
-l <file>ログファイルのパスexploit_log.txt-
-hヘルプを表示--

🔬 高度な機能

1. 複数の攻撃方法

  • 方法 1: /proc/self/mem への書き込み(デフォルト)
  • 方法 2: 制限されたシステム向けの ptrace(PTRACE_POKETEXT)

2. 動的オフセットスキャン

最適な書き込み位置を見つけるために複数のメモリオフセットをスキャンします。

./main -D -v  # 動的オフセットスキャンを有効化

3. マルチプロセス競合状態

激しい競合状態を発生させるために複数のプロセスを起動します。

./main -n 4  # 4 つの並行プロセスを使用

4. バイナリペイロードのサポート

ファイルから任意のバイナリデータを読み込みます。

# バイナリペイロードを作成
echo -ne '\x41\x41\x41\x41\x00\x42\x42' > payload.bin

# バイナリペイロードを使用
./main -f payload.bin -v

5. 自動再試行ロジック

失敗した試行を自動的に再試行します。

./main -r 5  # 最大 5 回再試行

6. ファイル整合性の検証

SHA-256 ハッシュを使用してファイルの変更を検証します。

# 元のファイルと変更後のファイルのハッシュを確認
./main -v  # 詳細モードでハッシュ比較を表示

📊 出力とロギング

コンソール出力の例

Dirty COW Educational PoC (CVE-2016-5195)
==========================================

=== SYSTEM INFORMATION ===
Kernel Version: Linux 4.4.0-generic
Architecture: x86_64
Current User: testuser
UID/GID: 1000/1000

=== VULNERABILITY CHECK ===
Kernel: Linux version 4.4.0-generic
[+] /proc/self/mem accessible

=== STARTING TEST ===

=== EXPLOIT EXECUTION ===
[+] Target: /tmp/dirty_cow_test
[+] Payload length: 32 bytes
[+] Iterations: 10000000
[+] Processes: 1
[+] Method: /proc/self/mem
[+] Dynamic offset: disabled
[+] Backup created: /tmp/dirty_cow_test.backup
[+] Original content: original-content-before-exploit
[+] Starting race condition test...
[+] EXPLOIT SUCCESSFUL on attempt 1!
[+] File hash changed - modification confirmed!
[+] Original: a1b2c3d4e5f6...
[+] Final:    f6e5d4c3b2a1...

=== TEST SUCCESSFUL ===
[+] File modification completed
[+] Educational objective achieved
[+] Statistics: 156789 writes, 1 successful, 2.347 sec

ログファイルの形式

このツールは exploit_log.txt に詳細なログを作成します。

[2024-01-15 10:30:45] System Info - UID/GID: 1000/1000
[2024-01-15 10:30:45] Kernel version: Linux version 4.4.0-generic
[2024-01-15 10:30:45] /proc/self/mem accessible
[2024-01-15 10:30:45] Starting exploit - Target: /tmp/test, Payload: 32 bytes
[2024-01-15 10:30:47] EXPLOIT SUCCESSFUL on attempt 1
[2024-01-15 10:30:47] Final stats - Writes: 156789, Successful: 1, Duration: 2.347 sec

🎯 テストシナリオ

シナリオ 1: 基本機能テスト

# 基本的なエクスプロイト機能をテスト
./main -t /tmp/basic_test -v

シナリオ 2: ストレステスト

# 高強度の競合状態テスト
./main -i 50000000 -n 4 -r 3 -D -v

シナリオ 3: 制限された環境

# /proc/self/mem がブロックされている場合のテスト
./main -P -D -v

シナリオ 4: バイナリペイロードテスト

# ヌルバイトを含むバイナリデータのテスト
echo -ne 'BINARY\x00DATA\x01\x02\x03' > test.bin
./main -f test.bin -v

🔍 エクスプロイトの理解

競合状態のタイミング

このエクスプロイトは、2 つの操作間で競合を起こすことで機能します。

  1. スレッド 1: madvise(MADV_DONTNEED) - カーネルにメモリページを破棄するよう指示
  2. スレッド 2: /proc/self/mem への書き込み - マッピングされたメモリへの書き込みを試行

成功要因

  • カーネルバージョン: 脆弱なバージョン(4.8.3 より前)である必要があります
  • タイミング: 競合状態が正確な瞬間に発生する必要があります
  • メモリマッピング: ファイルが MAP_PRIVATE でマッピングされている必要があります
  • 権限: ターゲットファイルへの読み取りアクセスが必要です

なぜ機能するのか

競合状態が成功すると:

  1. スレッド 1 が COW ページを破棄します
  2. スレッド 2 の書き込みが新しい COW ページが作成される前に行われます
  3. 書き込みはプライベートコピーではなく元のファイルに直接行われます

🛠️ トラブルシューティング

一般的な問題

1. 「Exploit failed or insufficient iterations」

  • 解決策: -i で反復回数を増やすか、-n で複数のプロセスを使用します

2. 「/proc/self/mem access failed」

  • 解決策: -P フラグで ptrace 方式を使用します

3. 「System may not be vulnerable」

  • カーネルバージョンを確認: uname -r
  • カーネルが 4.8.3 より古いことを確認します

4. システムが応答しなくなる

  • 反復回数を減らす: -i 1000000
  • プロセス数を減らす: -n 1

パフォーマンスチューニング

# 控えめな設定(遅いが安全)
./main -i 5000000 -n 1

# 積極的な設定(高速だがリソース消費が大きい)
./main -i 50000000 -n 4 -D

# バランスの取れた設定
./main -i 20000000 -n 2 -r 2 -D

📚 教育リソース

CVE 情報

  • CVE-2016-5195: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5195
  • NVD データベース: https://nvd.nist.gov/vuln/detail/CVE-2016-5195

追加の参考資料

  • Linux カーネルのメモリ管理
  • コピーオンライト機構
  • 競合状態の脆弱性
  • 権限昇格テクニック

🤝 貢献

これは教育用ツールです。貢献は以下に焦点を当てるべきです:

  • 教育的価値の向上
  • 安全機能の追加
  • ドキュメントの改善
  • コードの明確さとコメント

⚖️ 免責事項

このソフトウェアは教育および研究目的でのみ提供されます。著者および貢献者は、このプログラムによって引き起こされた誤用や損害について責任を負いません。ユーザーは、システム上でテストを実行する前に適切な許可を得ていることを確認する単独の責任を負います。

このソフトウェアを使用することで、あなたは以下を了承します:

  • 正当な教育目的でのみ使用すること
  • 実行するすべてのテストについて適切な許可を得ていること
  • 許可のないシステムテストの法的影響を理解していること
  • このツールを悪意のある目的で使用しないこと

📝 ライセンス

このプロジェクトは教育目的に限り MIT ライセンスの下でリリースされています。


覚えておいてください: 大きな力には大きな責任が伴います。この知識をシステムを保護・堅牢化するために使い、害するために使わないでください。

ツールをダウンロード