
一般的に見られるSVG添付フィッシングの解析・生成ツール
このツールキットには、悪意のある可能性のある SVG ファイルを解析し、セキュリティメカニズムを検出するための専門的な Python ツールが含まれています。
このツールキットは、主に 4 つのツールで構成されています:
コードを一切実行せずに、悪意のある SVG ファイルから難読化された URL をデコードするパターンベースの静的解析ツールです。これは初期解析においてより安全なオプションです。
String.fromCharCode パターンのデコード# 単一の SVG ファイルを解析する
python3 extract.py -i malicious.svg
# デコードされた JavaScript を表示する詳細出力
python3 extract.py -i malicious.svg -v
# 詳細な解析手順を示すデバッグモード
python3 extract.py -i malicious.svg -d
# 標準入力から読み込む
python3 extract.py < malicious.svg
String.fromCharCode(115,101,99,...)("secretkey")を検出parseInt と XOR 演算を伴う for ループを識別data: URI から Base64 コンテンツを抽出してデコードatob("base64") + variableName パターンを処理DYNAMIC SVG URL EXTRACTOR
=========================================================
SVG #1 Results:
----------------------------------------
Obfuscation: XOR decoding (key length: 9)
Extracted URLs:
→ https://malicious.example.com/[email protected]
box-js を使用して SVG ファイルに埋め込まれた JavaScript を抽出・解析する高度な動的解析ツールです。このツールはサンドボックス環境で JavaScript を実行し、複雑な難読化によって構築された場合でも最終的な完全な URL を抽出するように設計されています。
location、window.open、fetch、XHR、Image.src などを監視# 必須: box-js をグローバルにインストールする必要があります
npm install -g box-js
# Python の要件(任意)
pip install -r requirements.txt
# 単一の SVG の基本解析
python3 extract_dynamic.py -i malicious.svg
# カスタム出力ディレクトリを指定して解析
python3 extract_dynamic.py -i malicious.svg -o analysis_results
# 拡張タイムアウトで SVG のディレクトリを解析
python3 extract_dynamic.py -i svg_samples/ -t 60
# デバッグ用に一時ファイルを保持
python3 extract_dynamic.py -i malicious.svg --keep-temp
# URL ブロックリストをファイルに保存
python3 extract_dynamic.py -i malicious.svg --blocklist-out urls.txt
# プライバシー保護のためメールアドレスをマスク
python3 extract_dynamic.py -i malicious.svg --mask-emails
このツールは、以下をフックする包括的な JavaScript ペイロードを注入します:
location.href、location.assign()、location.replace()window.open()、ナビゲーションメソッドfetch()、XMLHttpRequest.open()String.prototype.concat、文字列操作atob()、decodeURI()、unescape()eval()、Function()、setTimeout()以下を自動的に検出して処理します:
=== Processing: malicious.svg ===
Wrote temp JS -> /tmp/boxjs_svg_ABC/test.boxed.js
Running box-js (timeout 30s) with sink hooks...
[+] box-js finished. Results in: boxjs_out/malicious.svg.boxjs_results
*** FINAL COMPLETE URLs FOUND ***:
→ https://evil.example.com/[email protected]
Emails found:
→ [email protected]
=== FINAL ANALYSIS SUMMARY ===
🎯 COMPLETE URLs EXTRACTED (1 total):
======================================================
→ https://evil.example.com/[email protected]
======================================================
リダイレクトチェーン全体にわたって Turnstile、CAPTCHA システム、ブラウザ検証、その他の保護手段を含む Cloudflare セキュリティメカニズムを検出するための Web 偵察ツールです。
pip install requests
pip install brotli # brotli サポート用(任意)
# Cloudflare 保護について単一の URL を確認
python3 cf_probe.py https://example.com
# JavaScript ファイル解析を伴うスキャン
python3 cf_probe.py https://example.com --scan-js
# ファイルから複数の URL を処理
python3 cf_probe.py -i urls.txt
# カスタム User-Agent とタイムアウト
python3 cf_probe.py https://example.com -A "Custom-Agent" -t 30
# TLS 検証を無効化(テスト用)
python3 cf_probe.py https://example.com --insecure
# 分析用に HTML/JS をダンプ
python3 cf_probe.py https://example.com --dump analysis_dump/
data-sitekey 属性turnstile.render() JavaScript 呼び出しturnstile.create() JavaScript 呼び出しcf-turnstile CSS クラス=== Redirect/Navigation Chain (3 steps) ===
[0] URL: https://example.com
Status: 301
Cloudflare Protection: YES (CF Headers)
CF Header: cf-ray: 123abc456def789
[1] URL: https://protected.example.com
Status: 200
Cloudflare Protection: YES (Turnstile, Custom CAPTCHA)
Turnstile Site key(s): 0x1AAA000000000000000
CAPTCHA Evidence: Click the computer to verify
=== Summary ===
Cloudflare Protection Detected: Turnstile with key(s): 0x1AAA000000000000000 | Custom CAPTCHA
解析ツールをテストするためのさまざまなエンコーディングパターンを備えた難読化された SVG ファイルを生成します。
# 単一のパターンを生成
python3 encoder.py -u "https://evil.com/c2" -p 1 -o test.svg
# ディレクトリにすべてのパターンを生成
python3 encoder.py --random-all -o test_patterns/
# カスタムメールアドレス
python3 encoder.py -u "https://evil.com" -e "[email protected]" -p 3 -o custom.svg
Function コンストラクタによる 16 進エンコードされた動的実行Array.find() 実行による文字マッピング$ python3 encoder.py --random-all -o test_suite/
Generated xor_proxy_enhanced: test_suite/pattern_01_xor_proxy_enhanced.svg
URL: https://r4nd0m.example.com/[email protected]
Generated hex_function: test_suite/pattern_02_hex_function.svg
URL: https://evil-site.org/[email protected]
[... 4 more patterns ...]
# ステップ 1: テストケースを生成
python3 encoder.py --random-all -o test_cases/
# ステップ 2: 最初に静的解析(より安全)
python3 extract.py -i test_cases/pattern_01_*.svg -v > static_results.txt
# ステップ 3: 動的解析(隔離環境で)
python3 extract_dynamic.py -i test_cases/ -o dynamic_results/ --blocklist-out malicious_urls.txt
# ステップ 4: 抽出された URL の Cloudflare 保護を検証(安全な場合のみ)
python3 cf_probe.py -i malicious_urls.txt
# ツールキットをクローンまたはダウンロード
cd svg_tools/
# Python の依存関係をインストール
pip install -r requirements.txt
# box-js をグローバルにインストール(動的解析用)
npm install -g box-js
# インストールを確認
python3 extract.py --help
python3 extract_dynamic.py --help
python3 cf_probe.py --help
python3 encoder.py --help