Blog. Just Blog

Программы для поиска криптоалгоритмов в исполняемых файлах

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Темная сторона Силы | Автор: ManHunter
Программы для поиска криптоалгоритмов в исполняемых файлах
Программы для поиска криптоалгоритмов в исполняемых файлах

При анализе различных защит часто приходится определять, какой алгоритм был использован для шифрования данных или преобразований регистрационного имени в правильный серийный номер. Часто авторы не изобретают велосипедов, а используют готовые алгоритмы шифрования или хеширования. Вы должны понимать, что алгоритмы шифрования и алгоритмы хеширования - это разные вещи, но для удобства в статье я буду называть их просто "криптоалгоритмами". Если алгоритмы стандартные, то их можно идентифицировать, например, по характерным константам-полиномам, таблицам преобразований или по последовательности выполняемых операций (хорошие статьи по этой теме на английском можно почитать тут). Для поиска криптоалгоритмов в исполняемых файлах созданы специальные программы, небольшой обзор которых я подготовил в этой статье.

Скриншот программы Krypto ANALyzer
Скриншот программы Krypto ANALyzer

Наиболее известный сканер криптоалгоритмов - это плагин Krypto ANALyzer для анализатора исполняемых файлов PEiD. Распознает BLOWFISH, CAST, CRC16/32, DES, DESX, FROG, GOST, HAVAL, ICE, ICELOCK, MARS, MD4/5, MISTY, NEWDES, Q128, RC2/5/6, RIJNDAEL, RIPEMD, SHA, SHARK, SKIPJACK, SNEFRU, SQUARE, TIGER, TWOFISH и многие другие алгоритмы. Найденные значения можно просто посмотреть или экспортировать в скрипт для дизассемблера IDA Pro. Я написал для Krypto ANALyzer небольшой загрузчик-переходник, позволяющий запускать плагин как самостоятельное приложение.

Krypto ANALyzer 2.92Krypto ANALyzer 2.92

Krypto.ANALyzer.2.92.zip (120,964 bytes)

Скриншот программы Crypto Checker
Скриншот программы Crypto Checker

Crypto Checker от Aleph - один из лучших криптосканеров, которые созданы на сегодняшний день. Работает с огромной скоростью, определяет не только криптоалгоритмы, но и различные протекторы и упаковщики исполняемых файлов, текстовые строки, числовые примитивы, пароли и еще много-много другого. По тщательности анализа превосходит, наверное, все подобные инструменты. Из-за странной прихоти автора исполняемый файл имеет олдскульное расширение ".com", если вас это смущает, то можете его переименовать в нормальный ".exe"

Crypto Checker 1.3 alpha 11Crypto Checker 1.3 alpha 11

Crypto.Checker.1.3.alpha.11.zip (315,339 bytes)

Скриншот программы SnD Crypto Scanner
Скриншот программы SnD Crypto Scanner

SnD Crypto Scanner - консольный анализатор от крякерской команды SnD. Распространяется в виде самостоятельной консольной утилиты и плагинов для отладчиков OllyDbg и Immunity Debugger. Есть небольшая путаница в номерах версий и названиях, консольная утилита называется Command Line Crypto Scanner 1.2, а плагины для отладчиков, соответственно, Crypto Scanner Plugin 0.5b. Но фактически это один и тот же анализатор. Особую ценность представляют собой исходники на чистом Ассемблере, которые также есть в комплекте.

SnD Crypto Scanner 0.5bSnD Crypto Scanner 0.5b

SnD.Crypto.Scanner.0.5b.zip (101,292 bytes)

Скриншот программы SND Reverser Tool
Скриншот программы SND Reverser Tool

SND Reverser Tool включает в себя предыдущий инструмент, но работает через GUI-интерфейс. Вызывается через меню Tools - Crypto Scanner. Также позволяет экспортировать найденные результаты в текстовый файл или в скрипт для IDA Pro. Распространяется вместе с исходниками.

SND Reverser Tool 1.5b1SND Reverser Tool 1.5b1

SND.Reverser.Tool.1.5b1.zip (646,335 bytes)

Скриншот программы Signsrch
Скриншот программы Signsrch

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

Signsrch 0.2.3Signsrch 0.2.3

Signsrch.0.2.3.zip (931,637 bytes)

