PowerShell es la shell y lenguaje de scripting moderno de Windows. A diferencia del antiguo CMD, trabaja con objetos (no solo texto), lo que facilita filtrar, ordenar y combinar resultados. Es la herramienta principal para administrar Windows y también una de las más usadas en ataques.
Sus comandos, los cmdlets, siguen el patrón Verbo-Sustantivo (
Get-Process,Stop-Service), lo que los hace predecibles y fáciles de descubrir.
Cmdlets esenciales para empezar:
Get-Help Get-Process # ayuda de un comando
Get-Command # lista todos los cmdlets disponibles
Get-Process # procesos en ejecución
Get-Service # servicios del sistema
Get-ChildItem # lista archivos (equivalente a ls/dir)
El pipe con objetos — encadena cmdlets pasando objetos completos:
Get-Process | Sort-Object CPU -Descending | Select-Object -First 5
Get-Service | Where-Object { $_.Status -eq "Running" }
Por qué importa en seguridad:
PowerShell es un objetivo y una herramienta clave por varias razones:
| Característica | Implicación de seguridad |
|---|---|
| Instalado por defecto | Disponible en cualquier Windows |
| Acceso profundo al sistema | Puede leer Registro, procesos, red, AD |
| Ejecución en memoria | Permite código sin tocar el disco (sigiloso) |
| Descarga remota | Puede traer y correr payloads |
A usar las herramientas nativas del sistema para atacar se le llama "Living off the Land" (LOLBins): evita instalar malware detectable.
Del lado defensivo, se vigila PowerShell con:
- Logging de scripts (Script Block Logging).
- Modos restringidos de ejecución (Constrained Language Mode).
- AMSI (interfaz antimalware que inspecciona lo que se ejecuta).
PowerShell es a Windows lo que Bash es a Linux. Es esencial para Active Directory, la post-explotación y las operaciones de Red Team, y un foco central de monitoreo para el Blue Team.