
ShellSweeping das Böse.
Das Böse wegfegen
"ShellSweep" ist ein PowerShell/Python/Lua-Tool, das entwickelt wurde, um potenzielle Web-Shell-Dateien in einem angegebenen Verzeichnis zu erkennen.
ShellSheep und seine Suite von Tools berechnen die Entropie des Dateiinhalts, um die Wahrscheinlichkeit abzuschätzen, dass eine Datei eine Web-Shell ist. Hohe Entropie deutet auf mehr Zufälligkeit hin, was ein Merkmal von verschlüsseltem oder obfuskiertem Code ist, der oft in Web-Shells vorkommt.
Entropie ist im Kontext der Informationstheorie oder Datenwissenschaft ein Maß für die Unvorhersagbarkeit, Zufälligkeit oder Unordnung in einem Datensatz. Das Konzept wurde von Claude Shannon in seinem 1948 veröffentlichten Artikel "A Mathematical Theory of Communication" eingeführt.
Wenn auf eine Datei oder einen Textstring angewendet, kann Entropie helfen, die Zufälligkeit der Daten zu bewerten. So funktioniert es:
ShellSweep enthält eine Get-Entropy-Funktion, die die Entropie des Dateiinhalts berechnet, indem:
ShellSweepX bringt die Kernfunktionalität von ShellSweep auf die nächste Stufe und bietet mehrere Vorteile gegenüber herkömmlichen EDR-Lösungen (Endpoint Detection and Response):
Spezialisierter Fokus: Im Gegensatz zu EDR-Lösungen, die ein breites Netz auswerfen, ist ShellSweepX speziell darauf ausgelegt, Web-Shells zu erkennen. Dieser spezialisierte Fokus ermöglicht eine genauere und effizientere Erkennung dieser speziellen Bedrohungen.
Niedriger Ressourcenverbrauch: ShellSweepX ist leichtgewichtig und erfordert keine ständigen Hintergrundprozesse oder Systemüberwachung, im Gegensatz zu vielen EDR-Lösungen. Dies bedeutet weniger Auswirkungen auf die Systemleistung.
Anpassbar und transparent: Der Open-Source-Charakter von ShellSweepX ermöglicht volle Transparenz seiner Erkennungsmethoden. Sie können die Erkennungsparameter einfach an Ihre spezifische Umgebung anpassen und optimieren.
Keine Abhängigkeit von externen Diensten: ShellSweepX arbeitet lokal ohne Abhängigkeit von cloudbasierter Analyse oder ständigen Updates und stellt sicher, dass Ihre sensiblen Daten in Ihrer Kontrolle bleiben.
Mehrschichtige Erkennung: ShellSweepX verwendet verschiedene Erkennungsmethoden, darunter Entropieanalyse, Mustervergleich und heuristische Analyse, und bietet so einen umfassenden Ansatz zur Web-Shell-Erkennung.
Detaillierte Berichterstattung: ShellSweepX liefert detaillierte Informationen über potenzielle Bedrohungen, einschließlich Entropiewerte, Erkennungsmethoden und Konfidenzwerte, was fundiertere Entscheidungen ermöglicht.
Plattformübergreifende Kompatibilität: Mit Versionen in PowerShell, Python und Lua kann ShellSweepX in verschiedenen Umgebungen eingesetzt werden.
Obwohl ShellSweepX kein Ersatz für eine vollwertige EDR-Lösung ist, dient es als leistungsstarkes, spezialisiertes Werkzeug in Ihrem Sicherheitsarsenal, insbesondere in Umgebungen, in denen Web-Shells eine erhebliche Bedrohung darstellen.
ShellScan bietet die Möglichkeit, mehrere bekannte bösartige Web-Shell-Verzeichnisse zu scannen und die durchschnittlichen, medianen, minimalen und maximalen Entropiewerte nach Dateierweiterung auszugeben.
Übergeben Sie ShellScan.ps1 einige Verzeichnisse mit Web-Shells, beliebige Größe. Ich habe verwendet:
Dies ergibt einen anständigen Trainingssatz, um Entropiewerte zu erhalten.
Ausgabebeispiel:
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
Lassen Sie uns zunächst die Verwendung von ShellCSV aufschlüsseln und wie es dabei hilft, die Entropie der guten Dateien auf der Festplatte zu identifizieren. Die Idee ist, dass Verteidiger dies auf Webservern ausführen können, um alle Dateien und Entropiewerte zu sammeln und besser zu verstehen, welche Pfade und Erweiterungen in ihrer Arbeitsumgebung am häufigsten vorkommen.
Siehe ShellCSV.csv als Beispielausgabe.
Blog: Geist in der Web-Shell: Einführung von ShellSweep
Wählen Sie zunächst Ihre bevorzugte Variante: Python, PowerShell oder Lua.
Wenn Sie hier angekommen sind, ist dies der Teil, in dem Sie durch Iterieren optimieren. Neue Shell gefunden? Entropie erfassen und nach Bedarf anpassen.
Blog: Einführung von ShellSweepPlus: Open-Source-Web-Shell-Erkennung
ShellSweepPlus ist ein erweitertes PowerShell-Skript, das entwickelt wurde, um potenzielle Web-Shells in Webumgebungen zu erkennen und zu analysieren. Es baut auf der Kernfunktionalität von ShellSweep auf und bietet erweiterte Funktionen und Erkennungsfähigkeiten.
Hauptfunktionen:
Verwendung:
$DirectoryPaths an.$suspiciousPatterns nach Bedarf für Ihre Umgebung an.$excludePaths, um bestimmte Verzeichnisse zu überspringen.$ignoreHashes oder $ignoreHashesFilePath, um bekannte sichere Dateien auszuschließen.Beispielausgabe:
json
{
"TotalFilesScanned": 1000,
"Potential web shells": 5,
"ScanDuration": "00:05:30"
}
ShellSweepPlus bietet eine leistungsstarke und flexible Lösung zur Web-Shell-Erkennung, die mehrere Analysetechniken kombiniert, um die Genauigkeit zu verbessern und selbst ausgefeilte Bedrohungen zu erkennen.
Öffnen Sie gerne ein Git-Issue oder schauen Sie im Wiki nach.
Wenn Ihnen dieses Projekt gefallen hat, geben Sie ihm bitte einen Stern und teilen Sie es mit Ihrer Familie und Freunden.
| Funktion/Aspekt | ShellSweep | ShellSweepPlus | ShellSweepX |
|---|
| Basislinien-Erkennung | Verwendet fest codierte Entropiewerte für bestimmte Dateierweiterungen | Dynamische Basislinien-Erkennung, die Entropie spontan berechnet | Verwendet eine Kombination aus entropiebasierter Erkennung und maschinellem Lernen |
| Dateierweiterungen | Verarbeitet Dateien mit Erweiterungen: .asp, .aspx, .asax, .jspx, .html, .ashx | Verarbeitet Dateien mit Erweiterungen: .asp, .ashx, .asax, .jspx, .html, .aspx | Konfigurierbare Dateierweiterungen über API |
| Entropieberechnung | Berechnet die Entropie des Dateiinhalts, um potenzielle Web-Shells zu erkennen | Verbesserte entropiebasierte Erkennung, Abgleich mit verdächtigen Schlüsselwörtern | Erweiterte Entropieberechnung mit abschnittsbasierter Analyse |
| Ausschlussfunktion | Kann bestimmte Verzeichnisse vom Scannen ausschließen | Kann bestimmte Verzeichnisse vom Scannen ausschließen | Konfigurierbare Ausschlüsse über API |
| Hash-Ignorierung | Ignoriert Dateien mit bestimmten Hashes | Ignoriert Dateien mit bestimmten Hashes | Konfigurierbare Hash-Ignorierung über API |
| Ausgabe | Wenn potenzielle Web-Shells gefunden werden, werden Dateiname, Entropiewert und Hash ausgegeben. Andernfalls wird "Heute wurde nichts Böses identifiziert" ausgegeben. | Wenn potenzielle Web-Shells gefunden werden, werden Dateiname, Entropiewert, Hash, letztes Änderungsdatum, Erkennungsmethode und Konfidenzwert im JSON-Format ausgegeben. Andernfalls wird "Keine potenziellen Web-Shells erkannt" ausgegeben. | Detaillierte JSON-Ausgabe mit Dateimetadaten, Entropie, Vorhersageergebnissen und YARA-Übereinstimmungen |
| Entropie & Standardabweichung | Verwendet Entropiewerte | Berechnet den Mittelwert und die Standardabweichung der Entropiewerte für jede Dateierweiterung | Berechnet sowohl Entropie als auch Standardabweichung für fortgeschrittene Analysen |
| Mixed-Mode-Erkennung | Nicht vorhanden | Verwendet eine Kombination aus entropiebasierter Erkennung, standardabweichungsbasierter Erkennung und Mixed-Mode-Erkennung (unter Verwendung der Standardabweichung mit fest codierten Schwellenwerten) | Kombiniert entropiebasierte Erkennung, maschinelles Lernen und YARA-Regelabgleich |
| Statische Code-Analyse | Nicht vorhanden | Musterbasierter Erkennungsmechanismus, der Code statisch analysiert, um bekannte bösartige Muster zu identifizieren und zu markieren | Nutzt YARA-Regeln für die musterbasierte Erkennung |
| Heuristische Analyse | Nicht vorhanden | Führt die Funktion Perform-HeuristicAnalysis ein, um Anomalien basierend auf heuristischen Regeln zu erkennen, was die Erkennung von Zero-Day-Web-Shells verbessert | Implementiert maschinelles Lernen für die heuristische Analyse |
| Detaillierte Ergebnisdarstellung | Nicht vorhanden | Stellt potenzielle Bedrohungen in einem strukturierten JSON-Format dar, einschließlich Dateipfad, Entropie, Standardabweichung, Hash, letztem Änderungsdatum, Erkennungsmethode und Konfidenzwert | Liefert umfassende Ergebnisse, die alle Analysemethoden in einem strukturierten JSON-Format enthalten |
| Umfassende Protokollierung | Nicht vorhanden | Integriert Write-Verbose-Befehle im gesamten Skript für detaillierte Protokollierung und operationelle Transparenz | Implementiert ausführliche Protokollierung in Agent- und Serverkomponenten |
| Konfidenzbewertung | Nicht vorhanden | Berechnet einen Konfidenzwert basierend auf der Erkennungsmethode und passt ihn basierend auf dem Vorhandensein verdächtiger Muster an | Verwendet die Konfidenz des maschinellen Lernens und kombiniert sie mit anderen Erkennungsmethoden für einen umfassenden Wert |
| Modulares Design | Nicht vorhanden | Verwendet separate Funktionen für verschiedene Aufgaben (z. B. Process-File, Create-ResultObject, Adjust-ConfidenceScore), fördert Code-Wiederverwendbarkeit und Wartbarkeit | Hochmodulares Design mit separaten Komponenten für Agent, Server und Analysefunktionen |
| Plattformübergreifende Unterstützung | Nur PowerShell | Nur PowerShell | Unterstützt PowerShell-, Python- und Bash-Implementierungen |
| API-Integration | Nicht vorhanden | Nicht vorhanden | Umfassende API für Konfiguration, Ergebnisübermittlung und Verwaltung |
| KI-gestützte Analyse | Nicht vorhanden | Nicht vorhanden | Integriert KI-basierte Triage- und Analysefähigkeiten |
| YARA-Regelverwaltung | Nicht vorhanden | Nicht vorhanden | Ermöglicht das Hinzufügen, Aktualisieren und Löschen von YARA-Regeln über API |
| Weboberfläche | Nicht vorhanden | Nicht vorhanden | Bietet eine webbasierte Oberfläche zur Ergebnisvisualisierung und -analyse |