За двадцать с лишним лет, что я провёл в мире нолей и единиц, где серверы шумят, как старые паровозы, а сетевые кабели переплетаются в нечто вроде джунглей, я повидал всякое. Вирусы, черви, трояны – это всё классика, азбука. Но вот последние лет пять-семь, особенно в наших российских реалиях, ситуация стала куда интереснее, точнее, куда более мерзкой. Речь про компьютерные вирусы, которые используют шифрование не для вымогательства, а для маскировки. Это как хамелеон, который не просто меняет цвет, а становится невидимым, растворяясь в воздухе. И, поверьте, это не просто теоретические изыскания из отчётов Лаборатории Касперского, это то, с чем приходится сталкиваться практически каждый день.
Раньше как было: поймал антивирус сигнатуру – молодец, обезвредил. Сейчас же злоумышленники стали хитрее. Они поняли: если код зашифрован, да ещё и своим, самописным алгоритмом, то для антивируса это просто набор случайных байтов. Ну или, на худой конец, какой-нибудь легитимный зашифрованный файл. Это как пытаться найти наркотики в чужом чемодане, где все вещи в вакуумных пакетах: ты видишь пакеты, но не знаешь, что внутри. Такая вот цифровая маскировка, или, как мы говорим, мимикрия.
Почему они это делают?
Всё просто: обход обнаружения. Стандартные антивирусы работают по сигнатурам, эвристике и поведенческому анализу. Зашифрованный код обходит все три:
- Сигнатуры: их нет. Код меняется при каждой генерации или даже при каждом запуске. Это называется полиморфизм или метаморфизм.
- Эвристика: сложно. Большая часть кода не анализируется до момента расшифровки.
- Поведенческий анализ: вот тут уже сложнее, но и тут есть лазейки. Часто вирус сначала запускает безобидный загрузчик, который уже потом, в нужный момент, расшифровывает и выполняет основной вредоносный код. Это может быть задержка по времени, проверка наличия определённых файлов или даже сетевых условий.
Я помню один случай, пару лет назад. У клиента, крупной логистической компании, начал твориться натуральный ад на серверах. Трафик какой-то левый пошёл, нагрузка выросла, но антивирус на Windows Server 2019 молчит, как партизан на допросе. Ничего не видит. Мы уже волосы на себе рвали. Начали копать глубже. Оказалось, что на одном из серверов, который отвечал за документооборот, сидел бэкдор. И сидел он не в каком-то экзешнике, а в виде зашифрованного BLOB-объекта, который был прикреплён к одному из легитимных исполняемых файлов. Причём, этот файл, какая-то малоиспользуемая утилита от стороннего вендора, был изменён таким образом, что при определённых условиях он сам расшифровывал и запускал этот BLOB. Как это вычислили? Лайфхак: мы стали мониторить не только сигнатуры, но и энтропию файлов. В обычных исполняемых файлах, библиотеках, энтропия распределена довольно неравномерно, есть секции кода, данных, ресурсов. А вот зашифрованный файл или его часть, как правило, имеет очень высокую, почти равномерную энтропию, близкую к 8 битам на байт. Это верный признак того, что там что-то зашифровано или сжато. Утилиты типа binwalk
или даже просто написанные на Python скрипты могут это показать. И вот когда мы увидели в утилите, которая по идее должна содержать только текст и пару функций, секцию с аномально высокой энтропией – пазл сложился. Вирус был там, спрятан, как яйцо Кощея.
Нюансы и «подставы»
Самое противное в этой истории – это то, что эти вирусы часто используют не какой-нибудь там AES-256, который можно быстро определить по сигнатурам криптобиблиотек, а свои, кастомные, зачастую очень простые алгоритмы. Какой-нибудь XOR с меняющимся ключом, или даже просто роллинг-XOR. Для них это дёшево и сердито, а для нас – головная боль. Антивирус не видит криптографию, потому что это не «стандартная» криптография, а просто набор битовых операций. И вот тут начинается игра в кошки-мышки.
Ещё один кейс, который до сих пор мне в кошмарах снится, связан с Android. У одного моего знакомого, директора небольшой фирмы, начал телефон жить своей жизнью: батарея садится моментально, трафик улетает в космос, какие-то СМСки шлются на короткие номера. Он сам не айтишник, но чует неладное. Приносит мне. Я начинаю копать. Сначала стандартно: какие приложения установлены, какие разрешения. Ничего криминального на первый взгляд. Вроде обычный «фонарик» и «чистильщик памяти» из Google Play, с кучей загрузок и хорошими отзывами. Но я-то знаю, что под капотом у этих «чистильщиков» часто сидит целая банда. Начал декомпилировать APK-файлы. И что я вижу? Внутри, в ресурсах, лежит зашифрованный BLOB. Причём, он не расшифровывается сразу, а только после того, как приложение провисит в системе пару дней, или если телефон подключится к определённой Wi-Fi сети. Это такой «спящий агент». Он ждёт своего часа. Расшифровывается он, скорее всего, через DexClassLoader
, загружая новые классы прямо в память. И антивирусы на телефоне, понятное дело, тоже молчат, потому что в момент сканирования этот BLOB – просто ресурс, а не исполняемый код. Лайфхак для Android: всегда проверяйте разрешения, которые запрашивает приложение. Зачем «фонарику» доступ к СМС или контактам? И не брезгуйте ручным анализом APK, если есть подозрения. А ещё, используйте сетевой монитор на телефоне: если обычная утилита вдруг начинает ломиться на IP-адреса где-нибудь в Зимбабве – это повод задуматься.
Защита и контрмеры
Понятное дело, полностью защититься от таких продвинутых угроз сложно, но минимизировать риски можно.
- Энтропийный анализ: как я уже говорил, это наш друг. Инструменты вроде
binwalk
или написанные на Python скрипты, которые сканируют файлы на аномально высокую энтропию. Если какой-нибудь текстовый конфиг или DLL-ка вдруг показывает энтропию 7.9 – это повод для серьёзного расследования. - Поведенческий анализ и EDR-системы: современный антивирусный софт, а лучше EDR (Endpoint Detection and Response) или XDR (Extended Detection and Response) системы, фокусируются не столько на сигнатурах, сколько на поведении. Если какой-то процесс, который обычно не лезет в сеть, вдруг начинает активно обмениваться данными с неизвестными IP-адресами, или пытается модифицировать системные файлы – это тревожный звоночек. Sysmon от Microsoft (часть Sysinternals) – отличный инструмент для сбора логов о процессах, сетевых соединениях, файловых операциях. Анализ этих логов – бесценен.
- Мониторинг памяти: очень часто, после того как зашифрованный код расшифровывается и запускается, он живёт в оперативной памяти. Инструменты для форензики памяти, такие как Volatility Framework, могут помочь обнаружить инъекции кода, скрытые процессы и расшифрованные полезные нагрузки прямо в памяти. Это требует навыков, но оно того стоит.
- Песочницы с задержкой: обычные песочницы запускают файл и смотрят, что он делает. Но продвинутые вирусы могут ждать. Ждать, пока пройдёт час, или пока не будет обнаружен определённый файл или процесс. Поэтому, если у вас есть своя песочница для анализа, дайте ей время, пусть поработает несколько часов, а то и дней. Имитируйте активность пользователя.
- Принцип наименьших привилегий: золотое правило. Пользователи не должны иметь административных прав, приложения должны работать с минимальными разрешениями. Это значительно усложняет жизнь вредоносному ПО.
- Изоляция сетей и сегментация: если одна часть сети скомпрометирована, она не должна автоматически тащить за собой всю инфраструктуру. VLAN’ы, фаерволы, микросегментация – это не прихоть, а необходимость.
- Офлайн-бэкапы: это, конечно, не про маскировку, а про последствия, но всё же. Если всё остальное провалилось, и вирус всё-таки прорвался и что-то испортил (зашифровал, удалил), то чистые, не заражённые, офлайн-бэкапы – ваш последний рубеж обороны. Причём, не просто бэкапы, а тестированные. Сколько раз я видел, когда бэкапы есть, а восстановить из них ничего нельзя.
В общем, товарищи, мир кибербезопасности – это постоянная гонка вооружений. И как только мы придумываем новую защиту, хакеры уже ищут новую дырку. Шифрование для маскировки – это одна из таких дырок, которая требует от нас не только знаний, но и чутья, и готовности копать глубже, чем позволяют стандартные инструменты. Это не просто знание фактов, это образ мышления – всегда подозревать, всегда проверять, всегда искать неочевидное. И помните, что самые опасные враги – те, кого вы не видите.
Будьте бдительны. И да пребудет с вами стабильность.
Отказ от ответственности:
Информация, представленная в данной статье, основана на личном опыте и наблюдениях автора в области информационной безопасности и предназначена исключительно для образовательных и информационных целей. Она не является исчерпывающим руководством по кибербезопасности и не может заменить профессиональную консультацию. Применение любых описанных методов и «лайфхаков» должно осуществляться с осторожностью и пониманием потенциальных рисков. Автор не несет ответственности за любые прямые или косвенные убытки, возникшие в результате использования или неправильного толкования предоставленной информации.