sec-dashboard — Guia de uso
Dashboard web con 35 herramientas de seguridad pure Python. Accede en http://localhost:8444 o https://sec.sammideblas.com (con Cloudflare Access)
Indice
- Arrancar y parar
- Anadir un target
- Ejecutar una herramienta
- Herramientas especiales
- Pipelines automatizados
- Proxy y anonimato
- Notificaciones: Webhooks y Splunk
- Exportar reportes
- Cancelar scans
- Historial y busqueda
- Borrar historial
- Herramientas de hardware y audit
- Despliegue
- Solución de problemas
1. Arrancar y parar
Windows
cd ~/sec-dashboard
python -m uvicorn backend.main:app --host 127.0.0.1 --port 8444Abrir: http://localhost:8444
Parar
Ctrl+C o kill $(lsof -ti:8444)
2. Anadir un target
- Ir a Targets en la barra lateral
- Clic en Add Target
- Rellenar Name (etiqueta) y Host (dominio o IP)
- Clic en Add
- El target seleccionado persiste entre recargas (localStorage)
En modo remoto (Railway), IPs privadas y metadata endpoints son bloqueados automáticamente (SSRF protection).
3. Ejecutar una herramienta
- Ir a Tools
- Clic en la herramienta
- Seleccionar target del popup (o usar el target ya seleccionado)
- Resultados formateados aparecen debajo
Categorias disponibles (35 herramientas, 6 categorias)
- Network Recon (9): puertos, DNS, subdominios, SSL, CAA, etc.
- Web Security (10): headers, fuzzing, SQLi, XSS, CORS, CSP, HTTP methods, robots.txt
- Vulnerability (3): CVE, hash lookup, password audit — special tools
- System (6): conexiones, procesos, info del sistema, PS Security Audit, WiFi Marauder Scan, M5Stick Networks — special tools
- OSINT (5): ASN, reverse DNS, CT logs, Shodan, geolocation
- Email Security (2): DNSSEC checker, email security (SPF/DKIM/DMARC)
4. Herramientas especiales
Algunas herramientas no usan dominio/IP como target. Cada una pide lo que necesita:
| Herramienta | Que pide | Como funciona |
|---|---|---|
| Hash Lookup | Hash MD5/SHA-1/SHA-256 | Modal pide el hash, comprueba MalwareBazaar/VirusTotal |
| Password Audit | Password | Modal pide password, analiza fortaleza + breach HIBP |
| CVE Search | Keyword o CVE ID | Modal pide keyword, busca en NIST NVD |
| Net Connections | Sin input | Se ejecuta directamente, reporta la maquina local |
| Process Monitor | Sin input | Se ejecuta directamente |
| System Info | Sin input | Se ejecuta directamente |
| PS Security Audit | Sin input (Windows only) | Ejecuta Invoke-SecurityAudit.ps1 (10 modulos). Requiere Auditing_with_PowerShell clonado localmente |
| WiFi Marauder Scan | URL del viewer (default http://127.0.0.1:5000) | Hace polling de /api/scan.json desde wifi-marauder-viewer (M5StickC Marauder) |
| M5Stick Networks | URL del viewer (default http://127.0.0.1:5000) | Hace polling de /api/networks.json desde M5Stick Plus 2 viewer (Evil-M5Project) |
Nota: Las tools de System reportan el servidor donde corre el dashboard. En deploy remoto (Railway) muestran el contenedor Linux. En local muestran tu maquina. PS Security Audit solo funciona en Windows (PowerShell). Las WiFi tools requieren que su Flask app correspondiente este corriendo.
5. Pipelines automatizados
| Modo | Fases | Herramientas | Duracion |
|---|---|---|---|
| Fast | Recon + Scan | 4 | ~1 min |
| Deep | Recon + Scan + Web + OSINT | 14 | ~3 min |
| Nuclear | Recon + Scan + Web + Vuln + OSINT + Email | 25 | ~7 min |
Ejecutar
- Ir a Pipeline
- Seleccionar modo (Fast/Deep/Nuclear)
- Seleccionar target
- Clic en Start Pipeline
- Progreso en tiempo real: cada fase y herramienta se marca como running/done/error
- Resultados formateados por herramienta (no JSON bruto)
Las herramientas que no tienen sentido contra un dominio (hash, password, system) NO se ejecutan en el pipeline.
6. Proxy y anonimato
Activar TOR
- Instalar TOR Browser (descargar de torproject.org)
- Ir a Proxy en la barra lateral
- El dashboard detecta automáticamente si TOR está instalado (muestra ruta y tipo)
- Abrir TOR Browser
- Seleccionar TOR (SOCKS5), puerto 9150 (Browser) o 9050 (expert)
- Clic en Save
- Clic en Test TOR IP para verificar
La UI de Proxy muestra 4 estados:
- Instalado + corriendo: “TOR running on 127.0.0.1:9150 (installed at…)”
- Instalado + parado: “TOR installed at… but not running. Start TOR Browser.”
- No instalado: “TOR not detected. Install from torproject.org”
Activar SOCKS5 (VPN)
- Ir a Proxy
- Seleccionar SOCKS5
- Poner host y puerto del proxy VPN
- Save
Que se enruta por proxy
- Todas las herramientas OSINT, web y de email security usan el proxy
- System tools (netstat, tasklist) NO usan proxy (son locales)
- Port scanner y ping NO usan proxy (conexiones directas)
7. Notificaciones: Webhooks y Splunk
Webhooks
Para recibir notificaciones cuando scans/pipelines completan:
- Ir a Webhooks en la barra lateral
- Clic en Add Webhook
- Rellenar nombre, URL, tipo (Discord/Slack/generico)
- Seleccionar eventos:
scan_complete,pipeline_complete - Clic en Test para verificar
- Activar/Desactivar con el boton toggle
Splunk Integration
Para indexar automáticamente todos los resultados en Splunk:
- Ir a Splunk en la barra lateral
- Configurar:
- URL:
https://127.0.0.1:8089(REST API de Splunk) - Username: tu usuario de Splunk
- Password: tu password
- Index:
sec_dashboard(se crea automáticamente) - Verify SSL: No (para self-signed certs)
- URL:
- Clic en Save Settings
- Clic en Test Connection — debe decir “Connected!”
- Activar Enable Auto-Indexing
A partir de aqui, cada scan y pipeline que completa envia un evento JSON a Splunk automáticamente.
Configurar props.conf (JSON parsing automatico)
Para que Splunk extraiga campos del JSON automáticamente (sin spath en cada busqueda), crear C:\Program Files\Splunk\etc\apps\search\local\props.conf:
[powershell:audit]
KV_MODE = json
SHOULD_LINEMERGE = false
TRUNCATE = 0
MAX_EVENTS = 10000
[wifi:marauder]
KV_MODE = json
SHOULD_LINEMERGE = false
TRUNCATE = 0
[m5stick:networks]
KV_MODE = json
SHOULD_LINEMERGE = false
TRUNCATE = 0Reiniciar Splunk despues de crear el archivo:
& "C:\Program Files\Splunk\bin\splunk.exe" restartSin este props.conf, los eventos se ven como JSON crudo sin campos extraidos. Con el, campos como
module,data.Hostname,data.OSNamese extraen automáticamente.
Ademas, las herramientas con JSON rico (PS Security Audit, WiFi Marauder, M5Stick Networks) envian sus resultados completos a Splunk con sourcetypes personalizados:
| Herramienta | Sourcetype | Patron de export |
|---|---|---|
| PS Security Audit | powershell:audit | 1 evento por modulo (01_Sistema, 02_Usuarios, etc.) para busqueda granular |
| WiFi Marauder Scan | wifi:marauder | 1 evento con todas las redes detectadas |
| M5Stick Networks | m5stick:networks | 1 evento con redes + clientes |
Usar Export All History para sincronizar el historial existente.
SPL utiles
-- Generales
search index=sec_dashboard event="sec_dashboard_scan"
search index=sec_dashboard status="failed"
search index=sec_dashboard | stats count by tool
search index=sec_dashboard | timechart count
search index=sec_dashboard | stats avg(elapsed_seconds) as avg_time by tool
-- PS Security Audit (1 evento por modulo)
search index=sec_dashboard sourcetype=powershell:audit
search index=sec_dashboard sourcetype=powershell:audit module=02_Usuarios
search index=sec_dashboard sourcetype=powershell:audit | table timestamp module scan_id
-- WiFi Marauder (redes M5StickC)
search index=sec_dashboard sourcetype=wifi:marauder
search index=sec_dashboard sourcetype=wifi:marauder | table timestamp data.total_networks data.summary.avg_rssi
-- M5Stick Plus 2 (redes + clientes)
search index=sec_dashboard sourcetype=m5stick:networks
search index=sec_dashboard sourcetype=m5stick:networks | table timestamp data.total_networks data.total_clients
-- Todas las herramientas de hardware
search index=sec_dashboard (sourcetype=powershell:audit OR sourcetype=wifi:marauder OR sourcetype=m5stick:networks)
8. Exportar reportes
Export individual
Cada scan y pipeline tiene botones JSON y PDF en:
- La tabla de History
- La vista de detalle
Export masivo
- Boton Export All (JSON) en History
- Descarga todos los scans y pipelines en un archivo JSON
- Formato compatible con Splunk/ELK/SIEM (campo
events[])
PDF incluye
- Metadata (tool, target, status, fechas)
- Resultados formateados (tablas, grades, puertos)
- Apendice con JSON raw
9. Cancelar scans
Cancelar un scan
- En History: los scans en estado “running” muestran boton Cancel
- En la vista de detalle del pipeline: boton Cancel
Cancelar un pipeline
- En Pipeline: el panel de progreso tiene boton Cancel
- En History (tab Pipelines): boton Cancel en pipelines running
Los items cancelados se marcan como cancelled y mantienen el registro para auditoria.
10. Historial y busqueda
Tabs funcionales
La pagina de History tiene dos tabs:
- Scans: lista de todos los scans individuales
- Pipelines: lista de todos los pipelines ejecutados
Busqueda
Barra de busqueda que filtra en tiempo real por:
- Nombre de herramienta
- Nombre de target
- Host de target
- Estado (completed, failed, running, cancelled)
Paginacion
- Scans paginados de 50 en 50
- Botones Prev y Next para navegar
Resultados formateados
- Al clicar View en un pipeline, se ve cada herramienta formateada individualmente
- Port tables, header grades, CVE cards, etc. — no JSON bruto
11. Borrar historial
Borrar un scan/pipeline individual
- Boton Del en cada fila (con confirmación)
Borrar un target
- Boton de papelera en Targets
- Borra el target y todos sus scans/pipelines asociados
Borrar todo
- API:
DELETE /api/reset?confirm=true(requiere confirmación)
12. Herramientas de hardware y audit
Estas 3 herramientas estan en categoria System pero tienen requisitos especiales.
PS Security Audit (Windows only)
Audit enterprise completo via PowerShell con 10 modulos: sistema, usuarios, procesos, red, logs, ficheros, registro, servicios, LOLBAS, drivers.
Setup:
git clone https://github.com/HOSTNAME/Auditing_with_PowerShell.git "$HOME\Auditing_with_PowerShell"Uso: System ←’ PS Security Audit ←’ click (sin input). El dashboard encuentra el script automáticamente.
Requisitos: Windows + PowerShell 5.1+. Admin recomendado para modulos de logs, registry y services.
Resultado: JSON estructurado por modulo. Se envia a Splunk como 1 evento por modulo (sourcetype powershell:audit).
Mas detalles: Integracion Auditing with PowerShell
WiFi Marauder Scan (M5StickC + Marauder)
Polling de WiFi scans desde wifi-marauder-viewer Flask app.
Setup:
git clone https://github.com/HOSTNAME/wifi-marauder-viewer.git
cd wifi-marauder-viewer
pip install -r requirements.txt
python app.py
# Abrir http://127.0.0.1:5000Uso: System ←’ WiFi Marauder Scan ←’ introducir URL del viewer (default http://127.0.0.1:5000) ←’ Run.
Requisitos: M5StickC con firmware Marauder + PuTTY en modo serial guardando log en logs/wifi_scan_marauder.log.
Resultado: JSON con redes detectadas (BSSID, ESSID, RSSI, canal). Se envia a Splunk como 1 evento (sourcetype wifi:marauder).
M5Stick Networks (M5Stick Plus 2 + Evil-M5Project)
Polling de redes + clientes desde M5Stick Plus 2 viewer.
Setup:
git clone https://github.com/HOSTNAME/Visualizacion_extendida_M5StickPlus2.git
cd Visualizacion_extendida_M5StickPlus2
pip install -r requirements.txt
# Terminal 1: capturar serial
python src/serial_logger.py -b 115200 -o wifi_scan_evil.log
# Terminal 2: dashboard web
python src/app.py
# Abrir http://127.0.0.1:5000Uso: System ←’ M5Stick Networks ←’ introducir URL del viewer (default http://127.0.0.1:5000) ←’ Run.
Requisitos: M5Stick Plus 2 con firmware Evil-M5Project + cable USB para serial.
Resultado: JSON con redes + clientes (SSID, BSSID, n_clients, canal). Se envia a Splunk como 1 evento (sourcetype m5stick:networks).
Mas detalles: Integracion Hardware y Splunk Export
13. Despliegue
Railway + Cloudflare Access (produccion)
- Deploy automático desde GitHub en cada push a
master - Cloudflare Access con GitHub OAuth
- URL:
sec.sammideblas.com
Local
cd ~/sec-dashboard
python -m uvicorn backend.main:app --host 127.0.0.1 --port 8444Docker
docker build -t sec-dashboard .
docker run -p 8444:8444 sec-dashboardCloudflare Quick Tunnel
cloudflared tunnel --url http://localhost:844414. Solucion de problemas
”Address already in use”
# Windows
netstat -ano | findstr :8444
taskkill /F /PID <PID>TOR no se detecta
- El dashboard busca tor.exe en: Desktop/Tor Browser/Browser/TorBrowser/Tor/tor.exe
- Verificar que la instalación está en una ruta estandar
- Si está instalado pero no corre: abrir TOR Browser manualmente
- Puerto correcto: 9150 (Browser) o 9050 (expert bundle)
Special tools dan HTTP 500
- Si la DB fue creada con schema antiguo (target_id NOT NULL), hay una migration automática al arrancar
- Si persiste: borrar
data/sec.dby reiniciar (se recrea con schema nuevo)
System tools muestran Linux
- En deploy remoto (Railway), las system tools reportan el contenedor Linux, no tu maquina
- Hay un warning amarillo en la UI que lo indica
- Para escanear tu maquina: ejecutar el dashboard en local
WebSocket se desconecta
- Se reconecta en 3 segundos automáticamente
- Si persiste, recargar pagina
PS Security Audit: “Invoke-SecurityAudit.ps1 not found”
- Verificar que el repo está clonado:
Test-Path "$HOME\Auditing_with_PowerShell\Invoke-SecurityAudit.ps1" - Si está en otra ruta, setear env var:
$env:AUDIT_PS_PATH = "D:\ruta\custom\Auditing_with_PowerShell"
WiFi tools: “Cannot connect to 127.0.0.1:5000”
- La Flask app del dispositivo no está corriendo
- Ver wifi-marauder-viewer:
cd wifi-marauder-viewer; python app.py - Ver M5Stick Plus 2:
cd Visualizacion_extendida_M5StickPlus2; python src/app.py - Si ambas corren en puerto 5000, una debe usar otro puerto:
python app.py --port 5001
Puerto conflicto (5000)
Ambas Flask apps usan puerto 5000 por defecto. Si se ejecutan simultaneamente, una debe usar --port 5001 y en el dashboard introducir esa URL.
Timeout en herramientas
Normal en targets lentos. Timeouts:
- Network: 15-120s
- Web: 15-180s
- System: 10-15s (PS Security Audit: 600s = 10 min)
- WiFi tools: 30s
- OSINT: 10-20s
- Email Security: 10-15s
Requisitos
- Python 3.11+
- pip install: fastapi, uvicorn, aiohttp, aiohttp-socks, aiosqlite, dnspython, python-whois, fpdf2
- Sin binarios externos
- ~50MB disco
- Internet para OSINT, CVE, Whois, HIBP, Shodan, crt.sh
API REST
# Health
curl http://localhost:8444/api/status
# Ejecutar tool
curl -X POST http://localhost:8444/api/scans \
-H "Content-Type: application/json" \
-d '{"target_id": 1, "tool": "port_scanner", "params": {}}'
# Special tool (sin target)
curl -X POST http://localhost:8444/api/scans \
-H "Content-Type: application/json" \
-d '{"target_id": 0, "tool": "hash_checker", "params": {}, "direct_input": "d41d8cd98f00b204e9800998ecf8427e"}'
# Cancelar scan
curl -X POST http://localhost:8444/api/scans/1/cancel
# Configurar Splunk
curl -X POST http://localhost:8444/api/splunk \
-H "Content-Type: application/json" \
-d '{"enabled": true, "url": "https://127.0.0.1:8089", "username": "admin", "password": "***", "index": "sec_dashboard"}'
# Exportar todo
curl http://localhost:8444/api/export/all/json -o backup.jsonsec-dashboard v1.1 — 35 herramientas, 6 categorias, proxy TOR, webhooks, Splunk con sourcetypes personalizados Ultima actualización: 2026-06-26