Есть ли способ, чтобы вручную проверить на уязвимость 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
для любого инструмента для большего количества вариантов.