Skip to content

Commit a042df9

Browse files
committed
Add audit workflow and passive mode
1 parent b2e8fe9 commit a042df9

11 files changed

Lines changed: 303 additions & 51 deletions

File tree

README.es.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ Este proyecto demuestra habilidades prácticas en:
4242
- Diseño de tooling de seguridad con dashboard local, APIs autenticadas, logs, exportación y módulos separados
4343
- Comunicación responsable en ciberseguridad con alcance legal, limitaciones documentadas, CI, guías de contribución y documentación bilingüe
4444

45-
Para demos, mantén `DASHBOARD_REDACT_CREDENTIALS` activado para que screenshots y respuestas API muestren datos redactados en vez de valores sensibles capturados. Las exportaciones CSV/reporte quedan desactivadas mientras este modo esta activo.
45+
Para demos, mantén `DASHBOARD_REDACT_CREDENTIALS` activado para que screenshots, respuestas API y reportes eviten exponer datos sensibles capturados. La exportación CSV cruda queda desactivada mientras este modo está activo.
4646

4747
### Lo que Demuestra Este Proyecto
4848

@@ -77,7 +77,7 @@ PhantomKit asume un laboratorio de corto alcance donde el operador controla el d
7777
| Activo | Riesgo | Mitigación |
7878
|---|---|---|
7979
| Acceso al dashboard | Cliente local no autorizado controla módulos | Password separado, bloqueo de defaults, lockout, cookie HttpOnly |
80-
| Entradas capturadas | Valores sensibles expuestos en demos/logs | Modo redactado, exports bloqueados en modo demo, redacción serial |
80+
| Entradas capturadas | Valores sensibles expuestos en demos/logs | Modo redactado, reportes compatibles con redacción, CSV crudo bloqueado en modo demo, redacción serial |
8181
| Artefactos almacenados | Datos LittleFS legibles con acceso físico | Emergency wipe, wipe por GPIO, limitación plaintext documentada |
8282
| Redes cercanas | Disrupción accidental fuera de alcance | Documentos legales, alcance de uso, start/stop por módulo, checklist |
8383
| Integridad de releases | Firmware local no revisado distribuido | Assets generados por GitHub Actions y checksums SHA-256 |
@@ -90,8 +90,11 @@ Los controles están documentados en [Seguridad por Diseño](docs/safety.es.md).
9090

9191
### Dashboard Web
9292
- Control total desde cualquier dispositivo con navegador
93+
- Wizard de auditoría con perfiles pasivo, portal autorizado y laboratorio completo
94+
- Modo pasivo que bloquea módulos activos y mantiene escaneo/sniffer/reportes disponibles
9395
- Captura de credenciales en tiempo real
9496
- Logs de eventos en vivo con timestamp
97+
- Reporte de sesión con alcance, contadores, hallazgos y log operativo
9598
- SSID configurable sin reprogramar
9699
- Operación autónoma sin internet ni servidor externo
97100

@@ -101,7 +104,7 @@ Los controles están documentados en [Seguridad por Diseño](docs/safety.es.md).
101104
|--------|-------------|---------|
102105
| Evil Portal | Portal cautivo con 8 templates clonados | DNS Spoofing + Captive Portal |
103106
| Deauth Attack | Desconecta dispositivos de una red objetivo | IEEE 802.11 Deauth Frames |
104-
| Beacon Flood | Satura listas de redes con 50+ SSIDs falsos | Fake Beacon Frames |
107+
| Beacon Flood | Satura listas de redes con SSIDs falsos rotativos | Fake Beacon Frames |
105108
| Probe Sniffer | Detecta redes buscadas por dispositivos cercanos | Passive Probe Capture |
106109
| Evil Twin | Clona una red Wi-Fi existente | SSID/BSSID Spoofing |
107110
| Channel Hopping | Rotación automática en canales 1-13 | Multi-channel Scanning |
@@ -300,7 +303,7 @@ lib_deps =
300303
|---------|---------|
301304
| v1.0 | Evil Portal con 8 templates (Facebook, Instagram, Microsoft, X, Google, WiFi Login, Netflix, WhatsApp) |
302305
| v1.0 | Deauth Attack — frames de deautenticacion IEEE 802.11 |
303-
| v1.0 | Beacon Flood — mas de 50 SSIDs falsos |
306+
| v1.0 | Beacon Flood — SSIDs falsos rotativos |
304307
| v1.0 | Probe Request Sniffer — captura pasiva |
305308
| v1.0 | Evil Twin — clonacion de SSID/BSSID |
306309
| v1.0 | Auto-Portal — escaneo del entorno y recomendacion de template |

