
ShellSweeping il male.
ShellSweep: alla caccia del male
"ShellSweep" è uno strumento PowerShell/Python/Lua progettato per rilevare potenziali file web shell in una directory specificata.
ShellSweep e la sua suite di strumenti calcolano l'entropia del contenuto dei file per stimare la probabilità che un file sia una web shell. Un'entropia elevata indica una maggiore casualità, caratteristica di codice crittografato o offuscato spesso presente nelle web shell.
L'entropia, nel contesto della teoria dell'informazione o della scienza dei dati, è una misura dell'imprevedibilità, casualità o disordine in un insieme di dati. Il concetto è stato introdotto da Claude Shannon nel suo articolo del 1948 "A Mathematical Theory of Communication".
Applicata a un file o a una stringa di testo, l'entropia può aiutare a valutare la casualità dei dati. Ecco come funziona: Se un file è composto da dati completamente casuali (ogni byte ha la stessa probabilità di essere un qualsiasi valore tra 0 e 255), l'entropia è alta, vicino a 8 (poiché log2(256) = 8).
Se un file è composto da dati altamente strutturati (ad esempio, un file di testo in cui la maggior parte dei byte sono caratteri ASCII), l'entropia è più bassa. Nel contesto della ricerca di web shell o file dannosi, l'entropia può essere un indicatore utile:
ShellSweep include una funzione Get-Entropy che calcola l'entropia del contenuto di un file:
ShellSweepX porta le funzionalità principali di ShellSweep al livello successivo, offrendo diversi vantaggi rispetto alle tradizionali soluzioni EDR (Endpoint Detection and Response):
Focus Specializzato: A differenza delle soluzioni EDR che gettano una rete ampia, ShellSweepX è specificamente progettato per rilevare web shell. Questo focus specializzato consente un rilevamento più accurato ed efficiente di queste specifiche minacce.
Basso Overhead delle Risorse: ShellSweepX è leggero e non richiede processi costanti in background o monitoraggio del sistema, a differenza di molte soluzioni EDR. Ciò significa un minore impatto sulle prestazioni del sistema.
Personalizzabile e Trasparente: La natura open-source di ShellSweepX consente piena trasparenza nei suoi metodi di rilevamento. Puoi facilmente personalizzare e ottimizzare i parametri di rilevamento per adattarli al tuo ambiente specifico.
Nessuna Dipendenza da Servizi Esterni: ShellSweepX opera localmente senza fare affidamento su analisi cloud o aggiornamenti costanti, garantendo che i tuoi dati sensibili rimangano sotto il tuo controllo.
Rilevamento Multistrato: ShellSweepX impiega vari metodi di rilevamento tra cui analisi dell'entropia, pattern matching e analisi euristica, fornendo un approccio completo al rilevamento delle web shell.
Reportistica Dettagliata: ShellSweepX fornisce informazioni approfondite sulle potenziali minacce, inclusi valori di entropia, metodi di rilevamento e punteggi di confidenza, consentendo decisioni più informate.
Compatibilità Cross-Platform: Con versioni disponibili in PowerShell, Python e Lua, ShellSweepX può essere distribuito in vari ambienti.
Sebbene ShellSweepX non sostituisca una soluzione EDR completa, funge da potente strumento specializzato nel tuo arsenale di sicurezza, specialmente per ambienti in cui le web shell rappresentano una minaccia significativa.
ShellScan fornisce la capacità di scansionare più directory note di web shell dannose e di restituire i valori medi, mediani, minimi e massimi di entropia per estensione di file.
Passa a ShellScan.ps1 alcune directory di web shell, di qualsiasi dimensione. Io ho usato:
Questo darà un set di addestramento decente per ottenere i valori di entropia.
Esempio di output:
Statistics for .aspx files:
Average entropy: 4.94212121048115
Minimum entropy: 1.29348709979974
Maximum entropy: 6.09830238020383
Median entropy: 4.85437969842084
Statistics for .asp files:
Average entropy: 5.51268104400858
Minimum entropy: 0.732406213077191
Maximum entropy: 7.69241278153711
Median entropy: 5.57351177724806
Per prima cosa, analizziamo l'utilizzo di ShellCSV e come aiuta a identificare l'entropia dei file buoni sul disco. L'idea è che i difensori possano eseguirlo sui server web per raccogliere tutti i file e i valori di entropia, per comprendere meglio quali percorsi ed estensioni sono più prominenti nel loro ambiente di lavoro.
Vedi ShellCSV.csv come esempio di output.
Blog: Ghost in the Web Shell: Introducing ShellSweep
Prima, scegli la tua versione: Python, PowerShell o Lua.
Se sei arrivato qui, questa è la parte in cui iteri sulla messa a punto. Hai trovato una nuova shell? Raccogli l'entropia e modifica secondo necessità.
Blog: Introducing ShellSweepPlus: Open-Source Web Shell Detection
ShellSweepPlus è uno script PowerShell avanzato progettato per rilevare e analizzare potenziali web shell in ambienti web. Si basa sulle funzionalità principali di ShellSweep, offrendo caratteristiche e capacità di rilevamento migliorate.
Caratteristiche principali:
Utilizzo:
$DirectoryPaths.$suspiciousPatterns come necessario per il tuo ambiente.$excludePaths per saltare directory specifiche.$ignoreHashes o $ignoreHashesFilePath per escludere file noti e sicuri.Esempio di output:
{
"TotalFilesScanned": 1000,
"Potential web shells": 5,
"ScanDuration": "00:05:30"
}
ShellSweepPlus fornisce una soluzione potente e flessibile per il rilevamento di web shell, combinando più tecniche di analisi per migliorare l'accuratezza e catturare anche minacce sofisticate.
Sentiti libero di aprire un issue su Git o di consultare la Wiki.
Se questo progetto ti è piaciuto, assicurati di mettere una stella al progetto e condividerlo con la tua famiglia e i tuoi amici.
| Funzionalità/Aspetto | ShellSweep | ShellSweepPlus | ShellSweepX |
|---|
| Rilevamento di base | Utilizza valori di entropia fissi per estensioni di file specifiche | Rilevamento dinamico di base che calcola l'entropia in tempo reale | Utilizza una combinazione di rilevamento basato su entropia e previsione tramite apprendimento automatico |
| Estensioni dei file | Elabora file con estensioni: .asp, .aspx, .asax, .jspx, .html, .ashx | Elabora file con estensioni: .asp, .ashx, .asax, .jspx, .html, .aspx | Estensioni di file configurabili tramite API |
| Calcolo dell'entropia | Calcola l'entropia del contenuto dei file per rilevare potenziali web shell | Rilevamento avanzato basato su entropia, incrociato con parole chiave sospette | Calcolo avanzato dell'entropia con analisi basata su blocchi |
| Funzionalità di esclusione | Può escludere determinate directory dalla scansione | Può escludere determinate directory dalla scansione | Esclusioni configurabili tramite API |
| Ignorare hash | Ignora file con hash specifici | Ignora file con hash specifici | Ignoramento di hash configurabile tramite API |
| Output | Se vengono trovate potenziali web shell, restituisce nome file, valore di entropia e hash. Altrimenti, stampa "No evil identified today." | Se vengono trovate potenziali web shell, restituisce nome file, valore di entropia, hash, data ultima modifica, metodo di rilevamento e punteggio di confidenza in formato JSON. Altrimenti, stampa "No potential web shells detected." | Output JSON dettagliato che include metadati del file, entropia, risultati della previsione e corrispondenze YARA |
| Entropia e Deviazione Standard | Utilizza valori di entropia | Calcola la media e la deviazione standard dei valori di entropia per ogni estensione di file | Calcola sia l'entropia che la deviazione standard per un'analisi avanzata |
| Rilevamento in modalità mista | Non presente | Utilizza una combinazione di rilevamento basato su entropia, rilevamento basato su deviazione standard e rilevamento in modalità mista (che utilizza la deviazione standard con soglie fisse) | Combina rilevamento basato su entropia, previsione tramite apprendimento automatico e corrispondenza di regole YARA |
| Analisi statica del codice | Non presente | Meccanismo di rilevamento basato su pattern che analizza staticamente il codice per identificare e segnalare pattern dannosi noti | Utilizza regole YARA per il rilevamento basato su pattern |
| Analisi euristica | Non presente | Introduce la funzione Perform-HeuristicAnalysis per rilevare anomalie basate su regole euristiche, migliorando il rilevamento di web shell zero-day | Implementa la previsione basata su apprendimento automatico per l'analisi euristica |
| Presentazione dettagliata dei risultati | Non presente | Presenta le potenziali minacce in un formato JSON strutturato, includendo percorso file, entropia, deviazione standard, hash, data ultima modifica, metodo di rilevamento e punteggio di confidenza | Fornisce risultati completi inclusi tutti i metodi di analisi in un formato JSON strutturato |
| Logging completo | Non presente | Incorpora comandi Write-Verbose in tutto lo script per un logging dettagliato e trasparenza operativa | Implementa un logging dettagliato sia nel componente agente che nel server |
| Punteggio di confidenza | Non presente | Calcola un punteggio di confidenza basato sul metodo di rilevamento e lo regola in base alla presenza di pattern sospetti | Utilizza la confidenza della previsione dell'apprendimento automatico e la combina con altri metodi di rilevamento per un punteggio completo |
| Progettazione modulare | Non presente | Utilizza funzioni separate per diversi compiti (es. Process-File, Create-ResultObject, Adjust-ConfidenceScore), promuovendo riusabilità e manutenibilità del codice | Progettazione altamente modulare con componenti separati per agente, server e funzioni di analisi |
| Supporto cross-platform | Solo PowerShell | Solo PowerShell | Supporta implementazioni PowerShell, Python e Bash |
| Integrazione API | Non presente | Non presente | API completa per configurazione, invio risultati e gestione |
| Analisi basata su IA | Non presente | Non presente | Include capacità di triage e analisi basate su IA |
| Gestione regole YARA | Non presente | Non presente | Consente di aggiungere, aggiornare ed eliminare regole YARA tramite API |
| Interfaccia web | Non presente | Non presente | Fornisce un'interfaccia web per la visualizzazione e l'analisi dei risultati |