Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
azureOutlookC2 — Azure Outlook Command & Control (C2) — Удаленное управление скомпрометированным устройством Windows из вашего почтового ящика Outlook. Инструмент эмуляции угроз для северокорейских APT InkySquid / ScarCruft / APT37. TTP: Использование Microsoft Graph API для операций C2. | Kitploit
Инструменты/GitHubGitHub/boku7/azureoutlookc2
Безопасность облачных средКомандование и УправлениеRed TeamingРазработка Полезной НагрузкиБезопасность API
GitHubboku7/azureoutlookc2

azureOutlookC2

Azure Outlook Command & Control (C2) — Удаленное управление скомпрометированным устройством Windows из вашего почтового ящика Outlook. Инструмент эмуляции угроз для северокорейских APT InkySquid / ScarCruft / APT37. TTP: Использование Microsoft Graph API для операций C2.

Репозиторий
5041003 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Azure Outlook C2

Azure Outlook Command & Control, использующий Microsoft Graph API для C2-коммуникаций и эксфильтрации данных.

Удалённое управление скомпрометированным устройством Windows через ваш почтовый ящик Outlook.

Создатели: Bobby Cooke (@0xBoku) и Paul Ungur (@C5pider)

Обновление CTI-угроз (13.02.2022)

Elastic Security Labs обнаружила активные вторжения в дикой природе с использованием SIESTAGRAPH. SIESTAGRAPH взаимодействует с Microsoft GraphAPI для управления и контроля через Outlook и OneDrive. Ознакомьтесь с их отличными блогами по анализу вредоносного ПО, посвящённым C2-коммуникациям Azure Outlook, ниже.

  • 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

Обновление (27.09.2021)

  • Azure Outlook C2 теперь имеет кроссплатформенный графический интерфейс пользователя (GUI)!
    • Огромная благодарность Paul Ungur (@C5pider) за обучение созданию GUI для C2 с помощью QT!

Управление компьютером через почтовый ящик Outlook с помощью GUI C2

Управление компьютером через почтовый ящик Outlook

  • Обновление поддерживает оригинальное управление через почтовый ящик Outlook.

Если у вас есть информация о похожих проектах, данные CTI об использовании этого TTP в дикой природе APT/группами-вымогателями, рекомендации по защите, советы для Red Teamers, заинтересованных в эмуляции угроз Azure C2, или любая другая информация, которая будет хорошим дополнением к этому блогу/readme, пожалуйста, свяжитесь со мной или отправьте Pull Request. Спасибо!

О проекте Azure Outlook C2

Этот проект состоит из импланта, который отправляет сигналы (beacon) в почтовый ящик Azure Outlook, контролируемый атакующим. Этот почтовый ящик действует как Command & Control (C2), удалённо управляя скомпрометированным устройством. Refresh Token Azure для почтового ящика C2 атакующего жёстко закодирован в импланте во время компиляции. При запуске на устройстве Windows имплант обращается к почтовому ящику Drafts атакующего через Microsoft Graph API. Имплант читает команды из почтового ящика Drafts атакующего, выполняет их локально на скомпрометированном устройстве Windows и возвращает результаты выполнения атакующему через создание новых черновиков сообщений. Имплант повторяет это поведение удалённого управления из почтового ящика атакующего до тех пор, пока процесс-хост импланта не будет завершён.

Почему я это создал

Около полугода назад я начал работать в Red Team в SpiderLabs Red Team компании Trustwave. Во время одного из проектов мне выпала честь работать с легендарным Stephan Borosh (rvrsh3ll|@424f424f). Стив и Matt Kingstone научили меня всему об Azure Domain Fronting, и я был поражён тем, что трафик Command & Control может быть эксфильтрован через HTTPS с использованием легитимных доменов, таких как ajax.microsoft.com. Он даже использует TLS-сертификаты Microsoft! К сожалению для меня, я начал работать в Red Team в то время, когда Domain Fronting на Azure умер. Хотя Domain Fronting на Azure был мёртв, оставалось ещё много отличных техник Red Team, которые можно было реализовать с Azure.

Стив познакомил меня с фишингом Azure Device Code. В это время я глубоко погрузился в Azure и Microsoft Graph API для Red Teaming. Мы создали инструмент TokenTactics, основанный на отличной работе Dr. Nestori Syynimaa (@DrAzureAD), и написали блог The Art of the Device Code Phish, если вас интересует наша методология.

Создавая TokenTactics и экспериментируя с MS Graph API, я обнаружил, что возможно использовать Microsoft Graph API в качестве канала C2. Существует множество различных способов использования MS Graph API как канала C2, и я не единственный (и не первый), кто это обнаружил. VX-Underground, созданный @smelly__vx — создателем/публикатором техники HellsGate, опубликовал информацию в прошлом месяце о том, что северокорейская группа Advanced Persistent Threat (APT) "InkySquid" (также известная как ScarCruft и APT37) использует Microsoft Graph API для операций C2. После публикации тизера этого проекта в Twitter и LinkedIn, несколько специалистов DFIR отметили, что эта техника использования Microsoft Graph API для C2 активно применяется группами вымогателей в дикой природе уже несколько месяцев.

Во время одного из Red Team-проектов я пытался заставить Cobalt Strike работать с MS Graph API в качестве канала C2. К сожалению, это не удалось, но это всё ещё будущая цель. Проблема, с которой я столкнулся при попытке заставить это работать с Cobalt Strike, заключается в том, что MS Graph API использует два токена для связи. Первый токен — Refresh Token, который может действовать до 90 дней. Второй токен, Access Token, — это временный токен, действующий около часа. Прямая связь с MS Graph API осуществляется через аутентификацию с помощью Access Token. Как только Access Token истекает, Refresh Token можно использовать для получения новых Access Token. Поскольку я всё ещё новичок в Red Teaming и разработке Cobalt Strike, я не мог понять, как использовать профиль Malleable C2 от Cobalt Strike для поддержки постоянного получения новых Access Token и отправки этих меняющихся Access Token в заголовке Authorization HTTPS-запросов beacon'а. После публикации тизера в Twitter Joe Vest, Alfie Champion и другие звёзды сообщества дали мне отличные направления, как заставить это работать с Cobalt Strike! Надеюсь, в будущем появится продолжение этого проекта для Cobalt Strike ;)

Поток выполнения импланта

  1. Получить Access Token для MS Graph API, используя жёстко закодированный Refresh Token атакующего.
    • Это делается через HTTPS-соединение TCP с хостом graph.microsoft.com.
    • Этот трафик шифруется с помощью TLS-сертификата, возвращённого легитимным веб-сервером Microsoft.
    • Имплант использует библиотеку динамической компоновки WinInet для HTTPS-связи.
    • Жёстко закодированный Refresh Token атакующего должен быть действителен в течение 90 дней.
      • Если имплант скомпрометирован, атакующий может отозвать жёстко закодированный Refresh Token, чтобы ограничить доступ для реверс-инженеров вредоносного ПО.
  2. После получения имплантом Access Token для MS Graph API атакующего, имплант входит в бесконечный цикл.
    • Если нет подключения к интернету или оно прерывается во время цикла, имплант засыпает на 3 минуты и повторяет попытку.
    • Имплант отслеживает время, и если прошло 15 минут, он получает новый Access Token для продолжения связи.
  3. Первая задача в цикле — использовать Access Token MS Graph API для доступа к почтовому ящику Drafts атакующего и прочитать самое последнее сообщение для получения команд, которые будут выполнены на скомпрометированном устройстве Windows.
    • Почтовый ящик Drafts был выбран потому, что таким образом не отправляются электронные письма через SMTP.
  4. После получения команды она разбирается для определения, какую мета-команду выполнить. В настоящее время есть 3 мета-команды: cmd, sleep, exit
    • cmd: Принимает следующую строку после мета-команды и выполняет её, порождая дочерний процесс.
    • sleep: Принимает следующее слово после мета-команды и изменяет время сна импланта на указанное значение (в миллисекундах).

Инструкции

  1. Разверните инфраструктуру Azure Red Team, которая будет использоваться в качестве Command & Control, следуя моему посту в блоге The Art of the Device Code Phish, чтобы настроить:
    • Подписку учётной записи Azure
      • При создании учётной записи Azure помогите команде DFIR Microsoft, указав свою учётную запись как принадлежащую вашей организации Red Team. Это экономит время их команды при расследовании, являетесь ли вы реальной угрозой, предоставляете услуги эмуляции угроз или проводите исследования в области безопасности.
      • См. Nick Carr - Lead, Cyber Crime Intelligence / Investigations @Microsoft для получения дополнительной информации.
    • Azure Active Directory Tenant
    • Office 365 для Azure Active Directory
    • Создайте пользователя для почтового ящика Command & Control Outlook
    • Установите модуль PowerShell TokenTactics
  2. Используйте TokenTactics, чтобы получить Tenant ID вашего Azure AD:
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. Добавьте свой Tenant ID в переменную char tenantId[] в файле azureOutlookC2.c.
  2. Получите Azure Refresh Token, используя TokenTactics для фишинга через код устройства (device code phish) самого себя с пользователем почтового ящика C2:
root@kitploit:~
# Импортируйте модуль TokenTactics в сеанс PowerShell
PS C:\Users\boku> cd .\TokenTactics
PS C:\Users\boku\TokenTactics> Import-Module .\TokenTactics.psd1
# Запустите запрос фишинга через код устройства, чтобы получить 'user_code'
PS C:\Users\boku> Get-AzureToken -Client Graph
user_code        : ERDVDCNHH
  1. Перейдите на microsoft.com/devicelogin, введите user_code из TokenTactics и войдите с пользователем почтового ящика C2.
  2. В сеансе PowerShell с запущенным TokenTactics скопируйте refresh token из успешного фишинга через код устройства самого себя.
    • Если вам нужна дополнительная информация о работе TokenTactics, пожалуйста, ознакомьтесь с The Art of the Device Code Phish
  3. Добавьте свой refresh token в переменную char refreshToken[] в файле azureOutlookC2.c.
root@kitploit:~
void main() {
    // Переменные
    char refreshToken[] = "0.AXwAoFFVHfL0AUGcOzlCR-x-CNYOWdOzUgJBrv-q0ikqsBx8ACA.AgABAAAAAA...
//                           ^Вставьте свой refresh token сюда и скомпилируйте
  1. Скомпилируйте azureOutlookC2.c.
root@kitploit:~
# Скомпилируйте с 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. Выполните PE-файл azureOutlookC2.exe на устройстве Windows.
  2. Как атакующий, откройте браузер на компьютере атакующего, войдите в outlook.office.com и управляйте устройством Windows, на котором работает имплант, через свой почтовый ящик.

Первоначальные цели проекта

  • Создать работающий proof of concept, использующий Microsoft Graph API в качестве канала C2, и управлять компьютером через свою электронную почту.

Что это за проект

  • Этот проект является proof of concept, демонстрирующим, как атакующий может использовать Microsoft Graph API для операций C2.
  • Этот проект предназначен для обучения других исследователей в области наступательной безопасности.
  • Я лично не придумал отличных способов защиты или обнаружения этого канала C2. Моя надежда в том, что, предоставив это более сильным умам защитников, чем я, это приведёт к появлению отличных методов защиты.

Что это за проект не является

  • Сам по себе этот проект не является полностью функциональным C2, готовым к OPSEC-безопасным проектам.

Идеи по обнаружению и предотвращению от защитников (Чтобы добавить, пожалуйста, отправьте Pull Request)

Совет по обнаружению от Mehmet Ergene (@Cyb3rMonk)

  1. "Базовое профилирование приложений, подключающихся к Graph API, и проверка аномалий может быть идеей. Однако её можно легко обойти."
  2. "Как всегда, обнаружение beaconing-трафика. (Я сделаю улучшение, чтобы охватить Graph API и подобные вещи)"

F-Secure — предоставлено Alfie Champion

  • "Microsoft является примером такой организации, которая предприняла активные шаги для защиты организаций от злоупотребления своими сервисами. Недавно она разработала возможность обнаруживать и блокировать вредоносное использование приложений Azure. В частности, F-Secure наблюдало, что любое приложение, используемое в фреймворке C3 (например, OneDrive365 и Outlook365 (O365)), теперь обнаруживается как вредоносное и впоследствии блокируется Microsoft (примерно в течение трёх часов)."

Благодарности / Ссылки

  • Курсы по разработке вредоносного ПО Sektor7
  • @passthehashbrwn — Динамическая генерация полезной нагрузки с mingw
  • Raphael Mudge — Red Team Ops with Cobalt Strike (2 из 9): Инфраструктура
  • Raphael Mudge — Red Team Ops with Cobalt Strike (3 из 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

Крутые проекты/Исследования/Блоги, которые похожи

F-Secure C3 - Custom Command & Control

  • "C3 был создан в ответ на это требование. Это инструмент, который позволяет Red Teams быстро разрабатывать и использовать необычные каналы управления и контроля (C2)."
  • RIP OFFICE365 COMMAND AND CONTROL – WE HARDLY KNEW YOU
  • Репозиторий GitHub F-Secure C3 - Custom Command & Control

Callidus от Chirag Savla

  • "Он (Callidus) разработан с использованием .net core framework на языке C#. Позволяет операторам использовать сервисы O365 для установки канала связи управления и контроля. Он использует Microsoft Graph API для связи с сервисами O365."
  • Репозиторий GitHub 3xpl01tc0d3r/Callidus
  • Введение в Callidus - Пост в блоге

Azure Application Proxy C2 — Adam Chester (@_xpn_)

  • Azure Application Proxy C2 - Исследовательский блог
Скачать инструмент
  • exit: Завершает/уничтожает процесс-хост.
  • Если мета-команда — cmd, имплант создаёт дочерний процесс для выполнения команды, дочерний процесс записывает свой стандартный вывод в канал, дочерний процесс завершается после выполнения команды, а процесс-хост импланта читает вывод дочернего процесса через канал.
  • После получения имплантом вывода выполненной команды, имплант использует MS Graph API для создания нового черновика письма, содержащего вывод команды.
  • Затем имплант создаёт второе черновик письма с пустым телом.
    • Это позволяет вести журнал вывода команд в почтовом ящике Drafts атакующего.
    • Это предоставляет атакующему новый черновик для ввода следующей команды, которую выполнит имплант.
  • После выполнения команды и возврата вывода атакующему, имплант засыпает на время, контролируемое атакующим, и затем повторяет этот цикл.