README.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ This project demonstrates practical skills across:
4242
- Security tooling design through a local dashboard, authenticated APIs, logging, export flows, and modular attack components
4343
- Responsible security communication with legal scope, documented limitations, CI, contribution guidelines, and bilingual documentation
4444

45-
For demos, keep `DASHBOARD_REDACT_CREDENTIALS` enabled so screenshots and API responses show redacted sample values instead of sensitive captured data. CSV/report exports are disabled while this mode is active.
45+
For demos, keep `DASHBOARD_REDACT_CREDENTIALS` enabled so screenshots, API responses, and reports avoid exposing sensitive captured data. CSV raw export stays disabled while this mode is active.
4646

4747
### What This Project Shows
4848

@@ -77,7 +77,7 @@ PhantomKit assumes a short-range lab environment where the operator controls the
7777
| Asset | Risk | Mitigation |
7878
|---|---|---|
7979
| Dashboard access | Unauthorized local client controls modules | Separate dashboard password, default-credential guard, lockout, HttpOnly session cookie |
80-
| Captured inputs | Sensitive values exposed in demos/logs | Redacted dashboard/API mode, blocked exports while redacted, serial redaction |
80+
| Captured inputs | Sensitive values exposed in demos/logs | Redacted dashboard/API mode, redaction-aware reports, blocked raw CSV while redacted, serial redaction |
8181
| Stored artifacts | LittleFS data readable with physical access | Emergency wipe, GPIO wipe, documented plaintext limitation |
8282
| Nearby networks | Accidental disruption outside scope | Legal docs, usage scope, module start/stop boundaries, operator checklist |
8383
| Release integrity | Unreviewed local firmware distributed | GitHub Actions release assets plus SHA-256 checksums |
@@ -90,8 +90,11 @@ Safety controls are documented in [Safety by Design](docs/safety.md).
9090

9191
### Web Dashboard
9292
- Full control from any device with a browser
93+
- Audit wizard with passive, portal-only, and full-lab profiles
94+
- Passive mode that blocks active modules and keeps scan/sniffer/report workflows available
9395
- Real-time credential capture table
9496
- Live event log with timestamps
97+
- Session report export with scope, counters, findings, and operational log
9598
- Configurable SSID without reflashing
9699
- Fully autonomous — no internet or external server needed
97100

@@ -101,7 +104,7 @@ Safety controls are documented in [Safety by Design](docs/safety.md).
101104
|--------|-------------|-----------|
102105
| Evil Portal | Captive portal with 8 cloned templates | DNS Spoofing + Captive Portal |
103106
| Deauth Attack | Disconnects devices from a target network | IEEE 802.11 Deauth Frames |
104-
| Beacon Flood | Saturates scan lists with 50+ fake SSIDs | Fake Beacon Frames |
107+
| Beacon Flood | Saturates scan lists with rotating fake SSIDs | Fake Beacon Frames |
105108
| Probe Sniffer | Detects networks sought by nearby devices | Passive Probe Capture |
106109
| Evil Twin | Clones an existing Wi-Fi network | SSID/BSSID Spoofing |
107110
| Channel Hopping | Automatic rotation across channels 1–13 | Multi-channel Scanning |
@@ -300,7 +303,7 @@ lib_deps =
300303
|---------|--------|
301304
| v1.0 | Evil Portal with 8 templates (Facebook, Instagram, Microsoft, X, Google, WiFi Login, Netflix, WhatsApp) |
302305
| v1.0 | Deauth Attack — IEEE 802.11 deauthentication frames |
303-
| v1.0 | Beacon Flood — 50+ fake SSIDs |
306+
| v1.0 | Beacon Flood — rotating fake SSIDs |
304307
| v1.0 | Probe Request Sniffer — passive capture |
305308
| v1.0 | Evil Twin — SSID/BSSID cloning |
306309
| v1.0 | Auto-Portal — environment scan and template recommendation |

