sec-dashboard - Integracion Auditing_with_PowerShell
Integracion del script Invoke-SecurityAudit.ps1 (repo Auditing_with_PowerShell) como herramienta adicional en sec-dashboard.
Restricción: Solo funciona en Windows (PowerShell 5.1+). El repo debe estar clonado localmente.
Estado de la integracion
La integración ya estaba implementada en el código de sec-dashboard. Solo faltaba clonar el repo localmente.
| Componente | Estado | Ubicacion |
|---|---|---|
| Registro de herramienta | Implementado | backend/config.py:252 (ps_security_audit) |
| Mapeo handler | Implementado | backend/scanner.py:65 |
| Modulo wrapper | Implementado | backend/tools/audit.py (170 lineas) |
| Frontend | Automatico | Se renderiza via /api/tools (dinamico) |
| Repo clonado | Hecho (2026-06-26) | C:\Users\you\Auditing_with_PowerShell |
Env var AUDIT_PS_PATH | No necesaria | El wrapper encuentra el script automaticamente |
Como funciona
Flujo de ejecucion
- Usuario hace clic en “PS Security Audit” en la categoria System del dashboard
- Frontend envia
POST /api/tools/ps_security_audit/run(no requiere target) scanner.pydetecta que es una herramienta de sistema y llama al handler sin targetaudit.py:ps_security_audit()localiza el script en disco- Ejecuta
powershell -NoProfile -NonInteractive -ExecutionPolicy Bypass -File Invoke-SecurityAudit.ps1 - El script genera carpeta
Auditoria_<timestamp>/con 10 subcarpetas de JSON/CSV/TXT - El wrapper lee los JSON, los estructura y devuelve un resumen al dashboard
- Resultado se muestra en la UI con WebSocket en tiempo real
Deteccion del script (audit.py:_find_script())
El wrapper busca Invoke-SecurityAudit.ps1 en este orden:
- Env var
AUDIT_PS_PATH(puede apuntar al archivo o al directorio del repo) ../Auditing_with_PowerShell/relativo a sec-dashboard../../Auditing_with_PowerShell/(dos niveles arriba)~/Auditing_with_PowerShell/← ruta usada actualmente~/Desktop/Auditing_with_PowerShell/
No hizo falta setear
AUDIT_PS_PATHporque el repo está enC:\Users\you\Auditing_with_PowerShell, que coincide con la ruta 4.
Configuracion de la herramienta
| Parametro | Valor |
|---|---|
| ID herramienta | ps_security_audit |
| Nombre UI | PS Security Audit |
| Categoria | System |
| Icono | PS |
| Timeout | 600s (10 min) |
| Tipo input | none (no requiere target) |
| Especial | Si (en SPECIAL_TOOLS) |
Modulos del audit (10)
El script Invoke-SecurityAudit.ps1 cubre:
- System info
- Users
- Processes
- Network
- Logs
- Files
- Registry
- Services
- LOLBAS
- Drivers / Hardware
Setup (si hay que reinstallar)
1. Clonar el repo
git clone https://github.com/HOSTNAME/Auditing_with_PowerShell.git "$HOME\Auditing_with_PowerShell"2. Verificar que el wrapper lo encuentra
cd $HOME\sec-dashboard
.venv\Scripts\python.exe -c "from backend.tools.audit import _find_script; print(_find_script())"
# Debe imprimir: C:\Users\you\Auditing_with_PowerShell\Invoke-SecurityAudit.ps13. (Opcional) Setear env var si el repo esta en otra ruta
# Temporal (sesion actual)
$env:AUDIT_PS_PATH = "D:\ruta\custom\Auditing_with_PowerShell"
# Permanente (usuario)
[Environment]::SetEnvironmentVariable("AUDIT_PS_PATH", "D:\ruta\custom\Auditing_with_PowerShell", "User")4. Iniciar sec-dashboard y verificar
cd $HOME\sec-dashboard
.venv\Scripts\activate
uvicorn backend.main:app --host 127.0.0.1 --port 8444Abrir http://127.0.0.1:8444 ←’ categoria System ←’ PS Security Audit debe aparecer.
5. Probar la API directamente
# Arrancar dashboard y luego:
Invoke-WebRequest -Uri "http://127.0.0.1:8444/api/tools" -UseBasicParsing |
Select-Object -ExpandProperty Content |
ConvertFrom-Json |
Where-Object { $_.id -eq "ps_security_audit" }Comandos utiles
# Verificar que el script existe
Test-Path "$HOME\Auditing_with_PowerShell\Invoke-SecurityAudit.ps1"
# Ejecutar el script directamente (sin dashboard)
powershell -NoProfile -ExecutionPolicy Bypass -File "$HOME\Auditing_with_PowerShell\Invoke-SecurityAudit.ps1"
# Ver ultimas auditorias generadas
Get-ChildItem "$HOME\Auditing_with_PowerShell" -Directory -Filter "Auditoria_*" |
Sort-Object LastWriteTime -Descending |
Select-Object -First 5 Name,LastWriteTime
# Actualizar el repo
cd "$HOME\Auditing_with_PowerShell"
git pullTroubleshooting
”Invoke-SecurityAudit.ps1 not found”
- Verificar que el repo este clonado:
Test-Path "$HOME\Auditing_with_PowerShell\Invoke-SecurityAudit.ps1" - Si está en otra ruta, setear
AUDIT_PS_PATH - El wrapper busca en 5 ubicaciones (ver arriba)
“PowerShell Security Audit only runs on Windows”
- Expected en Linux/macOS. El script es exclusivo de Windows + PowerShell.
El audit tarda mas de 10 minutos
- El timeout del handler es 600s. Si se necesita mas, editar
config.py:"ps_security_audit": { ... "timeout": 900, # 15 min }
Audit devuelve resultados vacios
- Ejecutar el script directamente para ver si genera JSON
- Verificar permisos: algunos modulos requieren admin (ejecutar dashboard como admin)
- Revisar
stderr_tailen el resultado del dashboard
Execution Policy bloquea el script
- El wrapper usa
-ExecutionPolicy Bypass, no deberia pasar - Si pasa, ejecutar manualmente una vez:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
Estructura de archivos relevantes
sec-dashboard/
backend/
config.py # Linea 252: registro de ps_security_audit
scanner.py # Linea 65: mapeo a handler
tools/
audit.py # Wrapper completo (170 lineas)
Auditing_with_PowerShell/ (clonado en $HOME)
Invoke-SecurityAudit.ps1 # Script principal
README.md
.gitignore
LICENSE
Notas
- La integración fue disenada por el propio sec-dashboard (ya existía en el código)
- No requiere instalar nada extra en Python (el wrapper usa solo stdlib:
asyncio,json,os,platform,pathlib) - El script de PowerShell es independiente del dashboard: se puede usar por separado
- Resultados del audit se guardan en
Auditoria_<timestamp>/dentro del repo clonado - Para admins: algunos modulos (logs, registry, services) requieren privilegios elevados
- Ver tambien: Project Overview y Guía de uso