
Инструменты анализа и генерации SVG для часто встречающегося фишинга с SVG-вложениями
Этот набор инструментов содержит специализированные Python-инструменты для анализа потенциально вредоносных SVG-файлов и обнаружения механизмов защиты.
Набор состоит из четырёх основных инструментов:
Инструмент статического анализа на основе сигнатур, который декодирует обфусцированные URL из вредоносных SVG-файлов без выполнения какого-либо кода. Это более безопасный вариант для первичного анализа.
String.fromCharCode с числовыми вычислениями# Analyze a single SVG file
python3 extract.py -i malicious.svg
# Verbose output showing decoded JavaScript
python3 extract.py -i malicious.svg -v
# Debug mode with detailed analysis steps
python3 extract.py -i malicious.svg -d
# Read from stdin
python3 extract.py < malicious.svg
String.fromCharCode(115,101,99,...) ("secretkey")for с parseInt и операциями XORdata:atob("base64") + variableNameDYNAMIC SVG URL EXTRACTOR
=========================================================
SVG #1 Results:
----------------------------------------
Obfuscation: XOR decoding (key length: 9)
Extracted URLs:
→ https://malicious.example.com/[email protected]
Сложный инструмент динамического анализа, который извлекает и анализирует JavaScript, встроенный в SVG-файлы, с помощью box-js. Этот инструмент выполняет JavaScript в изолированной среде и предназначен для извлечения конечных полных URL даже при сложной обфускации.
location, window.open, fetch, XHR, Image.src и др.# Required: box-js must be installed globally
npm install -g box-js
# Python requirements (optional)
pip install -r requirements.txt
# Basic analysis of a single SVG
python3 extract_dynamic.py -i malicious.svg
# Analyze with custom output directory
python3 extract_dynamic.py -i malicious.svg -o analysis_results
# Analyze directory of SVGs with extended timeout
python3 extract_dynamic.py -i svg_samples/ -t 60
# Keep temporary files for debugging
python3 extract_dynamic.py -i malicious.svg --keep-temp
# Save URL blocklist to file
python3 extract_dynamic.py -i malicious.svg --blocklist-out urls.txt
# Mask email addresses for privacy
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]
======================================================
Инструмент веб-разведки для обнаружения механизмов безопасности Cloudflare, включая Turnstile, системы CAPTCHA, проверку браузера и другие меры защиты в цепочках перенаправлений.
pip install requests
pip install brotli # Optional for brotli support
# Check single URL for Cloudflare protections
python3 cf_probe.py https://example.com
# Scan with JavaScript file analysis
python3 cf_probe.py https://example.com --scan-js
# Process multiple URLs from file
python3 cf_probe.py -i urls.txt
# Custom User-Agent and timeout
python3 cf_probe.py https://example.com -A "Custom-Agent" -t 30
# Disable TLS verification (for testing)
python3 cf_probe.py https://example.com --insecure
# Dump HTML/JS for analysis
python3 cf_probe.py https://example.com --dump analysis_dump/
data-sitekeyturnstile.render()turnstile.create()cf-turnstile=== 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-файлы с различными паттернами кодирования для тестирования инструментов анализа.
# Generate single pattern
python3 encoder.py -u "https://evil.com/c2" -p 1 -o test.svg
# Generate all patterns in directory
python3 encoder.py --random-all -o test_patterns/
# Custom email address
python3 encoder.py -u "https://evil.com" -e "[email protected]" -p 3 -o custom.svg
FunctionArray.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 ...]
# Step 1: Generate test cases
python3 encoder.py --random-all -o test_cases/
# Step 2: Static analysis first (safer)
python3 extract.py -i test_cases/pattern_01_*.svg -v > static_results.txt
# Step 3: Dynamic analysis (in isolated environment)
python3 extract_dynamic.py -i test_cases/ -o dynamic_results/ --blocklist-out malicious_urls.txt
# Step 4: Verify Cloudflare protection on extracted URLs (if safe to do so)
python3 cf_probe.py -i malicious_urls.txt
# Clone or download the toolkit
cd svg_tools/
# Install Python dependencies
pip install -r requirements.txt
# Install box-js globally (for dynamic analysis)
npm install -g box-js
# Verify installation
python3 extract.py --help
python3 extract_dynamic.py --help
python3 cf_probe.py --help
python3 encoder.py --help