docs/architecture.es.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ ESP8266 SoftAP: PhantomKit
6262
- Acciones para iniciar/detener módulos
6363
- Polling de estado para contadores del dashboard
6464
- Listado de credenciales con campos redactados cuando `DASHBOARD_REDACT_CREDENTIALS` está activo
65-
- Bloqueo de exportación CSV/reporte mientras el modo seguro de demo está activo
65+
- Bloqueo de exportación CSV mientras el modo seguro de demo está activo
66+
- Reporte de sesión compatible con redacción, con alcance, contadores, hallazgos y logs
6667
- Exportación PMKID en formato hashcat 22000
6768
- Endpoint de emergency wipe para limpieza de laboratorio
6869

@@ -112,7 +113,7 @@ El ESP8266 tiene RAM limitada y un solo radio Wi-Fi. PhantomKit mantiene una imp
112113
- La autenticación del dashboard es independiente de la contraseña del AP.
113114
- Las credenciales por defecto están marcadas como `change-me-*`.
114115
- `DASHBOARD_REDACT_CREDENTIALS` redacta campos capturados en API/dashboard.
115-
- Las exportaciones CSV/reporte se desactivan mientras la redacción está activa.
116+
- La exportación CSV se desactiva mientras la redacción está activa; los reportes de sesión siguen disponibles omitiendo campos crudos.
116117
- Emergency wipe elimina artefactos sensibles de LittleFS y reinicia el dispositivo.
117118
- El README, la política SECURITY y los documentos legales incluyen lenguaje de uso responsable.
118119

docs/architecture.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ ESP8266 SoftAP: PhantomKit
6262
- Module start/stop actions
6363
- Status polling for dashboard counters
6464
- Credential listing with redacted fields when `DASHBOARD_REDACT_CREDENTIALS` is enabled
65-
- CSV/report export blocking while demo-safe redaction is active
65+
- CSV export blocking while demo-safe redaction is active
66+
- Redaction-aware session report export with scope, counters, findings, and logs
6667
- PMKID export in hashcat 22000 format
6768
- Emergency wipe endpoint for lab cleanup
6869

@@ -112,7 +113,7 @@ The ESP8266 has limited RAM and a single Wi-Fi radio. PhantomKit keeps the imple
112113
- Dashboard authentication is separate from the AP password.
113114
- Default credentials are intentionally marked as `change-me-*`.
114115
- `DASHBOARD_REDACT_CREDENTIALS` redacts captured fields in API/dashboard output.
115-
- CSV/report exports are disabled while redaction is enabled.
116+
- CSV export is disabled while redaction is enabled; session reports remain available with raw fields omitted.
116117
- Emergency wipe removes sensitive LittleFS artifacts and restarts the device.
117118
- Legal and responsible-use language is present in the README, SECURITY policy, and legal docs.
118119

docs/safety.es.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ PhantomKit incluye funciones de simulación Wi-Fi que pueden interrumpir redes o
2020
| Ruta separada para dashboard | El dashboard usa `/dashboard/login`; el portal cautivo usa `/login` | Evita mezclar autenticación del auditor con entrada del portal |
2121
| Bloqueo de intentos local | `LOGIN_MAX_ATTEMPTS` + `LOGIN_LOCKOUT_MS` | Reduce riesgo de brute force local |
2222
| Cookie de sesión endurecida | Cookie HttpOnly con `SameSite=Strict` y token regenerado tras login | Reduce exposición accidental de sesión |
23+
| Modo pasivo de auditoría | El wizard habilita un perfil que bloquea deauth, beacon flood, evil twin, auto-attack, inicio de portal y karma | Permite observación y reportes sin disrupción RF activa |
2324
| Modo demo redactado | `DASHBOARD_REDACT_CREDENTIALS` oculta valores crudos y desactiva exports | Hace seguras capturas de pantalla y demos públicas |
25+
| Reportes compatibles con redacción | Los reportes incluyen alcance, contadores, hallazgos y logs mientras omiten campos crudos si la redacción está activa | Permite evidencia profesional sin filtrar secretos |
2426
| Redacción en Serial | `SERIAL_REDACT_CREDENTIALS` oculta campos crudos en logs seriales | Evita filtraciones por monitor serial |
2527
| Emergency wipe autenticado | `/api/panic` requiere sesión del dashboard | Evita borrado no autenticado por cualquier cliente del AP |
2628
| Buffers acotados | Defaults más pequeños para probes, PMKIDs, targets y credenciales | Reduce presión de memoria y retención innecesaria |
@@ -32,10 +34,11 @@ Antes de cualquier demo o auditoría:
3234

