Есть ли способ, чтобы вручную проверить на уязвимость openssl CVE-2014-0160?

Есть ли способ проверить некоторые внутренние сервисы на соответствие CVE - CVE-2014-0160 (желательно с openssl CLI)?

Я НЕ МОГУ проверить все, просто используя: Проверьте ваш сервер на Heartbleed (CVE-2014-0160).

4 ответа

Решение

Вы можете попробовать:

openssl s_client -connect domain.com:443 -tlsextdebug 2>&1 | grep 'server extension "heartbeat" (id=15)' || echo safe

С https://devcentral.f5.com/questions/openssl-and-heart-bleed-vuln

Вы можете использовать этот скрипт, например: http://rehmann.co/projects/heartbeat/ssltest.py

Вот несколько локальных детекторов / контроллеров уязвимости Heartbleed:

Titanous на GitHub, похоже, все еще находится в активной разработке, и Titanous также выпустил программный код Go для обнаружения Heartbleed, у которого были лучшие сообщения, чем у Filippo этим утром, и последний раз обновлялся 32 минуты назад. Похоже, что под лицензией Go, хотя я не сделал полное сравнение; аналогично лицензии BSD 3

musalbas на github выпустил программу на Python "ssltest.py", вариант кода ответа @MichelZ, ссылки на который модифицированы для одновременного создания больших списков, без лицензии. Мусалбас также опубликовал списки результатов сканирования 100, 1000, 10000 и 1 млн. Интернет-сайтов примерно 5 часов назад.

Filippo.io был одним из первых веб-сайтов, и они выпустили свой код на github с лицензией MIT (язык программирования Go).

Codenomicon Defensics, по- видимому, также обнаруживает Heartbleed.

Лекенштейн, конечно, выпустил программу проверки клиента Python для кардиостимулятора, измененную несколько часов назад, а также оригинальную версию ssltest.py для Stafford. Конкретная лицензия не указана.

Metasploit также очень быстро получает тесты Heartbleed, включая проверку сервера, связанную здесь, и проверку клиента от @HDMoore и @Lekensteyn

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

  • alert tcp any [! 80,! 445] -> any [! 80,! 445] (сообщение:"FOX-SRT - Подозрительный - ответ на большое сердцебиение SSLv3"; поток: установлено, to_client; содержимое:"|18 03 00|"; глубина: 3; byte_test:2, >, 200, 3, большой; byte_test: 2, <, 16385, 3, большой; порог: ограничение типа, дорожка by_src, счетчик 1, секунд 600; ссылка:cve,2014-0160; classtype: bad-unknown; sid: 1000000; rev: 4;)

  • alert tcp any [! 80,! 445] -> any [! 80,! 445] (сообщение:"FOX-SRT - Подозрительно - TLSv1 Large Heartbeat Response"; поток: установлено, to_client; содержимое:"|18 03 01|"; глубина: 3; byte_test:2, >, 200, 3, большой; byte_test: 2, <, 16385, 3, большой; порог: ограничение типа, дорожка by_src, счетчик 1, секунд 600; ссылка:cve,2014-0160; classtype: bad-unknown; sid: 1000001; rev: 4;)

  • alert tcp any [! 80,! 445] -> any [! 80,! 445] (сообщение:"FOX-SRT - Подозрительно - TLSv1.1 Large Heartbeat Response"; поток: установлено, to_client; содержимое:"|18 03 02|"; глубина: 3; byte_test:2, >, 200, 3, большой; byte_test: 2, <, 16385, 3, большой; порог: ограничение типа, дорожка by_src, счетчик 1, секунды 600; ссылка: cve, 2014-0160; classtype: bad-unknown; sid: 1000002; rev: 4;)

  • alert tcp any [! 80,! 445] -> any [! 80,! 445] (сообщение:"FOX-SRT - Подозрительно - TLSv1.2 Большой пульс"; поток: установлено, to_client; содержимое:"|18 03 03|"; глубина: 3; byte_test:2, >, 200, 3, большой; byte_test: 2, <, 16385, 3, большой; порог: ограничение типа, дорожка by_src, счетчик 1, секунды 600; ссылка: cve, 2014-0160; classtype: bad-unknown; sid: 1000003; rev: 4;)