Скриншот программы Draft Crypto Analyzer
Скриншот программы Draft Crypto Analyzer

Консольный Draft Crypto Analyzer (DRACA) распознает криптоалгоритмы CRC32, RC5, RC6, RC2, TEA, MD5, Ripemd-160, Tiger, Skipjack, DES, Blowfish, Twofish, Safer, MARS, CAST-256, AES (Rijndael), SHA-1 и выводит степень совпадения в процентном соотношении. На мой взгляд, ценность такой информации нулевая. Ну узнал я, например, что в файле со 100% вероятностью используется MD5, ну и что дальше мне делать с этим знанием? Ни смещения в файле, по которому была найдена сигнатура, никакой другой полезной информации. Поэтому утилита сгодится разве что для пополнения коллекции.

Draft Crypto Analyzer 0.5.7bDraft Crypto Analyzer 0.5.7b

Draft.Crypto.Analyzer.0.5.7b.zip (100,868 bytes)

Скриншот программы Hash & Crypto Detector
Скриншот программы Hash & Crypto Detector

Hash & Crypto Detector - криптоанализатор от крякерской команды AT4RE. Поддерживает около 120 сигнатур, кроме этого пытается определить компилятор, которым был собран анализируемый файл, и провести еще какой-то загадочный эвристический анализ. По задумке авторов может запускать файлы, чтобы сделать дамп памяти, а потом его анализировать, но эта опция реализована глючно. Зато всяких ненужных свистоперделок типа скинового окна и нестандартных элементов управления добавлено от души.

Hash & Crypto Detector 1.4Hash & Crypto Detector 1.4

Hash.Crypto.Detector.1.4.zip (382,895 bytes)

Скриншот программы Keygener Assistant
Скриншот программы Keygener Assistant

Недалеко ушел и комбайн Keygener Assistant от этой же команды AT4RE. Помимо других возможностей, одна из вкладок в интерфейсе посвящена поиску криптоалгоритмов. Ее код, как я понимаю, полностью идентичен Hash & Crypto Detector.

Keygener Assistant 1.9Keygener Assistant 1.9

Keygener.Assistant.1.9.zip (1,899,511 bytes)

Скриншот программы x3chun's Crypto Searcher
Скриншот программы x3chun's Crypto Searcher

x3chun's Crypto Searcher - чудо корейского программизма. Из пяти тестовых компьютеров согласилось работать лишь на одном. По заверениям автора, этот Crypto Searcher распознает около сотни криптоалгоритмов, но с такой феноменальной работоспособностью пригодится тоже только для коллекции.

x3chun's Crypto Searcherx3chun's Crypto Searcher

x3chuns.Crypto.Searcher.zip (26,526 bytes)

Скриншот плагина findcrypt2
Скриншот плагина findcrypt2

Было бы также неправильным не упомянуть замечательный плагин findcrypt2 для дизассемблера IDA Pro. Кроме того, что он определяет криптоалгоритмы, плагин сразу же помечает их в листинге, чтобы затем можно было легко к ним перейти. Вот полный список поддерживаемых алгоритмов: Blowfish, Camellia, CAST, CAST256, CRC32, DES, GOST, HAVAL, MARS, MD2, MD4, MD5, PKCS_MD2, PKCS_MD5, PKCS_RIPEMD160, PKCS_SHA256, PKCS_SHA384, PKCS_SHA512, PKCS_Tiger, RawDES, RC2, RC5, RC6, Rijndael, SAFER, SHA-1, SHA-256, SHA-512, SHARK, SKIPJACK, Square, Tiger, Twofish, WAKE, Whirlpool, zlib. Сперва запускаете плагин через меню Edit - Plugins, затем в меню Jump - Jump to marked position выбираете, на какую метку нужно перейти. Очень удобно, не надо запускать сторонние утилиты или генерировать скрипты для IDA, все операции делаются в любимом дизассемблере. Скачать готовый плагин вместе с исходниками можно с GitHub или по ссылке ниже.

findcrypt2findcrypt2

IDA.Pro.findcrypt2.zip (381,817 bytes)

