Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
azureOutlookC2 — Azure Outlook Command & Control (C2) - Controlar remotamente un dispositivo Windows comprometido desde tu buzón de Outlook. Herramienta de emulación de amenazas para el APT norcoreano InkySquid / ScarCruft / APT37. TTP: Usar Microsoft Graph API para operaciones C2. | Kitploit
Herramientas/GitHubGitHub/boku7/azureoutlookc2
Seguridad en la NubeComando y ControlRed TeamingDesarrollo de PayloadsSeguridad de APIs
GitHubboku7/azureoutlookc2

azureOutlookC2

Azure Outlook Command & Control (C2) - Controlar remotamente un dispositivo Windows comprometido desde tu buzón de Outlook. Herramienta de emulación de amenazas para el APT norcoreano InkySquid / ScarCruft / APT37. TTP: Usar Microsoft Graph API para operaciones C2.

Ver Repositorio
5041005hace 3 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Azure Outlook C2

Azure Outlook Comando y Control que utiliza Microsoft Graph API para comunicaciones C2 y exfiltración de datos.

Controla de forma remota un dispositivo Windows comprometido desde tu buzón de Outlook.

Creadores: Bobby Cooke (@0xBoku) & Paul Ungur (@C5pider)

Actualización de amenazas CTI (02/13/22)

Elastic Security Labs ha descubierto intrusiones activas en el mundo real que utilizan SIESTAGRAPH. SIESTAGRAPH interactúa con GraphAPI de Microsoft para el comando y control usando Outlook y OneDrive. Echa un vistazo a sus increíbles blogs de análisis de malware sobre comunicaciones Azure Outlook C2 a continuación.

  • 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

Actualización (09/27/21)

  • ¡Azure Outlook C2 ahora tiene una Interfaz Gráfica de Usuario (GUI) multiplataforma!
    • Un gran agradecimiento a Paul Ungur (@C5pider) por enseñarme cómo crear una GUI C2 con QT!

Controlando una computadora a través del buzón de Outlook con la GUI C2

Controlando una computadora a través del buzón de Outlook

  • La actualización admite el control original del buzón de Outlook.

Si tienes alguna información sobre proyectos similares, información CTI sobre esta TTP siendo utilizada en el mundo real por APT/grupos de ransomware, consejos de defensa, recomendaciones para Red Teamers interesados en la emulación de amenazas Azure C2, o cualquier otra información que sea un buen complemento para este blog/readme, por favor contáctame o envía un Pull Request. ¡Gracias!

Acerca de Azure Outlook C2

Este proyecto consiste en un implante que se comunica con un buzón de Outlook Azure controlado por el atacante, que actúa como el Comando y Control (C2); controlando de forma remota el dispositivo comprometido. Un Token de Actualización de Azure para el buzón C2 del atacante está codificado directamente en el implante durante la compilación. Cuando se ejecuta en un dispositivo Windows, el implante accede al buzón de Borradores del atacante a través de Microsoft Graph API. El implante lee las instrucciones de comando del buzón de Borradores del atacante, ejecuta las instrucciones localmente en el dispositivo Windows comprometido y devuelve la salida del comando al atacante mediante la creación de nuevos mensajes de Borrador. El implante repite este comportamiento de ser controlado de forma remota desde el buzón del atacante hasta que se cierra el proceso anfitrión del implante.

Por qué lo construí

Recientemente comencé en Red Team hace aproximadamente medio año en el SpiderLabs Red Team de Trustwave. Durante un engagement tuve el honor de trabajar con el legendario Stephan Borosh (rvrsh3ll|@424f424f). Steve y Matt Kingstone me enseñaron todo sobre Azure Domain Fronting, y me sorprendió que el tráfico de Comando y Control pudiera ser exfiltrado vía HTTPS utilizando dominios legítimos como ajax.microsoft.com. ¡Incluso utiliza los Certificados TLS de Microsoft! Desafortunadamente para mí, comencé en Red Team al mismo tiempo que Domain Fronting murió en Azure. Aunque Domain Fronting en Azure había muerto, todavía había muchas técnicas increíbles de Red Team que se podían hacer con Azure.

Steve me presentó a Azure Device Code Phishing. Durante este tiempo me sumergí profundamente en Azure y Microsoft Graph API para Red Team. Creamos la herramienta TokenTactics, derivada del gran trabajo de Dr. Nestori Syynimaa (@DrAzureAD), e hicimos el blog The Art of the Device Code Phish si estás interesado en nuestra metodología.

Mientras creaba TokenTactics y experimentaba con MS Graph API, descubrí que era posible usar Microsoft Graph API como un canal C2. Hay muchas formas diferentes de usar MS Graph API como canal C2, y no soy la única persona (ni la primera) en descubrir esto. VX-Underground, creado por @smelly__vx - el creador/publicador de la técnica HellsGate, publicó información el mes pasado de que el grupo de Amenaza Persistente Avanzada (APT) norcoreano "InkySquid" (también conocido como ScarCruft y APT37) utiliza Microsoft Graph API para operaciones C2. Después de publicar un adelanto de este proyecto en Twitter y LinkedIn, varios profesionales de DFIR comentaron que esta técnica de usar Microsoft Graph API para operaciones C2 está siendo utilizada activamente por grupos de ransomware en el mundo real, con varios meses de antigüedad.

