РАЗБОР
Статья
Стеганография в аудиофайлах: как малварь прячут внутри WAV и как это обнаружить
Режим чтения
[ обложка статьи ]
Три месяца назад при разборе инцидента в финтехе я ковырял pcap трёхнедельной давности и не мог понять, как бот обновляет payload - на эндпоинте ни одного нового PE-файла, а C2-трафик шёл GET-запросами к легитимному CDN. Ответ нашёлся в WAV-файлах: шеллкод был упакован в младшие биты аудиосэмплов, а загрузчик на хосте извлекал его при каждом «скачивании». Файл воспроизводился как обычная музыка без слышимых артефактов, EDR молчал - для него это был медиафайл. Просто музыка. Ничего подозрительного.
Стеганография в аудиофайлах - не теоретическая экзотика из CTF-задач. В 2019 году Symantec зафиксировала, что группа Turla (Waterbug) использует WAV для доставки кода на заражённые хосты, а исследователи Cylance (ныне BlackBerry) в том же году нашли криптомайнеры и Metasploit-шеллы внутри аудиофайлов. С тех пор техника только развивается, а detection в большинстве организаций стоит на нуле - как именно SIEM, EDR и NDR справляются (или не справляются) с подобным, разобрано в полной карте обнаружения APT атак.
Почему WAV: что делает аудиоформат удобным контейнером для малвари
WAV (RIFF WAVE) хранит аудио в несжатом PCM-формате. Каждый сэмпл - 16-битное целое число от -32768 до 32767. Изменение младшего бита меняет амплитуду на 1/65536 от полного диапазона - это физически неразличимо на слух. Трёхминутный стерео-файл при 44.1 кГц весит около 30 МБ и содержит порядка 15.8 миллионов сэмплов. Один бит на сэмпл - почти 2 МБ ёмкости. Для шеллкода, конфигурации C2 или компактной DLL - за глаза.С точки зрения атакующего, WAV-контейнер закрывает сразу несколько проблем.
Межсетевые экраны и DLP классифицируют аудиофайлы как безопасный медиаконтент. Скачивание WAV с публичного CDN или музыкального сервиса не генерирует алертов - для сетевого фильтра это «пользователь слушает музыку». Поведенческий анализ EDR срабатывает на исполняемые файлы и скрипты, а WAV сам по себе не исполняется - payload извлекает отдельный загрузчик, уже сидящий на хосте. В SIEM скачивание аудио тонет в общем потоке HTTP-запросов. Кто будет расследовать GET на
.wav?Согласно классификации stegomalware, техника относится к Type I (Update): стеготекст и ключ скачиваются с удалённого сервера в runtime, а алгоритм извлечения зашит в загрузчик. Атакующий может обновлять payload без изменения кода на эндпоинте - заменил WAV на CDN, и бот уже тянет свежий шеллкод.
Применимость: техника работает на второй стадии атаки (post-initial access). Initial access - через классику: фишинг, эксплуатацию уязвимостей. WAV используется для скрытного обновления payload и covert channel при C2-коммуникации. Годится и для внешних пентестов (exfiltration через легитимные сервисы), и для внутренних (передача данных через SMB-шары).
Методы встраивания payload в WAV файлы
LSB стеганография аудио: классический и самый распространённый подход
Метод наименее значащих битов (LSB) - рабочая лошадка сокрытия полезной нагрузки в аудио. Младший бит каждого 16-битного сэмпла заменяется битом payload. Ухо не уловит изменение амплитуды в 1 единицу из 65536 - это за пределами человеческого восприятия.По данным Cylance (октябрь 2019), именно LSB-загрузчики были одним из трёх типов, обнаруженных в реальной кампании. Загрузчики декодировали и запускали полноценные PE-файлы из младших битов аудиоданных. При воспроизведении часть файлов звучала как обычная музыка - «that had no discernible quality issues or glitches». Без артефактов, без щелчков, без подозрений.
Ограничения для атакующего: LSB уязвим к статистическому стегоанализу (тест хи-квадрат), если payload не зашифрован перед встраиванием. В реальных кампаниях шифрование перед встраиванием - стандарт, что нейтрализует простые статистические тесты. Ещё одна проблема: метод не переживает lossy-сжатие (MP3, OGG, Opus). Если файл пройдёт через транскодер - payload разрушится. Атакующий привязан к форматам без потерь.
Детект EDR: ни CrowdStrike Falcon, ни Microsoft Defender for Endpoint, ни SentinelOne не инспектируют содержимое аудиофайлов. Поведенческий анализ сработает только на этапе исполнения извлечённого payload. Сам WAV проходит незамеченным.
Фазовое кодирование и спектральное встраивание
Фазовое кодирование модифицирует фазу начального сегмента аудиосигнала, кодируя данные в фазовых разностях между последовательными сегментами. Ёмкость ниже, чем у LSB, зато метод устойчивее к обработке сигнала и некоторым видам сжатия.Спектральное встраивание помещает данные в определённые частотные диапазоны - обычно выше 14–16 кГц, где человеческий слух наименее чувствителен. На спектрограмме такие данные видны как аномальные паттерны. Подход широко используется для цифровых водяных знаков в музыкальной индустрии - Nielsen People Meter встраивает идентификаторы станций и временные метки под программное аудио, что отслеживается портативными устройствами у слушателей.
Эхо-стеганография кодирует данные через введение микрозадержек эха в аудиосигнал. Самый устойчивый вариант к аналоговым искажениям, но ёмкость - единицы килобайт на минуту аудио. Для серьёзного payload не годится.
Применимость: фазовое кодирование и эхо-стеганография - для сценариев, где аудио может проходить через lossy-транскодирование (VoIP-каналы, стриминговые платформы). В малвари встречаются значительно реже LSB: сложнее в реализации, а выигрыш для атакующего невелик, если есть lossless-канал.
rand()-based loader: обфускация под видом аудио
В кампании 2019 года, описанной Cylance, часть загрузчиков использовала не стеганографию, а декодирование на основеrand() с фиксированным seed. WAV-файл содержал данные, которые при воспроизведении звучали как белый шум (статика), но после применения PRNG-последовательности превращались в PE-файл или шеллкод. По сути - матрёшка, только вместо деревянных кукол внутри лежит Metasploit reverse shell.Cylance классифицировала три типа загрузчиков в одной кампании:
- LSB-стеганография - извлечение и запуск PE-файла из младших битов легитимного аудио
- rand()-based PE - PRNG-декодирование полноценного исполняемого файла из данных, звучащих как шум
- rand()-based shellcode - PRNG-декодирование и прямое исполнение шеллкода в памяти
Ограничение для защитника: rand()-based метод - не стеганография в строгом смысле. Стегоанализ здесь бесполезен. Файл со статикой не содержит «скрытых» данных в легитимном аудио - весь файл и есть обфусцированный payload. Детектировать можно по поведению загрузчика (процесс читает WAV, затем запускает шеллкод) или по сетевым аномалиям (регулярное скачивание WAV одинакового размера с одного источника).
Реальные кампании: аудио стеганография в кибератаках
Turla/Waterbug: WAV как covert channel для APT
В июне 2019 года Symantec зафиксировала, что группа Turla (Waterbug) - российская кибершпионская APT - использует WAV-файлы для передачи вредоносного кода с C2-серверов на ранее заражённые хосты. Это не initial access - WAV-стеганография применялась как covert channel для обновления payload на уже скомпрометированных машинах.Контекст: до этого stegomalware фиксировали преимущественно в изображениях. Среди ранних примеров - Operation Shady RAT (2011), где IP-адреса C2 прятали в цифровых изображениях, и Duqu (2011), встраивавший данные жертв в JPEG перед эксфильтрацией. Zeus/Zbot, Gatak/Stegoloader, TeslaCrypt использовали PNG и JPEG для payload. Переход Turla на WAV - расширение вектора от изображений к аудио. Логичная эволюция: аудиофайлы крупнее, вмещают больше данных, и на них вообще никто не смотрит.
Для пентестера: модель Turla показывает сценарий, где initial access уже получен (через spear-phishing или watering hole), а WAV-канал обеспечивает скрытное обновление инструментария. При моделировании APT во внутреннем пентесте подобный covert channel позволяет обходить сетевой мониторинг на этапах lateral movement и privilege escalation.
Cylance 2019: три типа загрузчиков в одной инфраструктуре
В октябре 2019 года BlackBerry Cylance опубликовала детальное исследование кампании с DLL-файлами внутри WAV. Малварь, уже сидящая на заражённом хосте, скачивала WAV-файл, извлекала DLL побитно и запускала её. Результат - установка XMRrig для майнинга Monero.Принципиальное отличие от Turla: если Turla - nation-state шпионаж, то кампания Cylance - «run-of-the-mill crypto-mining operation», обычная финансово мотивированная атака. WAV-стеганография и сокрытие данных в медиафайлах перестали быть инструментом только APT-группировок. Техника доступна рядовым операторам малвари - порог входа снизился.
Обнаружение стеганографии в WAV: практический detection workflow
Требования к окружению
- ОС: Linux (Kali 2023.x+, Ubuntu 22.04+) или Windows 10/11 с WSL2
- Python: 3.8+, библиотеки numpy, scipy; модуль wave из стандартной библиотеки
- Audacity: 3.x для визуального спектрального анализа
- binwalk: 2.3+ для энтропийного анализа и поиска встроенных артефактов
- YARA: 4.x для автоматизированного сканирования
- RAM: минимум 4 ГБ (для анализа файлов до 100 МБ)
- Права: обычный пользователь, root не требуется
- Сеть: workflow полностью offline-совместим
Энтропийный анализ и первичная разведка
Первый шагСлепые зоны: где стандартная защита не видит скрытый код в аудио
Стандартный стек безопасности организации не рассчитан на обнаружение стеганографии в медиафайлах:| Средство защиты | Что видит | Что пропускает |
|---|---|---|
| EDR (CrowdStrike, MDE) | Поведение загрузчика при извлечении payload | Сам WAV с embedded payload |
| Network DLP | Факт скачивания, метаданные | Payload внутри аудиоданных |
| Антивирус (сигнатурный) | PE/shellcode в открытом виде | Зашифрованный payload в LSB |
| SIEM | Сетевые события (DNS, HTTP) | Нет правил для анализа энтропии файлов |
| Sandbox | Исполняемые файлы | WAV не запускается - sandbox его не анализирует |
Для пентестера это означает: WAV-стеганография - рабочий covert channel в средах с modern EDR (Elastic 8.x, CrowdStrike, SentinelOne), при условии, что загрузчик на хосте уже прошёл начальный детект. Beacon-периодичность маскируется под скачивание медиаконтента.
Для blue team ключевой вектор детекта - не анализ содержимого WAV (это дорого и при зашифрованном payload ненадёжно), а поведенческие индикаторы:
- Регулярное скачивание WAV одинакового или близкого размера с одного источника (SIEM-корреляция по user-agent + URL pattern)
- Процесс, который читает WAV-файл и в течение 60 секунд порождает дочерний процесс или исходящее сетевое соединение (EDR telemetry)
- Аномальный объём скачанных медиафайлов для конкретного пользователя или endpoint (baseline deviation)
Стеганография в аудио - одна из тех техник, про которые все знают, но почти никто не включает в модель угроз. За последние годы анализа инцидентов с covert channels я вижу устойчивый паттерн: SOC-команды строят детекшн вокруг исполняемых файлов, скриптов и сетевых сигнатур, а медиафайлы проходят сквозь мониторинг как фоновый шум. Инструменты есть - binwalk, YARA, Python-скрипты для стегоанализа доступны без ограничений. Проблема в приоритетах: аудиофайлы не попадают в scope, потому что «это же просто музыка».
И проблема глубже. Даже если добавить энтропийный анализ в file inspection pipeline, зашифрованный payload в LSB вы не поймаете статистикой. Спектральный анализ каждого WAV в потоке - нереалистичная задача для организации, где через прокси проходят тысячи медиафайлов в день. Единственный масштабируемый подход - поведенческий: не пытаться детектить обфускацию вредоносного кода в файле, а ловить аномалии в том, что происходит после скачивания. Процесс прочитал WAV и полез в сеть? Это уже alert. Но для этого нужно перестроить корреляционные правила, а не просто добавить ещё одну YARA-сигнатуру в сканер.
Подозреваю, что в ближайшие пару лет мы увидим рост стеганографических каналов не только в WAV, но и в видео, подкастах, стримах. Генеративные модели уже создают синтетический аудиоконтент с идеальным спектром - готовый покровный файл для payload, который не перехватит ни один WAF. Попробуйте прогнать свои SIEM-правила через описанный выше сценарий: endpoint скачивает WAV, через минуту - исходящее соединение. Если алерт не прилетит - у вас та же слепая зона, что и у 90% SOC-команд. На WAPT эту цепочку - от встраивания payload до поведенческого детекта - проходят в модулях по covert channels с лабами.
AI-выжимка
сгенерировано ИИ
Тезисы статьи скоро
Статья читается полностью. Тезисы со ссылками на разделы появятся позже.
Содержание
Codeby Academy
Практика и мастерство
От основ до продвинутого — программы для практиков Codeby.
Перейти к курсу →
Поиск в обсуждении
Карта ветки
Продолжить чтение
Следующий разбор
Вишинг защита корпорации: плейбук для SOC
Ещё по теме
- Статья
- Статья
Комментарии
0