Windows Security Controls
Last updated
Last updated
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
Usa Trickest para construir y automatizar flujos de trabajo fácilmente, impulsados por las herramientas comunitarias más avanzadas del mundo. Obtén acceso hoy:
Una lista blanca de aplicaciones es una lista de aplicaciones de software o ejecutables aprobados que se permiten en un sistema. El objetivo es proteger el entorno de malware dañino y software no aprobado que no se alinea con las necesidades comerciales específicas de una organización.
AppLocker es la solución de lista blanca de aplicaciones de Microsoft y otorga a los administradores del sistema control sobre qué aplicaciones y archivos pueden ejecutar los usuarios. Proporciona control granular sobre ejecutables, scripts, archivos de instalación de Windows, DLLs, aplicaciones empaquetadas y instaladores de aplicaciones empaquetadas. Es común que las organizaciones bloqueen cmd.exe y PowerShell.exe y el acceso de escritura a ciertos directorios, pero todo esto se puede eludir.
Verifica qué archivos/extensiones están en la lista negra/lista blanca:
Esta ruta del registro contiene las configuraciones y políticas aplicadas por AppLocker, proporcionando una forma de revisar el conjunto actual de reglas impuestas en el sistema:
HKLM\Software\Policies\Microsoft\Windows\SrpV2
Carpetas escribibles útiles para eludir la política de AppLocker: Si AppLocker permite ejecutar cualquier cosa dentro de C:\Windows\System32
o C:\Windows
, hay carpetas escribibles que puedes usar para eludir esto.
Los binarios comúnmente confiables "LOLBAS's" también pueden ser útiles para eludir AppLocker.
Reglas mal escritas también podrían ser eludidas
Por ejemplo, <FilePathCondition Path="%OSDRIVE%*\allowed*"/>
, puedes crear una carpeta llamada allowed
en cualquier lugar y será permitida.
Las organizaciones también suelen centrarse en bloquear el ejecutable %System32%\WindowsPowerShell\v1.0\powershell.exe
, pero se olvidan de las otras ubicaciones ejecutables de PowerShell como %SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
o PowerShell_ISE.exe
.
La aplicación de DLL rara vez está habilitada debido a la carga adicional que puede poner en un sistema y la cantidad de pruebas requeridas para asegurar que nada se rompa. Así que usar DLLs como puertas traseras ayudará a eludir AppLocker.
Puedes usar ReflectivePick o SharpPick para ejecutar código de Powershell en cualquier proceso y eludir AppLocker. Para más información consulta: https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode.
Las credenciales locales están presentes en este archivo, las contraseñas están hashadas.
Las credenciales (hashadas) están guardadas en la memoria de este subsistema por razones de inicio de sesión único. LSA administra la política de seguridad local (política de contraseñas, permisos de usuarios...), autenticación, tokens de acceso... LSA será quien verifique las credenciales proporcionadas dentro del archivo SAM (para un inicio de sesión local) y hable con el controlador de dominio para autenticar a un usuario de dominio.
Las credenciales están guardadas dentro del proceso LSASS: tickets de Kerberos, hashes NT y LM, contraseñas fácilmente descifradas.
LSA podría guardar en disco algunas credenciales:
Contraseña de la cuenta de computadora del Active Directory (controlador de dominio inaccesible).
Contraseñas de las cuentas de servicios de Windows.
Contraseñas para tareas programadas.
Más (contraseña de aplicaciones de IIS...)
Es la base de datos del Active Directory. Solo está presente en Controladores de Dominio.
Microsoft Defender es un antivirus que está disponible en Windows 10 y Windows 11, y en versiones de Windows Server. Bloquea herramientas comunes de pentesting como WinPEAS
. Sin embargo, hay formas de eludir estas protecciones.
Para verificar el estado de Defender puedes ejecutar el cmdlet de PS Get-MpComputerStatus
(verifica el valor de RealTimeProtectionEnabled
para saber si está activo):
Para enumerarlo también podrías ejecutar:
EFS asegura archivos a través de la encriptación, utilizando una clave simétrica conocida como la Clave de Encriptación de Archivos (FEK). Esta clave se encripta con la clave pública del usuario y se almacena dentro del flujo de datos alternativo $EFS del archivo encriptado. Cuando se necesita la desencriptación, se utiliza la clave privada correspondiente del certificado digital del usuario para desencriptar la FEK del flujo $EFS. Más detalles se pueden encontrar aquí.
Escenarios de desencriptación sin iniciación del usuario incluyen:
Cuando archivos o carpetas se mueven a un sistema de archivos no EFS, como FAT32, se desencriptan automáticamente.
Archivos encriptados enviados a través de la red mediante el protocolo SMB/CIFS se desencriptan antes de la transmisión.
Este método de encriptación permite acceso transparente a archivos encriptados para el propietario. Sin embargo, simplemente cambiar la contraseña del propietario e iniciar sesión no permitirá la desencriptación.
Puntos Clave:
EFS utiliza una FEK simétrica, encriptada con la clave pública del usuario.
La desencriptación emplea la clave privada del usuario para acceder a la FEK.
La desencriptación automática ocurre bajo condiciones específicas, como copiar a FAT32 o transmisión por red.
Los archivos encriptados son accesibles para el propietario sin pasos adicionales.
Verifique si un usuario ha utilizado este servicio comprobando si existe esta ruta: C:\users\<username>\appdata\roaming\Microsoft\Protect
Verifique quién tiene acceso al archivo usando cipher /c <file>
También puede usar cipher /e
y cipher /d
dentro de una carpeta para encriptar y desencriptar todos los archivos
Este método requiere que el usuario víctima esté ejecutando un proceso dentro del host. Si ese es el caso, usando sesiones de meterpreter
puedes suplantar el token del proceso del usuario (impersonate_token
de incognito
). O simplemente podrías migrar
al proceso del usuario.
Microsoft desarrolló Group Managed Service Accounts (gMSA) para simplificar la gestión de cuentas de servicio en infraestructuras de TI. A diferencia de las cuentas de servicio tradicionales que a menudo tienen habilitada la configuración de "La contraseña nunca expira", los gMSA ofrecen una solución más segura y manejable:
Gestión Automática de Contraseñas: los gMSA utilizan una contraseña compleja de 240 caracteres que cambia automáticamente de acuerdo con la política del dominio o computadora. Este proceso es manejado por el Servicio de Distribución de Claves (KDC) de Microsoft, eliminando la necesidad de actualizaciones manuales de contraseñas.
Seguridad Mejorada: estas cuentas son inmunes a bloqueos y no pueden ser utilizadas para inicios de sesión interactivos, mejorando su seguridad.
Soporte para Múltiples Hosts: los gMSA pueden ser compartidos entre múltiples hosts, lo que los hace ideales para servicios que se ejecutan en múltiples servidores.
Capacidad de Tareas Programadas: a diferencia de las cuentas de servicio administradas, los gMSA admiten la ejecución de tareas programadas.
Gestión Simplificada de SPN: el sistema actualiza automáticamente el Nombre Principal del Servicio (SPN) cuando hay cambios en los detalles de sAMaccount de la computadora o en el nombre DNS, simplificando la gestión de SPN.
Las contraseñas para los gMSA se almacenan en la propiedad LDAP msDS-ManagedPassword y se restablecen automáticamente cada 30 días por los Controladores de Dominio (DC). Esta contraseña, un blob de datos encriptados conocido como MSDS-MANAGEDPASSWORD_BLOB, solo puede ser recuperada por administradores autorizados y los servidores en los que están instalados los gMSA, asegurando un entorno seguro. Para acceder a esta información, se requiere una conexión segura como LDAPS, o la conexión debe estar autenticada con 'Sealing & Secure'.
Puedes leer esta contraseña con GMSAPasswordReader:
Encuentra más información en esta publicación
También, consulta esta página web sobre cómo realizar un ataque de retransmisión NTLM para leer la contraseña de gMSA.
La Solución de Contraseña de Administrador Local (LAPS), disponible para descargar desde Microsoft, permite la gestión de contraseñas de Administrador local. Estas contraseñas, que son aleatorias, únicas y cambiadas regularmente, se almacenan de forma central en Active Directory. El acceso a estas contraseñas está restringido a través de ACLs a usuarios autorizados. Con los permisos suficientes otorgados, se proporciona la capacidad de leer contraseñas de administrador local.
LAPSPowerShell Modo de Lenguaje Restringido bloquea muchas de las características necesarias para usar PowerShell de manera efectiva, como bloquear objetos COM, permitiendo solo tipos .NET aprobados, flujos de trabajo basados en XAML, clases de PowerShell, y más.
En Windows actual, esa elusión no funcionará, pero puedes usar PSByPassCLM.
Para compilarlo, es posible que necesites Agregar una Referencia -> Examinar -> Examinar -> agregar C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0\31bf3856ad364e35\System.Management.Automation.dll
y cambiar el proyecto a .Net4.5.
Puedes usar ReflectivePick o SharpPick para ejecutar código de Powershell en cualquier proceso y eludir el modo restringido. Para más información, consulta: https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode.
Por defecto, está configurada como restringida. Principales formas de eludir esta política:
More can be found here
Es la API que se puede usar para autenticar usuarios.
El SSPI se encargará de encontrar el protocolo adecuado para dos máquinas que desean comunicarse. El método preferido para esto es Kerberos. Luego, el SSPI negociará qué protocolo de autenticación se utilizará, estos protocolos de autenticación se llaman Proveedor de Soporte de Seguridad (SSP), se encuentran dentro de cada máquina Windows en forma de un DLL y ambas máquinas deben soportar el mismo para poder comunicarse.
Kerberos: El preferido
%windir%\Windows\System32\kerberos.dll
NTLMv1 y NTLMv2: Razones de compatibilidad
%windir%\Windows\System32\msv1_0.dll
Digest: Servidores web y LDAP, contraseña en forma de un hash MD5
%windir%\Windows\System32\Wdigest.dll
Schannel: SSL y TLS
%windir%\Windows\System32\Schannel.dll
Negotiate: Se utiliza para negociar el protocolo a usar (Kerberos o NTLM siendo Kerberos el predeterminado)
%windir%\Windows\System32\lsasrv.dll
Control de Cuentas de Usuario (UAC) es una característica que habilita un mensaje de consentimiento para actividades elevadas.
UAC - User Account ControlUsa Trickest para construir y automatizar flujos de trabajo fácilmente impulsados por las herramientas comunitarias más avanzadas del mundo. Obtén acceso hoy:
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)