Добро пожаловать обратно, мои начинающие аналитики вредоносных программ!
В предыдущих уроках я демонстрировал мощь таких инструментов для реверсирования и дизассемблирования, как Ollydbg , IDAPro и Ghidra . В этом уроке я хотел бы поделиться и продемонстрировать несколько более простых инструментов, которые вам наверняка пригодятся в вашем арсенале для анализа вредоносных программ. Каждый из этих инструментов выполняет определённую задачу и может предоставить быстрый обзор анализируемых файлов. Их возможности включены в такие комплексные инструменты, как Ghidra и IDA Pro, но они могут быть полезны для дополнительной проверки работы этих более комплексных инструментов.
Давайте рассмотрим некоторые наиболее полезные из этих инструментов.
файл
Практически в каждой операционной системе *nix (Linux, Unix, BSD, Solaris и т. д.) существует утилита для работы с файлами . Эта команда используется для определения типа файла. Она анализирует определённые области и поля в файле. У большинства файлов есть уникальное поле для каждого типа файла.
Этот вывод может быть как в формате для чтения человеком (ASCII), так и в формате MIME.
Давайте протестируем эту утилиту на нескольких типах файлов.
Во-первых, у меня есть .exe-файл с именем yourphone.exe.
Как видите, файловая утилита идентифицирует его как PE32 для процессора Intel 80386 для Windows.
Теперь давайте попробуем различные типы файлов.
Как вы можете видеть выше, файловая утилита успешно идентифицировала все графические файлы, файлы XML, файлы RTF и PowerPoint.
Обратите внимание: утилита для работы с файлами не всегда точна. Опять же, она проверяет конкретные поля, указывающие на тип файла, и двоичный файл или любой другой файл, содержащий эти поля и похожие данные, будет идентифицирован неверно. Поэтому всегда важно использовать несколько инструментов и сопоставлять их результаты.
Инструменты PE
PE Tools — это набор инструментов для анализа исполняемых файлов в Windows. Как видно ниже, PE Tools проанализировал исполняемые файлы в моей системе, определив архитектуру, идентификатор процесса, базу образа и размер образа. В нижнем окне отображается путь к каждому исполняемому файлу.
Инструменты PE также можно использовать для:
PEiD — это программа Windows для идентификации компилятора, используемого для создания исполняемого файла (Microsoft Visual C++8).
PEiD имеет множество других возможностей, многие из которых пересекаются с PE Tool.
ldd (список динамических зависимостей)
Ldd — это утилита *nix, используемая для вывода списка динамических библиотек, используемых исполняемым файлом. Ниже мы использовали Ldd для вывода списка динамических библиотек Apache2.
струны
Встроенные строки часто могут быть полезны для аналитика вредоносных программ. Иногда разработчики оставляют для себя заметки, которые могут раскрыть функцию и назначение вредоносного ПО, а также родной язык разработчиков.
Давайте посмотрим на экран справки этой утилиты.
Обратите внимание, что по умолчанию идентифицируются строки длиной 4 символа и более. Это можно изменить, просто добавив опцию –<число> после команды.
Давайте посмотрим, что делает strings при применении к нашему исполняемому файлу Apache2. Поскольку мы ожидаем значительного объёма данных, давайте перенаправим вывод в more и будем просматривать список строк постранично.
kali > strings /usr/sbin/apache2 | more
Если прокрутить немного вниз, то можно увидеть несколько более полезных
и длинных строк, включая ссылки на некоторые библиотеки, которые использует этот двоичный файл.
Если мы знаем, что ищем, мы можем использовать утилиту strings для поиска чего-то очень специфичного с помощью фильтра grep . Если мы найдём в поиске вирус-вымогатель WannaCry и выполним grep по запросу «http», мы сразу же найдём URL-адрес сервера управления и контроля (C&C).
ndisasm (сетевой дизассемблер)
ndisasm — это дизассемблер двоичных файлов x86. Он входит в состав NASM и использует Netwide Assembler для дизассемблирования исходных двоичных файлов.
Давайте посмотрим на файл справки.
Теперь давайте сгенерируем шелл-код с помощью 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 | более
Как видите выше, ndism успешно дизассемблировал наш шеллкод, сгенерированный msfvenom. К сожалению, с ним сложно работать как со стандартным выводом, поэтому давайте перенаправим его в файл.
kali> ndiasm -b 32 chess.exe > chess_assembly
Теперь откроем его с помощью любого текстового редактора, в данном случае — Mousepad.
Кали >коврик для мыши /home/kali/chess_assembly
Краткое содержание
Инструменты, продемонстрированные в этом руководстве, не заменяют Ghidra или IDA Pro , но могут быть использованы для перепроверки результатов их работы. Кроме того, для новичка в дизассемблировании эти инструменты демонстрируют некоторые возможности этих более комплексных инструментов и расширяют наши знания.
В предыдущих уроках я демонстрировал мощь таких инструментов для реверсирования и дизассемблирования, как Ollydbg , IDAPro и Ghidra . В этом уроке я хотел бы поделиться и продемонстрировать несколько более простых инструментов, которые вам наверняка пригодятся в вашем арсенале для анализа вредоносных программ. Каждый из этих инструментов выполняет определённую задачу и может предоставить быстрый обзор анализируемых файлов. Их возможности включены в такие комплексные инструменты, как Ghidra и IDA Pro, но они могут быть полезны для дополнительной проверки работы этих более комплексных инструментов.
Давайте рассмотрим некоторые наиболее полезные из этих инструментов.
файл
Практически в каждой операционной системе *nix (Linux, Unix, BSD, Solaris и т. д.) существует утилита для работы с файлами . Эта команда используется для определения типа файла. Она анализирует определённые области и поля в файле. У большинства файлов есть уникальное поле для каждого типа файла.
Этот вывод может быть как в формате для чтения человеком (ASCII), так и в формате MIME.
Давайте протестируем эту утилиту на нескольких типах файлов.
Во-первых, у меня есть .exe-файл с именем yourphone.exe.
Как видите, файловая утилита идентифицирует его как PE32 для процессора Intel 80386 для Windows.
Теперь давайте попробуем различные типы файлов.
Как вы можете видеть выше, файловая утилита успешно идентифицировала все графические файлы, файлы XML, файлы RTF и PowerPoint.
Обратите внимание: утилита для работы с файлами не всегда точна. Опять же, она проверяет конкретные поля, указывающие на тип файла, и двоичный файл или любой другой файл, содержащий эти поля и похожие данные, будет идентифицирован неверно. Поэтому всегда важно использовать несколько инструментов и сопоставлять их результаты.
Инструменты PE
PE Tools — это набор инструментов для анализа исполняемых файлов в Windows. Как видно ниже, PE Tools проанализировал исполняемые файлы в моей системе, определив архитектуру, идентификатор процесса, базу образа и размер образа. В нижнем окне отображается путь к каждому исполняемому файлу.
Инструменты PE также можно использовать для:
- Определите используемый компилятор
- Использовались ли методы запутывания?
- Просмотреть заголовок исполняемого файла
PEiD — это программа Windows для идентификации компилятора, используемого для создания исполняемого файла (Microsoft Visual C++8).
PEiD имеет множество других возможностей, многие из которых пересекаются с PE Tool.
ldd (список динамических зависимостей)
Ldd — это утилита *nix, используемая для вывода списка динамических библиотек, используемых исполняемым файлом. Ниже мы использовали Ldd для вывода списка динамических библиотек Apache2.
струны
Встроенные строки часто могут быть полезны для аналитика вредоносных программ. Иногда разработчики оставляют для себя заметки, которые могут раскрыть функцию и назначение вредоносного ПО, а также родной язык разработчиков.
Давайте посмотрим на экран справки этой утилиты.
Обратите внимание, что по умолчанию идентифицируются строки длиной 4 символа и более. Это можно изменить, просто добавив опцию –<число> после команды.
Давайте посмотрим, что делает strings при применении к нашему исполняемому файлу Apache2. Поскольку мы ожидаем значительного объёма данных, давайте перенаправим вывод в more и будем просматривать список строк постранично.
kali > strings /usr/sbin/apache2 | more
Если прокрутить немного вниз, то можно увидеть несколько более полезных
и длинных строк, включая ссылки на некоторые библиотеки, которые использует этот двоичный файл.
ndisasm (сетевой дизассемблер)
ndisasm — это дизассемблер двоичных файлов x86. Он входит в состав NASM и использует Netwide Assembler для дизассемблирования исходных двоичных файлов.
Давайте посмотрим на файл справки.
Теперь давайте сгенерируем шелл-код с помощью 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 | более
Как видите выше, ndism успешно дизассемблировал наш шеллкод, сгенерированный msfvenom. К сожалению, с ним сложно работать как со стандартным выводом, поэтому давайте перенаправим его в файл.
kali> ndiasm -b 32 chess.exe > chess_assembly
Теперь откроем его с помощью любого текстового редактора, в данном случае — Mousepad.
Кали >коврик для мыши /home/kali/chess_assembly
Краткое содержание
Инструменты, продемонстрированные в этом руководстве, не заменяют Ghidra или IDA Pro , но могут быть использованы для перепроверки результатов их работы. Кроме того, для новичка в дизассемблировании эти инструменты демонстрируют некоторые возможности этих более комплексных инструментов и расширяют наши знания.