Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
azureOutlookC2 — Azure Outlook Command & Control (C2) - Controle remotamente um dispositivo Windows comprometido a partir da sua caixa de correio do Outlook. Ferramenta de Emulação de Ameaças para o APT norte-coreano InkySquid / ScarCruft / APT37. TTP: Use a API Microsoft Graph para operações de C2. | Kitploit
Ferramentas/GitHubGitHub/boku7/azureoutlookc2
Segurança na NuvemComando e ControleRed TeamingDesenvolvimento de PayloadsSegurança de API
GitHubboku7/azureoutlookc2

azureOutlookC2

Ver Repositório
504100há 3 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →

Sobre

Azure Outlook Command & Control (C2) - Controle remotamente um dispositivo Windows comprometido a partir da sua caixa de correio do Outlook. Ferramenta de Emulação de Ameaças para o APT norte-coreano InkySquid / ScarCruft / APT37. TTP: Use a API Microsoft Graph para operações de C2.

Compartilhar

Azure Outlook C2

Azure Outlook Command & Control que usa a API do Microsoft Graph para comunicações C2 e exfiltração de dados.

Controle remotamente um dispositivo Windows comprometido a partir da sua Caixa de Correio do Outlook.

Criadores: Bobby Cooke (@0xBoku) e Paul Ungur (@C5pider)

Atualização de Ameaça CTI (13/02/22)

O Elastic Security Labs descobriu intrusões ativas na natureza usando SIESTAGRAPH. O SIESTAGRAPH interage com a GraphAPI da Microsoft para comando e controle usando Outlook e OneDrive. Confira seus incríveis blogs de análise de malware sobre comunicações Azure Outlook C2 abaixo.

  • https://www.elastic.co/security-labs/siestagraph-new-implant-uncovered-in-asean-member-foreign-ministry
  • https://www.elastic.co/security-labs/update-to-the-REF2924-intrusion-set-and-related-campaigns

Atualização (27/09/21)

  • O Azure Outlook C2 agora tem uma Interface Gráfica de Usuário (GUI) multiplataforma!
    • Um grande agradecimento ao Paul Ungur (@C5pider) por me ensinar a criar uma GUI C2 com QT!

Controlando um Computador via Caixa de Correio do Outlook com a GUI C2

Controlando um Computador via Caixa de Correio do Outlook

  • A atualização suporta o controle original da Caixa de Correio do Outlook.

Se você tiver alguma informação sobre projetos semelhantes, informações de CTI sobre esta TTP sendo usada na natureza por grupos APT/ransomware, conselhos de defesa, recomendações para Red Teamers interessados em emulação de ameaças Azure C2, ou qualquer outra informação que seria uma boa adição a este blog/readme, entre em contato comigo ou envie um Pull Request. Obrigado!

Sobre o Azure Outlook C2

Este projeto consiste em um implante que realiza beaconing para uma caixa de correio do Azure Outlook controlada pelo Atacante, que atua como o Comando & Controle (C2); controlando remotamente o dispositivo comprometido. Um Token de Atualização do Azure para a caixa de correio C2 do Atacante é codificado no implante durante a compilação. Quando executado em um dispositivo Windows, o implante acessa a caixa de rascunhos do Atacante via a API do Microsoft Graph. O implante lê as instruções de comando da caixa de rascunhos do Atacante, executa as instruções localmente no dispositivo Windows comprometido e retorna a saída do comando ao Atacante através da criação de novas mensagens de rascunho. O implante repete este comportamento de ser controlado remotamente a partir da caixa de correio do Atacante até que o processo host do implante seja encerrado.

Por que Construí Isso

Recentemente comecei a fazer Red Teaming há cerca de meio ano no SpiderLabs Red Team da Trustwave. Durante um engajamento, tive a honra de trabalhar com o lendário Stephan Borosh (rvrsh3ll|@424f424f). Steve e Matt Kingstone me ensinaram tudo sobre Azure Domain Fronting, e fiquei impressionado que o tráfego de Comando & Controle poderia ser exfiltrado via HTTPS usando domínios legítimos como ajax.microsoft.com. Ele até usa os Certificados TLS da Microsoft! Infelizmente para mim, comecei no Red Teaming ao mesmo tempo que o Domain Fronting morreu no Azure. Mesmo que o Domain Fronting no Azure estivesse morto, ainda havia muitas técnicas incríveis de Red Team que poderiam ser feitas com o Azure.

