В 2022 году нес­коль­ко анти­вирус­ных ком­паний опуб­ликова­ли обзо­ры написан­ного на C бек­дора из семей­ства PlugX под наз­вани­ем Talisman. На при­мере это­го тро­яна мы раз­берем, как выпол­няет­ся динами­чес­кий и ста­тичес­кий ана­лиз вре­донос­ного ПО, а так­же соз­дадим собс­твен­ные сиг­натуры для детек­тирова­ния иссле­дуемо­го образца.

Бек­доры это­го семей­ства извес­тны с мар­та 2022 года и доволь­но хорошо изу­чены. Впер­вые опи­сала его воз­можнос­ти ком­пания Trellix, схо­жий модуль так­же опи­сыва­ет ком­пания Dr.Web под наз­вани­ем BackDoor.PlugX.38. Кон­крет­но этот обра­зец пред­став­ляет собой мно­гоком­понен­тную вре­донос­ную прог­рамму, которая попада­ет на компь­ютер жер­твы бла­года­ря дру­гому тро­яну‑заг­рузчи­ку и работа­ет в опе­ратив­ной памяти машины.

Вре­донос сос­тоит из трех ком­понен­тов: исполня­емо­го фай­ла SNAC.EXE, име­юще­го дей­стви­тель­ную циф­ровую под­пись, который заг­ружа­ет модифи­циро­ван­ную зло­умыш­ленни­ками динами­чес­кую биб­лиоте­ку WGXMAN.DLL с помощью тех­ники DLL Sideloading. В свою оче­редь, биб­лиоте­ка содер­жит зашиф­рован­ный файл SNAC.LOG, в котором спря­тана полез­ная наг­рузка. Биб­лиоте­ка запус­кает шелл‑код в фун­кции DllMain и рас­шифро­выва­ет файл SNAC.LOG. Далее исполня­емый код, получен­ный пос­ле рас­шифров­ки это­го фай­ла, извле­кает кон­фигура­цию PlugX Talisman, а так­же основную полез­ную наг­рузку PlugX, тоже пред­став­ленную в виде динами­чес­кой биб­лиоте­ки. Она содер­жит основной модуль вре­доно­са PlugX Talisman, который заг­ружа­ется в память про­цес­са SNAC.EXE.

Принцип работы PlugX Talisman
Прин­цип работы PlugX Talisman

В этой статье мы изу­чим обра­зец вре­донос­ной прог­раммы, научим­ся про­водить ее ана­лиз, най­дем инте­рес­ные учас­тки в коде модуля, рас­шифру­ем файл SNAG.LOG, а так­же получим кон­фигура­цию PlugX Talisman и извле­чем основную полез­ную наг­рузку PlugX.

info

О том, как из под­ручных матери­алов с помощью сме­кал­ки и уме­лых рук пос­тро­ить скво­реч­ник лабора­торию для ана­лиза вре­доно­сов, под­робно рас­ска­зано в статье «Код под над­зором. Соз­даем вир­туаль­ную лабора­торию для ана­лиза мал­вари».

 

Инструментарий

Для даль­нейше­го иссле­дова­ния вре­донос­ного фай­ла вос­поль­зуем­ся сле­дующим соф­том:

  1. Die — прог­рамма для опре­деле­ния типов фай­лов;
  2. PeStudio — прог­рамма для поис­ка арте­фак­тов в исполня­емых фай­лах;
  3. IDA Pro — инте­рак­тивный дизас­сем­блер, исполь­зуемый для реверс‑инжи­нирин­га;
  4. Wireshark — инс­тру­мент для ана­лиза сетевых про­токо­лов;
  5. Burp Suite — исполь­зует­ся в качес­тве проз­рачно­го прок­си‑сер­вера с целью ана­лиза вза­имо­дей­ствия вре­донос­ного фай­ла по про­токо­лу HTTPs;
  6. Loki Scanner — ска­нер IOCs;
  7. YaraEditor — прог­рамма для тес­тирова­ния и соз­дания пра­вил YARA;
  8. ApiLoger — ути­лита для ана­лиза вызыва­емых WinAPI-фун­кций иссле­дуемо­го вре­доно­са;
  9. x64dbg — отладчик с откры­тым исходным кодом для Windows, пред­назна­чен­ный для ана­лиза вре­донос­ных прог­рамм;
  10. Process Hacker — ути­лита для монито­рин­га про­цес­сов и служб;
  11. Пла­гин mkYARA для IDA — пла­гин для генера­ции пра­вил YARA на осно­ве кода.
 

Первичный анализ

Преж­де чем прис­тупать к ревер­су фай­лов, получим пер­вичную информа­цию об иссле­дуемых образцах. Заг­рузим файл SNAC.EXE в PeStudio. При ана­лизе необ­ходимо обра­тить вни­мание на стро­ки, под­клю­чаемые биб­лиоте­ки, вер­сии фай­лов, сер­тифика­ты, а так­же на све­дения о фай­ле отладки, которые в некото­рых слу­чаях помога­ют атри­бути­ровать раз­работ­чика.

Пе­рей­дем во вклад­ку Version.

Описание исполняемого файла
Опи­сание исполня­емо­го фай­ла

Ори­гиналь­ное имя фай­ла — SNAC.exe, циф­ровая под­пись ука­зыва­ет на то, что файл раз­работан ком­пани­ей Symantec Corporation.

Строка файла отладки
Стро­ка фай­ла отладки

Файл отладки рас­положен по сле­дующе­му пути:

C:\bld_area\sesagent70\snac_build\bin.ira\snac.pdb

