Heartleech: программа для поиска и извлечения секретных SSL-ключей
- четверг, 17 апреля 2014 г. в 03:10:56
Как известно, уязвимость 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.