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

info

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

Стенд, который мы с тобой соб­рали в прош­лый раз, поз­воля­ет быс­тро иссле­довать обна­ружен­ный вре­донос­ный файл, соз­давать собс­твен­ные сиг­натуры и выяв­лять заражен­ные компь­юте­ры в локаль­ной сети. Сетевую сиг­натуру мы будем писать для 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 — сис­тема монито­рин­га сетевой безопас­ности на осно­ве сте­ка Elastic Search, Kibana, Logstash, Suricata.
  7. Loki Scanner — ска­нер IOCs.
  8. YARA Editor &mdash прог­рамма для тес­тирова­ния и соз­дания пра­вил YARA.
  9. ApiLoger — ути­лита для ана­лиза вызыва­емых WinAPI-фун­кций иссле­дуемо­го вре­доно­са.

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

  1. Ста­тичес­кий ана­лиз.
  2. По­веден­ческий ана­лиз.
  3. Соз­дание сиг­натур для выяв­ления модуля.
 

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

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

Анализ исполняемого файла с помощью утилиты DIE
Ана­лиз исполня­емо­го фай­ла с помощью ути­литы DIE

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Подписаться
Уведомить о
1 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии