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

  1. Arrancar y parar
  2. Anadir un target
  3. Ejecutar una herramienta
  4. Herramientas especiales
  5. Pipelines automatizados
  6. Proxy y anonimato
  7. Notificaciones: Webhooks y Splunk
  8. Exportar reportes
  9. Cancelar scans
  10. Historial y busqueda
  11. Borrar historial
  12. Herramientas de hardware y audit
  13. Despliegue
  14. Solución de problemas

1. Arrancar y parar

Windows

cd ~/sec-dashboard
python -m uvicorn backend.main:app --host 127.0.0.1 --port 8444

Abrir: http://localhost:8444

Parar

Ctrl+C o kill $(lsof -ti:8444)


2. Anadir un target

  1. Ir a Targets en la barra lateral
  2. Clic en Add Target
  3. Rellenar Name (etiqueta) y Host (dominio o IP)
  4. Clic en Add
  5. 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

  1. Ir a Tools
  2. Clic en la herramienta
  3. Seleccionar target del popup (o usar el target ya seleccionado)
  4. 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:

HerramientaQue pideComo funciona
Hash LookupHash MD5/SHA-1/SHA-256Modal pide el hash, comprueba MalwareBazaar/VirusTotal
Password AuditPasswordModal pide password, analiza fortaleza + breach HIBP
CVE SearchKeyword o CVE IDModal pide keyword, busca en NIST NVD
Net ConnectionsSin inputSe ejecuta directamente, reporta la maquina local
Process MonitorSin inputSe ejecuta directamente
System InfoSin inputSe ejecuta directamente
PS Security AuditSin input (Windows only)Ejecuta Invoke-SecurityAudit.ps1 (10 modulos). Requiere Auditing_with_PowerShell clonado localmente
WiFi Marauder ScanURL del viewer (default http://127.0.0.1:5000)Hace polling de /api/scan.json desde wifi-marauder-viewer (M5StickC Marauder)
M5Stick NetworksURL 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

ModoFasesHerramientasDuracion
FastRecon + Scan4~1 min
DeepRecon + Scan + Web + OSINT14~3 min
NuclearRecon + Scan + Web + Vuln + OSINT + Email25~7 min

Ejecutar

  1. Ir a Pipeline
  2. Seleccionar modo (Fast/Deep/Nuclear)
  3. Seleccionar target
  4. Clic en Start Pipeline
  5. Progreso en tiempo real: cada fase y herramienta se marca como running/done/error
  6. 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

  1. Instalar TOR Browser (descargar de torproject.org)
  2. Ir a Proxy en la barra lateral
  3. El dashboard detecta automáticamente si TOR está instalado (muestra ruta y tipo)
  4. Abrir TOR Browser
  5. Seleccionar TOR (SOCKS5), puerto 9150 (Browser) o 9050 (expert)
  6. Clic en Save
  7. 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)

  1. Ir a Proxy
  2. Seleccionar SOCKS5
  3. Poner host y puerto del proxy VPN
  4. 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:

  1. Ir a Webhooks en la barra lateral
  2. Clic en Add Webhook
  3. Rellenar nombre, URL, tipo (Discord/Slack/generico)
  4. Seleccionar eventos: scan_complete, pipeline_complete
  5. Clic en Test para verificar
  6. Activar/Desactivar con el boton toggle

Splunk Integration

Para indexar automáticamente todos los resultados en Splunk:

  1. Ir a Splunk en la barra lateral
  2. 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)
  3. Clic en Save Settings
  4. Clic en Test Connection — debe decir “Connected!”
  5. 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 = 0

Reiniciar Splunk despues de crear el archivo:

& "C:\Program Files\Splunk\bin\splunk.exe" restart

Sin este props.conf, los eventos se ven como JSON crudo sin campos extraidos. Con el, campos como module, data.Hostname, data.OSName se 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:

HerramientaSourcetypePatron de export
PS Security Auditpowershell:audit1 evento por modulo (01_Sistema, 02_Usuarios, etc.) para busqueda granular
WiFi Marauder Scanwifi:marauder1 evento con todas las redes detectadas
M5Stick Networksm5stick:networks1 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:5000

Uso: 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:5000

Uso: 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 8444

Docker

docker build -t sec-dashboard .
docker run -p 8444:8444 sec-dashboard

Cloudflare Quick Tunnel

cloudflared tunnel --url http://localhost:8444

14. 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.db y 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.json

sec-dashboard v1.1 — 35 herramientas, 6 categorias, proxy TOR, webhooks, Splunk con sourcetypes personalizados Ultima actualización: 2026-06-26