☁️AD: Enumeración de controles de seguridad
Una vez que hayamos logrado establecernos, podríamos usar este acceso para tener una idea del estado defensivo de los hosts, enumerar más el dominio ahora que nuestra visibilidad no está tan restringida y utilizar herramientas que existen de forma nativa en los hosts.
Es importante comprender los controles de seguridad implementados en una organización, ya que los productos en uso pueden afectar las herramientas que utilizamos para nuestra enumeración de AD, así como la explotación y la postexplotación. Comprender las protecciones a las que podemos enfrentarnos nos ayudará a informar nuestras decisiones con respecto al uso de herramientas y nos ayudará a planificar nuestro curso de acción, ya sea evitando o modificando ciertas herramientas. Algunas organizaciones tienen protecciones más estrictas que otras, y algunas no aplican controles de seguridad de manera uniforme en todas partes. Es posible que se apliquen políticas a ciertas máquinas que pueden dificultar nuestra enumeración y que no se apliquen en otras máquinas.
Windows Defender
Windows Defender (o Microsoft Defender después de la actualización de Windows 10 de mayo de 2020) ha mejorado enormemente a lo largo de los años y, de forma predeterminada, bloqueará herramientas como PowerView
. Hay formas de eludir estas protecciones. Estas formas se cubrirán en otros módulos. Podemos usar el cmdlet integrado de PowerShell Get-MpComputerStatus para obtener el estado actual de Defender. Aquí podemos ver que el parámetro RealTimeProtectionEnabled
está configurado en True
, lo que significa que Defender está habilitado en el sistema.
Comprobar el estado de Defender
PS C:\htb> Get-MpComputerStatus
AMEngineVersion : 1.1.17400.5
AMProductVersion : 4.10.14393.0
AMServiceEnabled : True
AMServiceVersion : 4.10.14393.0
AntispywareEnabled : True
AntispywareSignatureAge : 1
AntispywareSignatureLastUpdated : 9/2/2020 11:31:50 AM
AntispywareSignatureVersion : 1.323.392.0
AntivirusEnabled : True
AntivirusSignatureAge : 1
AntivirusSignatureLastUpdated : 9/2/2020 11:31:51 AM
AntivirusSignatureVersion : 1.323.392.0
BehaviorMonitorEnabled : False
ComputerID : 07D23A51-F83F-4651-B9ED-110FF2B83A9C
ComputerState : 0
FullScanAge : 4294967295
FullScanEndTime :
FullScanStartTime :
IoavProtectionEnabled : False
LastFullScanSource : 0
LastQuickScanSource : 2
NISEnabled : False
NISEngineVersion : 0.0.0.0
NISSignatureAge : 4294967295
NISSignatureLastUpdated :
NISSignatureVersion : 0.0.0.0
OnAccessProtectionEnabled : False
QuickScanAge : 0
QuickScanEndTime : 9/3/2020 12:50:45 AM
QuickScanStartTime : 9/3/2020 12:49:49 AM
RealTimeProtectionEnabled : True
RealTimeScanDirection : 0
PSComputerName :
AppLocker
Una lista blanca de aplicaciones es una lista de aplicaciones de software o ejecutables aprobados que pueden estar presentes y ejecutarse en un sistema. El objetivo es proteger el medio ambiente del malware dañino y del 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 brinda 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 escriban el acceso a ciertos directorios, pero todo esto se puede evitar. Las organizaciones también suelen centrarse en bloquear el ejecutable PowerShell.exe
, pero se olvidan de las otras ubicaciones de ejecutables de PowerShell , como %SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
o PowerShell_ISE.exe
. Podemos ver que este es el caso en las reglas de AppLocker
que se muestran a continuación. Todos los usuarios del dominio no pueden ejecutar el ejecutable de PowerShell de 64 bits ubicado en:
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
Entonces, simplemente podemos llamarlo desde otras ubicaciones. A veces nos topamos con políticas de AppLocker
más estrictas que requieren más creatividad para eludirlas. Estas formas se cubrirán en otros módulos.
Uso de Get-AppLockerPolicy
PS C:\htb> Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections
PathConditions : {%SYSTEM32%\WINDOWSPOWERSHELL\V1.0\POWERSHELL.EXE}
PathExceptions : {}
PublisherExceptions : {}
HashExceptions : {}
Id : 3d57af4a-6cf8-4e5b-acfc-c2c2956061fa
Name : Block PowerShell
Description : Blocks Domain Users from using PowerShell on workstations
UserOrGroupSid : S-1-5-21-2974783224-3764228556-2640795941-513
Action : Deny
PathConditions : {%PROGRAMFILES%\*}
PathExceptions : {}
PublisherExceptions : {}
HashExceptions : {}
Id : 921cc481-6e17-4653-8f75-050b80acca20
Name : (Default Rule) All files located in the Program Files folder
Description : Allows members of the Everyone group to run applications that are located in the Program Files folder.
UserOrGroupSid : S-1-1-0
Action : Allow
PathConditions : {%WINDIR%\*}
PathExceptions : {}
PublisherExceptions : {}
HashExceptions : {}
Id : a61c8b2c-a319-4cd0-9690-d2177cad7b51
Name : (Default Rule) All files located in the Windows folder
Description : Allows members of the Everyone group to run applications that are located in the Windows folder.
UserOrGroupSid : S-1-1-0
Action : Allow
PathConditions : {*}
PathExceptions : {}
PublisherExceptions : {}
HashExceptions : {}
Id : fd686d83-a829-4351-8ff4-27c7de5755d2
Name : (Default Rule) All files
Description : Allows members of the local Administrators group to run all applications.
UserOrGroupSid : S-1-5-32-544
Action : Allow
PowerShell Constrained Language Mode
El modo de lenguaje restringido de PowerShell bloquea muchas de las funciones necesarias para usar PowerShell de manera eficaz, como bloquear objetos COM, permitir solo tipos .NET aprobados, flujos de trabajo basados en XAML, clases de PowerShell y más. Podemos enumerar rápidamente si estamos en modo de lenguaje completo o en modo de lenguaje restringido.
Enumeración del modo de lenguaje
PS C:\htb> $ExecutionContext.SessionState.LanguageMode
ConstrainedLanguage
LAPS
Local Administrator Password Solution (LAPS) de Microsoft se utiliza para aleatorizar y rotar las contraseñas de administrador local en hosts de Windows y evitar el movimiento lateral. Podemos enumerar qué usuarios de dominio pueden leer la contraseña de LAPS configurada para máquinas con LAPS instalado y qué máquinas no tienen LAPS instalado.
LAPSToolkit facilita enormemente esto con varias funciones. Uno es el análisis de ExtendedRights
en todas las computadoras con LAPS habilitado. Esto mostrará grupos específicamente delegados para leer contraseñas LAPS, que a menudo son usuarios de grupos protegidos. Una cuenta que ha unido una computadora a un dominio recibe All Extended Rights
sobre ese host y este derecho le otorga a la cuenta la capacidad de leer contraseñas. La enumeración puede mostrar una cuenta de usuario que puede leer la contraseña de LAPS en un host. Esto puede ayudarnos a dirigirnos a usuarios de AD específicos que puedan leer contraseñas de LAPS.
Find-LAPSDelegatedGroups
PS C:\htb> Find-LAPSDelegatedGroups
OrgUnit Delegated Groups
------- ----------------
OU=Servers,DC=INLANEFREIGHT,DC=LOCAL INLANEFREIGHT\Domain Admins
OU=Servers,DC=INLANEFREIGHT,DC=LOCAL INLANEFREIGHT\LAPS Admins
OU=Workstations,DC=INLANEFREIGHT,DC=LOCAL INLANEFREIGHT\Domain Admins
OU=Workstations,DC=INLANEFREIGHT,DC=LOCAL INLANEFREIGHT\LAPS Admins
OU=Web Servers,OU=Servers,DC=INLANEFREIGHT,DC=LOCAL INLANEFREIGHT\Domain Admins
OU=Web Servers,OU=Servers,DC=INLANEFREIGHT,DC=LOCAL INLANEFREIGHT\LAPS Admins
OU=SQL Servers,OU=Servers,DC=INLANEFREIGHT,DC=LOCAL INLANEFREIGHT\Domain Admins
OU=SQL Servers,OU=Servers,DC=INLANEFREIGHT,DC=LOCAL INLANEFREIGHT\LAPS Admins
OU=File Servers,OU=Servers,DC=INLANEFREIGHT,DC=L... INLANEFREIGHT\Domain Admins
OU=File Servers,OU=Servers,DC=INLANEFREIGHT,DC=L... INLANEFREIGHT\LAPS Admins
OU=Contractor Laptops,OU=Workstations,DC=INLANEF... INLANEFREIGHT\Domain Admins
OU=Contractor Laptops,OU=Workstations,DC=INLANEF... INLANEFREIGHT\LAPS Admins
OU=Staff Workstations,OU=Workstations,DC=INLANEF... INLANEFREIGHT\Domain Admins
OU=Staff Workstations,OU=Workstations,DC=INLANEF... INLANEFREIGHT\LAPS Admins
OU=Executive Workstations,OU=Workstations,DC=INL... INLANEFREIGHT\Domain Admins
OU=Executive Workstations,OU=Workstations,DC=INL... INLANEFREIGHT\LAPS Admins
OU=Mail Servers,OU=Servers,DC=INLANEFREIGHT,DC=L... INLANEFREIGHT\Domain Admins
OU=Mail Servers,OU=Servers,DC=INLANEFREIGHT,DC=L... INLANEFREIGHT\LAPS Admins
Find-AdmPwdExtendedRights
El comando Find-AdmPwdExtendedRights
verifica los derechos en cada computadora con LAPS habilitado para cualquier grupo con acceso de lectura y usuarios con "Todos los derechos extendidos". Los usuarios con "Todos los derechos extendidos" pueden leer contraseñas de LAPS y pueden estar menos protegidos que los usuarios en grupos delegados, por lo que vale la pena verificar esto.
PS C:\htb> Find-AdmPwdExtendedRights
ComputerName Identity Reason
------------ -------- ------
EXCHG01.INLANEFREIGHT.LOCAL INLANEFREIGHT\Domain Admins Delegated
EXCHG01.INLANEFREIGHT.LOCAL INLANEFREIGHT\LAPS Admins Delegated
SQL01.INLANEFREIGHT.LOCAL INLANEFREIGHT\Domain Admins Delegated
SQL01.INLANEFREIGHT.LOCAL INLANEFREIGHT\LAPS Admins Delegated
WS01.INLANEFREIGHT.LOCAL INLANEFREIGHT\Domain Admins Delegated
WS01.INLANEFREIGHT.LOCAL INLANEFREIGHT\LAPS Admins Delegated
Get-LAPSComputers
Podemos utilizar la función Get-LAPSComputers
para buscar equipos que tengan LAPS habilitado cuando las contraseñas caduquen, e incluso las contraseñas aleatorias en texto claro si nuestro usuario tiene acceso.
PS C:\htb> Get-LAPSComputers
ComputerName Password Expiration
------------ -------- ----------
DC01.INLANEFREIGHT.LOCAL 6DZ[+A/[]19d$F 08/26/2020 23:29:45
EXCHG01.INLANEFREIGHT.LOCAL oj+2A+[hHMMtj, 09/26/2020 00:51:30
SQL01.INLANEFREIGHT.LOCAL 9G#f;p41dcAe,s 09/26/2020 00:30:09
WS01.INLANEFREIGHT.LOCAL TCaG-F)3No;l8C 09/26/2020 00:46:04
Conclusión
Como hemos visto en esta sección, hay otras técnicas de enumeración de AD que nos resultan útiles para determinar qué protecciones están implementadas. Vale la pena familiarizarse con todas estas herramientas y técnicas, y agregarlas a su arsenal de opciones. Ahora, continuemos con nuestra enumeración del dominio INLANEFREIGHT.LOCAL desde un punto de vista de credenciales.
Última actualización
¿Te fue útil?