Steve me apresentou ao Azure Device Code Phishing. Durante esse tempo, mergulhei fundo no Azure e na API do Microsoft Graph para Red Teaming. Criamos a ferramenta TokenTactics, derivada do ótimo trabalho do Dr. Nestori Syynimaa (@DrAzureAD), e fizemos o blog The Art of the Device Code Phish se você estiver interessado em nossa metodologia.

Enquanto criava o TokenTactics e experimentava a API do MS Graph, descobri que era possível usar a API do Microsoft Graph como um canal C2. Existem muitas maneiras diferentes de usar a API do MS Graph como um canal C2, e não sou a única pessoa (nem a primeira) a descobrir isso. VX-Underground, criado por @smelly__vx - o criador/publicador da técnica HellsGate, divulgou no mês passado que o grupo de Ameaça Persistente Avançada (APT) norte-coreano "InkySquid" (também conhecido como ScarCruft e APT37) usa a API do Microsoft Graph para operações C2. Após lançar uma prévia deste projeto no Twitter e LinkedIn, vários profissionais de DFIR comentaram que esta técnica de usar a API do Microsoft Graph para operações C2 está sendo ativamente usada por grupos de ransomware na natureza, datando de meses atrás.

Durante o engajamento de Red Team, tentei fazer o Cobalt Strike funcionar com a API do MS Graph como o canal C2. Infelizmente, falhei, mas este ainda é um objetivo futuro. O problema que enfrento para fazer isso funcionar com o Cobalt Strike é que a API do MS Graph usa 2 tokens para comunicações. O primeiro token é o Token de Atualização (Refresh Token) que pode durar até 90 dias. O segundo token, o Token de Acesso (Access Token), é um token temporário que dura cerca de uma hora. As comunicações diretas com a API do MS Graph são feitas autenticando com o Token de Acesso. Uma vez que um Token de Acesso expira, o Token de Atualização pode ser usado para obter novos Tokens de Acesso. Como ainda sou novo no Red Teaming e no desenvolvimento do Cobalt Strike, não consegui descobrir como usar o perfil Malleable C2 do Cobalt Strike para suportar a obtenção constante de novos Tokens de Acesso e o envio desses Tokens de Acesso variáveis no cabeçalho Authorization das requisições HTTPS do beacon. Desde que lancei a prévia no Twitter, Joe Vest, Alfie Champion e outras estrelas da comunidade me deram direções épicas sobre como fazer isso funcionar com o Cobalt Strike! Espero que haja um follow-up com Cobalt Strike para este projeto no futuro ;)

