
Azure RedOps é um kit de ferramentas de segurança ofensiva para avaliar a postura de segurança do Microsoft Entra ID
Uma ferramenta multifuncional para testes de invasão no Azure / Entra ID.
Autor: Mr.Un1k0d3r (TrueCyber Inc) Versão: 0.1 Linguagem: Python 3.12+
O AzureRedOps é um kit de ferramentas de segurança ofensiva para avaliar a postura de segurança de tenants do Microsoft Entra ID e Azure. Ele encapsula os fluxos de trabalho de equipe vermelha mais comuns — autenticação, gerenciamento de tokens, enumeração de diretório, verificação de privilégios, pulverização de senhas e ações de pós-exploração contra o Microsoft Graph — em uma CLI consistente orientada por --activity.
Cada operação é selecionada com -a/--activity. Os tokens obtidos durante a autenticação podem ser armazenados em cache localmente (.azure_creds) e reutilizados pelo nome com -l/--load-access-token, para que você raramente precise colar JWTs brutos.
Saiba mais sobre a ferramenta no blog da CYPFER
.azure_creds). Qualquer fluxo pode persistir seus tokens automaticamente com -s/--save + -n/--name.auth) — autenticação direta por nome de usuário/senha.phish-start / phish-capture) — abusa da concessão de autorização de dispositivo OAuth para capturar tokens emitidos quando um alvo insere seu código de usuário em microsoft.com/devicelogin. Captura automaticamente por padrão.auth-app) — fluxo completo de Código de Autorização + PKCE contra um registro de aplicativo personalizado, servido por um listener HTTPS local embutido que recebe o redirecionamento.auth-interactive) — conduz um navegador real (Playwright; Firefox por padrão, -br para alternar) (lida com MFA / Acesso Condicional / SSO) e então coleta todos os tokens da sessão HAR gravada.refresh) — troca um token de atualização por tokens de acesso novos.obo) — troca um token de acesso já emitido por um novo token com escopo para um recurso downstream (OAuth 2.0 jwt-bearer / OBO).browser-sso) — abre um navegador real já autenticado como o usuário diretamente no aplicativo web alvo (Outlook na web, Teams, SharePoint, portal do Azure, ...). Com -aprt/--auto-prt, ele gera automaticamente um cookie Primary Refresh Token (PRT) a partir de um token de atualização (registro do dispositivo → PRT → x-ms-RefreshTokenCredential), para que um navegador novo complete o single sign-on sem login manual.gather-all.spray) e pulverização de token de atualização entre aplicativos (spray-refresh).magic-app encontra aplicativos redirecionáveis publicamente com consentimento AllPrincipals; listas internas de IDs de aplicativos conhecidos/interessantes da Microsoft.requirements.txt):
PyJWTrequestsplaywrightcryptography (necessário apenas para browser-sso -aprt, o fluxo automático de PRT)auth-interactive, browser-sso). Firefox é o mecanismo padrão (-br/--browser); instale-o com python -m playwright install firefox.includes/web/cert.pem e includes/web/key.pem (necessário apenas para o fluxo PKCE auth-app — veja Notas).git clone AzureRedOps cd AzureRedOps
python3 -m venv AzureRedOps source AzureRedOps/bin/activate # Linux / macOS
pip install -r requirements.txt
python -m playwright install firefox
Execute a ferramenta:```bash
python3 AzureRedOps.py -a <activity> [options]
O padrão geral de invocação é:```bash python3 AzureRedOps.py -a [authentication] [activity options] [global options]
### Fornecendo um token
Atividades que chamam o Microsoft Graph precisam de um token de acesso. Você pode fornecê-lo de duas maneiras:
| Método | Flag | Exemplo |
|--------|------|---------|
| Passar um token bruto | `-ac, --access-token` | `-ac eyJ0eXAi...` |
| Carregar um token em cache pelo nome | `-l, --load-access-token` | `-l mytoken` |
Quando `-l` é usado, o `access_token` correspondente (e, quando relevante, `refresh_token`
e `tenant`) é lido do armazenamento `.azure_creds`.
### Salvando tokens em um arquivo (`-s` / `-n`)
Qualquer atividade que obtenha tokens (`auth`, `auth-app`, `auth-interactive`,
`phish-start`/`phish-capture`, `refresh`) pode **persisti-los automaticamente** no
armazenamento local de credenciais (`.azure_creds`) ao adicionar `-s/--save` junto com
`-n/--name`:```bash
# Authenticate and save the resulting tokens under the name "victim1"
python3 AzureRedOps.py -a auth -u [email protected] -p 'P@ssw0rd!' -tid <tenant-guid> -s -n victim1
-s/--save ativa o salvamento automático; requer -n/--name — a ferramenta sai com um
erro se -n estiver faltando.-n/--name é a chave sob a qual o token é armazenado. Você pode reutilizá-lo posteriormente com
-l victim1 em vez de colar o JWT bruto, visualizá-lo com -a view -n victim1, ou
excluí-lo com -a delete -n victim1.auth-interactive sempre salva automaticamente e solicitará um nome
interativamente se -n não for fornecido.-j)A maioria das atividades de enumeração (list-users, list-applications, list-principals,
gather-all, raw-url) aceita -j/--json <filename> para escrever a resposta bruta da API
em um arquivo JSON em vez de (ou além de) imprimi-la:```bash
python3 AzureRedOps.py -a list-users -l victim1 -j users.json
Para `gather-all`, o nome do arquivo fornecido é usado como sufixo e um arquivo é escrito
por endpoint do Graph (ex.: `users-<name>`, `groups-<name>`, ...).
> Dica: `-j` controla a exportação JSON estruturada, enquanto `-re/--redirect-to-file` espelha
> a saída do console formatada para `output.txt`. Os dois são independentes.
### Identificadores do inquilino
- `-t, --tenant` espera um **nome de domínio** (ex.: `contoso.com`) e é usado pela atividade `id`.
- `-tid, --tenant-id` espera um **GUID do inquilino** ou `common`, usado pelas atividades de autenticação.
---
## Opções de Linha de Comando