Возвращение Shamoon: охота за саудовской нефтянкой
Помните, как в 2012 году мы препарировали интересного зловреда Shamoon, действующего на Ближнем Востоке? Если не помните, то коротко напомню: то был сетевой червь, уничтожающий содержимое жестких дисков зараженных машин. В коде полно ошибок и, мягко говоря, неоптимальных решений, однако ж Shamoon записал на свой счет более 30 тысяч машин, принадлежащих нефтяным компаниям Saudi Aramco и RasGas, а после залег на дно. Так вот, он вернулся, и не один.
С ноября 2016-го по январь 2017 года мы наблюдали три волны атак новой версии червя — Shamoon 2.0. Ареал обитания тот же: компании, критичные для экономики Саудовской Аравии. Почерк тех самых ребят, что слепили Shamoon четыре года назад, хорошо узнаваем, но пару новых трюков они освоили. Впрочем, схема атаки осталась столь же незатейливой:
— Хакеры добывают из администратора целевой сети его учетные данные. Как именно — мы не знаем, но надеемся, что при помощи классической социальной инженерии, а не путем более традиционных для региона физических мер воздействия.
— С помощью добытых учетных данных один из серверов локальной сети берется под контроль и в дальнейшем используется для управления червем (не всегда).
— В Shamoon 2.0 хардкодятся учетные данные администратора, внутренний IP скомпрометированного сервера и дата активации процедуры уничтожения данных.
— Зловред раскидывается по атакуемой сети так широко, насколько это возможно. Заражаются все машины, на которые есть доступ по добытым учетным данным.
— В день Д, час Ч и минуту М наступает П, то есть Shamoon 2.0 уничтожает содержимое жестких дисков примерно так же, как это делал его предшественник Shamoon. Раньше файлы заполнялись кусками JPG-файла с горящим американским флагом, теперь используются рандомный мусор либо фото утонувшего сирийского мальчика-беженца. Затем убивается MBR и затирается основной раздел первого диска.
Как и в старом Shamoon, в этой версии червя есть возможность получения команд от локального сервера, хотя для срабатывания по заранее заданному времени никакие внешние команды не требуются. Более того, семпл, пойманный нами в январе этого года, вообще лишен функций связи с сервером.
Словом, все это очень напоминает Shamoon. Тем не менее авторы атаки не сидели четыре года сложа руки и теперь кое-что умеют:
— Shamoon 2.0 научился работать под 64-битными версиями Windows. При заражении он определяет разрядность системы (кривоватым методом — сравнивая значение переменной PROCESSOR_ARCHITECTURE с «AMD64» и «amd64», вместо того чтобы просто воспользоваться функцией IsWow64Process) и устанавливает соответствующий модуль.
— В Shamoon 2.0 появился рансомварный модуль! Правда, он пока неактивен. Прежний Shamoon был интересен отсутствием коммерческой составляющей, что в наше время случай редкий и выдает заказной характер атаки. Теперь же, видимо, хакерскую группу готовятся перевести на хозрасчет, без компенсации на питание. В общем, парни крутятся как могут.
— В Shamoon 2.0 обнаружены признаки того, что авторы используют арабский язык и йеменскую локализацию системы. Впрочем, само по себе это не позволяет прямо обвинить йеменцев, учитывая, как легко подделываются такие «доказательства».
Если хотите шокирующих технических подробностей и примеров кода — читайте отчет об исследовании, он опубликован тут.
Знаки племени Симонова
Мало кто ожидал возвращения старого доброго Shamoon, но, когда мы начали отмечать одну атаку за другой, причем каждый раз с новыми модификациями зловреда, стало ясно, что стоящая за ним группа снова в деле и стоит ожидать дальнейших сюрпризов. С учетом обфускации и шифрования кода, ловить потенциальные новые модификации надо по косвенным признакам, и при должном умении такой подход работает очень хорошо.
Делается это посредством правил для YARA, в которых описываются индикаторы, свойственные определенному семейству вредоносных программ. О Shamoon мы знали, что он использует дополнительные модули, хранящиеся в зашифрованном виде. Первые пойманные семплы Shamoon 2.0 использовали ресурсы, именованные как PKCS7, PKCS12 и X509. Но авторы быстро исправились, и в следующих версиях файлы получили стандартные имена: ICO, LANG и MENU.
И все же кое-какие привычки создатели зловреда не изменили. Так, в Shamoon и Shamoon 2 имелся ресурс, названный как »101». Сам файл каждый раз разный, но название одно и то же! Наши аналитики покрутили его так и эдак и придумали наконец, как его опознавать:
— Уровень энтропии файла выше 7.8, что означает, что данные в нем зашифрованы или архивированы.
— Размер около 30 Кб. Мы установили нижний порог в 20 Кб.
— Язык файла не установлен, притом что все другие ресурсы имели язык Arabic (Yemen) или English United States.
— Внутри нет нешифрованного PE-файла.
Протестировав эти немудреные правила, аналитики решили добавить еще несколько критериев, дабы снизить уровень возможных ложных срабатываний:
— Файл не имеет цифровой подписи.
— Объем всех известных семплов Shamoon с ресурсом »101» не превышал 370 Кб, так что мы установили предел в 700 Кб.
— Число ресурсов внутри семпла не должно быть слишком велико — не более 15.
В итоге получилось такое правило для YARA:
import "pe"
import "math"
rule susp_file_enumerator_with_encrypted_resource_101 {
meta:
copyright = "Kaspersky Lab"
description = "Generic detection for samples that enumerate files with encrypted resource called 101"
hash = "2cd0a5f1e9bcce6807e57ec8477d222a"
hash = "c843046e54b755ec63ccb09d0a689674"
version = "1.4"
strings:
$mz = "This program cannot be run in DOS mode."
$a1 = "FindFirstFile" ascii wide nocase
$a2 = "FindNextFile" ascii wide nocase
$a3 = "FindResource" ascii wide nocase
$a4 = "LoadResource" ascii wide nocase
condition:
uint16(0) == 0x5A4D and
all of them and
filesize < 700000 and
pe.number_of_sections > 4 and
pe.number_of_signatures == 0 and
pe.number_of_resources > 1 and pe.number_of_resources < 15 and
for any i in (0..pe.number_of_resources - 1):
( (math.entropy(pe.resources[i].offset, pe.resources[i].length) > 7.8) and
pe.resources[i].id == 101 and
pe.resources[i].length > 20000 and
pe.resources[i].language == 0 and
not ($mz in (pe.resources[i].offset..pe.resources[i].offset + pe.resources[i].length))
)
}
Я для чего это правило тут привел? Во-первых, это красиво. Ну и для пропаганды этого замечательного инструмента для отлова разной подозрительной софтвари. Такой вот кусочек кода позволяет успешно детектировать разные модификации Shamoon 2.0 при незначительном уровне ложных срабатываний.
А еще с помощью этого самого кусочка простого кода мы нашли еще одного, доселе неизвестного зловреда, которого окрестили StoneDrill.
Друг его StoneDrill
Как и в случае с Shamoon, создатели StoneDrill активно интересуются саудовскими организациями. Кроме того, между этими двумя зловредами прослеживается ряд стилистических параллелей. Подробнее о внутреннем устройстве StoneDrill мы расскажем на следующем саммите антивирусных аналитиков «Лаборатории Касперского», который пройдет со 2 по 6 апреля на острове Святого Мартина.
Несмотря на то что между StoneDrill и Shamoon имеется некоторое сходство, они сильно отличаются друг от друга. Целью StoneDrill также является уничтожение информации, но драйвер для прямого доступа к диску он не использует. Его модуль затирки данных внедряется в браузер, установленный на машине жертвы. Причем, если браузер запущен с правами, не позволяющими затереть диск напрямую, будут удалены лишь доступные файлы.
Авторы этого зловреда приложили серьезные усилия, чтобы затруднить его обнаружение и анализ — например, он не запускается в виртуальной среде. Кроме того, StoneDrill сделан уже не йеменцами, а иранцами, если верить следам, оставленным в коде. Но верить им необязательно, такие вещи подделываются очень легко. Авторы должны были понимать, что их код будут тщательно исследовать.
Еще момент — мы полагаем, что есть связь между StoneDrill и атакой NewsBeef, которая также направлена преимущественно против целей, расположенных в Саудовской Аравии. Для StoneDrill мы разработали правила для расшифрованных модулей — так как инструменты целевой атаки обычно модифицируются под цель, эти правила помогают обнаружить новые варианты зловреда, применяемого в атаке. Так вот, эти правила также «ловят» семплы, которые использовались в NewsBeef.
Если дать волю воображению и представить, что за всем этим вредоносным зоопарком стоят одни и те же люди, NewsBeef и StoneDrill выглядят как инструменты для долговременной работы против саудовской экономики, а Shamoon — «тяжелая артиллерия», применяющаяся по наиболее важным целям. Однако, согласно нашей рабочей версии, StoneDrill и Shamoon используются разными группами, преследующими схожие интересы.