В этой серии мы рассмотрим, как проводить обратную разработку вредоносного ПО, чтобы понять, как оно работает, и, возможно, перепрофилировать его. Хакеры и разведывательные агентства, такие как ЦРУ и АНБ , регулярно перепрофилируют вредоносное ПО для других целей.
Ранее мы рассмотрели основы работы с IDA Pro , самым распространённым дизассемблером в нашей отрасли. В этом руководстве мы рассмотрим один из самых распространённых и бесплатных отладчиков — OllyDbg.
OllyDbg — это универсальный отладчик Win32, работающий в пользовательском пространстве. Он имеет простой в использовании и довольно интуитивно понятный графический интерфейс, что позволяет относительно быстро его освоить. Хотя OllyDbg бесплатен, он НЕ имеет открытого исходного кода, поскольку у нас нет доступа к исходному коду. Несмотря на это, OllyDbg имеет чётко определённую архитектуру плагинов, что позволяет разработчикам легко расширять его возможности.
Если вы используете Kali или другой дистрибутив безопасности, он обычно установлен в вашей системе. OllyDbg работает как в Windows, так и в Linux, причём для работы в Linux требуется WINE. Если в вашей системе нет OllyDbg, вы можете скачать его здесь .
Шаг №1: Запуск OllyDbg
Чтобы запустить OllyDbg в Kali, перейдите в «Приложения», затем «Обратное проектирование» и, наконец, ollydbg, как показано на снимке экрана ниже.
После этого откроется экран, подобный показанному ниже. Обратите внимание, что в OllyDbg есть знакомая система выпадающих меню в верхней части графического интерфейса.
Шаг №2 : Загрузка файла в OllyDbg
Следующий шаг — загрузить исполняемый файл в Ollydbg. Это можно сделать, перетащив файл в рабочую область Olly или перейдя в меню «Файл» в верхней части экрана и выбрав «Открыть». Обратите внимание, что в окне открытия указано, что файл должен быть исполняемым.
После нажатия кнопки «Открыть» OllyDbg начнёт анализ вашего кода. В данном случае я использовал простой исполняемый файл LaunchU3.exe, предустановленный на моём флеш-накопителе, исключительно для демонстрационных целей. Очевидно, что это НЕ вредоносное ПО. В будущих руководствах мы будем использовать как вредоносное, так и невредоносное ПО для отладки и анализа. Отладчики, такие как OllyDbg, также полезны разработчикам для анализа ошибок (багов) в коде и взлома схем аутентификации, препятствующих пиратству.
Как видите ниже, Олли берёт код и разбивает его на несколько окон. В левом верхнем окне отображаются виртуальные адреса инструкций, в правом верхнем — регистры процессора, в левом нижнем — данные, хранящиеся в памяти, и, наконец, в правом нижнем — стек. Обратите внимание, что в правом нижнем окне, выделенном жёлтым цветом, отображается статус. В данном случае он означает, что мы находимся в состоянии «пауза».
Шаг №3 : Различные взгляды на код
Мы можем просматривать данные в разных режимах, нажимая кнопку «Просмотр» в верхнем меню. Обратите внимание, что каждому режиму соответствует горячая клавиша, которой предшествует клавиша Alt, за исключением «Patches», для которого используется клавиша Ctrl.
Отсюда можно открыть журналы процессов (Alt+L), исполняемые файлы (Alt+E), структуру памяти (Alt+M), окна, дескрипторы и точки останова (Alt+B). Обратите внимание, что каждый из этих элементов также обозначен синими буквами в строке меню в виде ярлыков.
Если выбрать «Исполняемые модули» (Alt+E) или синюю кнопку «E», откроется окно со всеми исполняемыми файлами, как показано ниже. В окне «Исполняемые модули» справа отображается базовый виртуальный адрес, во втором столбце — виртуальный размер исполняемого файла в памяти, в третьем столбце — виртуальный адрес точки входа, в четвёртом столбце — имя модуля, версия файла и путь к файлу для каждого загруженного модуля. Если текст отображается красным цветом, это означает, что модуль был загружен динамически.
В окне исполняемых файлов можно щелкнуть правой кнопкой мыши и открыть контекстное окно. Здесь можно выполнить ряд действий, но давайте рассмотрим окно «Просмотр имён».
Здесь показаны все функции и импортированные функции, используемые в программе. Открыть это окно можно также сочетанием клавиш Ctrl+N. Анализируя импортированные функции исполняемого файла, мы часто можем определить функциональность вредоносной программы. Сайт документации Microsoft MSDN API (www.MSDN.microsoft.com) может быть полезным ресурсом для изучения того, что делают эти функции, какие параметры они принимают и что возвращают.
Если в окне «Имена» щелкнуть правой кнопкой мыши по именам функций, можно установить точку останова, нажав «Переключить точку останова» или F2.
В окне «Карта памяти» OllyDbg отображаются виртуальный адрес, виртуальный размер, модуль владельца, имена разделов, тип выделения памяти и защита памяти для каждой выделенной области памяти в процессе.
В окне потоков OllyDbg отображается идентификатор потока, виртуальный адрес точки входа, виртуальный адрес блока среды потока (TEB), значение последней ошибки, статус (активен или приостановлен), приоритет и информация о времени для каждого потока в процессе.
В окне Windows отображается дескриптор, заголовок, родительское окно, идентификатор окна, стиль окна и информация о классе окна для каждого окна, принадлежащего процессу.
В окне «Дескрипторы» отображается тип объекта, количество ссылок, флаги доступа и имя объекта для каждого дескриптора, принадлежащего процессу.
Окно цепочки SEH (Structured Exception Handler) показывает функции структурированного обработчика исключений для текущего потока.
Точки останова
Одна из ключевых функций любого отладчика — возможность устанавливать точки останова. Точка останова позволяет остановить выполнение программы по указанному адресу или инструкции. Существует два основных типа точек останова: (1) программные и (2) аппаратные. OllyDbg позволяет просматривать, включать и выключать точки останова через окно точек останова, вызываемое сочетанием клавиш Alt+B.
Часто используемые сочетания клавиш OllyDbg
пользовательский интерфейс
Открыть новую программу F3
Закрыть программу Alt+F2
Развернуть/восстановить активные окна F5
Сделать окно OllyDbg самым верхним (Alt+F5)
Закрыть OllyDbg Alt+X
Окна
Открыть окно точек останова Alt+B
Открыть окно ЦП Alt+C
Открыть окно модулей Alt+E
Открыть окно журнала Alt+L
Открыть окно памяти Alt+M
Редактирование
Добавить метку: (двоеточие)
Добавить комментарий ; (Точка с запятой)
Редактировать память Ctrl+
Собрать пространство
Отменить изменения Alt+BkSp
Исполнение
Шаг в F7
Анимировать в Ctrl+F7
Перешагнуть F8
Анимация с помощью Ctrl+F8
Запустить приложение F9
Передайте обработчик исключений и выполните Shift+F9
Выполнять до возврата Ctrl+F9
Выполнить до кода пользователя Alt+F9
Трассировка в Ctrl+F11
Трассировка по Ctrl+F12
Пауза F12
Приостановить трассировку условно Ctrl+T
Выполнить выбор F4
Точки останова
Установить/снять точку останова F2
Установить/редактировать условную точку останова Shift+F2
Установить/редактировать условную точку останова журнала Shift+F4
Временно отключить/восстановить BP Space
Данные
Анализ исполняемого кода Ctrl+A
Сканировать файлы объектов Ctrl+O
Отображать символические имена Ctrl+N
Идет поиск
Найти выбранные внешние ссылки адреса Ctrl+R
Найти переходы на строку Ctrl+J
Поиск последовательности Ctrl+S
Поиск выделенной памяти Ctrl+L
Поиск двоичного кода Ctrl+B
Поиск команды Ctrl+F
Повторить последний поиск Ctrl+L
Навигация
Перейти к источнику * (звездочка)
Перейти к адресу выражения Ctrl+G
Перейти к предыдущему адресу – (Минус)
Перейти к следующему адресу + (Плюс)
Перейти к предыдущей процедуре Ctrl+-
Перейти к следующей процедуре Ctrl++
Перейти к предыдущей ссылке Alt+F7
Перейти к следующей ссылке Alt+F8
Следовать выражению Ctrl+G
Следуйте, перейдите или позвоните Enter
Просмотреть дерево вызовов Ctrl+K
Разнообразный
Контекстная справка Ctrl+F
Полный список сочетаний клавиш
Ниже приведен полный список сочетаний клавиш OllyDbg с официального сайта OllyDbg www.ollydbg.de.
Функции
Глобальные сочетания клавиш
Теперь, когда мы продемонстрировали два основных инструмента: IDA Pro и OllyDbg, а также познакомили вас с основами ассемблера и внутренним устройством Windows, настало время приступить к борьбе с вредоносным ПО!
Ранее мы рассмотрели основы работы с IDA Pro , самым распространённым дизассемблером в нашей отрасли. В этом руководстве мы рассмотрим один из самых распространённых и бесплатных отладчиков — OllyDbg.
OllyDbg — это универсальный отладчик Win32, работающий в пользовательском пространстве. Он имеет простой в использовании и довольно интуитивно понятный графический интерфейс, что позволяет относительно быстро его освоить. Хотя OllyDbg бесплатен, он НЕ имеет открытого исходного кода, поскольку у нас нет доступа к исходному коду. Несмотря на это, OllyDbg имеет чётко определённую архитектуру плагинов, что позволяет разработчикам легко расширять его возможности.
Если вы используете Kali или другой дистрибутив безопасности, он обычно установлен в вашей системе. OllyDbg работает как в Windows, так и в Linux, причём для работы в Linux требуется WINE. Если в вашей системе нет OllyDbg, вы можете скачать его здесь .
Шаг №1: Запуск OllyDbg
Чтобы запустить OllyDbg в Kali, перейдите в «Приложения», затем «Обратное проектирование» и, наконец, ollydbg, как показано на снимке экрана ниже.
После этого откроется экран, подобный показанному ниже. Обратите внимание, что в OllyDbg есть знакомая система выпадающих меню в верхней части графического интерфейса.
Шаг №2 : Загрузка файла в OllyDbg
Следующий шаг — загрузить исполняемый файл в Ollydbg. Это можно сделать, перетащив файл в рабочую область Olly или перейдя в меню «Файл» в верхней части экрана и выбрав «Открыть». Обратите внимание, что в окне открытия указано, что файл должен быть исполняемым.
После нажатия кнопки «Открыть» OllyDbg начнёт анализ вашего кода. В данном случае я использовал простой исполняемый файл LaunchU3.exe, предустановленный на моём флеш-накопителе, исключительно для демонстрационных целей. Очевидно, что это НЕ вредоносное ПО. В будущих руководствах мы будем использовать как вредоносное, так и невредоносное ПО для отладки и анализа. Отладчики, такие как OllyDbg, также полезны разработчикам для анализа ошибок (багов) в коде и взлома схем аутентификации, препятствующих пиратству.
Как видите ниже, Олли берёт код и разбивает его на несколько окон. В левом верхнем окне отображаются виртуальные адреса инструкций, в правом верхнем — регистры процессора, в левом нижнем — данные, хранящиеся в памяти, и, наконец, в правом нижнем — стек. Обратите внимание, что в правом нижнем окне, выделенном жёлтым цветом, отображается статус. В данном случае он означает, что мы находимся в состоянии «пауза».
Шаг №3 : Различные взгляды на код
Мы можем просматривать данные в разных режимах, нажимая кнопку «Просмотр» в верхнем меню. Обратите внимание, что каждому режиму соответствует горячая клавиша, которой предшествует клавиша Alt, за исключением «Patches», для которого используется клавиша Ctrl.
Отсюда можно открыть журналы процессов (Alt+L), исполняемые файлы (Alt+E), структуру памяти (Alt+M), окна, дескрипторы и точки останова (Alt+B). Обратите внимание, что каждый из этих элементов также обозначен синими буквами в строке меню в виде ярлыков.
Если выбрать «Исполняемые модули» (Alt+E) или синюю кнопку «E», откроется окно со всеми исполняемыми файлами, как показано ниже. В окне «Исполняемые модули» справа отображается базовый виртуальный адрес, во втором столбце — виртуальный размер исполняемого файла в памяти, в третьем столбце — виртуальный адрес точки входа, в четвёртом столбце — имя модуля, версия файла и путь к файлу для каждого загруженного модуля. Если текст отображается красным цветом, это означает, что модуль был загружен динамически.
В окне исполняемых файлов можно щелкнуть правой кнопкой мыши и открыть контекстное окно. Здесь можно выполнить ряд действий, но давайте рассмотрим окно «Просмотр имён».
Здесь показаны все функции и импортированные функции, используемые в программе. Открыть это окно можно также сочетанием клавиш Ctrl+N. Анализируя импортированные функции исполняемого файла, мы часто можем определить функциональность вредоносной программы. Сайт документации Microsoft MSDN API (www.MSDN.microsoft.com) может быть полезным ресурсом для изучения того, что делают эти функции, какие параметры они принимают и что возвращают.
Если в окне «Имена» щелкнуть правой кнопкой мыши по именам функций, можно установить точку останова, нажав «Переключить точку останова» или F2.
В окне «Карта памяти» OllyDbg отображаются виртуальный адрес, виртуальный размер, модуль владельца, имена разделов, тип выделения памяти и защита памяти для каждой выделенной области памяти в процессе.
В окне потоков OllyDbg отображается идентификатор потока, виртуальный адрес точки входа, виртуальный адрес блока среды потока (TEB), значение последней ошибки, статус (активен или приостановлен), приоритет и информация о времени для каждого потока в процессе.
В окне Windows отображается дескриптор, заголовок, родительское окно, идентификатор окна, стиль окна и информация о классе окна для каждого окна, принадлежащего процессу.
В окне «Дескрипторы» отображается тип объекта, количество ссылок, флаги доступа и имя объекта для каждого дескриптора, принадлежащего процессу.
Окно цепочки SEH (Structured Exception Handler) показывает функции структурированного обработчика исключений для текущего потока.
Точки останова
Одна из ключевых функций любого отладчика — возможность устанавливать точки останова. Точка останова позволяет остановить выполнение программы по указанному адресу или инструкции. Существует два основных типа точек останова: (1) программные и (2) аппаратные. OllyDbg позволяет просматривать, включать и выключать точки останова через окно точек останова, вызываемое сочетанием клавиш Alt+B.
Часто используемые сочетания клавиш OllyDbg
пользовательский интерфейс
Открыть новую программу F3
Закрыть программу Alt+F2
Развернуть/восстановить активные окна F5
Сделать окно OllyDbg самым верхним (Alt+F5)
Закрыть OllyDbg Alt+X
Окна
Открыть окно точек останова Alt+B
Открыть окно ЦП Alt+C
Открыть окно модулей Alt+E
Открыть окно журнала Alt+L
Открыть окно памяти Alt+M
Редактирование
Добавить метку: (двоеточие)
Добавить комментарий ; (Точка с запятой)
Редактировать память Ctrl+
Собрать пространство
Отменить изменения Alt+BkSp
Исполнение
Шаг в F7
Анимировать в Ctrl+F7
Перешагнуть F8
Анимация с помощью Ctrl+F8
Запустить приложение F9
Передайте обработчик исключений и выполните Shift+F9
Выполнять до возврата Ctrl+F9
Выполнить до кода пользователя Alt+F9
Трассировка в Ctrl+F11
Трассировка по Ctrl+F12
Пауза F12
Приостановить трассировку условно Ctrl+T
Выполнить выбор F4
Точки останова
Установить/снять точку останова F2
Установить/редактировать условную точку останова Shift+F2
Установить/редактировать условную точку останова журнала Shift+F4
Временно отключить/восстановить BP Space
Данные
Анализ исполняемого кода Ctrl+A
Сканировать файлы объектов Ctrl+O
Отображать символические имена Ctrl+N
Идет поиск
Найти выбранные внешние ссылки адреса Ctrl+R
Найти переходы на строку Ctrl+J
Поиск последовательности Ctrl+S
Поиск выделенной памяти Ctrl+L
Поиск двоичного кода Ctrl+B
Поиск команды Ctrl+F
Повторить последний поиск Ctrl+L
Навигация
Перейти к источнику * (звездочка)
Перейти к адресу выражения Ctrl+G
Перейти к предыдущему адресу – (Минус)
Перейти к следующему адресу + (Плюс)
Перейти к предыдущей процедуре Ctrl+-
Перейти к следующей процедуре Ctrl++
Перейти к предыдущей ссылке Alt+F7
Перейти к следующей ссылке Alt+F8
Следовать выражению Ctrl+G
Следуйте, перейдите или позвоните Enter
Просмотреть дерево вызовов Ctrl+K
Разнообразный
Контекстная справка Ctrl+F
Полный список сочетаний клавиш
Ниже приведен полный список сочетаний клавиш OllyDbg с официального сайта OllyDbg www.ollydbg.de.
Функции
Глобальные сочетания клавиш
Теперь, когда мы продемонстрировали два основных инструмента: IDA Pro и OllyDbg, а также познакомили вас с основами ассемблера и внутренним устройством Windows, настало время приступить к борьбе с вредоносным ПО!