Durante el engagement de Red Team, intenté hacer funcionar Cobalt Strike con MS Graph API como canal C2. Desafortunadamente, fallé, pero este sigue siendo un objetivo futuro. El problema que enfrento para que esto funcione con Cobalt Strike es que MS Graph API utiliza 2 tokens para las comunicaciones. El primer token es el Token de Actualización que puede durar hasta 90 días. El segundo token, el Token de Acceso, es un token temporal que dura aproximadamente una hora. Las comunicaciones directas a MS Graph API se realizan autenticándose con el Token de Acceso. Una vez que un Token de Acceso expira, el Token de Actualización se puede usar para obtener nuevos Tokens de Acceso. Como todavía soy nuevo en Red Team y desarrollo de Cobalt Strike, no pude descubrir cómo usar el perfil Malleable C2 de Cobalt Strike para soportar la obtención constante de nuevos Tokens de Acceso y el envío de estos Tokens de Acceso cambiantes en el encabezado Authorization de las solicitudes del beacon HTTPS. Desde que publiqué el adelanto en Twitter, Joe Vest, Alfie Champion y otras estrellas de la comunidad me han dado una dirección épica sobre cómo hacer que esto funcione con Cobalt Strike. ¡Con suerte habrá un seguimiento de Cobalt Strike para este proyecto en el futuro ;)

Flujo de ejecución del implante

  1. Obtén un Token de Acceso para MS Graph API usando el Token de Actualización codificado del atacante.
  • Esto se hace a través de comunicaciones TCP HTTPS con el host graph.microsoft.com.
  • Este tráfico se cifra utilizando el Certificado TLS devuelto por el servidor web legítimo de Microsoft.
  • El implante utiliza la biblioteca de vínculos dinámicos WinInet para las comunicaciones HTTPS.
  • El Token de Actualización del atacante codificado debería ser válido durante 90 días.
    • Si el implante se ve comprometido, el atacante puede revocar el Token de Actualización codificado para restringir el acceso de los ingenieros inversos de malware.
  1. Después de que el implante recibe un Token de Acceso para MS Graph API del atacante, entra en un bucle infinito.
  • Si no hay conexión a Internet o la conexión se interrumpe durante el bucle, el implante dormirá durante 3 minutos y lo intentará de nuevo.
  • El implante lleva un registro del tiempo, y si han pasado 15 minutos, obtendrá un nuevo Token de Acceso para continuar las comunicaciones.
  1. La primera tarea en el bucle es usar el Token de Acceso de MS Graph API para acceder al buzón de Borradores del atacante y leer el mensaje más reciente en busca de comandos para ejecutar en el dispositivo Windows comprometido.
  • Se eligió el buzón de Borradores porque de esta manera no se envían correos electrónicos a través de SMTP.
  1. Una vez que se recibe el comando, se analiza para determinar qué metacomando ejecutará. Actualmente hay 3 metacomandos: cmd, sleep, exit
  • cmd: Toma la cadena siguiente después del metacomando y la ejecuta generando un proceso hijo.
  • sleep: Toma la palabra siguiente después del metacomando y cambiará el tiempo de sueño del implante al valor proporcionado (en milisegundos).
  • exit: Sale/finaliza el proceso anfitrión.
  1. Si el metacomando es cmd, el implante creará un proceso hijo para ejecutar el comando, el proceso hijo escribirá su salida estándar en un pipe, el proceso hijo saldrá después de la ejecución del comando, y el proceso anfitrión del implante leerá la salida del proceso hijo a través del pipe.
  2. Después de que el implante obtiene la salida del comando ejecutado, utilizará MS Graph API para crear un nuevo correo de borrador que contenga la salida del comando.
  3. Luego, el implante creará un segundo correo de borrador con un cuerpo en blanco.
  • Esto permite el registro de la salida del comando dentro del buzón de Borradores del atacante.
  • Esto pone a disposición del atacante un mensaje de borrador nuevo para ingresar el siguiente comando que ejecutará el implante.
  1. Después de que el comando se haya ejecutado y la salida devuelta al atacante, el implante dormirá durante un tiempo controlado por el atacante y luego repetirá este bucle.

Instrucciones

  1. Configura la infraestructura Azure Red Team que se utilizará como Comando y Control siguiendo mi publicación de blog The Art of the Device Code Phish para configurar:
  • Suscripción de cuenta de Azure
    • Al crear una cuenta de Azure, ayuda al equipo DFIR de Microsoft atribuyendo tu cuenta a tu organización Red Team. Esto ayuda a ahorrar tiempo a su equipo cuando investigan si eres una amenaza real, si realizas servicios de emulación de amenazas o si realizas investigación ofensiva de seguridad.
    • Consulta a Nick Carr- Lead, Cyber Crime Intelligence / Investigations @Microsoft para obtener más información.
  • Inquilino de Azure Active Directory
  • Office 365 para Azure Active Directory
  • Crea un usuario para el buzón de Outlook Comando y Control
  • Instala el Módulo PowerShell TokenTactics
  1. Usa TokenTactics para obtener el ID del Inquilino de Azure AD que acabas de crear:
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. Agrega tu ID de Inquilino a la variable char tenantId[] dentro del archivo azureOutlookC2.c.
  2. Obtén un Token de Actualización de Azure usando TokenTactics para hacerte un device code phish a ti mismo con el usuario del buzón C2:
