Модульный троян для скрытого доступа к компьютеру

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

Совсем недавно мы наткнулись на два интересных образца вредоносных программ. Наряду с тем, что вредоносы распространялись в виде документов MS Word с эксплойтом «на борту», их структура предполагала модульность, а степень выявления антивирусными продуктами была невысока в связи с достаточно высоким уровнем обфускации [1] за счет многоразового шифрования. Мы решили взяться за изучение этого malware, а результат изложить в этой статье.

Так выглядели два файла, попавшие в наше поле зрения:

Reported for TRMSCD3L Licence expired.doc
Police report remit expired Licence.doc

Очень часто, исходя из названия, можно дедуктивно догадаться, «кем» и кому предназначен тот или иной вредоносный файл (к примеру: «Договор.doc», «Рахунок на оплату.doc» – для бухгалтеров, «Приказ НБУ №159.doc» – банкам, «Списки захопл. в зоні АТО.doc» – военным, и т.д.). В нашем случае мы можем только догадываться, так как:

- слово «Licence» – написано с ошибкой;
- слова «Licence expired» и «expired Licence» говорят о том, что тематика может касаться срока действия какой-то лицензии;
- строка «TRMSCD3L», если поискать в Google, вообще ассоциируется со SWIFT CODE банка TRUST MERCHANT BANK SARL, находящегося в Демократической республике Конго (г. Лубумбаши).

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

Как правило, изучение вредоносных программ осуществляется с помощью динамического (если возможно) и статического анализа. В статье опишем результаты изучения файла «Reported for TRMSCD3L Licence expired.doc».


Базовый динамический анализ

При открытии файла с помощью MS Word происходит эксплуатация уязвимости (если Вы на своем ПК не обновляли MS Word с 2012 года) и на компьютере создается файл c произвольным именем:

Path:        C:\Users\%USERNAME%\AppData\Local\Microsoft\Windows\
FileName:    yoymbgp.exe 
Md5:         11b6a2ea17d18c09cc274731f05e89b5

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

RegKey Data:        	C:\Users\%USERNAME% \AppData\Local\Microsoft\Windows\ yoymbgp.exe
RegKey Data Type:    	REG_SZ
RegKey Value Name:    	atk17n5rAA
RegKey Name:        	HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run


Рис. 1

Хоть это и примитивно, но мы советуем посматривать в автозагрузку вашего ПК и не допускать присутствия там неведомых вам программ. Чтобы проверить автозагрузку можно воспользоваться как штатным функционалом вашей операционной системы (в командной строке: regedit, msconfig), так и сторонним программным обеспечением.

На следующем этапе вредоносная программа запускает легитимные процессы svchost.exe и внедряет в них вредоносный код, с целью его последующей расшифровки. Эта процедура повторяется несколько раз (вначале статьи мы упоминали о многоразовом шифровании). Также, на этом этапе осуществляется взаимодействие между зараженным компьютером и сервером управления, откуда вредонос скачивает модули. Пример такого сетевого взаимодействия:

HTTP GET-запросы:
hxxp:// 95.211.204.14:80/m/228131.zip
hxxp:// 95.211.204.14:80/m/721118.zip
hxxp:// 95.211.204.14:80/m/958232.zip
hxxp:// 95.211.204.14:80/m/855787.zip
hxxp:// 95.211.204.14:80/m/5594516.zip

HTTP POST-запросы:
hxxp://95.211.204.14:443/$rdgate?ACTION=HELLO
hxxp://95.211.204.14:443/$rdgate?ACTION=START&ID=877A74B0199241848C931A962ADC55EB
hxxp://95.211.204.14:80/test.php
hxxp://95.211.204.14:80/f9S52tseWPcDGvbEY+EbYJ4RhUnZm=AUM9a6oYAcOAV1yFsXJvsCWAbvctbESCEjhquFuqiNqF7U+LXCZNvRPI=hTC33NJIGDdksedqqxnxIzDdajIAODy2BOlYTeX6UDngpU1N65nY4namu0clLOMcuLqKCUnhRFOwgl8tn4sYTWZ4ZIEBePs0AkMG5Y1QEiqWBx=V51N3X1MY4u9Oebs8jnhHPwdJ2Twszc7yDt8YAQTWRHPgkAgjNCdrlGsVknyxumtfn7tQVwg3fxRlnshF=YQsjXY0HpwxJZ5Qm7==F8bU9xCPHq6muMltO7J1cbO+JGVFBLNLQ7WqIkT5EEi


Статический анализ

Данный образец вредоносной программы был изрядно запакован – прежде чем приступить к его детальному изучению нам пришлось снять три «слоя» обфускации:

[binary_layer1.exe][6197736aec27686efb6f63e75cac0a6d]
[binary_layer2.exe][6c7441ec1b630fd299d8196367aefeea]
[binary_layer3.exe][9347cb20a1ec90c61e1ff8ded379fc81]

