Связующие и вредоносные программы (часть 4)

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

  • Связующие и вредоносные программы (часть 1)
  • Связующие и вредоносные программы (часть 2)
  • Связующие и вредоносные программы (часть 3)

подпишитесь на нашу рассылку новостей WindowSecurity.com в режиме реального времени

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

Практика безопасного гекса

Помню, я где-то раньше где-то в сети видел футболку с надписью «Практика безопасного гекса». Дух игры слов вполне соответствует действительности! Когда вы открываете исполняемый файл с помощью шестнадцатеричного редактора, вы на самом деле не выполняете программу, а просто просматриваете ее содержимое. Вот тут-то и появляется часть «безопасного шестнадцатеричного кода». Очень рекомендуется использовать шестнадцатеричный редактор, чтобы сначала взглянуть на подозреваемую вредоносную программу. Таким образом вы можете подтвердить несколько аспектов, например, является ли программа действительно форматом PE, т.е. исполняемым файлом Microsoft Windows. Является ли вредоносное ПО упакованным, при условии, что заголовки упаковки не были уничтожены, а также извлекает некоторую другую информацию через ASCII, встроенный в сам исполняемый файл. Как говорится, видишь, значит веришь, поэтому, пожалуйста, взгляни на скриншот ниже.

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

Все исполняемые файлы Microsoft соответствуют формату файлов Portable Executable (PE), поэтому они имеют символы ASCII «MZ» в начале файла. На скриншоте выше мы видим, что «MZ» действительно есть. Теперь мы можем определенно сказать, что эта вредоносная программа действительно основана на Microsoft Windows. Причина, по которой я указываю на это, заключается в том, что существуют также исполняемые файлы для мира Linux. Формат файла для Linux называется Executable and Linking Format (ELF). Вы бы увидели этот «ELF» в программе на базе Linux, если бы это было так. Таким образом, просто открыв программу с помощью шестнадцатеричного редактора, вы сможете определить, является ли она системой Windows или нет.

Ну, мы также знаем, что ранее мы взяли два исполняемых файла на основе Microsoft Windows и связали их вместе с помощью YAB. Тогда возникает вопрос: «Есть ли в связанной вредоносной программе два PE-заголовка?» Действительно, отличный вопрос, и мы ответим на него прямо сейчас. Что я только что сделал, так это взял связанный файл вредоносного ПО и открыл его с помощью моего шестнадцатеричного редактора. Я заметил, однако, что он был упакован с UPX.

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

На приведенном выше снимке экрана мы видим, что появляются строки ASCII «UPX0» и «UPX1». Это говорит нам о том, что внутри этого исполняемого файла есть что-то, что было упаковано с помощью упаковщика UPX. Это сделано для того, чтобы попытаться уменьшить размер связанной программы. Поэтому, если вы увидите эти строки, встроенные в подозрительный вредоносный файл, вы поймете, что вам нужно распаковать его с помощью UPX. Давайте сделаем это прямо сейчас.

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

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

Изображение 24814
Рисунок 4

То, что мы видим в нижнем левом углу, — это девять экземпляров байтового шаблона «4D 5A» для «MZ», представленного в ASCII. Это говорит мне о том, что в этом файле вполне может быть более одного исполняемого файла. Что я сейчас делаю, так это нажимаю на каждый экземпляр и проверяю, является ли это случайным попаданием или другим заголовком PE.

Изображение 24815
Рисунок 5

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

Мы только что рассмотрели, как распознать исполняемый файл Microsoft Windows или PE на уровне байтов и подтвердить, что это такое. Кроме того, мы также посмотрели, как выглядит упаковка UPX, а также насколько легко ее распаковать. Однако это может быть значительно сложнее, если заголовки UPX намеренно уничтожаются, чтобы усложнить анализ. Теперь мы перейдем к быстрому рассмотрению использования LordPE и Procdump для создания дампа памяти запущенного вредоносного процесса.

LordPE и Procdump

Изображение 24816
Рисунок 6

На скриншоте выше показано диалоговое окно LordPE. Этот инструмент очень прост в использовании для создания дампа памяти запущенных процессов. Вы можете видеть, что выделен процесс для «msiexec16.exe», который является троянским сервером Optix Pro, который довольно успешно работает на моем образе VMware. Теперь мы должны щелкнуть правой кнопкой мыши по этому процессу, а затем нажать «дамп полный», после чего вам будет предложено назвать файл дампа. Дайте ему имя и место, куда вы хотите его сохранить. Теперь вы успешно сбросили память этого запущенного процесса. Теперь вам нужно открыть эту исполняемую программу с помощью шестнадцатеричного редактора. После того, как вы откроете программу, вы сможете просмотреть ее на наличие некоторых интересных строк ASCII.

Изображение 24817
Рисунок 7

На приведенном выше снимке экрана мы видим, что действительно есть некоторые тревожные строки. Этот тип статического анализа (статический означает, что вы на самом деле не запустили файл вредоносного ПО) полезен, чтобы дать вам представление о том, на что способно вредоносное ПО и чем оно может быть. Инструмент LordPE также весьма полезен, если вы столкнулись с файлом, упакованным вредоносным ПО, который вы не можете распаковать. Довольно часто авторы вредоносных программ намеренно уничтожают определенные части исполняемого файла, чтобы скрыть, какой инструмент использовался для его упаковки. Если это так, и вы не можете понять это, просто запустите программу, а затем сбросьте память. Как говорится «грубо, но эффективно». Сам Procdump работает примерно так же, как LordPE. Обратите внимание, что я не смог найти доступную ссылку для Procdump, поэтому я рекомендую вам поискать ее в Google.

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

В ходе этой серии статей мы видели, что не всегда все обстоит так, как может показаться. Для эффективного администрирования вашей сети в качестве системного администратора вам часто придется анализировать определенные подозрительные файлы. Это можно сделать, как мы только что видели, с помощью таких инструментов, как шестнадцатеричный редактор и другие, такие как LordPE. Кроме того, всегда полезно знать, как работают авторы вредоносных программ. Затем, чтобы просветить себя, мы приступили к созданию собственного небольшого образца вредоносного ПО, используя троянский сервер Optix Pro и компоновщик под названием YAB. Делая это самостоятельно, мы получили гораздо более глубокое понимание того, как это делается. Вооружившись этими знаниями, вы теперь можете провести для конечных пользователей высокоэффективную демонстрацию опасностей вредоносного ПО. Как всегда, я искренне надеюсь, что этот цикл статей был вам полезен. До следующего раза.

  • Связующие и вредоносные программы (часть 1)
  • Связующие и вредоносные программы (часть 2)
  • Связующие и вредоносные программы (часть 3)

подпишитесь на нашу рассылку новостей WindowSecurity.com в режиме реального времени