root@kitploit:~
# Importa el módulo TokenTactics a la sesión de PowerShell
PS C:\Users\boku> cd .\TokenTactics
PS C:\Users\boku\TokenTactics> Import-Module .\TokenTactics.psd1
# Inicia una solicitud de device code phish para obtener un 'user_code'
PS C:\Users\boku\> Get-AzureToken -Client Graph
user_code        : ERDVDCNHH
  1. Ve a microsoft.com/devicelogin, ingresa el user_code de TokenTactics e inicia sesión con el usuario del buzón C2.
  2. En la sesión de PowerShell que ejecuta TokenTactics, copia el token de actualización del device code phish exitoso que te hiciste a ti mismo.
  • Si necesitas más información sobre cómo funciona TokenTactics, consulta The Art of the Device Code Phish
  1. Agrega tu token de actualización a la variable char refreshToken[] dentro del archivo azureOutlookC2.c.
root@kitploit:~
void main() {
    // Variables
    char refreshToken[] = "0.AXwAoFFVHfL0AUGcOzlCR-x-CNYOWdOzUgJBrv-q0ikqsBx8ACA.AgABAAAAAA...
//                           ^Coloca aquí tu token de actualización y compila
  1. Compila azureOutlookC2.c.
root@kitploit:~
# Compila con MinGW x64:
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. Ejecuta el archivo PE azureOutlookC2.exe en un dispositivo Windows.
  2. Como atacante desde la computadora del atacante, abre un navegador, inicia sesión en outlook.office.com y controla el dispositivo Windows que ejecuta el implante desde tu buzón.

Objetivos iniciales del proyecto

  • Crear una prueba de concepto funcional que use Microsoft Graph API como canal C2 y controlar una computadora desde mi correo electrónico.

Lo que este proyecto es

  • Este proyecto es una prueba de concepto, que demuestra cómo un atacante puede usar Microsoft Graph API para operaciones C2.
  • Este proyecto está destinado a que otros investigadores de seguridad ofensiva aprendan de él.
  • Personalmente no he encontrado grandes formas de defender o detectar este canal C2. Mi esperanza es que al proporcionar esto a mentes defensoras superiores a la mía, resulte en algunas técnicas defensivas increíbles.

Lo que este proyecto no es

  • Este proyecto en sí mismo no es un C2 completamente funcional, listo para engagements seguros en OPSEC.

Ideas de detección y prevención de defensores (para agregar, por favor envía un Pull Request)

Mehmet Ergene (@Cyb3rMonk) Consejos de detección

  1. "Hacer una línea de base de las aplicaciones que se conectan a Graph API y verificar las anomalías podría ser una idea. Sin embargo, podría ser fácilmente evadido."
  2. "Como siempre, detectar tráfico de beaconing. (Haré una mejora para cubrir Graph API y cosas similares)"

F-Secure - Compartido por Alfie Champion

  • "Microsoft es un ejemplo de una organización que ha tomado medidas proactivas para defender a las organizaciones del abuso de sus servicios. Recientemente ha desarrollado la capacidad de detectar y bloquear el uso malicioso de Aplicaciones de Azure. Específicamente, F-Secure ha observado que cualquier aplicación utilizada en el framework C3 (como OneDrive365 y Outlook365 (O365)) ahora es detectada como maliciosa y posteriormente deshabilitada por Microsoft (dentro de aproximadamente tres horas)."

Créditos / Referencias

  • Cursos de Desarrollo de Malware de Sektor7
  • @passthehashbrwn - Generación dinámica de payloads con 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

Proyectos/Investigaciones/Blogs geniales que son similares

F-Secure C3 - Comando y Control personalizado

  • "C3 fue construido en respuesta a este requisito. Es una herramienta que permite a los Red Teams desarrollar y utilizar rápidamente canales de comando y control (C2) esotéricos."
  • RIP OFFICE365 COMMAND AND CONTROL – WE HARDLY KNEW YOU
  • Repositorio GitHub de F-Secure C3 - Custom Command & Control

Callidus por Chirag Savla

  • "Está (Callidus) desarrollado usando .net core framework en lenguaje C#. Permite a los operadores aprovechar los servicios de O365 para establecer un canal de comunicación de comando y control. Utiliza Microsoft Graph APIs para comunicarse con los servicios de O365."
  • Repositorio GitHub de 3xpl01tc0d3r/Callidus
  • Introducción a Callidus - Publicación de blog

Azure Application Proxy C2 - Adam Chester (@_xpn_)

  • Azure Application Proxy C2 - Blog de investigación
Descargar herramienta