
Пакет Zeek, использующий OpenSSL для обнаружения попыток эксплуатации CVE-2020-0601
Этот скрипт может обнаруживать попытки эксплуатации CVE-2020-0601. Он выполняет проверку, используется ли известная кривая в сертификате - если это не так, выдается уведомление.
Пример уведомления в notice.log:
1579043477.791522 CHhAvVGS1DHFjwGM9 192.241.209.49 46110 192.241.202.21 4433 F37z6n1B8zn1fZjpj application/x-x509-user-cert 192.241.202.21:4433/tcp tcp CVE_2020_0601::Unknown_X509_Curve ECC certificate with unknown curve; potential CVE-2020-0601 exploit attempt Curve validation code: 0 192.241.209.49 192.241.202.21 4433 - -Notice::ACTION_LOG 3600.000000 - - - - -
Чтобы регистрировать подозрительные сертификаты, используйте
redef CVE_2020_0601::log_certs = T;
в вашем local.bro/local.zeek, чтобы включить извлечение. После включения подозрительные сертификаты будут записываться в новый файл cve-2020-0601-certs.log.
Этот скрипт требует OpenSSL 1.1.1. Он использует функциональность OpenSSL, чтобы проверить, является ли кривая, содержащаяся в сертификате, известной кривой или нет.
Обратите внимание, что этот тест, возможно, избыточен. Если вы хотите более простой скрипт, который не требует загрузки скомпилированного C-кода в вашу установку Zeek, посмотрите репозиторий по адресу https://github.com/0xxon/cve-2020-0601, в котором используется решение на чистом скриптинге. У решения на чистом скрипте более высокий потенциал ложноположительных срабатываний - но на данный момент у меня нет сообщений о ложных срабатываниях.
В настоящее время у меня нет планов делать версию этого пакета, которая компилируется для старых версий OpenSSL.