Azure Pentesting
TODAVÍA ESTOY CONSTRUYENDO LA METODOLOGÍA DE AZURE
Información Básica
pageAz - Basic InformationMetodología de Pentester/Equipo Rojo de Azure
Para auditar un entorno de AZURE es muy importante saber: qué servicios se están utilizando, qué está expuesto, quién tiene acceso a qué, y cómo están conectados los servicios internos de Azure y los servicios externos.
Desde el punto de vista de un Equipo Rojo, el primer paso para comprometer un entorno de Azure es lograr obtener algunas credenciales para Azure AD. Aquí tienes algunas ideas sobre cómo hacerlo:
Fugas en github (o similar) - OSINT
Ingeniería Social
Reutilización de contraseñas (fugas de contraseñas)
Vulnerabilidades en Aplicaciones alojadas en Azure
Falsificación de Petición de Servidor con acceso al punto de metadatos
Lectura de Archivos Locales
/home/USUARIO/.azure
C:\Users\USUARIO\.azure
El archivo
accessTokens.json
enaz cli
antes de la versión 2.30 - Ene2022 - almacenaba tokens de acceso en texto claroEl archivo
azureProfile.json
contiene información sobre el usuario conectado.az logout
elimina el token.Versiones antiguas de
Az PowerShell
almacenaban tokens de acceso en texto claro enTokenCache.dat
. También almacena ServicePrincipalSecret en texto claro enAzureRmContext.json
. El cmdletSave-AzContext
se puede utilizar para almacenar tokens. UsaDisconnect-AzAccount
para eliminarlos.Terceros comprometidos
Empleado interno
Phishing Común (credenciales o Aplicación Oauth)
Incluso si no has comprometido ningún usuario dentro del inquilino de Azure que estás atacando, puedes recopilar información de él:
pageAz - Unauthenticated Enum & Initial EntryDespués de haber logrado obtener credenciales, necesitas saber a quién pertenecen esas credenciales, y a qué tienen acceso, por lo que necesitas realizar una enumeración básica:
Enumeración Básica
Recuerda que la parte más ruidosa de la enumeración es el inicio de sesión, no la enumeración en sí.
SSRF
Si encontraste un SSRF en una máquina dentro de Azure, revisa esta página para trucos:
Saltar Condiciones de Inicio de Sesión
En casos donde tienes algunas credenciales válidas pero no puedes iniciar sesión, estas son algunas protecciones comunes que podrían estar en su lugar:
Lista blanca de IP -- Necesitas comprometer una IP válida
Restricciones geográficas -- Encuentra dónde vive el usuario o dónde están las oficinas de la empresa y obtén una IP de la misma ciudad (o al menos del mismo país)
Navegador -- Tal vez solo se permite un navegador de cierto sistema operativo (Windows, Linux, Mac, Android, iOS). Descubre qué sistema operativo usa la víctima/empresa.
También puedes intentar comprometer credenciales de Service Principal ya que generalmente están menos limitadas y su inicio de sesión se revisa menos
Después de saltarlo, es posible que puedas volver a tu configuración inicial y seguir teniendo acceso.
Toma de Subdominio
Quién soy
Aprende cómo instalar az cli, AzureAD y Az PowerShell en la sección Az - AzureAD.
Una de las primeras cosas que necesitas saber es quién eres (en qué entorno estás):
AzureAD
Enumeration
User Enumeration:
Utilice técnicas como la enumeración de usuarios a través de la API Graph de AzureAD.
Enumere usuarios a través de la interfaz de usuario de Azure Portal.
Group Enumeration:
Enumere grupos a través de la API Graph de AzureAD.
Enumere grupos a través de la interfaz de usuario de Azure Portal.
Application Enumeration:
Enumere aplicaciones registradas a través de la API Graph de AzureAD.
Enumere aplicaciones a través de la interfaz de usuario de Azure Portal.
Exploitation
Password Spraying:
Realice ataques de "password spraying" contra usuarios de AzureAD.
Utilice herramientas como
MSOLSpray
para automatizar este proceso.
Phishing:
Realice ataques de phishing para obtener credenciales de usuarios de AzureAD.
Utilice plantillas de phishing personalizadas para aumentar la tasa de éxito.
Brute Force:
Realice ataques de fuerza bruta contra la autenticación de AzureAD.
Utilice herramientas como
CrackMapExec
para realizar ataques de fuerza bruta.
Post-Exploitation
Token Extraction:
Extraiga tokens de acceso y tokens de actualización de AzureAD.
Utilice estos tokens para realizar acciones en nombre de los usuarios comprometidos.
Privilege Escalation:
Busque oportunidades de escalada de privilegios dentro de AzureAD.
Examine roles y permisos para identificar posibles vectores de escalada de privilegios.
Data Exfiltration:
Exfiltra datos confidenciales de AzureAD.
Utilice técnicas como la exportación de datos a través de la API Graph de AzureAD.
Ejecución de comandos de PowerShell de Azure
Para ejecutar comandos de PowerShell de Azure, primero debe instalar el módulo Az. Puede hacerlo utilizando el siguiente comando:
Después de instalar el módulo Az, puede iniciar sesión en su cuenta de Azure utilizando el siguiente comando:
Una vez que haya iniciado sesión, puede comenzar a ejecutar comandos de PowerShell de Azure para administrar sus recursos en la nube. Por ejemplo, puede usar comandos como Get-AzVM
para obtener información sobre las máquinas virtuales en su suscripción de Azure.
Recuerde que debe tener permisos adecuados en su cuenta de Azure para poder ejecutar estos comandos con éxito.
Uno de los comandos más importantes para enumerar Azure es Get-AzResource
desde Az PowerShell ya que te permite saber los recursos sobre los que tu usuario actual tiene visibilidad.
Puedes obtener la misma información en la consola web yendo a https://portal.azure.com/#view/HubsExtension/BrowseAll o buscando "Todos los recursos".
Enumeración de AzureAD
Por defecto, cualquier usuario debería tener suficientes permisos para enumerar cosas como usuarios, grupos, roles, identidades de servicio... (verificar permisos predeterminados de AzureAD). Puedes encontrar aquí una guía:
pageAz - AzureAD (AAD)Ahora que tienes información sobre tus credenciales (y si eres un equipo rojo, esperemos que no hayas sido detectado), es hora de averiguar qué servicios se están utilizando en el entorno. En la siguiente sección puedes ver algunas formas de enumerar algunos servicios comunes.
Principal de Servicio y Política de Acceso
Un servicio de Azure puede tener una Identidad del Sistema (del propio servicio) o utilizar una Identidad Administrada Asignada por Usuario. Esta Identidad puede tener una Política de Acceso para, por ejemplo, un KeyVault para leer secretos. Estas Políticas de Acceso deben estar restringidas (principio de privilegio mínimo), pero podrían tener más permisos de los necesarios. Normalmente, un Servicio de Aplicación usaría KeyVault para recuperar secretos y certificados.
Por lo tanto, es útil explorar estas identidades.
Consola SCM del Servicio de Aplicación
Consola Kudu para iniciar sesión en el 'contenedor' del Servicio de Aplicación.
Shell Web
Usa portal.azure.com y selecciona la shell, o usa shell.azure.com, para un bash o powershell. El 'disco' de esta shell se almacena como un archivo de imagen en una cuenta de almacenamiento.
Azure DevOps
Azure DevOps es independiente de Azure. Tiene repositorios, pipelines (yaml o release), tableros, wiki y más. Los Grupos de Variables se utilizan para almacenar valores de variables y secretos.
Herramientas de Reconocimiento Automatizado
Última actualización