Когда загрузчик Zero.T скачивал три BMP-файла с C2-сервера, корпоративная DPI-система пропустила их без единого алерта. Три обычные картинки. Каждая содержала модули экосистемы Enfal, упакованные в младшие биты пикселей. По данным Securelist, Zero.T - один из как минимум восьми семейств малвари, активно применяющих стеганографию для сокрытия коммуникаций, и список далеко не полный. Исследователи показали на примере стандартного тестового изображения Lenna: два файла размером ~786 КБ каждый - пустой и с десятью главами романа Набокова внутри - визуально неразличимы. Ровно так же работают боевые контейнеры APT-группировок. И ни один антивирус не моргнул.
Зачем APT-группировки используют стеганографию в вредоносном ПО
Стеганография решает три задачи, которые не закрывает ни шифрование, ни обфускация по отдельности.Сокрытие самого факта передачи данных. Криптография прячет содержимое, но факт передачи зашифрованного потока виден любому DPI. Стеганографический C2-канал маскирует транспорт: трафик выглядит как загрузка изображений с веб-сервера. Для средств периметровой защиты - легитимный HTTP/HTTPS на стандартных портах. Ничего подозрительного.
Обход DPI в корпоративных сетях. Глубокий анализ пакетов детектирует протокольные аномалии и известные сигнатуры. Стего-контейнер - валидный PNG или BMP с корректным заголовком. DPI видит
Content-Type: image/png и пропускает без разбора. Формально - картинка. По сути - шелл-код в красивом фантике.Уклонение от anti-APT решений. Исследователи Securelist сформулировали проблему прямо: anti-APT продукты не в состоянии анализировать все графические файлы в корпоративной сети - их слишком много, а алгоритмы стегоанализа вычислительно дорогие.
Масштаб проблемы: по данным Mandiant M-Trends 2025, медианное время присутствия злоумышленника в сети - 11 дней, а 57% организаций узнают об инциденте от внешней стороны. Стеганографический канал напрямую увеличивает это «окно присутствия». Согласно IBM X-Force 2025, 70% атак затрагивают критическую инфраструктуру - именно там скрытые каналы связи малвари бьют больнее всего.
Место стеганографии в цепочке атаки
Сокрытие пейлоада в картинках - не самостоятельная техника, а способ маскировки транспорта. Без загрузчика, который извлекает данные из контейнера, стего-контейнер бесполезен. Вот как это встраивается в kill chain с маппингом на MITRE ATT&CK:
Initial Access. Фишинговое письмо с вложением - Spearphishing Attachment (T1566.001). Стего-контейнер на этом этапе обычно не используется: он слишком велик для вложения и нетипичен для фишинга.
Execution. Жертва открывает вложение - Malicious File (T1204.002). Запускается промежуточный загрузчик или макрос, который инициализирует следующий этап.
Defense Evasion. Загрузчик скачивает стего-контейнер с легитимного или скомпрометированного хоста. Работают сразу две техники: Steganography (T1027.003) для обфускации пейлоада и Embedded Payloads (T1027.009) для сокрытия кода внутри медиафайла.
C2 Communication. Если стеганография используется как постоянный канал, а не разовая доставка модуля - применяется Steganography (T1001.002, тактика command-and-control). Загрузчик периодически скачивает «обновлённые» изображения с C2, извлекая команды. Обратная связь может идти через Dead Drop Resolver (T1102.001): агент публикует результаты в закодированном виде на легитимном сервисе.
Decoding. Извлечение нагрузки - Deobfuscate/Decode Files or Information (T1140). Алгоритм декодирования зашит в загрузчик.
Multi-Stage. В сложных кампаниях используется Multi-Stage Channels (T1104): первый контейнер содержит конфигурацию второго канала, второй - модули для пост-эксплуатации. Матрёшка, только вместо деревянных кукол - стадии компрометации.
[Применимо: внутренний и внешний пентест, modern-инфраструктура. В legacy-средах без HTTPS-инспекции стего-C2 практически неуловим; в modern-средах с SSL-инспекцией есть шанс обнаружить аномалию - но только в поведении, не в содержимом файла.]
Методы сокрытия данных в графических контейнерах
LSB-стеганография в изображениях и её вариации
LSB (Least Significant Bit) - самый распространённый метод в реальной малвари. Секретные данные записываются в один или несколько младших битов каждого пикселя. Для RGB-изображения один пиксель - три байта (R, G, B), замена последнего бита каждого байта визуально неразличима. Человеческий глаз разницу не увидит, а загрузчик знает, куда смотреть.Ёмкость: при использовании одного младшего бита в трёх каналах BMP-контейнер объёмом 8 МБ (raw pixel data) вмещает около 1 МБ скрытых данных. Для PNG ёмкость зависит от размера декомпрессированных пиксельных данных, а не от размера файла на диске. Увеличение до 2-3 бит повышает ёмкость, но качество изображения начинает деградировать.
Для JPEG применяется вариация на основе дискретного косинусного преобразования (ДКП): данные внедряются в DCT-коэффициенты. Ёмкость ниже - коэффициенты со значениями 0 и 1 не изменяются, внедрение в них невозможно. По данным Securelist, именно этот метод использовался рядом APT-семейств для JPEG-контейнеров.
Палитровая стеганография - данные записываются не в пиксели, а в палитру изображения. Ёмкость низкая, реализация простая. Для массовых кампаний сойдёт, для серьёзного пейлоада - тесновато.
Когда техника НЕ работает: LSB-стеганография детектируется статистическими методами - гистограммным анализом и RS-методом. Пересжатие изображения (конвертация PNG->JPEG->PNG) уничтожает скрытые данные. Прокси с пережатием трафика теоретически обезвреживают контейнер, но в продуктивных корпоративных сетях пережатие изображений встречается редко - никто не хочет ломать интерфейсы ради гипотетической угрозы.
Служебные поля и метаданные: скрытые команды в документах и изображениях
Полезная нагрузка помещается в служебные поля заголовка: EXIF-данные JPEG, ancillary chunks PNG, комментарии BMP. Реализация тривиальна - произвольные байты записываются в поля, которые рендер-движок игнорирует при отображении.Когда техника НЕ работает: низкая ёмкость, обнаруживается любым просмотрщиком метаданных. Команда
exiftool suspicious.jpg выявляет инъекции за секунды. Тем не менее метод используется в массовых кампаниях - потому что написать парсер EXIF-поля проще, чем реализовать LSB-декодер.Оверлей: два файла в одном
Метод основан на том, что обработчики некоторых форматов читают файл до маркера конца данных и дальше не заглядывают. Классика - RAR-JPEG: к JPEG-файлу дописывается RAR-архив. Просмотрщик показывает картинку, архиватор - содержимое.По оценке Securelist, это не стеганография в строгом смысле, но метод активно применяется в дикой природе. Размер файла аномально велик относительно разрешения изображения (картинка 100×100 весит 5 МБ - тут даже аналитик-джун задумается), а утилита
binwalk выделяет оверлей за миллисекунды.APT-кейсы: стеганография в реальных атаках
Zero.T: модули в Bitmap-файлах
Zero.T - загрузчик из экосистемы Enfal, обнаруженный в конце 2016 года. Первое описание опубликовал Proofpoint, затем подробный анализ провели исследователи «Лаборатории Касперского». Название происходит от строки в пути к PDB-файлу в исполняемом коде.Механика: после закрепления в системе Zero.T загружает полезную нагрузку в формате BMP с C2-сервера. Каждый файл - обычное изображение для антивируса. Загрузчик обрабатывает файлы, извлекая из младших значащих бит вредоносные модули. Количество используемых бит варьируется - алгоритм допускает вариативность.
Исследователи Securelist продемонстрировали визуальную атаку на контейнеры Zero.T: при построении новых изображений из LSB-плоскостей различных цветовых каналов заполненный контейнер отличается от пустого характерным шумом. Но для человеческого глаза два файла идентичны. Именно поэтому стего-контейнеры невидимы для EDR-решений (CrowdStrike Falcon, SentinelOne, Elastic EDR 8.x+): файл не содержит исполняемого кода в явном виде, декодирование происходит в памяти процесса загрузчика. EDR видит процесс, который «смотрит картинки». Подозрительно? Нет.
Стего-кампании других APT-группировок
Помимо Zero.T, стеганографию используют как минимум: Microcin (AKA six little monkeys), NetTraveler, Zberp, Shamoon, KinS, ZeusVM и Triton (Fibbit) - по данным Securelist, и перечень не претендует на полноту.По данным отчёта CYFIRMA за Q2 2024, малварь RollMid устанавливает C2-коммуникацию через трёхэтапный процесс: HTML-файлы, PNG-изображения со стеганографией и данные в Base64-кодировке. Классический Multi-Stage Channels (T1104): каждый этап раскрывает адрес следующего, а стеганография скрывает ключевое звено цепочки.
Отдельно стоит упомянуть LokiBot - инфостилер, известный кражей учётных данных. По данным анализа Trend Micro, обновлённые варианты LokiBot используют стеганографию для сокрытия кода внутри JPG-файлов. Вредонос устанавливается как пара .jpg + .exe, где JPG содержит данные для реализации вредоносного кода. И вот тут важный момент: стегано-малварь перестала быть прерогативой APT и проникла в mass-market. Если раньше это была экзотика для целевых атак, то LokiBot - массовый инфостилер. Порог входа снижается.
Параллельный тренд: C2 через облачные сервисы
Стеганография - не единственный способ спрятать C2 «на виду». По данным Unit 42, в 2024-2025 годах кластер CL-STA-1020 нацелился на правительственные организации Юго-Восточной Азии. Группировка разработала ранее незадокументированный бэкдор HazyBeacon с C2 через AWS Lambda URLs - трафик к amazonaws.com сливается с легитимными коммуникациями. Общий знаменатель: и стего-C2, и cloud-C2 эксплуатируют доверие - к формату файла и к облачному провайдеру соответственно. Заблокировать amazonaws.com в корпоративной сети? Удачи - половина инфраструктуры ляжет.Обнаружение стеганографии в трафике и на эндпоинтах
📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
Это выглядит так:
CrowdStrike Falcon, SentinelOne, Elastic EDR 8.x+ - ни один из этих продуктов не выполняет стегоанализ скачиваемых файлов. Они детектируют поведение загрузчика (создание процесса, инъекция в память), но не контейнер как таковой. Картинка для EDR - просто картинка.
Kaspersky Anti-APT, PT Sandbox - песочницы анализируют поведение при запуске. Изображение без исполняемого кода не вызывает срабатывания: контейнер безвреден без загрузчика. Подкинь песочнице BMP с пейлоадом внутри - она скажет «чисто».
DPI-системы (Palo Alto NGFW, Check Point) - анализируют протокольные аномалии, но не содержимое медиафайлов. Стего-контейнер в валидном PNG по HTTPS проходит без алертов.
Единственный рабочий подход - поведенческий анализ на уровне сети. Если эндпоинт регулярно скачивает изображения с одного хоста с фиксированной периодичностью (beaconing), это повод для расследования. Behavioral baselining в Splunk, Elastic SIEM или MaxPatrol SIEM может выявить аномалию, но требует предварительной настройки базовой линии для каждого сегмента.
Масштаб проблемы: в корпоративной сети ежедневно проходят сотни тысяч изображений - баннеры, аватары, CDN-контент. Стегоанализ каждого в реальном времени невозможен при текущих вычислительных мощностях.
Заключение
По моему опыту, SOC-команды редко включают стегоанализ в playbook. И это не халатность, а прагматизм: при медианном dwell time в 11 дней (Mandiant M-Trends 2025) у аналитиков хватает задач поважнее. Но у прагматизма есть цена.Восемь семейств из списка Securelist - Microcin, NetTraveler, Zberp, Zero.T, Shamoon, KinS, ZeusVM, Triton (Fibbit) - активно используют стеганографию, и каждый квартал список пополняется. RollMid с трёхэтапным стего-C2 через PNG, обновлённый LokiBot со стеганографией в JPEG - это уже не APT-экзотика, а мейнстрим.
При этом промышленных инструментов детекции нет. Ни один EDR-вендор не анонсировал встроенный стегоанализ. Ни одна DPI-система не разбирает LSB-плоскости в реальном времени. Замкнутый круг: рынок не видит спроса, потому что инциденты со стеганографией не попадают в отчёты - их не находят. А не находят, потому что нечем искать.
Единственный работающий подход - косвенный: аномальная периодичность запросов к одному хосту, нетипичные размеры изображений для заявленного разрешения, стабильная структура URL при загрузке картинок. Если в вашем SIEM нет правил на подобные паттерны - стоит создать хотя бы базовый набор. Потому что стего-C2 из нишевого трюка превращается в стандартный инструмент. На курсе WAPT эту цепочку - от фишинга до стего-C2 - разбирают на реальных сэмплах с лабораторными стендами.
Последнее редактирование модератором: