Назад | Перейти на главную страницу

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

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

я НЕ МОЖЕТ протестируйте все, просто используя: Проверьте свой сервер на наличие Heartbleed (CVE-2014-0160).

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

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 пунктами.

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

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

Коденомикон Защитник похоже, также обнаруживает Heartbleed.

Lekensteyn разумеется, выпустил программу проверки клиента python, измененную несколько часов назад, а также исходную версию ssltest.py Stafford. Никакая конкретная лицензия не указана.

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

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

  • alert tcp any [! 80,! 445] -> any [! 80,! 445] (msg: «FOX-SRT - Suspicious - SSLv3 Large Heartbeat Response»; поток: установлен, to_client; content: «| 18 03 00 | "; depth: 3; byte_test: 2,>, 200, 3, big; byte_test: 2, <, 16385, 3, big; threshold: type limit, track by_src, count 1, sec 600; reference: cve, 2014- 0160; classtype: bad-unknown; sid: 1000000; rev: 4;)

  • alert tcp any [! 80,! 445] -> any [! 80,! 445] (msg: «FOX-SRT - Suspicious - TLSv1 Large Heartbeat Response»; поток: установлен, to_client; content: «| 18 03 01 | "; depth: 3; byte_test: 2,>, 200, 3, big; byte_test: 2, <, 16385, 3, big; threshold: type limit, track by_src, count 1, sec 600; reference: cve, 2014- 0160; classtype: bad-unknown; sid: 1000001; rev: 4;)

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

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

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

  • alert tcp $ EXTERNAL_NET любой -> $ HOME_NET 443 (сообщение: "СЕРВЕР-ДРУГАЯ попытка переполнения контрольного сообщения SSLv3 OpenSSL"; поток: to_server, установлен; содержание: "| 18 03 00 |"; глубина: 3; размер:> 40; Detection_filter: отслеживать по_src, счетчик 3, секунды 1; метаданные: отбрасывание сбалансированных ips политик, отбрасывание ips безопасности политик, ssl-адрес службы; ссылка: cve, 2014-0160; тип класса: попытка-реконструкция; sid: 30510; версия: 2 )

  • alert tcp $ EXTERNAL_NET любой -> $ HOME_NET 443 (сообщение: «СЕРВЕР-ДРУГАЯ попытка переполнения контрольного сообщения OpenSSL TLSv1»; поток: to_server, установлен; содержание: «| 18 03 01 |»; глубина: 3; размер:> 40; Detection_filter: отслеживать по_src, счетчик 3, секунды 1; метаданные: отбрасывание сбалансированных ips политик, отбрасывание ips безопасности политик, ssl-адрес службы; ссылка: cve, 2014-0160; тип класса: попытка-реконструкция; sid: 30511; rev: 2 )

  • alert tcp $ EXTERNAL_NET любой -> $ HOME_NET 443 (msg: "СЕРВЕР-ДРУГАЯ попытка переполнения контрольного сообщения OpenSSL TLSv1.1"; поток: to_server, установлен; содержание: "| 18 03 02 |"; глубина: 3; размер:> 40; обнаружение_фильтра: отслеживать по_src, счетчик 3, секунды 1; метаданные: отбрасывание сбалансированных ips политик, отбрасывание ips безопасности политик, ssl-адрес службы; ссылка: cve, 2014-0160; classtype: try-recon; sid: 30512; rev: 2;)

  • alert tcp $ EXTERNAL_NET любой -> $ HOME_NET 443 (сообщение: "СЕРВЕР-ДРУГОЙ OpenSSL TLSv1.2 попытка переполнения пульса"; поток: to_server, установлен; содержание: "| 18 03 03 |"; глубина: 3; размер:> 40; обнаружение_фильтра: отслеживать по_src, счетчик 3, секунды 1; метаданные: отбрасывание сбалансированных IP-адресов политики, удаление IP-адресов безопасности политики, ssl-адрес службы; ссылка: cve, 2014-0160; тип класса: попытка-реконструкция; sid: 30513; редакция: 2;)

  • alert tcp $ HOME_NET 443 -> $ EXTERNAL_NET any (msg: «СЕРВЕР-ДРУГОЙ ответ SSLv3 на большое сердцебиение - возможная попытка утечки сердцебиения ssl»; поток: to_client, установлен; содержание: «| 18 03 00 |»; глубина: 3; byte_test: 2,>, 128,0, относительный; обнаружение_фильтра: отслеживание по_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, относительный; обнаружение_фильтра: отслеживание по_dst, счетчик 5, секунд 60; метаданные: отбрасывание сбалансированных ips политик, сброс политик безопасности-ips, ssl-адрес службы; ссылка: cve, 2014-0160; тип класса: попытка- разведка; сид: 30515; рев: 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, относительный; фильтр_обнаружения: отслеживать по_dst, счетчик 5, секунд 60; метаданные: отбрасывание ips-политики сбалансированной, отбрасывание ips-политики безопасности, ssl-адрес службы; ссылка: cve, 2014-0160; classtype: попытка-разведка; 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, относительный; фильтр_обнаружения: отслеживать по_dst, счетчик 5, секунд 60; метаданные: отбрасывание ips-политики с балансировкой, отбрасывание ips-политики безопасности, ssl-адрес службы; ссылка: cve, 2014-0160; classtype: попытка-разведка; 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 для любого инструмента для получения дополнительных опций.