En cualquier situación, ya sea en nuestra vida diaria o durante un proyecto como una prueba de penetración de red, siempre es importante orientarnos en el espacio y el tiempo. No podemos funcionar y reaccionar de manera efectiva sin comprender nuestro entorno actual. Necesitamos esta información para tomar decisiones informadas sobre nuestros próximos pasos para operar de manera proactiva en lugar de reactiva. Cuando aterrizamos en un sistema Windows o Linux con la intención de escalar privilegios a continuación, hay varias cosas que siempre debemos buscar para planificar nuestros próximos movimientos. Es posible que encontremos otros hosts a los que podamos acceder directamente, protecciones implementadas que deban eludirse o descubramos que ciertas herramientas no funcionarán contra el sistema en cuestión.
Información de la red
La recopilación de información de red es una parte crucial de nuestra enumeración. Podemos descubrir que el host tiene una conexión dual y que comprometer el host puede permitirnos movernos lateralmente a otra parte de la red a la que no podíamos acceder anteriormente. La conexión dual significa que el host o servidor pertenece a dos o más redes diferentes y, en la mayoría de los casos, tiene varias interfaces de red físicas o virtuales. Siempre debemos consultar las tablas de enrutamiento para ver información sobre la red local y las redes que la rodean. También podemos recopilar información sobre el dominio local (si el host es parte de un entorno de Active Directory), incluidas las direcciones IP de los controladores de dominio. También es importante utilizar el comando arp para ver el caché ARP de cada interfaz y ver otros hosts con los que el host se ha comunicado recientemente. Esto podría ayudarnos con el movimiento lateral después de obtener las credenciales. Podría ser un buen indicador de a qué hosts se están conectando los administradores a través de RDP o WinRM desde este host.
Esta información de red puede ayudarnos directa o indirectamente con la escalada de privilegios locales. Puede llevarnos por otro camino hacia un sistema al que podemos acceder o en el que podemos escalar privilegios o revelar información que podemos usar para el movimiento lateral para ampliar nuestro acceso después de escalar privilegios en el sistema actual.
La mayoría de los entornos modernos cuentan con algún tipo de antivirus o servicio de detección y respuesta de endpoints (EDR) en ejecución para supervisar, alertar y bloquear amenazas de forma proactiva. Estas herramientas pueden interferir con el proceso de enumeración. Es muy probable que presenten algún tipo de desafío durante el proceso de escalada de privilegios, especialmente si estamos utilizando algún tipo de herramienta o exploit PoC público. Enumerar las protecciones implementadas nos ayudará a asegurarnos de que estamos utilizando métodos que no se bloquean ni se detectan y nos ayudará si tenemos que crear cargas útiles personalizadas o modificar herramientas antes de compilarlas.
Muchas organizaciones utilizan algún tipo de solución de lista blanca de aplicaciones para controlar qué tipos de aplicaciones y archivos pueden ejecutar determinados usuarios. Esto se puede utilizar para intentar impedir que los usuarios que no sean administradores ejecuten archivos binarios cómo cmd.exe, powershell.exe o tipos de archivos que no necesiten para su trabajo diario. Una solución popular ofrecida por Microsoft es AppLocker . Podemos utilizar el cmdlet GetAppLockerPolicy para enumerar las políticas locales, efectivas (aplicadas) y de dominio de AppLocker. Esto nos ayudará a ver qué archivos binarios o tipos de archivos se pueden bloquear y si tendremos que realizar algún tipo de omisión de AppLocker durante nuestra enumeración o antes de ejecutar una herramienta o técnica para aumentar los privilegios.
En una interacción en el mundo real, es probable que el cliente tenga implementadas protecciones que detecten las herramientas y scripts más comunes (incluidos los presentados en la sección anterior). Existen formas de lidiar con estos problemas, y enumerar las protecciones en uso puede ayudarnos a modificar nuestras herramientas en un entorno de laboratorio y probarlas antes de usarlas contra un sistema cliente. Algunas herramientas EDR detectan o incluso bloquean el uso de binarios comunes como net.exe, tasklist, etc. Las organizaciones pueden restringir qué binarios puede ejecutar un usuario o marcar inmediatamente actividades sospechosas, como que la máquina de un contador muestre binarios específicos que se ejecutan a través de cmd.exe. La enumeración temprana y un conocimiento profundo del entorno del cliente y las soluciones alternativas contra soluciones EDR y AV comunes pueden ahorrarnos tiempo durante una interacción no evasiva y determinar el éxito o el fracaso de una interacción evasiva.
PS C:\htb> Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections
PublisherConditions : {*\*\*,0.0.0.0-*}
PublisherExceptions : {}
PathExceptions : {}
HashExceptions : {}
Id : a9e18c21-ff8f-43cf-b9fc-db40eed693ba
Name : (Default Rule) All signed packaged apps
Description : Allows members of the Everyone group to run packaged apps that are signed.
UserOrGroupSid : S-1-1-0
Action : Allow
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
PublisherConditions : {*\*\*,0.0.0.0-*}
PublisherExceptions : {}
PathExceptions : {}
HashExceptions : {}
Id : b7af7102-efde-4369-8a89-7a6a392d1473
Name : (Default Rule) All digitally signed Windows Installer files
Description : Allows members of the Everyone group to run digitally signed Windows Installer files.
UserOrGroupSid : S-1-1-0
Action : Allow
PathConditions : {%WINDIR%\Installer\*}
PathExceptions : {}
PublisherExceptions : {}
HashExceptions : {}
Id : 5b290184-345a-4453-b184-45305f6d9a54
Name : (Default Rule) All Windows Installer files in %systemdrive%\Windows\Installer
Description : Allows members of the Everyone group to run all Windows Installer files located in
%systemdrive%\Windows\Installer.
UserOrGroupSid : S-1-1-0
Action : Allow
PathConditions : {*.*}
PathExceptions : {}
PublisherExceptions : {}
HashExceptions : {}
Id : 64ad46ff-0d71-4fa0-a30b-3f3d30c5433d
Name : (Default Rule) All Windows Installer files
Description : Allows members of the local Administrators group to run all Windows Installer files.
UserOrGroupSid : S-1-5-32-544
Action : Allow
PathConditions : {%PROGRAMFILES%\*}
PathExceptions : {}
PublisherExceptions : {}
HashExceptions : {}
Id : 06dce67b-934c-454f-a263-2515c8796a5d
Name : (Default Rule) All scripts located in the Program Files folder
Description : Allows members of the Everyone group to run scripts that are located in the Program Files folder.
UserOrGroupSid : S-1-1-0
Action : Allow
PathConditions : {%WINDIR%\*}
PathExceptions : {}
PublisherExceptions : {}
HashExceptions : {}
Id : 9428c672-5fc3-47f4-808a-a0011f36dd2c
Name : (Default Rule) All scripts located in the Windows folder
Description : Allows members of the Everyone group to run scripts that are located in the Windows folder.
UserOrGroupSid : S-1-1-0
Action : Allow
PathConditions : {*}
PathExceptions : {}
PublisherExceptions : {}
HashExceptions : {}
Id : ed97d0cb-15ff-430f-b82c-8d7832957725
Name : (Default Rule) All scripts
Description : Allows members of the local Administrators group to run all scripts.
UserOrGroupSid : S-1-5-32-544
Action : Allow
Eso nos buscará todos los ejecutables bloqueados en la ruta C:\Windows\System32, aunque se puede ajustar para que analice todo el sistema con C:\*\*\*\*\*\*
FilePath PolicyDecision MatchingRule
-------- -------------- ------------
C:\Windows\System32\cmd.exe Denied c:\windows\system32\cmd.exe
C:\Windows\System32\WindowsPowerShell\v1.0\powershell_ise.exe Denied Block PowerShell ISE
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell_ise.exe Denied Block PowerShell ISE
Encontramos el otro ejecutable bloqueado: powershell_ise.exe