Как известно, уязвимость 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.



Оставить мнение