Enumeración inicial en Windows
Durante una evaluación, podemos obtener un shell con pocos privilegios en un host de Windows (unido a un dominio o no) y necesitar realizar una escalada de privilegios para ampliar nuestro acceso. Si comprometemos por completo el host, podemos obtener acceso a archivos o recursos compartidos de archivos confidenciales, otorgarnos la capacidad de capturar tráfico para obtener más credenciales u obtener credenciales que puedan ayudarnos a ampliar nuestro acceso o incluso escalar directamente al administrador del dominio en un entorno de Active Directory.
Podemos escalar privilegios a uno de los siguientes según la configuración del sistema y el tipo de datos que encontremos:
La cuenta local integrada administrator
. Algunas organizaciones deshabilitan esta cuenta, pero muchas no lo hacen. No es raro ver que esta cuenta se reutilice en varios sistemas en un entorno de cliente.
Otra cuenta local que sea miembro del grupo local Administrators
. Cualquier cuenta de este grupo tendrá los mismos privilegios que la cuenta integrada administrator
.
Un usuario de dominio estándar (sin privilegios) que forma parte del grupo local Administrators
.
Un administrador de dominio (con altos privilegios en el entorno de Active Directory) que forma parte del grupo local Administrators
.
La enumeración es la clave para la escalada de privilegios. Cuando obtenemos acceso inicial al host a través del shell, es fundamental conocer la situación y descubrir detalles relacionados con la versión del sistema operativo, el nivel de parche, el software instalado, los privilegios actuales, las membresías de grupos y más. Repasemos algunos de los puntos de datos clave que deberíamos revisar después de obtener acceso inicial. Esta no es una lista exhaustiva de ninguna manera, y los diversos scripts/herramientas de enumeración que cubrimos en la sección anterior cubren todos estos puntos de datos y muchos, muchos más. No obstante, es esencial comprender cómo realizar estas tareas manualmente, especialmente si nos encontramos en un entorno en el que no podemos cargar herramientas debido a restricciones de red, falta de acceso a Internet o protecciones implementadas.
Esta referencia de comandos de Windows es muy útil para realizar tareas de enumeración manual.
Puntos de datos clave
Sistema Operativo
: Conocer el tipo de sistema operativo Windows (estación de trabajo o servidor) y el nivel (Windows 7 o 10, Server 2008, 2012, 2016, 2019, etc.) nos dará una idea de los tipos de herramientas que pueden estar disponibles (como la versión dePowerShell
), o la falta de ellas en sistemas heredados. Esto también identificaría la versión del sistema operativo para la que puede haber exploits públicos disponibles.Version
: Al igual que con la versión del sistema operativo , puede haber exploits públicos que tengan como objetivo una vulnerabilidad en una versión específica de Windows. Los exploits del sistema Windows pueden provocar inestabilidad del sistema o incluso un bloqueo total. Tenga cuidado al ejecutarlos en cualquier sistema de producción y asegúrese de comprender completamente el exploit y las posibles ramificaciones antes de ejecutar uno.Servicios corriendo
: Es importante saber qué servicios se están ejecutando en el host, especialmente aquellos que se ejecutan comoNT AUTHORITY\SYSTEM
una cuenta de nivel de administrador. Un servicio mal configurado o vulnerable que se ejecuta en el contexto de una cuenta privilegiada puede ser una victoria fácil para la escalada de privilegios.
Echemos un vistazo más en profundidad.
Información del sistema
Si observamos el sistema en sí, tendremos una mejor idea de la versión exacta del sistema operativo, el hardware en uso, los programas instalados y las actualizaciones de seguridad. Esto nos ayudará a acotar la búsqueda de parches faltantes y CVE asociados que podamos aprovechar para aumentar los privilegios. Si utilizamos el comando tasklist para observar los procesos en ejecución, tendremos una mejor idea de qué aplicaciones se están ejecutando actualmente en el sistema.
Lista de tareas
Enumeración inicial
Es esencial familiarizarse con los procesos estándar de Windows, como Session Manager Subsystem (smss.exe) , Client Server Runtime Subsystem (csrss.exe) , WinLogon (winlogon.exe) , Local Security Authority Subsystem Service (LSASS) y Service Host (svchost.exe) , entre otros, y los servicios asociados a ellos. Poder detectar rápidamente los procesos/servicios estándar ayudará a acelerar nuestra enumeración y nos permitirá centrarnos en los procesos/servicios no estándar, que pueden abrir una ruta de escalada de privilegios. En el ejemplo anterior, estaríamos más interesados en el FileZilla
servidor FTP en ejecución e intentaríamos enumerar la versión para buscar vulnerabilidades públicas o configuraciones incorrectas, como el acceso anónimo a FTP, que podría conducir a la exposición de datos confidenciales o más.
Otros procesos, como MsMpEng.exe
Windows Defender, son interesantes porque pueden ayudarnos a identificar qué protecciones están implementadas en el host de destino y que quizás tengamos que evadir o eludir.
Mostrar todas las variables de entorno
Las variables de entorno explican mucho sobre la configuración del host. Para obtener una impresión de ellas, Windows proporciona el set
comando. Una de las variables más ignoradas es PATH
. En el resultado a continuación, no hay nada fuera de lo normal. Sin embargo, no es raro encontrar administradores (o aplicaciones) que modifican el PATH
. Un ejemplo común es colocar Python o Java en la ruta, lo que permitiría la ejecución de Python o archivos . JAR. Si la carpeta colocada en PATH es escribible por su usuario, puede ser posible realizar inyecciones de DLL contra otras aplicaciones. Recuerde, cuando se ejecuta un programa, Windows busca ese programa en el CWD (directorio de trabajo actual) primero, luego desde PATH de izquierda a derecha. Esto significa que si la ruta personalizada se coloca a la izquierda (antes de C:\Windows\System32), es mucho más peligroso que a la derecha.
Además de la RUTA, set
también puede proporcionar otra información útil, como la UNIDAD DE INICIO. En las empresas, a menudo será un recurso compartido de archivos. Al navegar hasta el recurso compartido de archivos, es posible que se revelen otros directorios a los que se puede acceder. No es raro poder acceder a un "Directorio de TI", que contiene una hoja de cálculo de inventario que incluye contraseñas. Además, los recursos compartidos se utilizan para los directorios de inicio, de modo que el usuario pueda iniciar sesión en otras computadoras y tener la misma experiencia/archivos/escritorio/etc. ( Perfiles móviles ). Esto también puede significar que el usuario se lleva consigo elementos maliciosos. Si se coloca un archivo en USERPROFILE\AppData\Microsoft\Windows\Start Menu\Programs\Startup
, cuando el usuario inicie sesión en una máquina diferente, este archivo se ejecutará.
Enumeración inicial
Ver información detallada de configuración
El systeminfo
comando mostrará si el equipo ha recibido un parche recientemente y si es una máquina virtual. Si el equipo no ha recibido un parche recientemente, obtener acceso a nivel de administrador puede ser tan simple como ejecutar un exploit conocido. Busque en Google los KB instalados en HotFixes para tener una idea de cuándo se ha aplicado el parche al equipo. Esta información no siempre está presente, ya que es posible ocultar el software de hotfixes a los no administradores. También se puede marcar System Boot Time
y OS Version
para tener una idea del nivel de parche. Si el equipo no se ha reiniciado en más de seis meses, es probable que tampoco se le estén aplicando parches.
Además, muchas guías dirán que la información de red es importante, ya que podría indicar una máquina con dos hogares (conectada a múltiples redes). En términos generales, cuando se trata de empresas, los dispositivos solo tendrán acceso a otras redes a través de una regla de firewall y no tendrán un cable físico conectado a ellas.
Enumeración inicial
Parches y actualizaciones
Si systeminfo
no se muestran las revisiones, se pueden consultar con WMI usando el binario WMI-Command con QFE (Quick Fix Engineering) para mostrar los parches.
Enumeración inicial
También podemos hacer esto con PowerShell usando el cmdlet Get-Hotfix .
Enumeración inicial
Programas instalados
WMI también se puede utilizar para mostrar el software instalado. Esta información a menudo puede guiarnos hacia exploits difíciles de encontrar. ¿Está instalado FileZilla
/ Putty
/etc? Ejecútelo LaZagne
para comprobar si las credenciales almacenadas para esas aplicaciones están instaladas. Además, algunos programas pueden estar instalados y ejecutándose como un servicio vulnerable.
Enumeración inicial
Por supuesto, también podemos hacer esto con PowerShell utilizando el cmdlet Get-WmiObject .
Enumeración inicial
Mostrar procesos en ejecución
El comando netstat mostrará las conexiones TCP y UDP activas, lo que nos dará una mejor idea de qué servicios están escuchando en qué puerto(s), tanto localmente como accesibles desde el exterior. Es posible que encontremos un servicio vulnerable al que solo pueda acceder el host local (cuando se inicia sesión en el host) que podamos explotar para aumentar los privilegios.
Estadísticas de red
Enumeración inicial
Información de usuarios y grupos
Los usuarios suelen ser el eslabón más débil de una organización, especialmente cuando los sistemas están bien configurados y parcheados. Es esencial comprender a los usuarios y grupos del sistema, los miembros de grupos específicos que pueden proporcionarnos acceso de nivel de administrador, los privilegios que tiene nuestro usuario actual, la información de la política de contraseñas y cualquier usuario conectado al que podamos dirigirnos. Es posible que consideremos que el sistema está bien parcheado, pero un miembro del directorio de usuarios del grupo de administradores locales es navegable y contiene un archivo de contraseñas como logins.xlsx
, lo que resulta en una victoria muy fácil.
Usuarios registrados
Siempre es importante determinar qué usuarios están conectados a un sistema. ¿Están inactivos o activos? ¿Podemos determinar en qué están trabajando? Si bien es más difícil de lograr, a veces podemos atacar a los usuarios directamente para aumentar los privilegios o ganar más acceso. Durante un ataque evasivo, tendríamos que actuar con cuidado en un host con otros usuarios trabajando activamente en él para evitar ser detectados.
Enumeración inicial
Usuario actual
Cuando obtenemos acceso a un host, siempre debemos comprobar primero en qué contexto de usuario se ejecuta nuestra cuenta. A veces, ¡ya somos SYSTEM o equivalente! Supongamos que obtenemos acceso como una cuenta de servicio. En ese caso, es posible que tengamos privilegios como SeImpersonatePrivilege
, que a menudo se pueden utilizar de forma abusiva para escalar privilegios mediante una herramienta como Juicy Potato .
Enumeración inicial
Privilegios de usuario actuales
Como se mencionó anteriormente, conocer los privilegios que tiene nuestro usuario puede ayudar mucho a escalar los privilegios. Analizaremos los privilegios de usuarios individuales y las rutas de escalamiento más adelante en este módulo.
Enumeración inicial
Información del grupo de usuarios actual
¿Nuestro usuario ha heredado algún derecho a través de su pertenencia a un grupo? ¿Tiene privilegios en el entorno de dominio de Active Directory que podrían aprovecharse para obtener acceso a más sistemas?
Enumeración inicial
Obtener todos los usuarios
También es importante saber qué otros usuarios están en el sistema. Si obtuvimos acceso RDP a un host usando las credenciales que capturamos para un usuario bob
y vemos un bob_adm
usuario en el grupo de administradores locales, vale la pena verificar la reutilización de credenciales. ¿Podemos acceder al directorio de perfil de usuario de cualquier usuario importante? Es posible que encontremos archivos valiosos, como scripts con contraseñas o claves SSH, en la carpeta Escritorio, Documentos o Descargas de un usuario.
Enumeración inicial
Obtener todos los grupos
Saber qué grupos no estándar están presentes en el host puede ayudarnos a determinar para qué se usa el host, con qué intensidad se accede a él o incluso puede llevarnos a descubrir una configuración incorrecta, como todos los usuarios del dominio en el Escritorio remoto o grupos de administradores locales.
Enumeración inicial
Detalles sobre un grupo
Vale la pena verificar los detalles de los grupos no estándar. Aunque es poco probable, es posible que encontremos una contraseña u otra información interesante almacenada en la descripción del grupo. Durante nuestra enumeración, es posible que descubramos las credenciales de otro usuario no administrador que sea miembro de un grupo local que se puedan aprovechar para aumentar los privilegios.
Enumeración inicial
Obtenga la política de contraseñas y otra información de la cuenta
Enumeración inicial
Siguiendo adelante
Como se dijo antes, esta no es una lista exhaustiva de comandos de enumeración. Las herramientas que analizamos en la sección anterior ayudarán en gran medida a acelerar el proceso de enumeración y garantizar que sea completo y que no se deje nada sin revisar. Hay muchas hojas de trucos disponibles para ayudarnos, como esta . Estudie las herramientas y sus resultados y comience a crear su propia hoja de trucos de comandos, de modo que esté disponible en caso de que se encuentre con un entorno que requiera la enumeración manual en su mayor parte o en su totalidad.
Caso práctico
Pregunta 1
¿Qué privilegio no predeterminado tiene el usuario htb-student?
El comando
Última actualización
¿Te fue útil?