不正アクセスをシュミレーションするツールです。セキュリティテストやデモ、SIEM/SOCのトレーニング用に設計されたものもあります。
1. Atomic Red Team (MITRE ATT&CKに基づく)
# インストール
git clone https://github.com/redcanaryco/atomic-red-team.git
cd atomic-red-team
# Windowsイベントログを生成(一部Linuxでも動作)
./atomic-red-team/execution/frameworks/scripts/Invoke-AtomicTest.ps1
2. Log-Monster (SIEMテスト用)
# インストール
git clone https://github.com/neu5ron/log-monster.git
cd log-monster
# 不正アクセスログ生成
python log-monster.py \
--output /var/log/attacks.log \
--attacks "sql_injection,xss,bruteforce" \
--count 1000
3. VECTR (セキュリティ評価プラットフォーム)
# Dockerで実行
docker run -d -p 8080:8080 --name vectr securityriskadvisor/vectr
# WebUIから不正アクセスシナリオを実行
4. OSSECテストルール
# OSSECのテストモードを使用
ossec-control enable test-rule
# テスト攻撃を生成
echo "Dec 31 23:59:59 server1 sshd[1234]: Failed password for root from 192.168.1.100" | /var/ossec/bin/ossec-logtest
5. Metasploitフレームワーク (実際の攻撃シミュレーション)
# Metasploitをインストール
sudo apt install metasploit-framework -y
# テスト用スクリプトでログを生成
msfconsole -q -x "
use auxiliary/scanner/ssh/ssh_login
set RHOSTS 127.0.0.1
set USERNAME root
set PASS_FILE /usr/share/wordlists/rockyou.txt
set STOP_ON_SUCCESS false
run
exit
"
6. Splunk Attack Range (企業向け)
# インストール
git clone https://github.com/splunk/attack_range.git
cd attack_range
# 設定ファイルを編集後
python3 attack_range.py -a simulate -st T1003.001 -t 300
7. Caldera (MITRE ATT&CK自動化)
# Dockerで実行
docker run -d -p 8888:8888 mitre/caldera:latest
# APIを使用して攻撃を実行し、ログを生成
curl -X POST http://localhost:8888/api/v2/operations \
-H "Content-Type: application/json" \
-d '{"name":"test_attack","adversary_id":"test"}'
8. SIEM用テストデータジェネレーター
JSON形式の不正アクセスログ生成
#!/usr/bin/env python3
# generate_siem_logs.py
import json
import random
from datetime import datetime, timedelta
import time
def generate_attack_event():
attack_types = [
{
"name": "SQL Injection",
"severity": "high",
"technique": "T1190",
"indicators": ["' OR '1'='1", "UNION SELECT", "--", "/*"],
"source": "web"
},
{
"name": "Brute Force SSH",
"severity": "medium",
"technique": "T1110",
"indicators": ["Failed password", "Invalid user", "Connection closed"],
"source": "network"
},
{
"name": "Phishing Attempt",
"severity": "high",
"technique": "T1566",
"indicators": ["suspicious attachment", "malicious link", "spoofed sender"],
"source": "email"
},
{
"name": "Data Exfiltration",
"severity": "critical",
"technique": "T1048",
"indicators": ["large outbound transfer", "unusual port", "encrypted traffic"],
"source": "network"
}
]
attack = random.choice(attack_types)
timestamp = datetime.now().isoformat() + "Z"
event = {
"timestamp": timestamp,
"event_type": "security_alert",
"attack_type": attack["name"],
"severity": attack["severity"],
"mitre_technique": attack["technique"],
"source_ip": f"{random.randint(1,255)}.{random.randint(1,255)}.{random.randint(1,255)}.{random.randint(1,255)}",
"destination_ip": "192.168.1.100",
"user": random.choice(["admin", "user1", "service_account", None]),
"description": f"Detected {attack['name']} attempt from external IP",
"indicators": random.sample(attack["indicators"], random.randint(1, len(attack["indicators"]))),
"recommended_action": random.choice(["block_ip", "reset_password", "investigate", "quarantine"]),
"confidence": random.randint(70, 95)
}
return event
# ログを生成
with open('/var/log/siem/alerts.json', 'a') as f:
for i in range(100):
event = generate_attack_event()
f.write(json.dumps(event) + '\n')
time.sleep(random.uniform(0.1, 2.0))
9. Wazuhテストツール (HIDS/NIDS)
# Wazuhマネージャーでテストアラート生成
/var/ossec/bin/ossec-control restart
# テストルールのトリガー
echo "Dec 31 23:59:59 server sudo: pam_unix(sudo:auth): authentication failure; logname= uid=0 euid=0 tty=/dev/pts/0 ruser= rhost= user=root" >> /var/log/secure
注意点
- 倫理的配慮: これらのツールはテスト環境でのみ使用
- 法的制約: 許可なく他人のシステムに対して使用しない
- 分離環境: 本番環境と隔離したネットワークで実行
- 目的限定: 教育、テスト、研究目的のみ
- ログ管理: 生成したログの適切な管理と破棄
おすすめツール
- 教育/デモ用: 自作スクリプト – 完全にコントロール可能
- 企業トレーニング: Atomic Red Team – MITRE ATT&CK準拠
- SIEMテスト: Log-Monster – 多様なフォーマット対応
- 実戦的テスト: Metasploit – 実際の攻撃ツール

コメント