Представляю Вашему вниманию отчет о последней версии Dridex – известного банковского трояна, который прославился своей сложностью и способностью оставаться незамеченным даже на зараженных компьютерах.
1. ВВЕДЕНИЕ
Dridex — это банковский троян, известный своей сложностью и способностью оставаться незамеченным на устройствах, которые он заражает. Эти устройства, будучи зараженными, встраиваются в модульную бот-сеть, в которой вредоносные характеристики (внешние или свои собственные) могут быть свободно добавлены к ним через модули или библиотеки.
Первая версия появилась в конце 2014 года. В начале 2015 года было выпущено новое крупное обновление, давшее жизнь второй версии. При просмотре более ранних версий Dridex, самой стабильной и устойчивой из них стала третья версия, которая появилась в апреле 2015 года и использовалась в хорошо известных кибератаках вплоть до четвертой версии – последней известной версии, появившейся в феврале 2017 года.
Никаких других крупных обновлений для Dridex со времен демонтажа основных компонентов бот-сети, выполненного спецслужбами в 2015 году, обнаружено не было.[1]
Этот новый вариант банковского трояна содержит новые функциональные возможности. Одна из них называется AtomBombing – это функционал, предназначенный для встраивания кода без вызова подозрительных API во избежание обнаружения со стороны систем мониторинга. Она содержит технику взлома DLL для повышения своей «живучести». Наконец, были оптимизированы различные криптографические методы, используемые для получения конфигурации. [2]
2. ХАРАКТЕРИСТИКИ ТРОЯНА
Ниже приведены некоторые статические свойства анализируемого файла. Хэш трояна:
Внутренняя дата создания анализируемого образца – 16 мая 2017 года. Рассматриваемый файл был скомпилирован для исполнения в 64-битных окружениях с целью имитации легальной dll от Microsoft.
Рис 1. Свойства файла
В дополнение к этому файл зашифрован с помощью уникального алгоритма, что позволяет ему оставаться незамеченным со стороны антивирусов.
Было установлено, что исполняемый файл имеет довольно большое количество разделов (всего – 11), что мы можем увидеть на рисунке 2:
Рис 2. Статичная информация анализируемого бинарного файла
В разделе DATA мы можем увидеть, что энтропия находится на уровне 7,799, и она является достаточно большой. Она находится именно в том разделе, в котором можно найти сложно зашифрованный и упакованный бинарный файл (он после дешифрации становится реальным вредоносным кодом). В первом расшифрованном слое исполняемый файл хранит память в процессе, затем копирует код и в конечном итоге вызывает и запускает его, как мы можем видеть на рисунке 3:
Рис. 3. Переход к шелкоду
Первое, что делает код, — получает адреса функций, которые он будет использовать. Он делает это с помощью динамического поиска через библиотеки, загруженные программой. Для выполнения этой задачи он выполняется через структуру PEB_LDR_DATA и структуры LDR-MODULE, чтобы найти основной адрес загружаемых dll. Он обращается к начальному адресу таблицы экспорта для того, чтобы выполнить все функции, экспортируемые dll, и найти адрес искомой функции в памяти компьютера.
Рис. 4. Перечисление загруженных модулей
Шелкод, в свою очередь, проверяет, есть ли «хук» в недокументированной функции LdrLoadDll, обращаясь к ее адресу и проверяя, является ли первый бит таким же как E9 (эквивалент jmp ассемблера).
Рис. 5. Верификация хука
Если предыдущая верификация прошла успешно, он переходит к распаковке процесса памяти dll с названием “snxhk.dll”, которая является библиотекой Avast и AVG, создающей «хуки» для мониторинга процессов, происходящих в песочнице.
Рис. 6. Библиотека: snxhk.dll
Наконец, шелкод расшифровывает исполняемый файл в разделе DATA в памяти компьютера, копирует его в адрес базового образа, а затем запускает новый получившийся исполняемый файл.
Рис. 7. Расшифрованный исполняемый файл
Таким образом, полный процесс распаковки образца можно увидеть на рисунке 8, где он представлен более схематично.
Рис. 8. Полный процесс распаковки
3. ПРОЦЕСС ЗАРАЖЕНИЯ
3.1. Векторы заражения
Пока непонятно до конца, по каким направлениям осуществляется заражение устройства. Это может быть с помощью эксплойта или в рамках спамовой кампании.
3.2. Взаимодействие с зараженной системой
После запуска троян проверяет, является ли он единственным экземпляром вредоносной программы, запущенной на устройстве, а также проверяет, был ли он уже внедрен в процесс explorer.exe.
Все это выполняется путем создания и открытия мьютекса. Для того чтобы добиться этого, он сперва выстраивает вместе название устройства и имя пользователя, а затем вычисляет их MD5-хэш.
Рис. 9. Вычисление хэша
Затем, он добавляет квадратные скобки в начале и конце и разделяет их черточками, подобно COM-объекту.
Рис 10. Мьютекс, созданный в системе
Используя данный алгоритм, можно разработать вакцину, которая создает эти мьютексы в системах, чтобы избежать заражения трояном Dridex. Вредоносная программа, которая не запущена, создает папку в %WINDOWS%\system32\[0-9]{4]
Рис. 11. Созданная папка
Вредоносная программа копирует легальный .exe в папку вместе с соответствующими .dll или .cpl. Этот .dll или .cpl не является легитимным — это и есть троян. После запуска .exe из папки, загружается вредоносный .dll или .cpl с помощью техники, известной как hijacking.
Он также программирует задачу со случайным названием (в нашем примере на рисунке 12 — это “Domitxtdoi”), которая будет запускаться каждые 60 минут.
Рис. 12.Создание задачи
В данном примере мы видим, что запускается tcmsetup.exe, после чего загружается вредоносная dll (TAPI32.dll) и начинается процесс заражения.
После программирования задачи запускается набор команд и создается правило в файерволе для explorer.exe:
netsh advfirewall firewall add rule name=«Core Networking — Multicast Listener Done (ICMPv4-In)» program=«C:\Windows\Explorer.EXE» dir=in action=allow protocol=TCP localport=any
Создание вредоносной задачи
schtasks.exe /Create /F /TN «Utdcm» /SC minute /MO 60 /TR «C:\Windows\system32\3007\tcmsetup.exe» /RL highest
Во время этого процесса вредоносная .dll будет встроена в процесс explorer.exe, используя технику AtomBombing. Затем она будет ожидать момента, когда пользователь откроет браузер (Internet Explorer, Firefox, Chrome и т.д.).
В момент, когда пользователь откроет браузер, новый шелкод будет внедрен из explorer.exe в браузер, используя ту же самую технику AtomBombing.
4. ПРИСУТСТВИЕ В СИСТЕМЕ
Для обеспечения своего присутствия в системе, выполняется ряд следующих действий. Он создает папку с четырьмя случайными цифрами в C:\Windows\System32, внутрь которой он копирует легитимный исполняемый файл Windows (не всегда один и тот же) и .dll, которая должна загружаться данным исполняемым файлом. Как раз эта .dll и будет модифицирована вредоносным кодом.
Рис. 13. Присутствие в системе
Данная техника известна как DLL-hijacking. Она использует команду, которая позволяет системе искать библиотеки/файлы, которые она собирается загрузить/использовать. В случае с рисунком выше, исполняемый файл «SystemPropertiesPerformance.exe» загрузит «SYSDM.CPL» среди других библиотек. По умолчанию, поиск файла «SYSDM.CPL» сперва будет осуществляться в той папке, где было запущено приложение. В нашем примере — это C:\Windows\ System32\1365. Если данный файл там не будет найден, то его поиск будет осуществляться в других папках в зависимости от того, как в системе настроен порядок поиска .dll файлов.
После того как исполняемый файл и модифицированная .dll будут скопированы в одну и ту же папку, теперь Dridex должен сделать так, чтобы вызывать как можно меньше подозрений, поэтому его вредоносные действия осуществляются посредством легитимной программы.
Чтобы выполнить файл, он создает запланированную задачу, чтобы запускать его в папке со случайными цифрами (C:\Windows\System32\1365) каждый час, как показано в предыдущей главе.
Рис. 14. Создание запрограммированной задачи
Как уже упоминалось, название папки содержит четыре случайных цифры, а исполняемый файл, который он создает, не всегда имеет такое же название, как .dll, но вредоносная программа всегда знает, какой исполняемый файл какую загружает библиотеку, и она всегда способна модифицировать указанную библиотеку с помощью вредоносного кода.
Продолжая наш анализ, мы видим, что он действует следующим образом:
К сожалению, не доступен сервер mySQL