Credentials Harvesting
Última actualización
Última actualización
La recolección de credenciales es un término para obtener acceso a las credenciales del usuario y del sistema. Es una técnica para buscar o robar credenciales almacenadas, incluido el rastreo de redes, donde un atacante captura las credenciales transmitidas.
Las credenciales se pueden encontrar en una variedad de formas diferentes, tales como:
Detalles de cuentas (nombres de usuario y contraseñas)
Hashes que incluyen hashes NTLM, etc.
Tickets de autenticación: Tickets de concesión de tickets (TGT), Servidor de concesión de tickets (TGS)
Cualquier información que ayude a iniciar sesión en un sistema (claves privadas, etc.)
En términos generales, existen dos tipos de recolección de credenciales: externa e interna. La recolección de credenciales externas probablemente implica correos electrónicos de phishing y otras técnicas para engañar a un usuario para que ingrese su nombre de usuario y contraseña. Si desea obtener más información sobre los correos electrónicos de phishing, le sugerimos que pruebe la sala de THM . La obtención de credenciales a través de la red interna utiliza diferentes enfoques.
El acceso a las credenciales es donde los adversarios pueden encontrar credenciales en sistemas comprometidos y obtener acceso a las credenciales de los usuarios. Ayuda a los adversarios a reutilizarlos o suplantar la identidad de un usuario. Este es un paso importante para el movimiento lateral y el acceso a otros recursos, como otras aplicaciones o sistemas. Se prefiere obtener credenciales de usuario legítimas en lugar de explotar sistemas que utilizan CVE.
Para obtener más información, puede visitar el marco MITRE ATT&CK ( ).
Las credenciales se almacenan de forma insegura en varias ubicaciones de los sistemas:
Archivos de texto claro
Archivos de base de datos
Memoria
Administradores de contraseñas
Bóvedas empresariales
Directorio Activo
Rastreo de redes
¡Discutámoslos un poco más!
Los siguientes son algunos de los tipos de archivos de texto sin cifrar que pueden interesarle a un atacante:
Historial de comandos
Archivos de configuración (aplicación web, archivos FTP, etc.)
Otros archivos relacionados con aplicaciones de Windows (navegadores de Internet, clientes de correo electrónico, etc.)
Archivos de respaldo
Archivos y carpetas compartidos
Registro
Código fuente
Como ejemplo de un comando de historial, PowerShell guarda los comandos de PowerShell ejecutados en un archivo de historial en un perfil de usuario en la siguiente ruta: C:\Users\USER\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
Puede que valga la pena comprobar en qué están trabajando los usuarios o encontrar información confidencial. Otro ejemplo sería encontrar información interesante. Por ejemplo, el siguiente comando busca la palabra clave "contraseña" en el registro de Windows.
Buscando la palabra clave "contraseña" en el Registro
Un administrador de contraseñas es una aplicación para almacenar y administrar la información de inicio de sesión de los usuarios para sitios web y servicios locales y de Internet. Dado que se trata de datos de los usuarios, deben almacenarse de forma segura para evitar el acceso no autorizado.
Ejemplos de aplicaciones de Administrador de contraseñas:
Administradores de contraseñas integrados (Windows)
Terceros: KeePass, 1Password, LastPass
Sin embargo, en estas aplicaciones se encuentran fallas de configuración y seguridad que permiten a los adversarios acceder a los datos almacenados. Se podrían utilizar varias herramientas durante la etapa de enumeración para obtener datos confidenciales en las aplicaciones de administración de contraseñas utilizadas por los navegadores de Internet y las aplicaciones de escritorio.
Esta sala discutirá cómo acceder al administrador de credenciales de Windows y extraer contraseñas.
La memoria del sistema operativo es una rica fuente de información confidencial que pertenece al sistema operativo Windows, a los usuarios y a otras aplicaciones. Los datos se cargan en la memoria en tiempo de ejecución o durante la ejecución. Por tanto, el acceso a la memoria está limitado a los usuarios administradores que controlan totalmente el sistema.
Los siguientes son ejemplos de datos confidenciales almacenados en memoria, que incluyen:
Credenciales en texto claro
Contraseñas almacenadas en caché
Entradas AD
En esta sala, discutiremos cómo obtener acceso a la memoria y extraer contraseñas de texto sin cifrar y tickets de autenticación.
Active Directory almacena mucha información relacionada con usuarios, grupos, computadoras, etc. Por lo tanto, enumerar el entorno de Active Directory es uno de los focos de las evaluaciones del equipo rojo. Active Directory tiene un diseño sólido, pero la mala configuración realizada por los administradores lo hace vulnerable a varios ataques que se muestran en esta sala.
Las siguientes son algunas de las configuraciones erróneas de Active Directory que pueden filtrar las credenciales de los usuarios .
Users' description : los administradores establecen una contraseña en la descripción para los nuevos empleados y la dejan allí, lo que hace que la cuenta sea vulnerable al acceso no autorizado.
Group Policy SYSVOL : las claves de cifrado filtradas permiten a los atacantes acceder a cuentas de administrador. Consulte la Tarea 8 para obtener más información sobre la versión vulnerable de SYSVOL.
NTDS: contiene las credenciales de los usuarios de AD, lo que lo convierte en un objetivo para los atacantes.
AD Attacks la mala configuración hace que AD sea vulnerable a varios ataques, que discutiremos en la Tarea 9.
Obtener acceso inicial a una red objetivo permite a los atacantes realizar varios ataques de red contra computadoras locales, incluido el entorno AD. El ataque Man-In-the-Middle contra protocolos de red permite al atacante crear recursos confiables falsos o falsificados dentro de la red para robar información de autenticación, como hashes NTLM.
En general, el sistema operativo Windows proporciona dos tipos de cuentas de usuario: local y de dominio. Los detalles de los usuarios locales se almacenan localmente dentro del sistema de archivos de Windows, mientras que los detalles de los usuarios del dominio se almacenan en el Active Directory centralizado. Esta tarea analiza las credenciales para cuentas de usuarios locales y demuestra cómo se pueden obtener.
Keylogger es un dispositivo de software o hardware para monitorear y registrar las actividades de escritura del teclado. Los keyloggers se diseñaron inicialmente con fines legítimos, como comentarios para el desarrollo de software o control parental. Sin embargo, pueden utilizarse indebidamente para robar datos. Como miembro del equipo rojo, buscar credenciales a través de registradores de pulsaciones de teclas en un entorno interactivo y ajetreado es una buena opción. Si sabemos que un objetivo comprometido tiene un usuario que ha iniciado sesión, podemos realizar un registro de teclas utilizando herramientas como el marco Metasploit u otras.
SAM es una base de datos de Microsoft Windows que contiene información de cuentas locales, como nombres de usuario y contraseñas. La base de datos SAM almacena estos detalles en un formato cifrado para que sea más difícil recuperarlos. Además, ningún usuario puede leerlo ni acceder a él mientras se ejecuta el sistema operativo Windows. Sin embargo, existen varias formas y ataques para volcar el contenido de la base de datos SAM.
Primero, asegúrese de haber implementado la máquina virtual proporcionada y luego confirme que no podemos copiar ni leer el c:\Windows\System32\config\sam
archivo:
Confirmar que no hay acceso a la base de datos SAM
Volviendo el contenido de la base de datos SAM
Más específicamente, usaremos wmic para crear una instantánea de volumen. Esto debe hacerse a través del símbolo del sistema con privilegios de administrador de la siguiente manera:
Ejecute el mensaje estándar cmd.exe con privilegios de administrador.
Ejecute el comando wmic para crear una copia sombra de la unidad C:
Verifique que la creación del paso 2 esté disponible.
Copie la base de datos SAM del volumen que creamos en el paso 2
Ahora apliquemos lo que comentamos anteriormente y ejecutemos cmd.exe con privilegios de administrador. Luego ejecute el siguiente comando wmic:
Creación de una instantánea del volumen C con WMIC
Una vez que el comando se ejecute correctamente, usemos la vssadmin
herramienta de línea de comandos administrativa del Servicio de instantáneas de volumen para enumerar y confirmar que tenemos una instantánea del C:
volumen.
Listado de los volúmenes de sombra disponibles
El resultado muestra que hemos creado con éxito un volumen de instantáneas de (C:) con la siguiente ruta: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1
.
Ahora copiemos ambos archivos (sam y system) del volumen de instantáneas que generamos al escritorio de la siguiente manera:
Copiar el archivo SAM y SYSTEM del volumen Shadow
Ahora tenemos los dos archivos necesarios, transfiéralos a AttackBox con tu método favorito (SCP debería funcionar).
Otro método posible para volcar el contenido de la base de datos SAM es a través del Registro de Windows. El registro de Windows también almacena una copia de algunos contenidos de la base de datos SAM para que los utilicen los servicios de Windows. Por suerte, podemos guardar el valor del registro de Windows utilizando la herramienta reg.exe. Como se mencionó anteriormente, necesitamos dos archivos para descifrar el contenido de la base de datos SAM. Asegúrese de ejecutar el símbolo del sistema con privilegios de administrador.
Guarde los archivos SAM y SYSTEM del registro
Esta vez vamos a descifrarlo usando una de las herramientas Impacket: secretsdump.py
, que ya está instalada en AttackBox. El script Impacket SecretsDump extrae credenciales de un sistema de forma local y remota utilizando diferentes técnicas.
Mueva los archivos SAM y del sistema a AttackBox y ejecute el siguiente comando:
Descifrando la base de datos SAM usando el script Impacket SecretsDump localmente
Tenga en cuenta que utilizamos los archivos SAM y del sistema que extrajimos del Registro de Windows. El -sam
argumento es especificar la ruta del archivo sam volcado desde la máquina con Windows. El -system
argumento es para una ruta para el archivo del sistema. Usamos el LOCAL
argumento al final del comando para descifrar el archivo SAM local ya que esta herramienta maneja otros tipos de descifrado.
Tenga en cuenta que si comparamos el resultado con los hashes NTLM que obtuvimos del Hashdump de Metasploit, el resultado es diferente. El motivo es que las otras cuentas pertenecen a Active Directory y su información no se almacena en el archivo del sistema que hemos volcado. Para descifrarlos, necesitamos volcar el archivo de SEGURIDAD del archivo de Windows, que contiene los archivos necesarios para descifrar las cuentas de Active Directory.
Una vez que obtenemos los hashes NTLM, podemos intentar descifrarlos usando Hashcat si son adivinables, o podemos usar diferentes técnicas para suplantar a los usuarios que usan los hashes.
El Servicio de servidor de autoridad de seguridad local (LSASS) es un proceso de Windows que maneja la política de seguridad del sistema operativo y la aplica en un sistema. Verifica las cuentas iniciadas y garantiza contraseñas, hashes y tickets de Kerberos. El sistema Windows almacena credenciales en el proceso LSASS para permitir a los usuarios acceder a recursos de red, como archivos compartidos, sitios de SharePoint y otros servicios de red, sin ingresar credenciales cada vez que un usuario se conecta.
Interfaz gráfica de usuario (GUI)
Para volcar cualquier proceso de Windows en ejecución mediante la GUI, abra el Administrador de tareas y, en la pestaña Detalles, busque el proceso requerido, haga clic derecho sobre él y seleccione "Crear archivo de volcado".
Una vez finalizado el proceso de volcado, aparecerá un mensaje emergente que contiene la ruta del archivo volcado. Ahora copie el archivo y transfiéralo a AttackBox para extraer hashes NTLM sin conexión.
Nota: si intentamos esto en la máquina virtual proporcionada, debería obtener un error la primera vez que lo ejecute, hasta que corrijamos el valor del registro en la sección LSASS protegido más adelante en esta tarea.
Copie el proceso volcado a la carpeta Mimikatz.
Copiar el archivo volcado de LSASS
Una forma alternativa de volcar un proceso si no disponemos de una GUI es mediante ProcDump. ProcDump es una utilidad de volcado de procesos de Sysinternals que se ejecuta desde el símbolo del sistema. SysInternals Suite ya está instalado en la máquina proporcionada en la siguiente ruta:c:\Tools\SysinternalsSuite
Podemos especificar un proceso en ejecución, que en nuestro caso es lsass.exe, para volcarlo de la siguiente manera:
_Volviendo el proceso LSASS usando procdump.exe _
Tenga en cuenta que el proceso de volcado se escribe en el disco. Deshacerse del proceso LSASS es una técnica conocida utilizada por los adversarios. Por lo tanto, los productos antivirus pueden marcarlo como malicioso. En el mundo real, puede ser más creativo y escribir código para cifrar o implementar un método para evitar los productos AV.
Usaremos la Mimikatz
herramienta para extraer el volcado de memoria del proceso lsass.exe. Le hemos proporcionado las herramientas necesarias y puede encontrarlas en : c:\Tools\Mimikatz
.
Recuerde que el proceso LSASS se ejecuta como un SISTEMA. Por lo tanto, para acceder a los hashes de los usuarios, necesitamos permisos de administrador local o del sistema. Por lo tanto, abra el símbolo del sistema y ejecútelo como administrador. Luego, ejecute el binario mimikatz de la siguiente manera:
Ejecutar mimikatz con privilegios de administrador
Antes de descargar la memoria para credenciales y hashes cobrados, debemos habilitar SeDebugPrivilege y verificar los permisos actuales para el acceso a la memoria. Se puede hacer ejecutando el comando de la siguiente manera, privilege::debug
_Comprobación del permiso actual para acceder a la memoria _
Una vez que se otorgan los privilegios, podemos acceder a la memoria para volcar todas las contraseñas y hashes almacenados en caché del lsass.exe
proceso usando sekurlsa::logonpasswords
. Si intentamos esto en la VM proporcionada, no funcionará hasta que lo solucionemos en la siguiente sección.
Deshacerse de las contraseñas de texto sin cifrar almacenadas
Mimikatz enumera mucha información sobre cuentas y máquinas. Si revisamos detenidamente en la sección Principal para usuarios administradores, podemos ver que tenemos un hash NTLM.
Tenga en cuenta que para obtener los hashes de los usuarios, un usuario (víctima) debe haber iniciado sesión en un sistema y sus credenciales deben haberse almacenado en caché.
En 2012, Microsoft implementó una protección LSA para evitar que se acceda a LSASS para extraer credenciales de la memoria. Esta tarea mostrará cómo deshabilitar la protección LSA y volcar las credenciales de la memoria usando Mimikatz. Para habilitar la protección LSASS, podemos modificar el valor DWORD RunAsPPL del registro a HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
1.
Los pasos son similares a los de la sección anterior, que ejecuta el archivo de ejecución de Mimikatz con privilegios de administrador y habilita el modo de depuración. Si la protección LSA está habilitada, obtendremos un error al ejecutar el comando "sekurlsa::logonpasswords".
No poder volcar la contraseña almacenada debido a la protección LSA
El comando devuelve un mensaje de código de error 0x00000005 (Acceso denegado). Por suerte para nosotros, Mimikatz proporciona un controlador mimidrv.sys que funciona a nivel de kernel para desactivar la protección LSA. Podemos importarlo a Mimikatz ejecutando "!+" de la siguiente manera,
Cargando el controlador mimidrv en la memoria
Nota: Si esto falla y genera un isFileExist
error, salga de mimikatz, navegue C:\Tools\Mimikatz\
y ejecute el comando nuevamente.
Una vez cargado el controlador, podemos desactivar la protección LSA ejecutando el siguiente comando Mimikatz:
Eliminación de la protección LSA
Ahora, si intentamos ejecutar el comando "sekurlsa::logonpasswords" nuevamente, debe ejecutarse exitosamente y mostrar las credenciales almacenadas en caché en la memoria.
Esta tarea presenta el Administrador de credenciales de Windows y analiza la técnica utilizada para deshacerse de las credenciales del sistema aprovechándolo.
Credential Manager es una característica de Windows que almacena información confidencial de inicio de sesión para sitios web, aplicaciones y redes. Contiene credenciales de inicio de sesión, como nombres de usuario, contraseñas y direcciones de Internet. Hay cuatro categorías de credenciales:
Las credenciales web contienen detalles de autenticación almacenados en navegadores de Internet u otras aplicaciones.
Las credenciales de Windows contienen detalles de autenticación de Windows, como NTLM o Kerberos.
Las credenciales genéricas contienen detalles de autenticación básicos, como nombres de usuario y contraseñas en texto claro.
Credenciales basadas en certificados: detalles de búsqueda basados en certificaciones.
Tenga en cuenta que los detalles de autenticación se almacenan en la carpeta del usuario y no se comparten entre las cuentas de usuario de Windows. Sin embargo, están almacenados en caché en la memoria.
Podemos acceder al Administrador de credenciales de Windows a través de la GUI (Panel de control -> Cuentas de usuario -> Administrador de credenciales) o el símbolo del sistema. En esta tarea, la atención se centrará más en el escenario del símbolo del sistema donde la GUI no está disponible.
Usaremos la vaultcmd
utilidad Microsoft Credentials Manager. Comencemos a enumerar si hay credenciales almacenadas. Primero, enumeramos las bóvedas de Windows actuales disponibles en el destino de Windows.
Listado de las credenciales disponibles en el Administrador de credenciales
De forma predeterminada, Windows tiene dos bóvedas, una para la Web y otra para las credenciales de la máquina Windows. El resultado anterior confirma que tenemos las dos bóvedas predeterminadas.
Comprobemos si hay credenciales almacenadas en la bóveda de Credenciales web ejecutando el comando vaultcmd con /listproperties
.
Comprobar si hay credenciales almacenadas en "Credenciales web".
El resultado muestra que tenemos una credencial almacenada en la bóveda especificada. Ahora intentemos enumerar más información sobre la credencial almacenada de la siguiente manera:
Listado de detalles de credenciales para "Credenciales web"
Asegúrese de ejecutar PowerShell con la política de omisión para importarlo como un módulo de la siguiente manera:
Obtener una contraseña de texto limpio a partir de credenciales web
El resultado muestra que obtuvimos el nombre de usuario y la contraseña para acceder a la aplicación interna.
Un método alternativo para aprovechar las credenciales almacenadas es utilizar RunAs. RunAs es una herramienta integrada de línea de comandos que permite ejecutar aplicaciones o herramientas de Windows con los permisos de diferentes usuarios. La herramienta RunAs tiene varios argumentos de comando que podrían usarse en el sistema Windows. El /savecred
argumento le permite guardar las credenciales del usuario en el Administrador de credenciales de Windows (en la sección Credenciales de Windows). Entonces, la próxima vez que ejecutemos como el mismo usuario, runas no solicitará una contraseña.
Apliquémoslo a la máquina Windows adjunta. Otra forma de enumerar las credenciales almacenadas es mediante cmdkey
, que es una herramienta para crear, eliminar y mostrar las credenciales almacenadas de Windows. Al proporcionar el /list
argumento, podemos mostrar todas las credenciales almacenadas o podemos especificar la credencial para mostrar más detalles /list:computername
.
Enumeración de credenciales de Windows almacenadas
El resultado muestra que tenemos una contraseña de dominio almacenada como thm\thm-local
usuario. Tenga en cuenta que las credenciales almacenadas también podrían ser para otros servidores. Ahora usemos runas para ejecutar aplicaciones de Windows como thm-local
usuario.
Ejecute CMD.exe como usuario con el argumento /savecred
Aparece un nuevo cmd.exe con un símbolo del sistema listo para usar. Ahora ejecute el comando whoami para confirmar que estamos ejecutando con el usuario deseado. Hay una bandera en el c:\Users\thm-local\Saved Games\flag.txt
, intenta leerla y responde la siguiente pregunta.
Mimikatz es una herramienta que puede volcar desde la memoria contraseñas de texto sin cifrar almacenadas en el Administrador de credenciales. Los pasos son similares a los mostrados en la sección anterior (Volcado de memoria), pero podemos especificar que se muestre la sección del administrador de credenciales solo esta vez.
dumping de memoria para el administrador de credenciales
Aplique esta técnica a la máquina adjunta y responda la siguiente pregunta.
Las técnicas analizadas en esta tarea también se pueden realizar a través de otras herramientas como Empire, Metasploit, etc. Puedes realizar tu propia investigación para ampliar tus conocimientos.
Esta tarea analiza los pasos necesarios para volcar los hashes del controlador de dominio de forma local y remota.
New Technologies Directory Services (NTDS) es una base de datos que contiene todos los datos de Active Directory, incluidos objetos, atributos, credenciales, etc. Los datos NTDS.DTS constan de tres tablas, como se muestra a continuación:
Tabla de esquemas: contiene tipos de objetos y sus relaciones.
Tabla de enlaces: contiene los atributos del objeto y sus valores.
Tipo de datos: Contiene usuarios y grupos.
NTDS se encuentra de C:\Windows\NTDS
forma predeterminada y está cifrado para evitar la extracción de datos de una máquina de destino. No se permite acceder al archivo NTDS.dit desde la máquina en ejecución ya que Active Directory utiliza el archivo y está bloqueado. Sin embargo, existen varias formas de acceder a él. Esta tarea analizará cómo obtener una copia del archivo NTDS usando la herramienta ntdsutil y Diskshadow y, finalmente, cómo volcar el contenido del archivo. Es importante tener en cuenta que descifrar el archivo NTDS requiere una clave de inicio del sistema para intentar descifrar las credenciales aisladas LSA, que se almacenan en el SECURITY
sistema de archivos. Por lo tanto, también debemos volcar el archivo de seguridad que contiene todos los archivos necesarios para descifrar.
Ntdsutil es una utilidad de Windows para administrar y mantener configuraciones de Active Directory. Se puede utilizar en varios escenarios, como
Restaurar objetos eliminados en Active Directory.
Realizar el mantenimiento de la base de datos de AD.
Gestión de instantáneas de Active Directory.
Establezca las contraseñas de administrador del modo de restauración de servicios de directorio (DSRM).
Por lo general, esto se hace si no tiene credenciales disponibles pero tiene acceso de administrador al controlador de dominio. Por lo tanto, confiaremos en las utilidades de Windows para volcar el archivo NTDS y descifrarlo sin conexión. Como requisito, primero asumimos que tenemos acceso de administrador a un controlador de dominio.
Para volcar con éxito el contenido del archivo NTDS necesitamos los siguientes archivos:
El siguiente es un comando de PowerShell de una sola línea para volcar el archivo NTDS usando la herramienta Ntdsutil en el C:\temp
directorio.
Volviendo el contenido del archivo NTDS de la máquina víctima
Ahora, si revisamos elc:\temp
directorio, vemos dos carpetas: Active Directory y registro, que contienen los tres archivos que necesitamos. Transfiérelos a AttackBox y ejecuta el script secretsdump.py para extraer los hashes del archivo de memoria volcado.
Extraer hashes de NTDS localmente
En la sección anterior, analizamos cómo obtener hashes de la memoria sin credenciales en la mano. En esta tarea, mostraremos cómo volcar los hashes de un sistema y de un controlador de dominio de forma remota, lo que requiere credenciales, como contraseñas o hashes NTLM. También necesitamos credenciales para usuarios con acceso administrativo a un controlador de dominio o permisos especiales como se analiza en la sección DC Sync.
DC Sync es un ataque popular que se realiza dentro de un entorno de Active Directory para volcar credenciales de forma remota. Este ataque funciona cuando se ve comprometida una cuenta (cuenta especial con los permisos necesarios) o una cuenta de administrador de AD que tiene los siguientes permisos de AD:
Replicar cambios de directorio
Replicar todos los cambios de directorio
Replicar cambios de directorio en un conjunto filtrado
La sala de AD persistente utiliza la herramienta Mimikatz para realizar el ataque de sincronización de DC. Demostremos el ataque usando una herramienta diferente, como el script Impacket SecretsDump.
Realizar el ataque de sincronización DC
Expliquemos un poco más el comando.
el -just-dc
argumento es para extraer los datos NTDS.
es thm.red/AD_Admin_User
el usuario del dominio autenticado en el formato (dominio/usuario).
Tenga en cuenta que si estamos interesados en volcar solo los hashes NTLM, entonces podemos usar el -just-dc-ntlm
argumento de la siguiente manera:
El ataque de sincronización de DC para volcar hashes NTLM
Una vez que obtuvimos los hashes, podemos usarlos para que un usuario específico se haga pasar por él o descifrar el hash usando herramientas de descifrado, como hashcat
. Podemos usar el -m 1000
modo hashcat para descifrar los hashes NTLM de Windows de la siguiente manera:
Cracking the Hashes
Esta tarea explica cómo enumerar y obtener una contraseña de administrador local dentro del entorno de Active Directory si una función LAPS está configurada y habilitada.
Un sistema operativo Windows tiene una cuenta de administrador incorporada a la que se puede acceder mediante una contraseña. Cambiar contraseñas en un entorno Windows grande con muchas computadoras es un desafío. Por lo tanto, Microsoft implementó un método para cambiar las cuentas de administrador local en todas las estaciones de trabajo mediante Preferencias de política de grupo (GPP).
GPP es una herramienta que permite a los administradores crear políticas de dominio con credenciales integradas. Una vez implementado el GPP, se crean diferentes archivos XML en la carpeta SYSVOL. SYSVOL es un componente esencial de Active Directory y crea un directorio compartido en un volumen NTFS al que todos los usuarios de dominio autenticados pueden acceder con permiso de lectura.
En 2015, Microsoft eliminó el almacenamiento de la contraseña cifrada en la carpeta SYSVOL. Introdujo la solución de contraseña de administrador local (LAPS), que ofrece un enfoque mucho más seguro para administrar de forma remota la contraseña del administrador local.
El nuevo método incluye dos nuevos atributos (ms-mcs-AdmPwd y ms-mcs-AdmPwdExpirationTime) de objetos de computadora en Active Directory. El ms-mcs-AdmPwd
atributo contiene una contraseña de texto sin cifrar del administrador local, mientras que ms-mcs-AdmPwdExpirationTime
contiene el tiempo de vencimiento para restablecer la contraseña. LAPS utiliza admpwd.dll
para cambiar la contraseña del administrador local y actualizar el valor de ms-mcs-AdmPwd
.
La máquina virtual proporcionada tiene LAPS habilitado, así que comencemos a enumerarla. Primero, verificamos si LAPS está instalado en la máquina de destino, lo que se puede hacer verificando la admpwd.dll
ruta.
Enumeración para LAPS
El resultado confirma que tenemos LAPS en la máquina. Verifiquemos los comandos disponibles para usar con AdmPwd
cmdlets de la siguiente manera:
Listado de cmdlets de PowerShell disponibles para LAPS
A continuación, debemos encontrar qué unidad organizativa (OU) de AD tiene el atributo "Todos los derechos extendidos" que se ocupa de LAPS. Usaremos el cmdlet "Find-AdmPwdExtendedRights" para proporcionar la unidad organizativa correcta. Tenga en cuenta que la obtención de las unidades organizativas disponibles se puede realizar en el paso de enumeración. Nuestro objetivo de OU en este ejemplo es THMorg
. Puede utilizar el -Identity *
argumento para enumerar todas las unidades organizativas disponibles.
Encontrar usuarios con el atributo AdmPwdExtendedRights
El resultado muestra que el THMGroupReader
grupo THMorg
tiene el acceso correcto a LAPS. Revisemos el grupo y sus miembros.
Encontrar usuarios que pertenecen al grupo THMGroupReader
Descubrimos que el bk-admin
usuario es miembro de THMGroupReader
, por lo que para obtener la contraseña de LAPS, debemos comprometer o suplantar al usuario bk-admin. Después de comprometer al usuario correcto, podemos obtener la contraseña de LAPS usando Get-AdmPwdPassword
un cmdlet proporcionando a la máquina de destino LAPS habilitado.
Obtener la contraseña de LAPS con el usuario adecuado
En las tareas anteriores, se supone que ya teníamos acceso inicial a un sistema y estábamos intentando obtener credenciales de la memoria o de varios archivos dentro del sistema operativo Windows. En otros escenarios, es posible realizar ataques en la red de una víctima para obtener credenciales.
Hagamos una demostración rápida sobre el ataque. Primero, necesitamos encontrar una(s) cuenta(s) SPN y luego podemos enviar una solicitud para obtener un boleto TGS. Realizaremos el ataque Kerberoasting desde AttackBox utilizando el script de Python GetUserSPNs.py. ¡Recuerde utilizar la cuenta THM.red/thm con Passw0rd! como contraseña.
Enumeración de cuentas SPN
El comando anterior es sencillo: proporcionamos la dirección IP del controlador de dominio y el nombre de dominio\nombre de usuario. Luego, el script GetUserSPNs solicita la contraseña del usuario para recuperar la información requerida.
El resultado reveló que tenemos una cuenta SPN, svc-user. Una vez que encontramos al usuario SPN, podemos enviar una única solicitud para obtener un ticket TGS para el usuario srv usando el argumento -request-user.
Solicitar un Boleto TGS como Cuenta SPN
Ahora, es cuestión de descifrar el ticket TGS obtenido usando la herramienta HashCat usando el -m 13100
modo de la siguiente manera:
Descifrar el ticket TGS usando Hashcat
Intente replicar los pasos en la máquina virtual adjunta buscando el usuario de SPN y luego realizando el ataque Kerberoasting. Una vez que hayas obtenido el ticket, descifralo y responde la siguiente pregunta.
AS-REP Roasting es la técnica que permite al atacante recuperar hashes de contraseñas para usuarios de AD cuyas opciones de cuenta se han configurado en " No requerir autenticación previa de Kerberos". Esta opción se basa en el antiguo protocolo de autenticación Kerberos, que permite la autenticación sin contraseña. Una vez que obtengamos los hashes, podemos intentar descifrarlos sin conexión y, finalmente, si es descifrable, ¡obtendremos una contraseña!
La máquina virtual adjunta tiene uno de los usuarios de AD configurado con la configuración "No requiere autenticación previa de Kerberos". Antes de realizar el tostado AS-REP, necesitamos una lista de cuentas de dominio que deben recopilarse en el paso de enumeración. En nuestro caso, creamos una users.lst
lista en el directorio tmp. El siguiente es el contenido de nuestra lista, que debe recopilarse durante el proceso de enumeración.
Esta vez usaremos el script Impacket Get-NPUsers de la siguiente manera:
Realizar un ataque de tostado AS-REP contra la lista de usuarios
Especificamos la dirección IP del controlador de dominio con el -dc-ip
argumento y proporcionamos una lista de usuarios del dominio para comparar. Una vez que la herramienta encuentre al usuario correcto sin configuración de autenticación previa, generará el ticket.
Varias herramientas de ciberseguridad y piratería también permiten descifrar los TGT recopilados de Active Directory, incluidos Rubeus y Hashcat. Impacket GetNPUsers tiene la opción de exportar tickets en formato John o hashcat usando el -format
argumento.
El ataque SMB Relay abusa del mecanismo de autenticación NTLM (protocolo de desafío-respuesta NTLM). El atacante realiza un ataque Man-in-the-Middle para monitorear y capturar paquetes SMB y extraer hashes. Para que este ataque funcione, la firma SMB debe estar desactivada. La firma SMB es una verificación de seguridad de integridad y garantiza que la comunicación se realice entre fuentes confiables.
La resolución de nombres de multidifusión local de enlace (LLMNR) y el servicio de nombres NetBIOS (NBT-NS) ayudan a las máquinas de la red local a encontrar la máquina correcta si falla el DNS. Por ejemplo, supongamos que una máquina dentro de la red intenta comunicarse sin un registro DNS existente (el DNS no se resuelve). En ese caso, la máquina envía mensajes de multidifusión a todas las máquinas de la red solicitando la dirección correcta a través de LLMNR o NBT-NS.
El objetivo final de los ataques de retransmisión SMB y de envenenamiento LLMNR/NBNS es capturar hashes NTLM de autenticación para una víctima, lo que ayuda a obtener acceso a la cuenta o máquina de la víctima.
En esta sala, discutimos los diversos enfoques para obtener las credenciales de los usuarios, incluida la computadora local y el controlador de dominio, que concluyen lo siguiente:
Hablamos sobre el acceso a la memoria de Windows, el volcado de un proceso LSASS y la extracción de hashes de autenticación.
Discutimos el Administrador de credenciales de Windows y los métodos para extraer contraseñas.
Introdujimos la función LAPS de Windows y la enumeramos para encontrar el usuario y el destino correctos para extraer contraseñas.
Introdujimos ataques AD que llevaron a deshacerse y extraer las credenciales de los usuarios.
Puede que valga la pena probar las siguientes herramientas para escanear una máquina de destino (archivos, memoria, etc.) en busca de información confidencial. Sugerimos probarlos en la etapa de enumeración.
Los atacantes pueden buscar credenciales en una máquina comprometida en sistemas de archivos locales o remotos. Los archivos de texto sin cifrar pueden incluir información confidencial creada por un usuario, que contiene contraseñas, claves privadas, etc. El marco MITRE ATT&CK lo define como Credenciales no seguras: Credenciales en archivos ( ).
Las aplicaciones utilizan archivos de bases de datos para leer o escribir ajustes, configuraciones o credenciales. Los archivos de bases de datos generalmente se almacenan localmente en los sistemas operativos Windows. Estos archivos son un excelente objetivo para comprobar y buscar credenciales. Para obtener más información, sugerimos consultar la sala THM: . Contiene un ejemplo de extracción de credenciales del archivo de base de datos local de McAfee Endpoint.
Tenemos un ejemplo de caso de uso para explotar a los usuarios mediante pulsaciones de teclas usando Metasploit en otra sala de THM. Para obtener más información, debe consultar THM (Tarea 5).
El primer método consiste en utilizar la función integrada de Metasploit Framework, hashdump, para obtener una copia del contenido de la base de datos SAM. El marco Metasploit utiliza la inyección de código en memoria en el proceso LSASS.exe para volcar hashes de copia. Para obtener más información sobre hashdump, puede visitar el blog . ¡Discutiremos el volcado de credenciales directamente desde el proceso LSASS.exe en otra tarea!
El otro enfoque utiliza el servicio de instantáneas de volumen de Microsoft, que ayuda a realizar una copia de seguridad del volumen mientras las aplicaciones leen/escriben en los volúmenes. Puede visitar la para obtener más información sobre el servicio.
Como se mencionó anteriormente, la base de datos SAM está cifrada con algoritmos de cifrado o Para descifrarlo, necesitamos una clave de descifrado que también está almacenada en el sistema de archivos en formato c:\Windows\System32\Config\system
.
Por lo tanto, el proceso LSASS es un objetivo jugoso para los equipos rojos porque almacena información confidencial sobre las cuentas de los usuarios. Comúnmente se abusa del LSASS para volcar credenciales para escalar privilegios, robar datos o moverse lateralmente. Por suerte para nosotros, si tenemos privilegios de administrador, podemos volcar la memoria de proceso de LSASS. El sistema Windows nos permite crear un archivo de volcado, una instantánea de un proceso determinado. Esto se puede hacer con el acceso al escritorio (GUI) o con el símbolo del sistema. Este ataque se define en el marco MITRE ATT&CK como " " .
es una herramienta conocida que se utiliza para extraer contraseñas, hashes, PIN y tickets Kerberos de la memoria mediante diversas técnicas. Mimikatz es una herramienta posterior a la explotación que permite otros ataques útiles , como pass-the-hash, pass-the-ticket o creación de tickets Golden Kerberos . Mimikatz se ocupa de la memoria del sistema operativo para acceder a la información. Por lo tanto, requiere privilegios de administrador y del sistema para poder volcar la memoria y extraer las credenciales.
VaultCmd no puede mostrar la contraseña, pero podemos confiar en otros scripts de PowerShell como , que ya está incluido en la VM adjunta.
Para obtener más información sobre Ntdsutil, puede visitar la de documentación de Microsoft .
Un adversario aprovecha estas configuraciones para realizar la replicación de dominio, comúnmente conocida como "DC Sync" o Domain Controller Sync. Para obtener más información sobre el ataque DC Sync, puede visitar la sala THM (Tarea 2).
El problema era que los archivos XML relevantes de GPP contenían una contraseña cifrada mediante cifrado AES de 256 bits. En ese momento, el cifrado era lo suficientemente bueno hasta que Microsoft de alguna manera publicó su clave privada en . Dado que los usuarios del dominio pueden leer el contenido de la carpeta SYSVOL, resulta fácil descifrar las contraseñas almacenadas. Una de las herramientas para descifrar la contraseña cifrada de SYSVOL es .
Es importante tener en cuenta que en un entorno AD del mundo real, LAPS está habilitado solo en máquinas específicas. Por lo tanto, debe enumerar y encontrar la computadora de destino correcta, así como la cuenta de usuario correcta, para poder obtener la contraseña de LAPS. Hay muchos scripts para ayudar con esto, pero incluimos el script C:\Tool
PowerShell para probarlo.
Esta tarea presentará brevemente algunos de los ataques de Windows y AD que se pueden utilizar para obtener los hashes. Antes de profundizar en más detalles sobre los ataques AD, sugerimos familiarizarse con y el New Technology LAN Manager (NTLM), un conjunto de protocolos de seguridad utilizados para autenticar usuarios.
Kerberoasting es un ataque de AD común para obtener tickets de AD que ayuda con la persistencia. Para que este ataque funcione, un adversario debe tener acceso a cuentas SPN (nombre principal del servicio) , como usuario de IIS, MSSQL, etc. El ataque Kerberoasting implica solicitar un ticket de concesión de tickets (TGT) y un servicio de concesión de tickets (TGS). El objetivo final de este ataque es permitir la escalada de privilegios y el movimiento lateral de la red. Para obtener más detalles sobre el ataque, puede visitar la sala THM (Tarea 3).
Sugerimos consultar la sala THM para obtener más información sobre el ataque de retransmisión SMB.
El envenenamiento NBNS/LLMNR ocurre cuando un atacante falsifica una fuente autorizada en la red y responde al tráfico de resolución de nombres de multidifusión local de enlace (LLMNR) y servicio de nombres NetBIOS (NBT-NS) al host solicitado con un servicio de identificación de host. Si desea obtener más información sobre el ataque, le sugerimos consultar la sala THM .