# T1550.001 - Application Access Token ## Técnica Pai [[t1550-use-alternate-authentication-material|T1550 - Use Alternaté Authentication Material]] ## Descrição Adversários podem usar tokens de acesso de aplicação roubados para contornar o processo típico de autenticação e acessar contas, informações ou serviços restritos em sistemas remotos. Esses tokens são tipicamente roubados de usuários ou serviços e utilizados no lugar de credenciais de login tradicionais (usuário e senha). Tokens de acesso de aplicação são usados para realizar requisições autorizadas a APIs em nome de um usuário ou serviço, sendo amplamente utilizados para acesso a recursos em nuvem, aplicações baseadas em contêineres e SaaS (*Software-as-a-Service*). A ausência de senha no fluxo de autenticação baseado em token torna essa técnica particularmente eficaz para contornar controles como autenticação multifator (MFA) - já que o segundo fator geralmente só é verificado no momento da concessão original do token, não nas requisições subsequentes. **OAuth e frameworks similares:** OAuth 2.0 é o framework mais amplamente implementado para emissão de tokens. Nesse modelo, um usuário autoriza uma aplicação a agir em seu nome, e a aplicação recebe um *access token* (curta duração) e, opcionalmente, um *refresh token* (longa duração). Uma vez que um adversário compromete um token, especialmente um refresh token, pode manter acesso prolongado mesmo que a senha do usuário sejá alterada - desde que o token não sejá explicitamente revogado. O abuso de tokens pode ocorrer em múltiplos contextos: - **Aplicações de email e produtividade** (Microsoft 365, Google Workspace) - **Plataformas IaaS** (AWS STS tokens, GCP service account tokens) - **Ambientes Kubernetes** (service account tokens em arquivos de configuração) - **Provedores de identidade** (Azure AD, Okta, PingIdentity) - **APIs de SaaS** (Salesforce, GitHub, Slack) > **Plataformas afetadas:** SaaS, IaaS, Containers, Office Suite, Identity Provider ## Como Funciona O ataque segue um fluxo de obtenção, válidação e abuso do token comprometido. **1. Obtenção do token** Os tokens podem ser obtidos por diferentes métodos: - **Phishing de consentimento OAuth** - O adversário cria uma aplicação maliciosa que solicita permissões OAuth ao usuário. Quando o usuário autoriza (muitas vezes sem perceber o escopo real), o token é concedido à aplicação controlada pelo adversário. Essa técnica é usada pelo [[g0007-apt28|APT28]] em campanhas contra organizações governamentais. - **Roubo de token de memória ou disco** - Tokens armazenados em cache no navegador, arquivos de configuração de ferramentas (`.aws/credentials`, `.kube/config`, `~/.config/gcloud`), ou variáveis de ambiente de pipelines CI/CD. - **Interceptação de token em trânsito** - Via ataques Man-in-the-Middle ou comprometimento de proxies reversos. - **Exfiltração de token de serviço** - Em ambientes Kubernetes, tokens de service account frequentemente estão acessíveis dentro do pod em `/var/run/secrets/kubernetes.io/serviceaccount/token`. - **API de metadados de instância cloud** - Em instâncias EC2 sem proteção IMDSv2, um adversário pode consultar `http://169.254.169.254/latest/meta-data/iam/security-credentials/` para obter credenciais temporárias de instância. - **Comprometimento de refresh token** - Um refresh token OAuth válido permite solicitar novos access tokens indefinidamente, mantendo o acesso mesmo após rotação de senhas. **2. Uso do token comprometido** Com o token em mãos, o adversário realiza chamadas de API autenticadas: - **Microsoft Graph API** - Pesquisa de emails, acesso a arquivos OneDrive, enumeração de contatos e calendários - **AWS STS `GetFederationToken`/`AssumeRole`** - Criação de sessões federadas com permissões do usuário original que persistem mesmo com desativação da conta - **GCP `generateAccessToken`** - Solicitação de token de curta duração com os privilégios de outra service account - **Kubernetes API Server** - Criação de pods privilegiados, leitura de secrets, execução de comandos em contêineres **3. Extensão do acesso** O acesso via token pode ser usado como ponto de partida para comprometer outros serviços - por exemplo, acesso ao email principal permite acionar rotinas de "esqueci minha senha" em outros serviços vinculados ao mesmo endereço, expandindo o controle do adversário de forma silenciosa. ## Attack Flow ```mermaid graph TB A[Acesso Inicial<br/>Phishing de Consentimento OAuth<br/>ou Credenciais Comprometidas] --> B[Obtenção do Token<br/>OAuth / API Key / Service Account] B --> C{Tipo de Token} C --> D[Access Token<br/>Curta duração] C --> E[Refresh Token<br/>Longa duração - persiste após reset de senha] C --> F[Service Account Token<br/>Kubernetes / Cloud IAM] D --> G[Chamadas de API Autenticadas<br/>Microsoft Graph / AWS API / GCP API] E --> H[Renovação Contínua de Access Tokens<br/>Acesso persistente sem re-autenticação] F --> I[Acesso a Recursos Cloud<br/>Pods / Datastores / Secrets] G --> J[Objetivos do Adversário] H --> J I --> J J --> K[Exfiltração de Dados<br/>Emails, arquivos, segredos] J --> L[Movimentação Lateral<br/>Acesso a outros serviços via email] J --> M[Escalada de Privilégios<br/>AssumeRole / GetFederationToken] J --> N[Persistência<br/>Backdoor OAuth app registrada] ``` ## Exemplos de Uso **APT28 - Campanha de phishing OAuth contra governos** O [[g0007-apt28|APT28]] (Fancy Bear, Unidade 26165) conduziu campanhas de phishing de consentimento OAuth direcionadas a funcionários de governos europeus e NATO. A técnica consiste em enviar emails com links para aplicações falsas que solicitam permissões do Microsoft 365 (leitura de emails, acesso a contatos). Uma vez que a vítima autoriza, o grupo obtém acesso persistente via refresh token, independentemente de MFA. **HAFNIUM - Exfiltração via Microsoft Graph após comprometimento Exchange** O [[g0125-silk-typhoon|HAFNIUM]], grupo associado à China que explorou vulnerabilidades do Exchange Server (ProxyLogon), também utilizou tokens OAuth para manter acesso a contas do Microsoft 365 após a instalação de web shells. Após o patch das vulnerabilidades, os tokens roubados garantiram acesso contínuo via Graph API para exfiltração de emails. **Peirates - Exploração de tokens Kubernetes** A ferramenta de exploração [[s0683-peirates|Peirates]], usada em red team e por atores maliciosos, automatiza a coleta de service account tokens em pods Kubernetes e os usa para escalar privilégios dentro do cluster - criando pods privilegiados, acessando secrets e comprometendo o plano de controle. **CreepyDrive - Abuso de OneDrive como C2** O malware [[s1023-creepydrive|CreepyDrive]], associado ao grupo Polonium com nexo iraniano, utilizou tokens OAuth roubados para abusar do Microsoft OneDrive como canal de comando e controle, enviando comandos via arquivos na nuvem e exfiltrando dados para o mesmo storage - técnica que contorna firewalls e proxies que confiam no tráfego Microsoft. **AWS - Abuso de Instance Metadata Service (IMDS)** Em ambientes AWS sem IMDSv2 obrigatório, adversários dentro de uma instância EC2 comprometida (ou via SSRF) consultam o serviço de metadados para obter credenciais temporárias IAM da instância, que incluem `AccessKeyId`, `SecretAccessKey` e `SessionToken`. Com esses tokens, é possível realizar ações com as permissões da instância sem precisar comprometer credenciais de usuário IAM. **Cenário LATAM - Comprometimento de conta Microsoft 365 em empresa financeira** Em 2024, uma instituição financeira brasileira sofreu comprometimento de conta executiva via phishing de consentimento OAuth. O adversário registrou uma aplicação maliciosa que solicitava permissões de leitura de email e acesso ao SharePoint. Com o refresh token, manteve acesso por 47 dias sem ser detectado, exfiltrando documentos estratégicos antes da descoberta do incidente. ## Detecção A detecção de abuso de tokens é desafiadora porque o tráfego gerado pelos tokens é legítimo do ponto de vista da API - o desafio está em identificar padrões anômalos de comportamento. **Sinais de alerta chave:** - Aplicações OAuth registradas com escopos excessivos (ex: `Mail.ReadWrite`, `Files.ReadWrite.All`, `offline_access`) por usuários não-administradores - Acesso via API de locais geográficos ou endereços IP incomuns, especialmente sem correspondência com o login interativo - Volume anormal de chamadas à Microsoft Graph API (especialmente `GET /users/{id}/messages`) em horários fora do padrão - Uso de `sts:AssumeRole` ou `sts:GetFederationToken` em AWS por contas que normalmente não assumem papéis - Tokens de service account Kubernetes acessados fora do pod original ou por processos não esperados - Aplicações OAuth recém-registradas com consentimento administrativo não solicitado ```yaml title: Suspicious OAuth Application Consent with High-Privilege Scopes status: experimental logsource: product: azure service: auditlogs detection: selection: OperationName: "Consent to application" properties.targetResources.modifiedProperties.newValue|contains: - "Mail.ReadWrite" - "Files.ReadWrite.All" - "offline_access" - "Directory.ReadWrite.All" filter_known_apps: properties.initiatedBy.user.userPrincipalName|contains: - "@datarunk.com" condition: selection and not filter_known_apps falsepositives: - Novos aplicativos corporativos sendo integrados ao tenant - Administradores concedendo acesso a ferramentas aprovadas level: high tags: - attack.defense_evasion - attack.lateral_movement - attack.t1550.001 ``` **AWS - Detecção de uso de credenciais IMDS:** ```yaml title: AWS EC2 Instance Credentials Used from External IP status: experimental logsource: product: aws service: cloudtrail detection: selection: userIdentity.type: AssumedRole userIdentity.sessionContext.sessionIssuer.type: Service userIdentity.sessionContext.sessionIssuer.service: ec2.amazonaws.com filter_internal: sourceIPAddress|cidr: - "10.0.0.0/8" - "172.16.0.0/12" - "192.168.0.0/16" condition: selection and not filter_internal level: critical tags: - attack.t1550.001 - attack.credential_access ``` ## Mitigação | ID | Mitigação | Descrição | |----|-----------|-----------| | [[m1036-account-use-policies\|M1036]] | Account Use Policies | Implementar políticas de uso de conta que restrinjam quais aplicações podem receber consentimento OAuth e com quais escopos. No Azure AD, usar políticas de consentimento para exigir aprovação administrativa antes que usuários possam conceder escopos sensíveis. Revisar e revogar regularmente consentimentos OAuth não utilizados ou suspeitos. Limitar lifetime de tokens e refresh tokens conforme o perfil de risco. | | [[m1047-audit\|M1047]] | Audit | Auditar regularmente aplicações OAuth registradas no tenant, especialmente aquelas com escopos de alto privilégio. Revisar logs de consentimento e identificar aplicações com consentimento administrativo não esperado. Monitorar uso de tokens de service account em ambientes Kubernetes e cloud. Usar ferramentas como Microsoft Secure Score, AWS IAM Access Analyzer, e GCP Security Command Center. | | [[m1021-restrict-web-based-content\|M1021]] | Restrict Web-Based Content | Bloquear acesso a aplicações OAuth externas não aprovadas via políticas de proxy e CASB. Implementar listas de permissão de aplicações confiáveis. Restringir a capacidade de usuários de autorizar aplicações de terceiros sem revisão de segurança. | | [[m1013-application-developer-guidance\|M1013]] | Application Developer Guidance | Orientar desenvolvedores a solicitar apenas os escopos OAuth necessários (*least privilege*). Evitar armazenar tokens em código-fonte, variáveis de ambiente ou arquivos de configuração versionados. Implementar rotação regular de tokens de serviço. Usar armazenamento seguro de secrets (AWS Secrets Manager, Azure Key Vault, HashiCorp Vault). | | [[m1041-encrypt-sensitive-information\|M1041]] | Encrypt Sensitive Information | Armazenar tokens de forma criptografada em repouso. Garantir que tokens não trafeguem por canais não criptografados (HTTP). Proteger arquivos de configuração que contêm tokens (`.kube/config`, `.aws/credentials`) com permissões restritivas de sistema de arquivos. | ## Contexto Brasil/LATAM O abuso de tokens de acesso é uma ameaça crescente para organizações brasileiras e latino-americanas, impulsionado pela rápida adoção de Microsoft 365, Google Workspace e plataformas cloud sem os controles de segurança adequados. **Campanhas de phishing OAuth no Brasil:** O Brasil é um dos países com maior taxa de adoção corporativa de Microsoft 365 na América Latina. Campanhas de phishing de consentimento OAuth têm sido observadas direcionadas a profissionais financeiros e executivos de empresas brasileiras, frequentemente utilizando páginas que imitam portais de autenticação Microsoft para capturar consentimento OAuth e obter refresh tokens de longa duração. **Risco em startups e fintechs:** O ecossistema de startups e fintechs brasileiro tende a adotar ferramentas SaaS e pipelines CI/CD com alta velocidade e menor rigor de governança de acesso. Tokens de service account GitHub Actions, AWS e GCP frequentemente são expostos em repositórios públicos ou têm permissões excessivas, criando superfície de ataque para essa técnica. **Serviços financeiros e BACEN:** A resolução [[2018]] exige que instituições financeiras mantenham controles de acesso adequados para ambientes cloud e SaaS. O comprometimento de tokens OAuth com acesso a sistemas bancários pode configurar violação regulatória com obrigação de comunicação ao Banco Central. **Ataques a provedores de identidade na LATAM:** Campanhas direcionadas a provedores de identidade utilizados por grandes empresas latino-americanas (Okta, Azure AD, PingFederaté) buscam comprometer tokens de administrador que permitem acesso a toda a organização. O incidente Okta de 2023 afetou clientes ao redor do mundo, incluindo organizações brasileiras que dependem do serviço para SSO corporativo. **APT28 e espionagem governamental:** O [[g0007-apt28|APT28]] tem histórico de ataques contra governos da América Latina, incluindo campanhas de phishing OAuth documentadas contra funcionários de ministérios e agências de segurança. A técnica de uso de tokens OAuth é preferida pelo grupo por contornar MFA e deixar rastros menos evidentes nos logs de autenticação interativa. **Conformidade LGPD:** O roubo de tokens que resulte em acesso não autorizado a dados pessoais armazenados em SaaS (emails, documentos, CRM) configura incidente de segurança sob a [[lgpd|LGPD]], com potencial obrigação de notificação à ANPD dentro de 2 dias úteis do conhecimento do incidente. ## Referências - [[t1550-use-alternate-authentication-material|T1550 - Use Alternaté Authentication Material]] - Técnica pai - [[g0007-apt28|APT28]] - Grupo que usa phishing de consentimento OAuth - [[g0125-silk-typhoon|HAFNIUM]] - Grupo que abusa de tokens Microsoft Graph pós-comprometimento - [[s0683-peirates|Peirates]] - Ferramenta de exploração de tokens Kubernetes - [[s1023-creepydrive|CreepyDrive]] - Malware que abusa de tokens OneDrive para C2 - [[m1036-account-use-policies|M1036 - Account Use Policies]] - Mitigação principal para OAuth - [[m1047-audit|M1047 - Audit]] - Auditoria de consentimentos e uso de tokens - [[m1013-application-developer-guidance|M1013 - Application Developer Guidance]] - Boas práticas de tokens para devs - [[t1071-application-layer-protocol|T1071 - Application Layer Protocol]] - Técnica frequentemente combinada para C2 via API legítima - [[t1078-valid-accounts|T1078 - Valid Accounts]] - Técnica relacionada para uso de credenciais legítimas *Fonte: MITRE ATT&CK - T1550.001*