Обратная разработка вредоносного ПО: инструменты реверсирования и дизассемблирования

  • Автор темы Автор темы LeSh1y777
  • Дата начала Дата начала

LeSh1y777

Пользователь
Регистрация
25/9/25
Сообщения
5,682
Репутация
49
Лайки
153
Депозит
-8.95$
Добро пожаловать обратно, мои начинающие аналитики вредоносных программ!

В предыдущих уроках я демонстрировал мощь таких инструментов для реверсирования и дизассемблирования, как Ollydbg , IDAPro и Ghidra . В этом уроке я хотел бы поделиться и продемонстрировать несколько более простых инструментов, которые вам наверняка пригодятся в вашем арсенале для анализа вредоносных программ. Каждый из этих инструментов выполняет определённую задачу и может предоставить быстрый обзор анализируемых файлов. Их возможности включены в такие комплексные инструменты, как Ghidra и IDA Pro, но они могут быть полезны для дополнительной проверки работы этих более комплексных инструментов.

Давайте рассмотрим некоторые наиболее полезные из этих инструментов.

файл

Практически в каждой операционной системе *nix (Linux, Unix, BSD, Solaris и т. д.) существует утилита для работы с файлами . Эта команда используется для определения типа файла. Она анализирует определённые области и поля в файле. У большинства файлов есть уникальное поле для каждого типа файла.

Этот вывод может быть как в формате для чтения человеком (ASCII), так и в формате MIME.

Давайте протестируем эту утилиту на нескольких типах файлов.

Во-первых, у меня есть .exe-файл с именем yourphone.exe.

6a4a49_4e8d67b1e2fe450492c8090f92bd60ee~mv2.png


Как видите, файловая утилита идентифицирует его как PE32 для процессора Intel 80386 для Windows.

Теперь давайте попробуем различные типы файлов.

6a4a49_2b300b4b94cb42b7a134c9a7a0d0ec56~mv2.png


Как вы можете видеть выше, файловая утилита успешно идентифицировала все графические файлы, файлы XML, файлы RTF и PowerPoint.

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

Инструменты PE

PE Tools — это набор инструментов для анализа исполняемых файлов в Windows. Как видно ниже, PE Tools проанализировал исполняемые файлы в моей системе, определив архитектуру, идентификатор процесса, базу образа и размер образа. В нижнем окне отображается путь к каждому исполняемому файлу.

6a4a49_14e6a752ae48468b9a3ff8200c9235c4~mv2.png


Инструменты PE также можно использовать для:

  1. Определите используемый компилятор
  2. Использовались ли методы запутывания?
  3. Просмотреть заголовок исполняемого файла
ПЭиД

PEiD — это программа Windows для идентификации компилятора, используемого для создания исполняемого файла (Microsoft Visual C++8).

6a4a49_8b2da09777a74c50ba481e134f02b889~mv2.png


PEiD имеет множество других возможностей, многие из которых пересекаются с PE Tool.

ldd (список динамических зависимостей)

Ldd — это утилита *nix, используемая для вывода списка динамических библиотек, используемых исполняемым файлом. Ниже мы использовали Ldd для вывода списка динамических библиотек Apache2.

6a4a49_bf3aa9534b8c453886149b7e9943967a~mv2.png


струны

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

Давайте посмотрим на экран справки этой утилиты.

6a4a49_2129d038e6234ec7aa73581679954a37~mv2.png


Обратите внимание, что по умолчанию идентифицируются строки длиной 4 символа и более. Это можно изменить, просто добавив опцию –<число> после команды.

Давайте посмотрим, что делает strings при применении к нашему исполняемому файлу Apache2. Поскольку мы ожидаем значительного объёма данных, давайте перенаправим вывод в more и будем просматривать список строк постранично.

kali > strings /usr/sbin/apache2 | more

6a4a49_ad0afa9e3f8a4b698cba30052166bc53~mv2.png


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

6a4a49_da32c85ddefc42e6bd4637eb2485bfe7~mv2.png
Если мы знаем, что ищем, мы можем использовать утилиту strings для поиска чего-то очень специфичного с помощью фильтра grep . Если мы найдём в поиске вирус-вымогатель WannaCry и выполним grep по запросу «http», мы сразу же найдём URL-адрес сервера управления и контроля (C&C).
6a4a49_72e0132492814640a4f0fe1c5c4b84ff~mv2.png


ndisasm (сетевой дизассемблер)

ndisasm — это дизассемблер двоичных файлов x86. Он входит в состав NASM и использует Netwide Assembler для дизассемблирования исходных двоичных файлов.

Давайте посмотрим на файл справки.

6a4a49_5cc964f05c104991b1ec7968c66a4ea6~mv2.png


Теперь давайте сгенерируем шелл-код с помощью msfvenom от Metasploit и назовем его chess.exe.

kali > msfvenom -p windows/meterpreter/reverse_tcp -f exe > chess.exe

Теперь воспользуемся ndisasm для дизассемблирования chess.exe. Поскольку этот шелл-код 32-битный, нам нужно использовать опцию -b, а затем 32, и направить вывод в more.

Кали > ndisasm -b 32 шахматный файл.exe | более

6a4a49_e0937eb7dba448bf8b12dda2e04ffbaa~mv2.png


Как видите выше, ndism успешно дизассемблировал наш шеллкод, сгенерированный msfvenom. К сожалению, с ним сложно работать как со стандартным выводом, поэтому давайте перенаправим его в файл.

kali> ndiasm -b 32 chess.exe > chess_assembly

Теперь откроем его с помощью любого текстового редактора, в данном случае — Mousepad.

Кали >коврик для мыши /home/kali/chess_assembly

6a4a49_00bce989cf804b65b231a80f446fce04~mv2.png


Краткое содержание

Инструменты, продемонстрированные в этом руководстве, не заменяют Ghidra или IDA Pro , но могут быть использованы для перепроверки результатов их работы. Кроме того, для новичка в дизассемблировании эти инструменты демонстрируют некоторые возможности этих более комплексных инструментов и расширяют наши знания.
 
отличные инструменты в целом
 
Назад
Сверху Снизу