Бесплатно Экспресс-аудит сайта:

17.04.2014

Heartleech: программа для поиска и извлечения секретных SSL-ключей

Heartleech: программа для поиска и извлечения секретных SSL-ключей

Как известно, уязвимость Heartbleed в OpenSSL (первая в истории уязвимость, которая получила собственное имя) позволяет, среди прочего, извлекать секретные ключи SSL из памяти серверов. Многие серверы до сих пор используют уязвимые версии OpenSSL от 1.0.1a до 1.0.1f.

C помощью нового инструмента Heartleech можно автоматизировать работу по сканированию ОЗУ и извлечению ключей. В отличие от других подобных сканеров, у него есть режим autopwn (параметр -a), который последовательно выполняет все необходимые шаги по чтению памяти и восстановлению ключа.

Программа отличается скрытным режимом работы: обмен пакетами Heartbeats происходит не во время «рукопожатия», а после него и в зашифрованном виде с помощью функции ssl3_write_bytes(). Правда, для использования этой функции понадобится или осуществить экспорт из OpenSSL, или, если не получится, скачать исходники OpenSSL и связать программу heartleech.c с входящими в комплект OpenSSL библиотеками libcrypto.a и libssl.a.

git clone git://git.openssl.org/openssl.git cd openssl ./config make depend make gcc ../heartleech/heartleech.c libcrypto.a libssl.a -ldl -o heartleech #Cygwin compile string, order matters: gcc ../heartleech/heartleech.c libcrypto.a libssl.a -ldl -o heartleech

Утилита Heartleech поддерживает IPv4 и IPv6,обходит защиту Snort IDS, работает с полными пакетами по 64 КБ и может сохранять бинарные данные в файл (ключ -f <filename>).

Например, такая команда посылает миллион запросов к указанному серверу и записывает ответы в файл. Размер файла составит 64 ГБ.

./heartleech www.cloudflarechallenge.com -f challenge.bin

В этом файле можно потом запустить grep для поиска ключей, кукисов и паролей. Как вариант, сразу запускаем Heartleech с ключом -a, и тогда поиск простых чисел от ключа RSA начинается автоматически после сохранения файла, затем программа генерирует секретный ключ, используя найденные простые числа. Метод действует только для ключей RSA.