3335
1. Confirmar autorización escrita y alcance.
3436
2. Cambiar `AP_PASSWORD` y `DASHBOARD_PASSWORD`.
35-
3. Mantener `DASHBOARD_REDACT_CREDENTIALS=1` para screenshots, portafolio y demos públicas.
36-
4. Usar credenciales falsas o de entrenamiento cuando sea posible.
37-
5. Detener módulos activos al terminar el ejercicio.
38-
6. Ejecutar emergency wipe o wipe por GPIO antes de guardar, compartir o reutilizar el dispositivo.
37+
3. Usar el perfil pasivo salvo que el alcance escrito autorice módulos activos.
38+
4. Mantener `DASHBOARD_REDACT_CREDENTIALS=1` para screenshots, portafolio y demos públicas.
39+
5. Usar credenciales falsas o de entrenamiento cuando sea posible.
40+
6. Detener módulos activos al terminar el ejercicio.
41+
7. Ejecutar emergency wipe o wipe por GPIO antes de guardar, compartir o reutilizar el dispositivo.
3942

4043
## Manejo de Datos
4144

docs/safety.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ PhantomKit includes Wi-Fi security simulation features that can disrupt networks
2020
| Separate dashboard route | Dashboard auth uses `/dashboard/login`; captive portal submissions use `/login` | Avoids confusing operator auth with portal input |
2121
| Local login lockout | `LOGIN_MAX_ATTEMPTS` + `LOGIN_LOCKOUT_MS` | Reduces local brute-force risk |
2222
| Session cookie hardening | HttpOnly cookie with `SameSite=Strict` and regenerated token after login | Reduces accidental session exposure |
23+
| Passive audit mode | Audit wizard enables a profile that blocks deauth, beacon flood, evil twin, auto-attack, portal start, and karma | Allows observation and reporting without active RF disruption |
2324
| Redacted demo mode | `DASHBOARD_REDACT_CREDENTIALS` blocks raw dashboard/API values and disables exports | Keeps portfolio screenshots and demos safe |
25+
| Redaction-aware reports | Session reports include scope, counters, findings, and logs while omitting raw captured fields when redaction is enabled | Supports professional evidence without leaking secrets |
2426
| Serial redaction | `SERIAL_REDACT_CREDENTIALS` hides raw captured fields in serial logs | Prevents raw secrets leaking through serial monitors |
2527
| Authenticated emergency wipe | `/api/panic` requires dashboard session | Prevents unauthenticated data deletion by any AP client |
2628
| Bounded capture buffers | Smaller defaults for probes, PMKIDs, targets, and credentials | Reduces memory pressure and limits unnecessary retention |
@@ -32,10 +34,11 @@ Before any demo or audit:
3234

3335
1. Confirm written authorization and scope.
3436
2. Change `AP_PASSWORD` and `DASHBOARD_PASSWORD`.
35-
3. Keep `DASHBOARD_REDACT_CREDENTIALS=1` for screenshots, portfolio material, and public demos.
36-
4. Use fake or training credentials whenever possible.
37-
5. Stop active modules when the exercise ends.
38-
6. Run emergency wipe or hardware wipe before storing, sharing, or reusing the device.
37+
3. Use the passive audit profile unless the written scope explicitly allows active modules.
38+
4. Keep `DASHBOARD_REDACT_CREDENTIALS=1` for screenshots, portfolio material, and public demos.
39+
5. Use fake or training credentials whenever possible.
40+
6. Stop active modules when the exercise ends.
41+
7. Run emergency wipe or hardware wipe before storing, sharing, or reusing the device.
3942

4043
## Data Handling
4144

