Log4shell-detector

De OSWiki
Aller à la navigation Aller à la recherche

Faites une mise à jour de votre système. Sous Ubuntu :

sudo apt update
sudo apt upgrade

Ceci est la traduction du README de log4shell-detector, détecteur de tentatives d'exploitation de Log4Shell Je n'ai aucun lien avec les développeurs de ce projet.

Pour plus d'informations : Informations générales sur Log4shell

Source

https://github.com/Neo23x0/log4shell-detector

Ce qu'il fait et ne fait pas

  • Il vérifie les fichiers journaux locaux à la recherche d'indicateurs de tentatives d'exploitation, même celles qui sont fortement obscurcies et que les modèles basés sur des chaînes ou des expressions régulières ne pourraient pas détecter.
  • Il ne trouve pas d'applications vulnérables
  • Il ne vérifie pas et ne peut pas vérifier si les tentatives d'exploitation ont réussi.

Idée

Le problème de l'exploitation de log4j CVE-2021-44228 est que la chaîne de caractères peut être fortement obscurcie de nombreuses manières différentes. Il est impossible de couvrir toutes les formes possibles avec une expression régulière raisonnable.

L'idée derrière ce détecteur est que les caractères respectifs doivent apparaître dans une ligne de journal dans un certain ordre pour correspondre.

${jndi:ldap :

Divisé en une liste, cela ressemblerait à ceci :

["$", "{", "j", "n", "d", "i", " :", "l", "d", "a", "p", " :"]

J'appelle ces listes "blocs de détection" dans mon script et je traite chaque ligne de journal caractère par caractère. Je vérifie si chaque caractère correspond au premier élément des blocs de détection. Si le caractère correspond à un caractère de l'un des blocs de détection, un pointeur avance.

Lorsque le pointeur atteint la fin de la liste, la détection se déclenche et le script imprime le nom du fichier, la ligne complète du journal, la chaîne détectée et le numéro de la ligne dans le fichier.

J'ai inclus un décodeur pour les encodages basés sur les URL. Si nous avons besoin de plus, faites-le moi savoir.

Utilisation

utilisation : log4shell-detector.py [-h] [-p path [path ...]]] [-d maxdis] [--quick] [--defaultpaths] [--debug]

Détecteurs d'exploitation Log4Shell

arguments facultatifs :
 -h, --help affiche ce message d'aide en anglais et sort
 -p path [path ...] Chemin à analyser
 -d distance Distance maximale entre chaque caractère
 --debug Sortie de débogage
 --defaultpaths Analyse un ensemble de chemins par défaut qui devraient contenir des fichiers journaux pertinents.
 --quick Ignorer les lignes de journal qui ne contiennent pas d'horodatage 2021 ou 2022.
 --summary Afficher uniquement le résumé

Démarrage

  • Assurez-vous que python est installé sur les systèmes cibles sur lesquels vous souhaitez exécuter log4shell-detector :
 python -V 

et vérifiez si Python 3 est disponible

python3 -V
  • Téléchargez ce Repo en cliquant sur "Code" > "Download ZIP".
  • Extrayez le paquet et amenez seulement log4shell-detector.py sur le système cible (par exemple avec scp)
unzip main.zip
  • Exécutez-le avec
 python3 log4shell-detector.py -p /var/log 

(si python3 n'est pas disponible utilisez python)

  • Si vos applications écrivent dans un dossier différent de /var/log, trouvez où résident les fichiers de log et analysez ces dossiers. Trouvez les emplacements dans lesquels les applications écrivent des journaux avec
lsof | grep '\.log'.
  • Examinez les résultats (voir les FAQ pour plus de détails).

FAQs

Je n'utilise pas log4j sur ce serveur mais le scanner signale des tentatives d'exploitation. Suis-je affecté ?

Non. Mais pouvez-vous être sûr qu'aucune application n'utilise log4j ?

Vous pouvez essayer de trouver des preuves de l'utilisation de log4j en exécutant ces commandes :

ps aux | egrep '[l]og4j'
find / -iname "log4j*"
lsof | grep log4j
find . -name '*[wj]ar' -print -exec sh -c 'jar tvf {} | grep log4j' \;

Si aucune de ces commandes ne renvoie de résultat, vous devriez être tranquille.

Ndlr : attention ne pas confondre log4j ( log pour Java) et log4js (log pour Javascript) et log4Net (log pour .NET).

Mes applications utilisent log4j et j'ai trouvé des preuves de tentatives d'exploitation ? Suis-je compromis ?

C'est possible, oui. Vérifiez d'abord si l'application que vous utilisez est effectivement affectée par la vulnérabilité. Vérifiez les versions de JAVA et de log4j, consultez le blog du fournisseur pour un avis ou testez vous-même l'application en utilisant des jetons canari.

Si votre application est affectée et vulnérable et que vous prévoyez d'effectuer une investigation légale,

  1. créez une image mémoire de ce système (utilisez par exemple les snapshots de VMWare ou d'autres outils pour cela)
  2. créez une image du disque de ce système
  3. vérifiez les connexions réseau sortantes du système dans les journaux de votre pare-feu
  4. vérifiez la présence de nouvelles entrées suspectes dans la crontab du système (/etc/crontab). Si vous le souhaitez et le pouvez, utilisez notre outil gratuit THOR Lite pour une évaluation de base de la compromission.
  5. Après quelques recherches, décidez si vous voulez et pouvez déconnecter ce système d'Internet jusqu'à ce que vous ayez vérifié qu'il n'a pas été compromis.

Flags spéciaux

--defaultpaths

Vérifie une liste de chemins d'accès par défaut aux journaux utilisés par différents logiciels.

--quick

Vérifie uniquement les lignes de journal qui contiennent un 2021 ou un 2022 pour exclure toute analyse des entrées de journal plus anciennes. Nous supposons que la vulnérabilité n'a pas été exploitée en 2019 et avant.

--summary

Imprime un résumé des correspondances, avec uniquement le nom de fichier et le numéro de ligne.

Conditions d'utilisation

Python 2 ou Python 3

Aucun module Python supplémentaire ou spécial n'est requis. Il devrait fonctionner sur tout système qui utilise Python.

Captures d'écran

Aide

Il y a plusieurs façons d'aider.

  • Testez-le contre les charges utiles que vous trouvez dans la nature et faites-moi savoir si nous avons manqué quelque chose.
  • Aidez-moi à trouver et à corriger les bugs.
  • Testez si les scripts fonctionnent avec Python 2 ; sinon, nous pouvons ajouter une version légèrement modifiée au dépôt.

Contact

Twitter: @cyberops

Exemples (pas dans la note de l'outil)

python3 log4shell-detector.py --defaultpaths  --quick --debug --summary

python3 log4shell-detector.py --quick --debug --summary  -p <chemin du dossier à tester>