Категория > Новости > Вскрытие покажет. Анализируем малварь в собственной лаборатории - «Новости»

Вскрытие покажет. Анализируем малварь в собственной лаборатории - «Новости»


28-12-2021, 00:00. Автор: Vaughan
Код под над­зором. Соз­даем вир­туаль­ную лабора­торию для ана­лиза мал­вари».

Стенд, который мы с тобой соб­рали в прош­лый раз, поз­воля­ет быс­тро иссле­довать обна­ружен­ный вре­донос­ный файл, соз­давать собс­твен­ные сиг­натуры и выяв­лять заражен­ные компь­юте­ры в локаль­ной сети. Сетевую сиг­натуру мы будем писать для Suricata IDS, а фай­ловую — для мно­гоп­латфор­менной прог­раммы YARA.


Ис­сле­дуемый модуль PlugX содер­жит три фай­ла: ис­полня­емый файл и две динами­чес­кие биб­лиоте­ки, в од­ной из которых сос­редото­чена основная вре­донос­ная фун­кци­ональ­ность.



warning


Преж­де чем начать иссле­дова­ние вре­донос­ного фай­ла, необ­ходимо сде­лать сни­мок сос­тояния вир­туаль­ных машин с Kali Linux и Windows 10, что­бы в любой момент мож­но было вер­нуть­ся к их пер­воначаль­ным нас­трой­кам.



 

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


Мно­гие опи­сыва­емые в статье ути­литы находят­ся в катало­ге FLARE на рабочем сто­ле вир­туаль­ной машины с Windows 10. Для даль­нейше­го иссле­дова­ния вре­донос­ного фай­ла вос­поль­зуем­ся сле­дующим соф­том:




  1. DIE — прог­рамма для опре­деле­ния типов фай­лов.


  2. PeStudio — прог­рамма для поис­ка арте­фак­тов исполня­емых фай­лов.


  3. IDA Pro — инте­рак­тивный дизас­сем­блер, исполь­зуемый для реверс‑инжи­нирин­га.


  4. Wireshark — инс­тру­мент для ана­лиза сетевых про­токо­лов.


  5. Burp Suite — исполь­зует­ся в качес­тве проз­рачно­го прок­си‑сер­вера для ана­лиза вза­имо­дей­ствия вре­донос­ного фай­ла по про­токо­лу HTTPS.


  6. SELKS — сис­тема монито­рин­га сетевой безопас­ности на осно­ве сте­ка Elasticsearch, Kibana, Logstash, Suricata.


  7. Loki Scanner — ска­нер IOCs.


  8. YARA Editor — прог­рамма для тес­тирова­ния и соз­дания пра­вил YARA.


  9. ApiLoger — ути­лита для ана­лиза вызыва­емых WinAPI-фун­кций иссле­дуемо­го вре­доно­са.


Ана­лиз вре­донос­ного модуля мы будем про­водить в три эта­па:



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

  2. По­веден­ческий ана­лиз.

  3. Соз­дание сиг­натур для выяв­ления модуля.


 

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


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


Вскрытие покажет. Анализируем малварь в собственной лаборатории - «Новости»
Ана­лиз исполня­емо­го фай­ла с помощью ути­литы DIE

Тул­за утвер­жда­ет, что иссле­дуемый файл раз­работан на C/C++ и соб­ран для 32-раз­рядных опе­раци­онных сис­тем. Теперь про­пус­тим бинар­ник через ути­литу PeStudio, что­бы най­ти все­воз­можные арте­фак­ты. Сре­ди них нам осо­бен­но инте­рес­ны вре­мен­ные мет­ки ком­пиляции фай­ла, заг­ружа­емые биб­лиоте­ки, исполь­зуемые ресур­сы, информа­ция о вер­сии исполня­емо­го фай­ла, харак­терные стро­ки, а так­же отла­доч­ная информа­ция и файл сбор­ки (Manifest). Все это при­годит­ся нам при соз­дании фай­ловой сиг­натуры.


Итак, при поис­ке строк мы обна­ружи­ли информа­цию о заг­ружа­емой биб­лиоте­ке и фун­кции вызова.


Най­ден­ные стро­ки в исполня­емом фай­ле

В стол­бце value отоб­ража­ется стро­ка Goshawk.dll, которая сиг­нализи­рует об исполь­зовании некой динами­чес­кой биб­лиоте­ки. Стро­ка ServerEntryFun содер­жит информа­цию о фун­кции экспор­та.


За­кинем иссле­дуемый файл в IDA Pro, най­дем стро­ку Goshawk.dll и учас­ток кода, в котором про­исхо­дит заг­рузка динами­чес­кой биб­лиоте­ки. Для это­го перей­дем в раз­дел Views → OpenSubviews → Strings, най­дем стро­ку Goshawk.dll, наж­мем кла­вишу X, что­бы перей­ти непос­редс­твен­но к коду заг­рузки либы, и деком­пилиру­ем этот код нажати­ем кла­виши F5.


Учас­ток кода заг­рузки динами­чес­кой биб­лиоте­ки Goshawk.dll

В дизас­сем­блер­ном лис­тинге обна­ружи­вают­ся стро­ки ServerEntyFun и Goshawk.dll. Они при­годят­ся нам при написа­нии фай­ловой сиг­натуры.


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


Ана­лиз динами­чес­кой биб­лиоте­ки с помощью ути­литы DIE

Те­перь по тра­диции пос­мотрим, что ска­жет о нашей биб­лиоте­ке PeStudio.


Ис­поль­зуемые биб­лиоте­ки

Как вид­но из скрин­шота, вре­донос исполь­зует биб­лиоте­ку ws32_32.dll, пред­назна­чен­ную для сетевых под­клю­чений TCP/IP, а так­же динами­чес­кую биб­лиоте­ку vtcp.dll. На вклад­ке Strings обна­ружи­ваем сле­дующее.


Най­ден­ные стро­ки в динами­чес­кой биб­лиоте­ке

Файл Debug.log исполь­зует­ся для записи оши­бок в резуль­тате работы вре­донос­ного фай­ла.


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


Ис­поль­зуемые фун­кции экспор­та

Наж­мем два раза фун­кцию ServerEntryFun и иссле­дуем ее код.


Учас­ток кода фун­кции экспор­та

Как видим, фун­кция CreateThread соз­дает поток, который выпол­няет­ся в пре­делах вир­туаль­ного адресно­го прос­транс­тва вызыва­юще­го про­цес­са. Параметр StartAddress ука­зыва­ет на адрес фун­кции, выпол­няющей­ся в запущен­ном потоке. В этой фун­кции содер­жится код рас­шифров­ки кон­фигура­ции модуля и код шиф­рования сетево­го вза­имо­дей­ствия с управля­ющим сер­вером.



Перейти обратно к новости