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

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

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

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

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

Категории

Все категории
Loading categories
OneDrive-UDC2 — OneDrive как скрытый C2-транспорт для Cobalt Strike | Kitploit
Инструменты/GitHubGitHub/nmht3t/onedrive-udc2
Оборонительные ИнструментыФреймворки для пентестаПост-эксплуатацияБезопасность облачных средКомандование и УправлениеRed TeamingРазработка Полезной Нагрузки
GitHubnmht3t/onedrive-udc2

OneDrive-UDC2

OneDrive как скрытый C2-транспорт для Cobalt Strike

Репозиторий
72108527 дней назадЕщё не проверено

Популярное

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

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

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

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

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

OneDrive UDC2

Пользовательский C2-канал Cobalt Strike, использующий OneDrive в качестве транспортного уровня.

Архитектура

Что вам нужно

  • Арендатор Microsoft Entra ID с пользователем, у которого есть OneDrive для бизнеса.
  • Регистрация приложения с разрешением приложения Files.ReadWrite.All.

Настройка

1. Зарегистрируйте приложение

В портале Azure перейдите в Регистрация приложений и создайте новое приложение:

  • Тип учётной записи: Один арендатор.
  • URI перенаправления: Оставьте пустым.

Запишите ID арендатора и ID клиента со страницы обзора.

2. Добавьте разрешение Graph

В разделе Разрешения API:

  1. Добавьте Microsoft Graph, затем Разрешения приложения, затем Files.ReadWrite.All.
  2. Нажмите Предоставить согласие администратора.

3. Создайте секрет клиента

В разделе Сертификаты и секреты создайте новый секрет и скопируйте его значение.

4. Создайте папки OneDrive

В OneDrive пользователя создайте две папки: одну для входящих и одну для исходящих (например, c2inbox и c2outbox).

5. Получите ID диска и папок

Откройте Graph Explorer, войдите как этот пользователь и выполните:

GET https://graph.microsoft.com/v1.0/me/drive/root/children

Возьмите id каждой папки и driveId из любой записи в ответе JSON.

Сборка

cp server/config.json.example server/config.json

Заполните server/config.json:

ПолеЗначение
tenant_idID арендатора Microsoft Entra ID
client_idID клиента приложения
client_secretЗначение секрета клиента
drive_idID диска OneDrive
inbox_folder_idID папки входящих
outbox_folder_idID папки исходящих

Затем соберите клиент:

make

Запуск

Запустите ретранслятор (используйте screen или tmux, чтобы он продолжал работать при отключении терминала):

python3 server/relay.py --config server/config.json --ts-addr <teamserver-ip> --ts-port <udc2-port>

В Cobalt Strike создайте слушатель UDC2 на том же порту и загрузите client/bof.o.

Параметры ретранслятора

ФлагОписание
--configПуть к config.json (обязательно)
--ts-addrIP Teamserver
--ts-portПорт слушателя UDC2
--pollИнтервал опроса в секундах (по умолчанию 2.0)
--stateПуть к файлу состояния (по умолчанию: <config>.state.json)
--debugВключить отладочное логирование
--cleanУдалить файл состояния и каталог spool, затем выйти

Файл состояния, spool и блокировки

Ретранслятор создаёт несколько файлов рядом с вашим конфигом, чтобы отслеживать состояние между перезапусками:

  • Файл состояния (config.json.state.json) — отслеживает, какие файлы входящих были обработаны, ожидающие загрузки и информацию о сессии beacon. Задайте пользовательский путь с помощью --state.
  • Каталог spool (config.json.state.json.spool/) — хранит данные ответов, которые ещё не были загружены в OneDrive. Если ретранслятор аварийно завершится во время загрузки, spool сохранит данные, чтобы повторить попытку при следующем запуске.
  • Файл блокировки (config.json.state.json.lock) — предотвращает запуск двух экземпляров ретранслятора с одним и тем же состоянием. Если вы видите Another relay holds the lock, а других ретрансляторов не запущено, блокировка устарела после сбоя.

Сброс состояния ретранслятора

Если локальное состояние ретранслятора повреждено или устаревшая блокировка мешает запуску, используйте --clean, чтобы очистить файл состояния и каталог spool, и ретранслятор запустится с чистого листа:

python3 server/relay.py --config server/config.json --clean

Файл блокировки сохраняется. Ретранслятор не будет очищать, пока запущен другой экземпляр. При следующем обычном запуске он повторно инициализируется и пропускает любые файлы входящих старше 30 минут.

Вы также можете сбросить вручную, удалив файл состояния и каталог spool самостоятельно. Если файл блокировки устарел (ретранслятор не запущен), удалите и его.

Демо

POC

Ссылки

  • Документация Cobalt Strike UDC2
  • Cobalt Strike ICMP UDC2
  • WKL Slack UDC2
Скачать инструмент