Статья

Лента / Публикация

C2-инфраструктура без сложных терминов

sh4ndo 5 мин чтения
Обложка публикации

Когда люди только заходят в мир кибербеза, в голове обычно крутятся эксплойты, 0day и шифровальщики. Про C2 вспоминают в лучшем случае в конце, как про какой-то абстрактный фреймворк. Хотя именно он и делает из разового запуска скрипта настоящую атаку, где злоумышленник может неделями рулить захваченными хостами, подкидывать новые тулзы и менять план действий в процессе атаки.

Я слишком часто сталкивался с тем, что начинающие инженеры, админы, и какеры по туториалам представляют себе C2 либо как магию, либо не представляют вообще. В отчётах об инцидентах его роль обычно описана слабо, а в учебных материалах этот материал оставляют вне скоупа. В итоге у людей нет цельной картинки: как выглядит канал связи с зомби, как он живёт и за какие хвосты его можно подтянуть.

Поэтому я решил отдельно и по-человечески описать эту тему без романтизации. Начну с общего.



C2: как хакер созванивается со своей армией зомби

Представь, что ты не просто запустил скрипт, а реально захватил пару-тройку машин. Что дальше? Руки потёр, мем открыл, горд собой? Без C2 ты просто оставил где-то в сети пару бесхозных троянов, которые ничего толком не делают, даже если и с бэкдорами, привет из 2000-х

C2 (Command & Control) — это мозг и рация одновременно. То место, откуда злоумышленник, сидящий в тапках, и раздаёт приказы армии ботнета.

Ху из ху

Хакер 👺
- Тот самый повелитель микроскопического хаоса, который хочет не разово какнуть, а управлять.

Агент (имплант, бИкон, бот — называй как хочешь) 🚌
Маленький кусок кода на чужой машине. Его задача очень простая,
- периодически выходить на связь
- спрашивать: "что делаем?"
- выполнять команды и сливать/передавать результаты

C2-сервер 🗿
- Это штаб. Туда стучатся агенты, там оператор видит кто в сети, кто спит, кому что приказать. Красивые таблички, кнопки "выполнить", "забрать файлы", "запусти вот это" и прочий офисный уют, но только для киберхаоса и криминалити.

Прокси и редиректоры 👻
- Чтобы с первой блокировки нельзя было вывести из строя С2 штаб 🔪, между агентом и реальным C2 ставят прокладку — пару лишних серваков. Снаружи видно их, а настоящий С2 сидит глубже и продолжает принимать конекты от агентов.

Как всё это общается

Агент не держит вечный звонок с сервером, это слишком палевно. Он делает вид, что обычная программа, которая иногда ходит в интернет 😊

  1. 1) Агент стартует, получает где-то адреса "старших" (домены, ip'шники, пару запасных вариантов)
    Через какое-то время:
    - стучится: "я тута, вот моя система"
    - получает задания
  2. 2) Потом живёт по схеме:
    - подождал случайное время
    - сходил на C2
    - забрал задачи
    - выполнил
    - принёс отчёт

Снаружи это выглядит как
- програмка ходит по https куда-то
- иногда дёргает DNS
- иногда лезет в популярный сервис

Короче, если не всматриваться — оно как миллион других приложений

Весь трафик, естественно, шифруется. Это не из-за паранойи, а потому что никто не хочет, чтобы админы читали в логах что-то типо этого:

{
   "команда": "стянуть пароли",
   "результат": "пароли"
   ...
}

Популярные способы связи

  1. 1) Через обычный вебчик (http/https)
    - Агент стучится по URL, как браузер
    - Шлёт запросы, получает ответы
    - Внутри — команды и данные, снаружи — обычный веб
  2. 2) Через DNS
    - Запросы к странным поддоменам вроде jdbc12.danceyourmom.com.
    - Внутри этих строк могут прятаться кусочки данных и команд
    - Плюс DNS почти всегда открыт. Минус — это уже давно палится нормальными защитниками
  3. 3) Через облака и сервисы
    - Облачные диски, гисты, заметки, paste-сервисы
    - Агент делает вид, что просто работает с облаком
    - Админу приходится отличать легитимное от "не очень" по поведению, а не по домену
  4. 4) Через мессенджеры
    - Бот в чате, канал, переписка где-нибудь
    - Агент пишет сообщения туда и читает ответы
    - В логах просто приложение, которое пользуется API мессенджера. Как половина других программ
  5. 5) P2P-схемы
      - Нет одного главного сервера — заражённые хосты общаются друг с другом
      - Команды расходятся по сети
      - Убрать такой ботнет сложнее, т.к. нет единого штаба, по которому можно вдарить

Зачем вообще заморачиваться с C2

Без C2
- ты один раз что-то стартанул, может даже что-то стащил, и всё, кино закончено

Вместе с C2
- можно неделями и месяцами тихо собирать инфу, перекидываться на другие машины, разворачивать новые тулзы, подстраивать действия под ситуацию

Это уже не "я запустил скрипт с GitHub", а настоящее, где всё рулится удалённо

А что там у защитников 🛡 

Защитники смотрят на это так:
- Какая-то эпка регулярно ходит в одно и то же место
- Лезет в облака или мессенджеры из серверной, где им делать вообще нечего
- DNS-запросы какие-то подозрительно шумные
- Процесс, который должен просто показывать картинку, внезапно запускает команды и трогает системные файлы

Им не нужно видеть команду внутри — достаточно аномального поведения, чтобы понять, что тут что-то не то. Для подобного, кстати, существует класс систем UEBA. Но у нас в РФ оно используется для мониторинга сотрудников 🤦‍♂️

И немного холодного душа напоследок

Если после этого текста у тебя в голове возникла мысль "о, а давай-ка я…", то спойлер: нет нифига, давай-ка ты не будешь. Всё, что выше, — чтобы понимать, как это устроено, а не чтобы повторять подвиги героев из хроник "мордой в пол".

Всё, что связано со взломом без разрешения = уголовка, а не приключение.
Точно такие же механизмы используются легально:
- админы — для удалённого управления
- пентестеры и red team — по договору, с бумажкой и под расписку

Разница одна: разрешение. Без него ты не какер, а фигурант дела.

А вот понимать, как работает C2, — полезно всегда: хочешь ли ты в будущем строить защиту, пойти в безопасный оффенс или просто не быть тем админом, который ничего не заметил, пока по сервакам уже месяц ходили ботинки.