Обратный инжиниринг вредоносных программ (часть 4)

Опубликовано: 11 Апреля, 2023

  • Обратный инжиниринг вредоносных программ (часть 1)
  • Обратный инжиниринг вредоносных программ (часть 2)

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

Реверс-инжиниринг и вы, часть 4

Что ж, в третьей части этой серии статей мы остановились на том месте, где узнали, что часть вредоносного ПО действительно была не заархивированным архивом, а скорее в формате PE. Мы убедились в этом, открыв вредоносный код в шестнадцатеричном редакторе, что позволило нам изучить его содержимое, не запуская его. Вы помните, что символы «MZ» в файле говорили нам, что на самом деле это был вышеупомянутый формат файла PE.

Здесь важно помнить, что вся эта информация бесплатна для обладания. В этом нет ничего волшебного или загадочного. Ничто из этого не спрятано в каком-то правительственном хранилище, в отличие от того, что теоретики заговора хотят, чтобы вы поверили. Я имею в виду, что реверс-инжиниринг — это больше о том, чтобы копнуть глубже и применить себя, чем о каком-то черном искусстве. Документацию по таким вещам, как заголовок PE, можно легко получить на веб-сайте Microsoft или в самом Google. Методологию и инструменты обратного проектирования можно легко найти на таких сайтах, как OpenRCE. Все, что вам нужно для дальнейшего изучения реверс-инжиниринга, можно получить бесплатно. Тем не менее, давайте вернемся к выполнению поставленной задачи.

Упаковщики вредоносных программ

Какой смысл сжимать вредоносное ПО до меньшего размера? Ну, на самом деле речь идет не только о простом уменьшении фактического размера, но, что более важно, о попытке уклониться от антивирусных сканеров. «Что вы имеете в виду», — говорите вы? Проще говоря, многие антивирусные программы обнаруживают вредоносные программы, даже если они были написаны на заказ. Это то, что касается эвристической части антивирусного пакета. Тогда злоумышленники-хакеры решили попробовать разные способы обхода антивирусной программы. Это привело к созданию таких программ, как упаковщики.

Как говорится в старой поговорке «не все создано равным», то же самое относится и к хакерам. Все они имеют разный уровень мастерства. Некоторые из них пишут такие собственные упаковщики, как Yoda, в то время как другие просто используют один из них, например UPX, для упаковки своего вредоносного ПО. Что ж, похоже, здесь я дал себе хороший переход, так что на этой ноте давайте взглянем на скриншот ниже. Он покажет нам вредоносную программу, снова открытую с помощью шестнадцатеричного редактора. Вы увидите строку ascii «UPX» на скриншоте ниже.

Изображение 25064
фигура 1

Если вам интересно, где я нашел эту строку ascii, она была лишь немного ниже «MZ», что означает, если вы помните, что этот файл имеет формат PE. Итак, MZ находится в самом начале открытого исполняемого файла, а чуть ниже него находится строка UPX. Это говорит нам о том, что этот исполняемый файл был упакован с помощью упаковщика UPX. Теперь, когда вы видите, что файл был запакован с помощью упаковщика, это часто означает некоторую боль при попытке его распаковать. Не так в случае файлов, упакованных с помощью UPX. Их можно просто распаковать с помощью того же инструмента, который использовался для их упаковки в первую очередь. Кстати, некоторые файлы могут быть упакованы с помощью UPX, а затем преднамеренно запутаны, чтобы значительно усложнить распаковку.

Давайте начнем эту вечеринку!

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

Изображение 25065
фигура 2

Теперь давайте посмотрим на заполненную информацию командной строки.

Изображение 25066
Рисунок 3

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

Где мы сейчас находимся?

Теперь мы подошли к моменту, когда можно приступить к фактическому анализу самой вредоносной программы. Это можно сделать различными способами, которые можно условно разделить на два отдельных метода. Первый — это статический анализ исполняемого файла вредоносного ПО, а второй — динамический анализ того же самого исполняемого файла. Что значит статический и динамический? Ну, они примерно разбиваются следующим образом. Во время статического анализа программы/исполняемого файла/вредоносного ПО/… вы бы открыли вышеупомянутое, не выполняя его. Обычно это делается с помощью шестнадцатеричных редакторов, как мы уже видели в серии статей. Это также можно сделать с помощью различных дизассемблеров.

Эти дизассемблеры позволят вам безопасно просматривать код исполняемых файлов, не выполняя его, а также позволят вам, например, записать смещения интересных точек останова. Точка останова — это, по сути, адрес компьютерной инструкции в программе, на которой вы хотите, чтобы дизассемблер остановил выполнение программы. Затем это позволяет выполнять выполнение программы по одной инструкции за раз. Да, я понимаю, что последние несколько строк несколько сложны для этой статьи, но они охватывают соответствующую тему, поскольку затрагивают реверс-инжиниринг. Динамический анализ рассматриваемого файла, по сути, заключается в том, что вы выполняете его и наблюдаете, что происходит на самом деле. Это не так сложно, как может показаться. Существует множество отличных инструментов, которые позволят вам наблюдать за изменениями на вашем компьютере после запуска вредоносной программы. Среди прочих есть такие инструменты, как filemon и regmon.

Заворачивать

Я уделил большое внимание деталям всех второстепенных тем, поскольку они очень важны для обратного проектирования. Эти темы, если вы не помните, такие, как спецификации форматов файлов, упаковщики файлов, использование шестнадцатеричных редакторов и другие. При подходе к такой теме, как реверс-инжиниринг, медленный и устойчивый подход — безусловно, лучший подход. Сегодня в Интернете нет недостатка в информации, когда речь идет о реверс-инжиниринге. Что вам нужно сделать, так это начать ассимилировать его небольшими порциями размером в байт. На этой ноте увидимся в следующей части, где мы рассмотрим уже распакованную вредоносную программу. Тогда увидимся!

  • Обратный инжиниринг вредоносных программ (часть 1)
  • Обратный инжиниринг вредоносных программ (часть 2)