Набор для взлома программ. Выбираем инструменты для реверса
Social Engineering![](/file/31560091f7f278b1b0b44.png)
У каждого реверс-инженера, вирусного аналитика и просто исследователя со временем появляется устоявшийся набор утилит, которыми он постоянно пользуется для анализа, распаковки или кряка. В этом обзоре я поделюсь своей версией. Это будет полезно всем, кто еще не обзавелся своим набором и только приступает к изучению этой темы. Впрочем, и опытному реверсеру должно быть любопытно, что используют коллеги по цеху.
![](/file/227f000cc3d6f9d88a187.png)
WARNING
Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи.
![](/file/589729410012204b33c8d.png)
Отладчики
Отладка приложения — это неотъемлемая часть процесса исследования, инструмент, который всегда под рукой у реверсера. В современном мире отладчик должен поддерживать обе интеловские архитектуры — x64 и x86, из этого мы и будем исходить.
Также у нас должна быть возможность отлаживать код, который работает в режиме ядра. Такая нужда периодически возникает, особенно если ты намерен искать zeroday-уязвимости в ядре ОС или реверсить драйверы вирусов. Основных претендентов два: x64dbg и WinDbg. Первый отладчик работает в режиме user mode, второй может отлаживать код в режиме kernel mode.
![](/file/01593284cad2417439eea.png)
x64dbg
Этот современный отладчик с весьма приятным интерфейсом — достойный преемник OllyDbg. Поддерживает обе архитектуры — x64 и x86, обладает массой полезнейших плагинов.
![](https://tgraph.io/file/cfbec24d9f3d5e01123ac.jpg)
![](https://tgraph.io/file/4b84d78ebb5586bdf0965.jpg)
Да, безусловно, он не лишен недостатков — в нем до сих пор есть несколько неприятных багов. Однако он активно поддерживается и развивается. Разумеется, из-за того что отладчик работает в пользовательском режиме, он остается уязвимым для многих техник обнаружения отладки. Но этот минус отчасти компенсируется разнообразием плагинов для сокрытия отладчика.
У x64dbg есть встроенный декомпилятор, поддерживается отображение кода в виде графа, можно делать точки останова на чтение, запись, выполнение и доступ, имеется встроенная утилита реконструкции импортов (как x64, так и x86). В общем, что говорить — этот отладчик использовался в узких кругах для того, чтобы победить небезызвестную игровую защиту Denuvo, и успешно справляется с этой задачей!
![](/file/12c15da6f14aa94f97866.png)
Почему не OllyDbg
В подборку не попал отладчик OllyDbg — по той причине, что он уже серьезно устарел. Он не поддерживает ни современные ОС, ни архитектуру x64. На официальном сайте приложения был анонс 64-битной версии и даже сообщалось о прогрессе в ее разработке, но сам сайт обновлялся в последний раз в 2014 году. Безусловно, с OllyDbg связана целая эпоха, но, по всей видимости, она прошла. Да и отладчиков kernel mode тоже поубавилось — разработчики забросили Syser Kernel Debugger, а он в свое время был преемником SoftICE.
![](/file/2de94b54566e5d361b6f5.png)
WinDbg
Если нужно отлаживать ядро или драйвер, то WinDbg нет равных. Этот отладчик поддерживает сама Microsoft, и он входит в состав Windows Driver Kit (WDK). На данный момент это самое актуальное и мощное средство отладки кода ядра. Здесь нет такого приятного интерфейса, как в x64dbg, но и выбора у нас немного — другие отладчики не работают в kernel mode.
![](https://tgraph.io/file/08a333a744a544109c2c9.jpg)
WinDbg поддерживает удаленную отладку и умеет скачивать отладочные символы напрямую с серверов Microsoft. Чтобы быстрее настроить его для отладки ядра ОС внутри виртуальных машин, существует надстройка VirtualKD. Безусловно, начинать путь реверсера с WinDbg строго противопоказано, но, когда наберешься опыта и начнешь пробовать разные интересные вещи, он становится необходимостью.
Именно в WinDbg можно запросто посмотреть, как выглядят те или иные системные структуры, и легко дизассемблировать функции NTAPI. Конечно, им можно отлаживать и «обычные» приложения, но лично я предпочитаю распаковывать столь могучий инструмент только при крайней необходимости!
![](/file/20b095b575b913286c0c4.png)
Дизассемблеры
Сложно представить себе реверс без инструментов статического анализа кода. На сегодняшний день дела с дизассемблерами обстоят немногим лучше, чем с отладчиками, но все-таки можно выделить фаворитов в этой области. Признанный стандарт антивирусных лабораторий — это дизассемблер IDA Pro. Второе место по востребованности занимает фреймворк для реверс-инжиниринга Radare2 (хотя многие считают, что Radare2 не уступает IDA).
![](/file/9db62ef396a3cd2a7d027.png)
IDA Disassembler
Существует две версии IDA — платная (Pro) и бесплатная (Starter). Бесплатная версия урезана по количеству поддерживаемых архитектур — она понимает только x86, кроме того, она не поддерживает плагины. Платная версия лишена подобных ограничений: она поддерживает внушительное количество архитектур процессоров и позволяет подключать расширения.
![](https://tgraph.io/file/66d404187bf8911caeef4.jpg)
В IDA есть встроенный отладчик, весьма простенький по набору функций, но к его самобытному интерфейсу придется приноровиться. Также IDA может быть укомплектован дополнением Hex-Rays — декомпилятором исходного кода приложения в код на C. Это полезнейшее дополнение, которое значительно ускоряет анализ программы.
В целом IDA — мощнейший и прекрасно отполированный инструмент, который развивался много лет. Жаль только, что профессиональная версия стоит в районе 500–1000 долларов в зависимости от вида лицензии и кому попало не продается. Кто попало в результате выкручивается как может.
![](/file/2633b0a66244feafc10e1.png)
Radare2
Radare2 изначально задумывался как обычный hex-редактор, но на сегодняшний день это целый фреймворк, который поможет отлаживать и дизассемблировать самый разный код, включая прошивки устройств, вирусы и крякми.
![](https://tgraph.io/file/bbc4303a23b8564f46847.jpg)
Radare2 — это набор консольных утилит, в которые входят отладчик, дизассемблер, декомпилятор, hex-редактор, собственный компилятор, утилита сравнения бинарных файлов и многое другое. Для работы в GUI есть отдельная надстройка под названием Cutter. Она значительно улучшает внешний вид фреймворка и юзабилити Radare.
Фреймворк поддерживает большое число процессоров и платформ, благодаря этому может составлять конкуренцию даже таким продуктам, как IDA Pro. Огромный плюс — в том, что исходный код открыт, продукт совершенно бесплатен и поддерживается силами сообщества.
![](/file/52563b5ccc524739efbe6.png)
Вспомогательные утилиты
Мы рассмотрели основные инструменты, но реверс сложно представить себе без анализаторов упаковщиков, сетевых мониторов, hex-редакторов и еще массы вспомогательных утилит. Давай глянем на основные из них более подробно.
![](/file/429846dac68f406ed0f86.png)
Detect it Easy (DiE)
Это отличная программа для определения упаковщиков, которая имеет весьма широкий набор полезных функций. Например, она позволяет просматривать энтропию секций файлов, что помогает визуально определять наличие шифрования.
![](https://tgraph.io/file/be81319469b0a123d9b4d.jpg)
Также в ней есть просмотрщик ресурсов с возможностью дампа на диск. Можно легко просматривать таблицу импорта, есть поддержка расширений и скриптов. Имеются и настройки методов сканирования сигнатур, просмотрщик заголовков файлов и полная поддержка форматов PE и PE+.
Минус только один — программа редко обновляется, но нельзя сказать, что ее забросили, — совсем недавно вышла новая версия!
![](/file/f286edf7b7b3dfbc510b6.png)
ExeInfoPE
Это еще один детектор пакеров и протекторов. У него довольно своеобразный интерфейс, который придется по вкусу не всем. Зато программа часто обновляется, в ней полно интересных функций и есть дружелюбные подсказки по распаковке.
![](https://tgraph.io/file/bc2d2442caddd852b0907.jpg)
В общем, я бы порекомендовал ExeInfoPE новичкам. В нем есть база автоматических распаковщиков, и программа сама подскажет, каким инструментом снимать навесную защиту.
Ну и конечно, здесь присутствует весь стандартный набор возможностей: просмотрщик заголовков файлов, просмотр секций, hex-просмотрщик и даже некоторое количество маленьких встроенных утилит, типа TerminateProcess и прочего. Плюс есть поддержка плагинов.
![](/file/a87dfe52074494f0e4bcf.png)
HxD
Зачастую возникает необходимость обратиться к жесткому диску, памяти или приложению в бинарном режиме. Здесь на помощь приходят шестнадцатеричные редакторы, ярким представителем которых и является программа HxD. Она бесплатна, постоянно обновляется, поддерживает популярные форматы, хорошо ищет и обладает приятным интерфейсом. Есть и другие удачные фичи — например, возможность надежного удаления файлов (то есть затирания нулями). А еще у HxD есть портативная версия, чтобы было удобно держать на флешке.
![](https://tgraph.io/file/d0878e620b4e0d7033db7.jpg)
![](/file/4a733c0a10fd1bbe2581e.png)
HIEW
Hex-редактор с давней историей, но до сих пор поддерживаемый разработчиками. У него есть платная и бесплатная версия (20 долларов без возможности обновлений, 200 долларов с пожизненными апдейтами). Интерфейс в стиле Norton Commander может немного испугать молодежь, но с ним быстро свыкаешься. Отдельно радует возможность работать только с клавиатуры, вызывая все функции по горячим клавишам.
![](https://tgraph.io/file/405700bc0c203b1126017.jpg)
![](/file/d095c8eb4d517f2e33675.png)
Pestudio
Это полезная программа, заточенная под анализ малвари. Она автоматически сканирует загруженный образец файла на VirusTotal, интересно отображает используемые в подопытном приложении функции таблицы импорта, показывает вирусные признаки приложения, используемые библиотеки и информацию заголовка PE-файла. Здесь же можно работать с ресурсами. Другими словами, это многофункциональный антивирусный комбайн начального анализа семплов.
![](https://tgraph.io/file/967c07a0ff9c9934865b5.jpg)
![](/file/16620e5b03de9b888c30b.png)
PE-bear
Страница PE-bear в блоге разработчика
Еще один интересный просмотрщик и редактор файлов формата PE и PE+. Содержит анализатор пакеров и протекторов, отображает информацию о файловых заголовках, ресурсах и секциях. При желании можно посмотреть hex-представление данных секций и дизассемблировать их в обычные мнемоники ассемблера.
![](https://tgraph.io/file/aae1569aba148370f646c.jpg)
У PE-bear приятный интерфейс и приятная утилита для сравнения файлов. Единственный недостаток — программа редко обновляется, хотя и имеет открытый исходный код. Так что, если найдешь в ней баг, всегда можешь поправить сам.
![](/file/896d72ed5ae9ba429b038.png)
Fakenet-NG
Эта программа необходима для того, чтобы эмулировать работу с сетью. При изучении семплов малвари часто нужно просматривать все сетевые обращения: следить за запросами к DNS и HTTP, снифать трафик и определять IP-адреса управляющих серверов (если это, например, бот-вымогатель). Виртуальная машина по понятным причинам должна быть отключена от сети, и, если вирус это заметит, он не будет делать все то, что обычно делает.
Fakenet-NG постоянно обновляется и поддерживается, так что эту утилиту можно использовать на самых современных ОС.
![](https://tgraph.io/file/25b2895009e2b12b7bceb.jpg)
![](/file/b8e4a719273be847012e0.png)
ProcessExplorer
Обойтись без программ Sysinternals, которые мониторят обращения к файловой системе и процессам, было бы непросто. ProcessExplorer покажет все процессы в системе в форме иерархического дерева, чтобы легко можно было видеть, в каком порядке они порождаются. Кроме этого, можно узнать, какие динамические библиотеки подгружены в процессы, приоритеты, цифровые подписи, использование процессора и многое другое.
![](https://tgraph.io/file/b657feb96ec113ec80e1e.jpg)
![](/file/1d0fe530e1483759a0fa6.png)
RegShot
Удобная программа для мониторинга изменений в реестре. RegShot делает снимки до и после работы интересующего тебя приложения, а потом показывает, где были изменения.
![](/file/4af437dc81c3bf0684ea0.png)
TCPView
Маленькая программа для мониторинга сетевой активности приложений. Можно смотреть, какие порты открывает приложение (локальные и удаленные), а также протоколы, идентификаторы процессов и счетчики пересылаемых пакетов. В общем, один из полезнейших инструментов в любом хакерском наборе!
![](https://tgraph.io/file/bcc01d8b4c0358c448115.jpg)
![](/file/df72f15f777bc944381da.png)
Resource Hacker
Популярная программа для редактирования ресурсов. Позволяет редактировать манифест, иконки, текстовые диалоговые строки, информацию о курсоре и многое другое. Редактировать ресурсы приложения приходится не так часто, но, если все же возникнет такая нужда, приятно иметь под рукой подходящий инструмент.
![](https://tgraph.io/file/d6e9eb6cec3a4db210294.jpg)
![](/file/a81a427a553d136173160.png)
Итого
Мы рассмотрели основной набор утилит, которые используются для решения большинства задач, связанных с реверсом. Я думаю, что на первых порах для начинающего реверсера этих приложений будет достаточно. А вместе с опытом будет расти и твой собственный список.
Многие реверсеры постепенно приходят к тому, что создают нужные узкоспециализированные программы, плагины и скрипты сами. Далеко не для всех задач есть готовые средства, облегчающие жизнь. Если знаешь о подобных наработках или хочешь поделиться ссылками на другие полезные программы — пиши в комментариях!
![](/file/1b10174b5315836100cc3.png)
Social Engineering - Канал посвященный психологии, социальной инженерии, профайлингу, НЛП, Хакингу, Анонимности и безопасности в сети интернет, Даркнету и все что с ним связано. Добро пожаловать ;-)
S.E.Book - Литература социального инженера.