Fluxo de Execução do Implante

  1. Obter um Token de Acesso para a API do MS Graph usando o Token de Atualização codificado do Atacante.
  • Isso é feito via comunicações TCP HTTPS para o host graph.microsoft.com.
  • Este tráfego é criptografado usando o Certificado TLS retornado do servidor web legítimo da Microsoft.
  • O implante usa a biblioteca de vínculo dinâmico WinInet para comunicações HTTPS.
  • O Token de Atualização do Atacante codificado deve ser válido por 90 dias.
    • Se o implante for comprometido, o Atacante pode revogar o Token de Atualização codificado para restringir o acesso de Engenheiros Reversos de Malware.
  1. Após o implante receber um Token de Acesso para a API do MS Graph do Atacante, o implante entra em um loop infinito.
  • Se não houver conexão de internet ou a conexão for interrompida durante o loop, o implante dormirá por 3 minutos e tentará novamente.
  • O implante monitora o tempo e, se 15 minutos tiverem passado, obterá um novo Token de Acesso para continuar as comunicações.
  1. A primeira tarefa no loop é usar o Token de Acesso da API do MS Graph para acessar a caixa de rascunhos do Atacante e ler a mensagem mais recente em busca de comandos a serem executados no dispositivo Windows comprometido.
  • A caixa de rascunhos foi escolhida porque assim não há e-mails sendo enviados via SMTP.
  1. Uma vez que o comando é recebido, ele é analisado para determinar qual meta-comando será executado. Atualmente existem 3 meta-comandos: cmd, sleep, exit
  • cmd: Pega a string seguinte após o meta-comando e a executa criando um processo filho.
  • sleep: Pega a palavra seguinte após o meta-comando e altera o sleep do implante para o valor fornecido (em milissegundos).
  • exit: Sai/mata o processo host.
  1. Se o meta-comando for cmd, o implante criará um processo filho para executar o comando, o processo filho escreverá sua saída padrão em um pipe, o processo filho termina após a execução do comando, e o processo host do implante lerá a saída do processo filho através do pipe.
  2. Após o implante obter a saída do comando executado, o implante usará a API do MS Graph para criar um novo e-mail de rascunho que contém a saída do comando.
  3. O implante então criará um segundo e-mail de rascunho com um corpo vazio.
  • Isso permite o registro da saída do comando dentro da caixa de rascunhos do Atacante.
  • Isso enfileira para o Atacante uma nova mensagem de rascunho para inserir o próximo comando que o implante executará.
  1. Após o comando ter sido executado e a saída retornada ao Atacante, o implante dormirá por um tempo controlado pelo atacante e então repetirá este loop.

Instruções

  1. Monte a Infraestrutura do Red Team no Azure que será usada como o Comando & Controle seguindo meu post no blog The Art of the Device Code Phish para configurar:
  • Assinatura da Conta Azure
    • Ao criar uma Conta Azure, ajude a equipe DFIR da Microsoft atribuindo sua conta à sua organização de Red Team. Isso ajuda a economizar tempo para a equipe deles quando estão investigando se você é uma ameaça real, prestando serviços de emulação de ameaças ou realizando pesquisa ofensiva de segurança.
    • Veja Nick Carr - Líder, Inteligência de Crimes Cibernéticos / Investigações @Microsoft para mais informações.
  • Locatário do Azure Active Directory
  • Office 365 para o Azure Active Directory
  • Crie um usuário para a caixa de correio do Outlook de Comando & Controle
  • Instale o Módulo PowerShell TokenTactics
  1. Use o TokenTactics para obter o ID do Locatário do Azure AD que você acabou de criar:
root@kitploit:~
PS C:\Users\boku\Desktop\TokenTactics-main> Import-Module .\TokenTactics.psd1
PS C:\Users\boku\Desktop\TokenTactics-main> Get-TenantID -domain theharvester.world
1d5551a0-f4f2-4101-9c3b-394247ec7e08
  1. Adicione seu ID do Locatário à variável char tenantId[] dentro do arquivo azureOutlookC2.c.
  2. Obtenha um Token de Atualização do Azure usando o TokenTactics para fazer device code phish em si mesmo com o usuário da caixa de correio C2:
root@kitploit:~
# Importe o módulo TokenTactics na sessão PowerShell
PS C:\Users\boku> cd .\TokenTactics
PS C:\Users\boku\TokenTactics> Import-Module .\TokenTactics.psd1
# Inicie uma solicitação de device code phish para obter um 'user_code'
PS C:\Users\boku\> Get-AzureToken -Client Graph
user_code        : ERDVDCNHH
  1. Vá para microsoft.com/devicelogin, insira o user_code do TokenTactics e faça login com o usuário da caixa de correio C2.
  2. Na sessão PowerShell executando o TokenTactics, copie o refresh token do device code phish bem-sucedido em você mesmo.
  • Se precisar de mais informações sobre como o TokenTactics funciona, por favor veja The Art of the Device Code Phish
  1. Adicione seu refresh token à variável char refreshToken[] dentro do arquivo azureOutlookC2.c.