Конечно, ни один анализатор не гарантирует 100% обнаружение криптоалгоритмов. Достаточно изменить полиномы или константы (например, записав их в виде суммы двух чисел), переставить местами некоторые команды в алгоритме или каким-нибудь другим способом "размыть" сигнатуру, и статические анализаторы уже ничем не помогут. В некоторых случаях против этого помогут динамические анализаторы, как хорошо описано в этой презентации, но и они не панацея.

Если у вас есть какие-нибудь еще программы для поиска криптоалгоритмов, то напишите в комментариях к статье, я обязательно их добавлю.

Поделиться ссылкой ВКонтакте Поделиться ссылкой на Facebook Поделиться ссылкой на LiveJournal Поделиться ссылкой в Мой Круг Добавить в Мой мир Добавить на ЛиРу (Liveinternet) Добавить в закладки Memori Добавить в закладки Google
Просмотров: 4385 | Комментариев: 10

Внимание! Статья опубликована больше года назад, информация могла устареть!

Комментарии

Отзывы посетителей сайта о статье
lammer (21.02.2016 в 21:40):
From exetools:

CC minor update

+ TCryptLib (String)
+ PDF2EXE (String)
+ New SSL algo group (A few more Indy SSL strings)
+ New DWORD aligned ASCIIZ text dump algo group
+ New DOS Rus algo group (CP866 text dumper)

mirror: mega:///#!x8UzVYiQ!nJFreU95z84YxAlLnZ6PyEzF4JmjY4HRJnkiuF8B2PY

Note: need WinRar 5+ to unpack.
X-Wing Top Ace (06.11.2015 в 11:01):
ЦитатаКонечно, ни один анализатор не гарантирует 100% обнаружение криптоалгоритмов.

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

ЦитатаДостаточно изменить полиномы или константы (например, записав их в виде суммы двух чисел)

Полиномы - да (как раз размоет сигнатуру, и на выходе в коде получится другая последовательность команд), а вот насчет констант - тут уже будут нужны несильные, но извраты. Если просто объявить константу не как число, а как сумму чисел, их просуммирует уже компилятор, а вот если объявить хитрозакрученный макрос или просто две константы вместо одной, суммируя их в самой реализации крипчения, это уже надежно исказит сигнатуру (пока не добавят в базу этот искаженный вариант ;).
user (03.11.2015 в 20:08):
ЦитатаОн там есть, .Net не используется, алгоритм "зашит" в коде программы...
Ну так написано же:
ЦитатаКонечно, ни один анализатор не гарантирует 100% обнаружение криптоалгоритмов.
Ну, например (чисто теоретически) для GOST'а должен присутствовать некий массив из [128] байтов: {4, 10, 9, 2, 13, 8, 0, ...и т.д.}.
Сканер и ищет массив байтов. Если задать этот же массив в виде 128 слов или двойных слов, то сканер не опознает его. Это просто в качестве примера, ничего конкретного.
anonymous (03.11.2015 в 16:03):
Он там есть, .Net не используется, алгоритм "зашит" в коде программы...
lammer (03.11.2015 в 16:02):
До кучи: CC update с exelab и пара старых программ сходной тематики: CryptoStrings Searcher 1.4 + scan4guid h**ps://www.sendspace.com/file/2dtjq1
lammer (03.11.2015 в 15:40):
> ни одна не распознала GOST
Ну, так его там и нет. Он вызывается из .NET:
00000A9E  01  [.text   ]  001E6D70  .005E7970  System                       A '.Crypto.GOSTCrypt.System.NetEncoding' { 0024 }
anonymous (03.11.2015 в 12:29):
Ерунда какая то. Посмотрел ГУИшные утилиты, ни одна не распознала GOST, (консольные проверять ломает). Вот подопытный файл - http://rghost.ru/6nxx4kC4F, может кто сможет (при желании) в нем GOST найти...
ManHunter (03.11.2015 в 12:10):
Странно, действительно не качалось. Поправил, спасибо.
anonymous (03.11.2015 в 12:02):
Спасибо за подборку, (возможно) пригодится.

Пожалуйста, поправьте ссылку на findcrypt2, а то не скачивается.
distortion (03.11.2015 в 02:18):
"Скачать готовый плагин вместе с исходниками можно с GitHub или по ссылке ниже."

по ссылке выше:)

спасибо!

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2017
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.06 сек. / MySQL: 2 (0.0042 сек.) / Память: 4.5 Mb
Наверх