Последующее изучение проводилось в отношении распакованного образца «binary_layer3.exe». При запуске вредоносной программы первым делом она осуществляет проверку на предмет наличия на зараженном ПК необходимых модулей («check_payload_plugin»), и, при отсутствии, инициирует их скачивание с сети Интернет. Специально для скачивания создается отдельный поток по адресу 0x00419A60 (мы его назвали «create_thread_3»).

Рис. 2

Условием выполнение потока 2 («create_thread_2») является наличие в реестре скачанных и записанных в реестр модулей вредоносной программы (рис. 3-4):

RagKey Name:        HKCU\Software\Google\Update\network\secure


Рис. 3


Рис. 4

Пример состояния реестра после скачивания необходимых модулей приведен на рис. 5. Все скачанные модули хранятся в реестре в зашифрованном виде. Имена ключей в реестре также являются произвольными.


Рис. 5

Некоторые артефакты сетевого взаимодействия зараженного ПК и сервера управления (IP-адрес сервера управления, а также URL, используемый для отправки HTTP-запроса):

Рис. 6

Рассмотрим более детально последовательность действий, выполняемых потоком 2, так как именно он играет ключевую роль в расшифровке вредоносных модулей. Потоком 2 последовательно осуществляется составление списка модулей (рис. 7), расшифровка и проверка их имен (рис. 8). Ключ для расшифровки каждого модуля уникален и является изменяемым значением (рис. 9).

Рис. 7


Рис. 8


Рис. 9


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

Bot_Engine.bin
PONY_STEALER.bin
REMOTE_DESKTOP_SERVICE.bin
SECURITY.bin
VNC_HIDE_DESKTOP.bin

Алгоритм расшифровки модулей может быть описан таким псевдокодом:

Переменные:

enc_byte    	зашифрованный байт 
dec_byte    	расшифрованный байт 
HIBYTE       	извлекает старший байт из данного 16-разрядного значения
LOBYTE          извлекает младший байт из данного 16-разрядного значения
HIWORD          извлекает старшое слово из данного 32-разрядного значения
LOWORD          извлекает младшее слово из данного 32-разрядного значения
_DWORD          двойное слово (4 байта)
_WORD           слово (2 байта)
key        	ключ, состоящий из 6 байт
size        	размер зашифрованного массива

Псевдокод:

v0 := *(_DWORD*) key;    
v1 := *(_WORD*) (key + 4);    
for (i := 0; i < size; i++) 
{                
    dec_byte := enc_byte ^ HIBYTE(v1);    
    v1 := HIWORD(v0) + LOWORD(v0) * (uint8)(LOBYTE(v1) +  dec_byte);
    ++enc_byte;    
    ++dec_byte;     
    --size;    
}

Рассмотрим полученные модули по порядку.

Bot_Engine.bin
Этот модуль должен быть запущен под названием svchost.exe или explorer.exe, иначе он заблаговременно закончит свое исполнение. Пример проверки имени процесса представлен на рис. 10.

Рис. 10-1


Рис. 10-2

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

Рис. 11

PONY_STEALER.bin
Этот модуль представляет собою не что иное, как одноименную вредоносную программу Pony, функционал которой предусматривает хищение логинов, паролей, кошельков криптовалют. На момент исследования административная панель сервера управления Pony находилась по адресу:
http://95.211.204.14/test.php

REMOTE_DESKTOP_SERVICE.bin
Модуль, обеспечивающий скрытый удаленный доступ к компьютеру жертвы посредством протокола RDP и создания обратного соединения (back-connect).
Адрес для обратного соединения:
95.211.204.14:443

SECURITY.bin
Данный модуль обеспечивал проверку фактов присутствия на компьютере антивирусного программного обеспечения и других, обеспечивающих безопасность компьютера, программ (рис. 12).

Рис. 12

VNC_HIDE_DESKTOP.bin
Модуль, обеспечивающий скрытый удаленный доступ к компьютеру жертвы посредством протокола VNC и создания обратного соединения (back-connect).
Адрес для обратного соединения:
95.211.204.14:8098


Вместо заключения.

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

Рассмотренная в статье атака была зафиксирована в первой декаде октября, исходя из чего, мы допускаем, что актуальность приведенных индикаторов компрометации (IP-адреса, в частности) может быть под вопросом.

Следует отметить, что согласно данным Passive DNS (грубо говоря – истории соответствия доменных имен и IP-адресов) в первом квартале 2014 года IP-адрес 95.211.204.14 соответствовал доменному имени severodvinsk-bux.ru, которое принадлежит веб-сайту, специализирующемуся на рекламе. Это может означать ровным счетом ничего (так как прошло больше года, да и сайт сей меняет «айпишники» как перчатки), но, для полноты картины, мы добавили эту частичку информации.



Отдел реагирования на инциденты CyS Centrum


Использованные материалы:
[1] https://ru.wikipedia.org/wiki/Обфускация