root@kitploit:~
void main() {
    // Variáveis
    char refreshToken[] = "0.AXwAoFFVHfL0AUGcOzlCR-x-CNYOWdOzUgJBrv-q0ikqsBx8ACA.AgABAAAAAA...
//                           ^Coloque seu refresh token aqui e compile
  1. Compile azureOutlookC2.c.
root@kitploit:~
# Compile com x64 MinGW:
bobby.cooke$ cat compile.sh
x86_64-w64-mingw32-gcc -m64 -mwindows -Os azureOutlookC2.c -o azureOutlookC2.exe -lwininet
bobby.cooke$ bash compile.sh
  1. Execute o arquivo PE azureOutlookC2.exe em um Dispositivo Windows.
  2. Como atacante, no computador do atacante, abra um navegador, faça login em outlook.office.com e controle o dispositivo Windows executando o implante a partir da sua caixa de correio.

Objetivos Iniciais do Projeto

  • Criar uma prova de conceito funcional que use a API do Microsoft Graph para um canal C2 e controlar um computador a partir do meu e-mail.

O Que Este Projeto É

  • Este projeto é uma prova de conceito, que demonstra como um Atacante pode usar a API do Microsoft Graph para operações C2.
  • Este projeto é destinado a outros pesquisadores de segurança ofensiva para aprenderem.
  • Eu pessoalmente não encontrei grandes maneiras de defender ou detectar este canal C2. Minha esperança é que, ao fornecer isto para mentes defensoras maiores que a minha, resulte em algumas técnicas defensivas incríveis.

O Que Este Projeto Não É

  • Este projeto em si não é um C2 totalmente funcional, pronto para engajamentos seguros em OPSEC.

Ideias de Detecção & Prevenção de Defensores (Para Adicionar, Por Favor Envie um Pull Request)

Conselho de Detecção de Mehmet Ergene (@Cyb3rMonk)

  1. "Baselinear aplicações que se conectam à Graph API e verificar as anomalias pode ser uma ideia. Pode ser facilmente contornado, no entanto."
  2. "Como sempre, detectar tráfego de beaconing. (Farei uma melhoria para cobrir Graph API e coisas semelhantes)"

F-Secure - Compartilhado por Alfie Champion

  • "A Microsoft é um exemplo de uma dessas organizações que tomou medidas proativas para defender organizações do abuso de seus serviços. Recentemente, desenvolveu a capacidade de detectar e bloquear o uso malicioso de Aplicações Azure. Especificamente, a F-Secure observou que qualquer aplicação usada no framework C3 (como OneDrive365 e Outlook365 (O365)) é agora detectada como maliciosa e subsequentemente desativada pela Microsoft (dentro de aproximadamente três horas)."

Créditos / Referências

  • Cursos de Desenvolvimento de Malware Sektor7
  • @passthehashbrwn - Geração dinâmica de payload com mingw
  • Raphael Mudge - Red Team Ops with Cobalt Strike (2 of 9): Infrastructure
  • Raphael Mudge - Red Team Ops with Cobalt Strike (3 of 9): C2
  • Microsoft Graph REST API v1.0
  • Microsoft WinInet
  • StackOverFlow - Create Process and Capture stdout
  • Microsoft - Creating a Child Process with Redirected Input and Output

Projetos/Pesquisas/Blogs Interessantes e Semelhantes

F-Secure C3 - Custom Command & Control

  • "O C3 foi construído em resposta a este requisito. É uma ferramenta que permite que Red Teams desenvolvam e utilizem rapidamente canais de comando e controle (C2) esotéricos."
  • RIP OFFICE365 COMMAND AND CONTROL – WE HARDLY KNEW YOU
  • Repositório GitHub do F-Secure C3 - Custom Command & Control

Callidus por Chirag Savla

  • "Ele (Callidus) é desenvolvido usando .net core framework em linguagem C#. Permite que operadores utilizem serviços O365 para estabelecer um canal de comunicação de comando e controle. Ele usa APIs do Microsoft Graph para se comunicar com os serviços O365."
  • Repositório GitHub 3xpl01tc0d3r/Callidus
  • Introdução ao Callidus - Post no Blog

Azure Application Proxy C2 - Adam Chester (@_xpn_)

  • Azure Application Proxy C2 - Blog de Pesquisa
Baixar ferramenta