Пе­рей­дем во вклад­ку Libraries.

Подключаемые библиотеки
Под­клю­чаемые биб­лиоте­ки

PeStudio опре­деля­ет спи­сок биб­лиотек, которые зло­умыш­ленни­ки исполь­зуют при написа­нии вре­доно­са. Перей­дем во вклад­ку Сertificate.

Информация о подписи файла
Ин­форма­ция о под­писи фай­ла

Файл SNAC.exe явля­ется под­писан­ным, безопас­ным фай­лом. Теперь откро­ем файл WGXMAN.DLL в PeStudio.

Описание файла
Опи­сание фай­ла

В фай­ле при­сутс­тву­ет стро­ка о фай­ле отладки:

C:\bld_area\sesagent70\snac_build\bin.ira\wgxman.pdb

Пе­рей­дем во вклад­ку Strings, в которой мож­но обна­ружить стро­ку SNAC.LOG.

Те­перь выпол­ним поведен­ческий ана­лиз, получим информа­цию о про­цес­се и запишем сетевой тра­фик. Запус­тим исполня­емый файл SNAC.EXE, затем откро­ем Process Hacker и соберем информа­цию о про­цес­се.

warning

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

Пос­ле запус­ка исполня­емо­го фай­ла вре­донос соз­дал дочер­ний про­цесс conhost.exe.

Процесс SNAC.exe
Про­цесс SNAC.exe

Наж­мем два раза на имя это­го про­цес­са, откро­ем вклад­ку Modules.

Загружаемая библиотека WGXMAN.dll
Заг­ружа­емая биб­лиоте­ка WGXMAN.dll

Как вид­но из рисун­ка, вре­донос заг­рузил динами­чес­кую биб­лиоте­ку WGXMAN.dll. Пос­мотрим генери­руемый при­ложе­нием тра­фик.

Взаимодействие с управляющим сервером
Вза­имо­дей­ствие с управля­ющим сер­вером

Мо­дуль PlugX Talisman начина­ет уста­нав­ливать сетевое вза­имо­дей­ствие с управля­ющим сер­вером dhsg123[.]jkub[.]com. Пос­ле получе­ния адре­са домена уста­нав­лива­ется TCP-соеди­нение по пор­ту 80.

Содержимое TCP-пакета
Со­дер­жимое TCP-пакета

Так­же иссле­дуемый обра­зец обра­щает­ся к управля­юще­му сер­веру по про­токо­лу HTTP.

Содержимое HTTP-пакета
Со­дер­жимое HTTP-пакета

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

 

Разбор малвари

Прис­тупим к под­робно­му иссле­дова­нию кода. Про­цесс динами­чес­кого ана­лиза будем про­водить с исполь­зовани­ем ути­литы x64dbg. Ана­лиз псев­докода выпол­ним в IDA Pro с уста­нов­ленным пла­гином HexRays. В про­цес­се ана­лиза вре­донос­ных прог­рамм необ­ходимо ком­биниро­вать исполь­зуемые инс­тру­мен­ты для получе­ния наибо­лее пол­ного резуль­тата.

Прог­рамма SNAC.EXE пред­став­ляет собой безопас­ный исполня­емый файл, который име­ет валид­ную циф­ровую под­пись. Его основная задача — заг­рузка динами­чес­кой биб­лиоте­ки WGXMAN.DLL методом DLL Side-loading. Пос­ле заг­рузки биб­лиоте­ки выпол­нение переда­ется на фун­кцию экспор­та DllMain. Далее динами­чес­кая биб­лиоте­ка рас­шифро­выва­ет исполня­емый код в фай­ле SNAC.LOG и переда­ет выпол­нение на него.

Прис­тупим к ана­лизу, для это­го заг­рузим исполня­емый файл SNAC.EXE в ути­литу x64dbg, в которой будем про­водить отладку. Так­же заг­рузим динами­чес­кую биб­лиоте­ку WGXMAN.DLL в IDA.

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

В IDA откры­ваем вклад­ку File → Open и выбира­ем файл WGXMAN.DLL. Пос­ле заг­рузки фай­ла мы попада­ем на фун­кцию DllMain. Далее деком­пилиру­ем код, исполь­зуя пла­гин HexRays, для это­го нажима­ем кла­вишу F5. И син­хро­низи­руем ана­лиз кода во вклад­ке IDA View A и Pseudocode A, для чего перене­сем вклад­ку Pseudocode A в пра­вую часть вклад­ки IDA View A. Нажати­ем пра­вой кноп­ки мыши выберем Syncronize with → IDA View A, теперь при выборе учас­тка кода он будет под­све­чивать­ся в каж­дой вклад­ке.

Участок кода функции DllMain
Учас­ток кода фун­кции DllMain

Пе­рехо­дим в фун­кцию sub_6FE443C, эта фун­кция и будет точ­кой вхо­да во вре­мя динами­чес­кой отладки. Про­ана­лизи­руем ее.

Код функции sub_6FE443C
Код фун­кции sub_6FE443C

Фун­кция sub_6FE420 слу­жит для получе­ния спис­ка фун­кций экспор­та динами­чес­кой биб­лиоте­ки kernel32.dll.

Содержимое функции sub_6FE42A0
Со­дер­жимое фун­кции sub_6FE42A0

Нач­нем отладку в x64dbg. Для это­го перей­дем к фун­кции sub_6FE443C нажати­ем сочета­ния кла­виш Ctrl-G, затем наберем адрес фун­кции и раз­берем алго­ритм рас­шифров­ки кон­стант.

Переход по адресу 6FE443C
Пе­реход по адре­су 6FE443C

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии