Page cover

☁️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.

Nota: Esta sección tiene como objetivo mostrar los posibles controles de seguridad implementados dentro de un dominio, pero no tiene un componente interactivo. Enumerar y eludir los controles de seguridad están fuera del alcance de este módulo, pero queríamos brindar una descripción general de las posibles tecnologías que podemos encontrar durante una evaluación.


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?