Пожалуйста, также поблагодарите snort.org за выпуск набора правил обнаружения Heartbleed, которые обычно были бы в их списке правил VRT (платная подписка) в течение первых 30 дней перед посещением сообщества:

  • предупреждение tcp $EXTERNAL_NET any -> $HOME_NET 443 (сообщение:"SERVER-OTHER OpenSSL SSLv3 попытка переполнения чтения контрольного сигнала"; поток: to_server, установлен; содержимое: "| 18 03 00 |"; глубина:3; dsize:>40; обнаружение_фильтр: отслеживание by_src, счетчик 3, секунды 1; метаданные: сброс сбалансированных ips политики, сброс ips политики безопасности, сервис ssl; ссылка: cve, 2014-0160; класс классификации: предпринятый-рекон; sid:30510; рев:2;)

  • предупреждение tcp $ EXTERNAL_NET любое -> $ HOME_NET 443 (сообщение:"SERVER-OTHER OpenSSL TLSv1 попытка переполнения чтения тактового импульса"; поток: to_server, установлен; содержимое: "| 18 03 01 |"; глубина:3; dsize:>40; обнаружение_фильтр: отслеживание by_src, счетчик 3, секунды 1; метаданные: сброс сбалансированных ips политики, сброс ips политики безопасности, сервис ssl; ссылка: cve, 2014-0160; класс классификации: предпринятый-рекон; sid:30511; рев:2;)

  • предупреждение tcp $ EXTERNAL_NET любое -> $ HOME_NET 443 (сообщение:"SERVER-OTHER OpenSSL TLSv1.1 попытка переполнения чтения тактового импульса"; поток: to_server, установлено; содержимое: "| 18 03 02 |"; глубина:3; dsize:>40; обнаружения_фильтра: отслеживание by_src, счетчик 3, секунды 1; метаданные: сброс сбалансированных ips политики, сброс ips политики безопасности, ssl службы; ссылка: cve, 2014-0160; класс классификации: предпринятый-рекон; sid:30512; rev:2;)

  • предупреждение tcp $ EXTERNAL_NET любое -> $ HOME_NET 443 (сообщение:"SERVER-OTHER OpenSSL TLSv1.2 попытка переполнения чтения тактового импульса"; поток: to_server, установлено; содержимое: "| 18 03 03 |"; глубина:3; dsize:>40; обнаружение_фильтра: отслеживание by_src, счетчик 3, секунды 1; метаданные: сброс сбалансированных ips политики, сброс ips безопасности политики, ssl службы; ссылка: cve, 2014-0160; класс классификации: предпринятый-рекон; sid: 30513; rev:2;)

  • alert tcp $ HOME_NET 443 -> $ EXTERNAL_NET any (msg: "SERVER-OTHER SSLv3 большой ответ сердцебиения - возможна попытка ssl сердечного ритма"; поток: to_client, установлено; содержимое: "| 18 03 00 |"; глубина:3; byte_test:2,>,128,0, относительный; обнаружение_фильтра: отслеживание by_dst, счет 5, секунд 60; метаданные: сброс сбалансированных ips политики, сброс ips политики безопасности, ssl службы; ссылка: cve, 2014-0160; класс классификации: попытка- разведка; sid: 30514; rev: 3;)

  • alert tcp $ HOME_NET 443 -> $ EXTERNAL_NET any (msg: "SERVER-OTHER TLSv1 большой ответ на сердцебиение - возможна попытка ssl с учащенным сердцебиением"; поток: to_client, установлено; содержимое: "| 18 03 01 |"; глубина:3; byte_test:2,>,128,0, относительный; обнаружение_фильтра: отслеживание by_dst, счет 5, секунд 60; метаданные: сброс сбалансированных ips политики, сброс ips политики безопасности, ssl службы; ссылка: cve, 2014-0160; класс классификации: попытка- разведка; sid: 30515; rev: 3;)

  • alert tcp $ HOME_NET 443 -> $ EXTERNAL_NET any (msg: "SERVER-OTHER TLSv1.1 большой ответ на сердцебиение - возможна попытка ssl с сердечным кровотечением"; поток: to_client, установлено; содержимое: "| 18 03 02 |"; глубина:3; byte_test:2,>,128,0, относительный; обнаружение_фильтра: отслеживание by_dst, счет 5, секунд 60; метаданные: сброс сбалансированных ips политики, сброс ips политики безопасности, ssl службы; ссылка: cve, 2014-0160; класс классификации: попытка-разведка; sid: 30516; rev: 3;)

  • alert tcp $ HOME_NET 443 -> $ EXTERNAL_NET any (msg: "SERVER-OTHER TLSv1.2 большой ответ на сердцебиение - возможна попытка ssl с сердечным кровотечением"; поток: to_client, установлено; содержимое: "| 18 03 03 |"; глубина:3; byte_test:2,>,128,0, относительный; обнаружение_фильтра: отслеживание by_dst, счет 5, секунд 60; метаданные: сброс сбалансированных ips политики, сброс ips политики безопасности, ssl службы; ссылка: cve, 2014-0160; класс классификации: попытка-разведка; sid:30517; rev:3;)

Серверы можно протестировать с помощью инструмента ssltest.py. Клиенты могут быть протестированы с помощью кардиостимулятора. Оба могут быть найдены в https://github.com/Lekensteyn/pacemaker.

сервер

Запустите тестовый клиент, он покажет, уязвим ли сервер или нет:

python2 ssltest.py example.com

клиент

Запустить сервер (по умолчанию порт 4433):

./pacemaker.py

Теперь заставьте клиента подключиться к https://address.of.machine:4433/ и посмотри в вывод сервера. MySQL также поддерживается. На момент написания статьи я еще не добавил поддержку STARTTLS.

Обязательно добавлю --help для любого инструмента для большего количества вариантов.

Другие вопросы по тегам