Reverse engineering, Реверс-инжиниринг

#2 Реверс-инжиниринг как процесс.

Здравствуйте, дорогие друзья.

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


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


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


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


Низкоуровневый анализ
Существует некоторая информация, которая может быть упущена при статическом и динамическом анализе. Например, программа создаст файл только в том случае, если запущен определенный процесс. Или программа создаст запись в реестре с ключом Wow6432Node, только если она была запущена в 64-разрядной операционной системе Windows. Средства отладки обычно используются для анализа программы на низкоуровневом уровне.


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


В хорошем отчете даны ответы на вопросы, касающиеся следующего:
• Как работает реверсивно спроектированный объект, когда запускается определенное поведение
• Почему в программе, над которой он должен был работать, использовались определенные коды
Что делает программа в целом

На этом все. Всем хорошего дня!

Цикл статей по реверс-инжинирингу.