Enumeración de controles de seguridad

Tras establecernos, podríamos usar este acceso para comprender el estado defensivo de los hosts, enumerar el dominio con más detalle ahora que nuestra visibilidad no está tan restringida y, si es necesario, optimizar la infraestructura mediante herramientas nativas en los hosts. Es importante comprender los controles de seguridad implementados en una organización, ya que los productos utilizados pueden afectar las herramientas que utilizamos para la enumeración de AD, así como la explotación y la postexplotación. Comprender las protecciones a las que podemos enfrentarnos nos ayudará a tomar decisiones informadas sobre el uso de herramientas y 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 los controles de seguridad de forma uniforme. Es posible que se apliquen políticas a ciertas máquinas que dificulten la enumeración y que no se apliquen a otras.

Nota: Esta sección pretende mostrar los posibles controles de seguridad implementados en un dominio, pero no cuenta con un componente interactivo. Enumerar y eludir los controles de seguridad queda fuera del alcance de este módulo, pero queríamos ofrecer una visión general de las posibles tecnologías que podríamos encontrar durante una evaluación.

Windows Defender

Windows Defender (o Microsoft Defender tras la actualización de mayo de 2020 de Windows 10) ha mejorado considerablemente con los años y, de forma predeterminada, bloquea herramientas como [nombre del sistema] PowerView. Existen maneras de evitar estas protecciones, que se explicarán en otros módulos. Podemos usar el cmdlet integrado de PowerShell Get-MpComputerStatus para obtener el estado actual de Defender. Aquí, vemos que el RealTimeProtectionEnabledparámetro está establecido en [nombre del Truesistema], lo que significa que Defender está habilitado en el sistema.

Comprobación del estado de Defender con Get-MpComputerStatus

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                  :

Bloqueador de aplicaciones

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 entorno contra malware dañino y software no aprobado que no se ajusta a las necesidades comerciales específicas de una organización. AppLocker es la solución de listas blancas de aplicaciones de Microsoft y permite a los administradores de sistemas controlar qué aplicaciones y archivos pueden ejecutar los usuarios. Proporciona un control granular sobre ejecutables, scripts, archivos de instalación de Windows, DLL, aplicaciones empaquetadas e instaladores de aplicaciones empaquetados. Es común que las organizaciones bloqueen cmd.exe y PowerShell.exe, así como el acceso de escritura a ciertos directorios, pero esto se puede evitar. Las organizaciones también suelen centrarse en bloquear el PowerShell.exeejecutable, pero olvidan otras ubicaciones de ejecutables de PowerShell, como %SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exeo PowerShell_ISE.exe. Podemos ver que esto es así en las AppLockerreglas que se muestran a continuación. A todos los usuarios del dominio se les impide ejecutar el ejecutable de PowerShell de 64 bits ubicado en:

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe

Así que podemos simplemente llamarlo desde otras ubicaciones. A veces, nos encontramos con AppLockerpolíticas más estrictas que requieren más creatividad para eludirlas. Estas formas se abordarán en otros módulos.

Uso de cmdlet 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

Modo lenguaje restringido en PowerShell

El Modo de Lenguaje Restringido de PowerShell bloquea muchas de las funciones necesarias para usar PowerShell eficazmente, como el bloqueo de objetos COM, la admisión exclusiva de tipos .NET aprobados, flujos de trabajo basados ​​en XAML, clases de PowerShell y más. Podemos determinar rápidamente si estamos en Modo de Lenguaje Completo o en Modo de Lenguaje Restringido.

Enumeración del modo de idioma

PS C:\htb> $ExecutionContext.SessionState.LanguageMode

ConstrainedLanguage

Vueltas

La Solución de Contraseñas de Administrador Local de Microsoft (LAPS) se utiliza para aleatorizar y rotar las contraseñas de administrador local en hosts Windows y evitar la transferencia lateral. Podemos enumerar qué usuarios del dominio pueden leer la contraseña LAPS configurada para equipos con LAPS instalado y cuáles no. LAPSToolkit facilita enormemente esta tarea con varias funciones. Una de ellas es el análisis ExtendedRightsde todos los equipos con LAPS habilitado. Esto mostrará los grupos específicamente delegados para leer contraseñas LAPS, que suelen ser usuarios de grupos protegidos. Una cuenta que ha unido un equipo a un dominio recibe acceso All Extended Rightsa través de ese host, y este derecho le otorga la capacidad de leer contraseñas. La enumeración puede mostrar una cuenta de usuario que puede leer la contraseña LAPS en un host. Esto puede ayudarnos a identificar usuarios de AD específicos que pueden leer contraseñas LAPS.

Uso de 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

Se Find-AdmPwdExtendedRightsverifican los derechos en cada computadora con LAPS habilitado para cualquier grupo con acceso de lectura y usuarios con "Todos los derechos extendidos". Estos usuarios pueden leer contraseñas de LAPS y podrían estar menos protegidos que los usuarios de grupos delegados, por lo que conviene verificarlo.

Uso de Find-AdmPwdExtendedRights

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

Podemos utilizar la Get-LAPSComputersfunción para buscar ordenadores que tengan habilitado LAPS cuando caduquen las contraseñas, e incluso las contraseñas aleatorias en texto claro si nuestro usuario tiene acceso.

Uso de Get-LAPSComputers

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, disponemos de otras técnicas útiles de enumeración de AD para determinar las protecciones implementadas. Conviene familiarizarse con todas estas herramientas y técnicas, y añadirlas a su arsenal de opciones. Ahora, continuemos con nuestra enumeración del dominio INLANEFREIGHT.LOCAL desde una perspectiva de credenciales.

Last updated