docs/setup.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ For portfolio demos, keep credential redaction enabled:
9898
#define DASHBOARD_REDACT_CREDENTIALS 1
9999
```
100100
101-
When enabled, dashboard/API credential fields are redacted and CSV/report exports are blocked.
101+
When enabled, dashboard/API credential fields are redacted and raw CSV export is blocked. Session reports remain available with sensitive fields omitted.
102102
103103
## Included Modules
104104

docs/usage.es.md

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,26 @@ Muestra en tiempo real todas las credenciales capturadas:
3232

3333
Muestra todos los eventos del sistema con timestamp.
3434

35+
## Wizard de Auditoría
36+
37+
La pestaña **Auditoría** permite fijar el alcance antes de iniciar módulos:
38+
39+
1. Selecciona un perfil:
40+
- `passive`: bloquea deauth, beacon flood, evil twin, auto-attack, inicio de portal y karma.
41+
- `portal`: prepara un ejercicio de portal cautivo autorizado sin activar deauth.
42+
- `full`: habilita todos los módulos para laboratorio aislado.
43+
2. Ingresa SSID/BSSID y canal autorizados cuando los conozcas.
44+
3. Inicia la auditoría y revisa el log operativo.
45+
4. Exporta el reporte de sesión antes de borrar artefactos.
46+
47+
El modo pasivo mantiene disponibles escaneos, probe sniffer, captura PMKID, reportes, logs y limpieza.
48+
49+
## Reportes
50+
51+
El reporte integrado incluye alcance actual, estado de modo pasivo, contadores, observaciones, estado de datos capturados y log operativo. Cuando `DASHBOARD_REDACT_CREDENTIALS` está activado, el reporte conserva conteos y metadatos de evidencia, pero no incluye campos capturados crudos.
52+
53+
La exportación CSV sigue bloqueada mientras la redacción está activa. Desactiva redacción solo dentro de un laboratorio autorizado cuando se requieren valores crudos.
54+
3555
## Módulos de Ataque
3656

3757
### 1. Portal (Captive Portal)
@@ -77,7 +97,7 @@ Muestra todos los eventos del sistema con timestamp.
7797
4. Clic en **Detener** para limpiar
7898

7999
**Características:**
80-
- 50+ SSIDs predefinidos (algunos divertidos)
100+
- SSIDs predefinidos rotativos con límite reducido para cuidar RAM
81101
- Generación automática de BSSIDs
82102
- Contador de beacons enviados en tiempo real
83103

@@ -132,7 +152,7 @@ Muestra todos los eventos del sistema con timestamp.
132152
3. **Activar Portal:** Activa el captive portal
133153
4. **Esperar:** Las víctimas se conectan y ven el portal
134154
5. **Capturar:** Las credenciales aparecen en el dashboard
135-
6. **Documentar:** Copia las credenciales para el reporte
155+
6. **Documentar:** Exporta el reporte de sesión y evita copiar valores crudos fuera del laboratorio
136156

137157
### Auditoría Avanzada
138158
1. **Reconocimiento:** Usa Probe Sniffer para ver redes buscadas

docs/usage.md

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,29 @@ http://192.168.4.1/dashboard
1313
The dashboard provides:
1414

1515
- Current AP SSID
16+
- Audit wizard for passive, portal-only, and full-lab profiles
17+
- Passive mode guardrails for non-disruptive workflows
1618
- Portal template selection
1719
- Portal start/stop control
1820
- Module status counters
1921
- Redacted captured-field table when demo mode is enabled
2022
- Live event log
21-
- Export controls when raw export mode is allowed
23+
- CSV export when raw export mode is allowed
24+
- Session report export with redaction-aware evidence
25+
26+
## Audit Wizard
27+
28+
Use the **Audit** tab to define scope before starting modules:
29+
30+
1. Select a profile:
31+
- `passive`: blocks deauth, beacon flood, evil twin, auto-attack, portal start, and karma.
32+
- `portal`: prepares an authorized captive-portal exercise without enabling deauth.
33+
- `full`: enables all modules for isolated lab use.
34+
2. Enter the authorized SSID/BSSID and channel when known.
35+
3. Start the audit and keep the live log visible.
36+
4. Export the session report before wiping artifacts.
37+
38+
Passive mode still allows scans, probe sniffing, PMKID capture, reports, logs, and cleanup actions.
2239

2340
## Captive Portal
2441

@@ -106,6 +123,8 @@ For professional awareness exercises, document:
106123
- Remediation guidance
107124
- Cleanup actions performed
108125

126+
The built-in report includes current scope, passive-mode state, counters, observations, captured-data status, and the operational log. When `DASHBOARD_REDACT_CREDENTIALS` is enabled, the report keeps counts and evidence metadata but does not include raw captured fields.
127+
109128
## Troubleshooting
110129

111130
### No networks appear during scan
@@ -122,4 +141,4 @@ For professional awareness exercises, document:
122141

123142
### Export returns 403
124143

125-
CSV/report export is intentionally blocked while `DASHBOARD_REDACT_CREDENTIALS` is enabled. Disable redaction only inside an authorized lab when raw values are required.
144+
CSV export is intentionally blocked while `DASHBOARD_REDACT_CREDENTIALS` is enabled. The text report remains available with sensitive values redacted. Disable redaction only inside an authorized lab when raw values are required.

0 commit comments

Comments
 (0)