
ShellSweeping le mal.
Nettoyage des shells malveillants
"ShellSweep" est un outil PowerShell/Python/Lua conçu pour détecter les fichiers de web shell potentiels dans un répertoire spécifié.
ShellSheep et sa suite d'outils calculent l'entropie du contenu des fichiers pour estimer la probabilité qu'un fichier soit un web shell. Une entropie élevée indique un caractère plus aléatoire, ce qui est une caractéristique des codes cryptés ou obscurcis souvent présents dans les web shells.
L'entropie, dans le contexte de la théorie de l'information ou de la science des données, est une mesure de l'imprévisibilité, du caractère aléatoire ou du désordre dans un ensemble de données. Le concept a été introduit par Claude Shannon dans son article de 1948 « A Mathematical Theory of Communication ».
Lorsqu'elle est appliquée à un fichier ou à une chaîne de texte, l'entropie peut aider à évaluer le caractère aléatoire des données. Voici comment cela fonctionne : Si un fichier est constitué de données totalement aléatoires (chaque octet est aussi susceptible d'être n'importe quelle valeur entre 0 et 255), l'entropie est élevée, proche de 8 (car log2(256) = 8).
Si un fichier est constitué de données hautement structurées (par exemple, un fichier texte où la plupart des octets sont des caractères ASCII), l'entropie est plus faible. Dans le cadre de la recherche de web shells ou de fichiers malveillants, l'entropie peut être un indicateur utile :
ShellSweep inclut une fonction Get-Entropy qui calcule l'entropie du contenu d'un fichier en :
ShellSweepX porte les fonctionnalités principales de ShellSweep au niveau supérieur, offrant plusieurs avantages par rapport aux solutions EDR (Endpoint Detection and Response) traditionnelles :
Concentration spécialisée : Contrairement aux solutions EDR qui jettent un filet large, ShellSweepX est spécifiquement conçu pour détecter les web shells. Cette concentration spécialisée permet une détection plus précise et efficace de ces menaces particulières.
Faible consommation de ressources : ShellSweepX est léger et ne nécessite pas de processus d'arrière-plan constants ni de surveillance du système, contrairement à de nombreuses solutions EDR. Cela signifie un impact moindre sur les performances du système.
Personnalisable et transparent : La nature open source de ShellSweepX permet une transparence totale dans ses méthodes de détection. Vous pouvez facilement personnaliser et affiner les paramètres de détection pour les adapter à votre environnement spécifique.
Aucune dépendance aux services externes : ShellSweepX fonctionne localement sans s'appuyer sur une analyse basée sur le cloud ou des mises à jour constantes, garantissant que vos données sensibles restent sous votre contrôle.
Détection multicouche : ShellSweepX utilise diverses méthodes de détection, notamment l'analyse d'entropie, la correspondance de motifs et l'analyse heuristique, offrant une approche complète de la détection des web shells.
Rapports détaillés : ShellSweepX fournit des informations approfondies sur les menaces potentielles, y compris les valeurs d'entropie, les méthodes de détection et les scores de confiance, permettant une prise de décision plus éclairée.
Compatibilité multiplateforme : Avec des versions disponibles en PowerShell, Python et Lua, ShellSweepX peut être déployé dans divers environnements.
Bien que ShellSweepX ne remplace pas une solution EDR complète, il constitue un outil spécialisé puissant dans votre arsenal de sécurité, en particulier pour les environnements où les web shells représentent une menace importante.
ShellScan offre la possibilité d'analyser plusieurs répertoires de web shells connus et d'afficher les valeurs d'entropie moyenne, médiane, minimale et maximale par extension de fichier.
Passez à ShellScan.ps1 quelques répertoires de web shells, de n'importe quelle taille. J'ai utilisé :
Cela fournira un ensemble d'entraînement décent pour obtenir des valeurs d'entropie.
Exemple de sortie :
Statistiques pour les fichiers .aspx :
Entropie moyenne : 4.94212121048115
Entropie minimale : 1.29348709979974
Entropie maximale : 6.09830238020383
Entropie médiane : 4.85437969842084
Statistiques pour les fichiers .asp :
Entropie moyenne : 5.51268104400858
Entropie minimale : 0.732406213077191
Entropie maximale : 7.69241278153711
Entropie médiane : 5.57351177724806
Tout d'abord, décomposons l'utilisation de ShellCSV et comment il aide à identifier l'entropie des fichiers légitimes sur le disque. L'idée est que les défenseurs peuvent l'exécuter sur des serveurs Web pour collecter tous les fichiers et les valeurs d'entropie afin de mieux comprendre quels chemins et extensions sont les plus courants dans leur environnement de travail.
Voir ShellCSV.csv comme exemple de sortie.
Blog : Ghost in the Web Shell: Introducing ShellSweep
Tout d'abord, choisissez votre version : Python, PowerShell ou Lua.
Si vous êtes arrivé jusqu'ici, c'est la partie où vous itérez sur le réglage. Vous avez trouvé un nouveau shell ? Collectez l'entropie et modifiez selon les besoins.
Blog : Introducing ShellSweepPlus: Open-Source Web Shell Detection
ShellSweepPlus est un script PowerShell avancé conçu pour détecter et analyser les web shells potentiels dans les environnements Web. Il s'appuie sur les fonctionnalités principales de ShellSweep, offrant des fonctionnalités et des capacités de détection améliorées.
Principales fonctionnalités :
Utilisation :
$DirectoryPaths.$suspiciousPatterns selon les besoins de votre environnement.$excludePaths pour ignorer des répertoires spécifiques.$ignoreHashes ou $ignoreHashesFilePath pour exclure les fichiers jugés sûrs.Exemple de sortie :
json
{
"TotalFilesScanned": 1000,
"Potential web shells": 5,
"ScanDuration": "00:05:30"
}
ShellSweepPlus fournit une solution puissante et flexible pour la détection des web shells, combinant plusieurs techniques d'analyse pour améliorer la précision et détecter même les menaces sophistiquées.
N'hésitez pas à ouvrir un problème Git ou à consulter le Wiki.
Si vous avez apprécié ce projet, n'oubliez pas de mettre une étoile au projet et de le partager avec votre famille et vos amis.
| Fonctionnalité/Aspect | ShellSweep | ShellSweepPlus | ShellSweepX |
|---|
| Détection par référence | Utilise des valeurs d'entropie codées en dur pour des extensions de fichier spécifiques | Détection dynamique de référence qui calcule l'entropie à la volée | Utilise une combinaison de détection basée sur l'entropie et de prédiction par apprentissage automatique |
| Extensions de fichier | Traite les fichiers avec les extensions : .asp, .aspx, .asax, .jspx, .html, .ashx | Traite les fichiers avec les extensions : .asp, .ashx, .asax, .jspx, .html, .aspx | Extensions de fichier configurables via l'API |
| Calcul d'entropie | Calcule l'entropie du contenu du fichier pour détecter les web shells potentiels | Détection améliorée basée sur l'entropie, recoupement avec des mots-clés suspects | Calcul d'entropie avancé avec analyse par blocs |
| Fonction d'exclusion | Peut exclure certains répertoires de l'analyse | Peut exclure certains répertoires de l'analyse | Exclusions configurables via l'API |
| Ignorance d'empreinte | Ignore les fichiers avec des empreintes spécifiques | Ignore les fichiers avec des empreintes spécifiques | Ignorance d'empreinte configurable via l'API |
| Sortie | Si des web shells potentiels sont trouvés, affiche le nom du fichier, la valeur d'entropie et l'empreinte. Sinon, affiche « Aucun mal identifié aujourd'hui. » | Si des web shells potentiels sont trouvés, affiche le nom du fichier, la valeur d'entropie, l'empreinte, la date de dernière modification, la méthode de détection et le score de confiance au format JSON. Sinon, affiche « Aucun web shell potentiel détecté. » | Sortie JSON détaillée incluant les métadonnées du fichier, l'entropie, les résultats de prédiction et les correspondances YARA |
| Entropie et écart-type | Utilise les valeurs d'entropie | Calcule la moyenne et l'écart-type des valeurs d'entropie pour chaque extension de fichier | Calcule à la fois l'entropie et l'écart-type pour une analyse avancée |
| Détection en mode mixte | Non présent | Utilise une combinaison de détection basée sur l'entropie, de détection basée sur l'écart-type et de détection en mode mixte (utilisant l'écart-type avec des seuils codés en dur) | Combine la détection basée sur l'entropie, la prédiction par apprentissage automatique et la correspondance de règles YARA |
| Analyse statique de code | Non présent | Mécanisme de détection basé sur des motifs analysant le code de manière statique pour identifier et signaler les motifs malveillants connus | Utilise des règles YARA pour la détection basée sur des motifs |
| Analyse heuristique | Non présent | Introduit la fonction Perform-HeuristicAnalysis pour détecter les anomalies basées sur des règles heuristiques, améliorant la détection des web shells zero-day | Implémente une prédiction basée sur l'apprentissage automatique pour l'analyse heuristique |
| Présentation détaillée des résultats | Non présent | Présente les menaces potentielles dans un format JSON structuré, incluant le chemin du fichier, l'entropie, l'écart-type, l'empreinte, la date de dernière modification, la méthode de détection et le score de confiance | Fournit des résultats complets incluant toutes les méthodes d'analyse dans un format JSON structuré |
| Journalisation complète | Non présent | Incorpore des commandes Write-Verbose tout au long du script pour une journalisation détaillée et une transparence opérationnelle | Implémente une journalisation détaillée dans les composants agent et serveur |
| Score de confiance | Non présent | Calcule un score de confiance basé sur la méthode de détection et l'ajuste en fonction de la présence de motifs suspects | Utilise la confiance de prédiction de l'apprentissage automatique et la combine avec d'autres méthodes de détection pour un score complet |
| Conception modulaire | Non présent | Utilise des fonctions séparées pour différentes tâches (par exemple, Process-File, Create-ResultObject, Adjust-ConfidenceScore), favorisant la réutilisabilité et la maintenabilité du code | Conception hautement modulaire avec des composants séparés pour les fonctions d'agent, de serveur et d'analyse |
| Prise en charge multiplateforme | PowerShell uniquement | PowerShell uniquement | Prend en charge les implémentations PowerShell, Python et Bash |
| Intégration API | Non présent | Non présent | API complète pour la configuration, la soumission des résultats et la gestion |
| Analyse assistée par IA | Non présent | Non présent | Incorpore des capacités de triage et d'analyse basées sur l'IA |
| Gestion des règles YARA | Non présent | Non présent | Permet d'ajouter, mettre à jour et supprimer des règles YARA via l'API |
| Interface Web | Non présent | Non présent | Fournit une interface Web pour la visualisation et l'analyse des résultats |