
ShellSweeping el mal.
ShellSweep: barriendo el mal
"ShellSweep" es una herramienta de PowerShell/Python/Lua diseñada para detectar posibles archivos de web shell en un directorio específico.
ShellSweep y su conjunto de herramientas calculan la entropía del contenido de los archivos para estimar la probabilidad de que un archivo sea un web shell. Una entropía alta indica más aleatoriedad, lo cual es una característica de los códigos cifrados u ofuscados que a menudo se encuentran en los web shells.
La entropía, en el contexto de la teoría de la información o la ciencia de datos, es una medida de la imprevisibilidad, aleatoriedad o desorden en un conjunto de datos. El concepto fue introducido por Claude Shannon en su artículo de 1948 "A Mathematical Theory of Communication".
Cuando se aplica a un archivo o una cadena de texto, la entropía puede ayudar a evaluar la aleatoriedad de los datos. Así es como funciona:
En el contexto de la búsqueda de web shells o archivos maliciosos, la entropía puede ser un indicador útil:
Por lo tanto, un archivo con una entropía inusualmente alta podría ser sospechoso y merecer una investigación adicional. Sin embargo, no es un indicador infalible de malicia: hay muchas razones legítimas por las que un archivo podría tener alta entropía, y muchas formas en que el malware podría evitar causar alta entropía. Es solo una herramienta en un conjunto más amplio para detectar posibles amenazas.
ShellSweep incluye una función Get-Entropy que calcula la entropía del contenido de un archivo mediante:
ShellSweepX lleva la funcionalidad central de ShellSweep al siguiente nivel, ofreciendo varias ventajas sobre las soluciones tradicionales de EDR (Endpoint Detection and Response):
Enfoque especializado: A diferencia de las soluciones EDR que abarcan un amplio espectro, ShellSweepX está diseñado específicamente para detectar web shells. Este enfoque especializado permite una detección más precisa y eficiente de estas amenazas particulares.
Bajo consumo de recursos: ShellSweepX es ligero y no requiere procesos constantes en segundo plano ni monitoreo del sistema, a diferencia de muchas soluciones EDR. Esto significa un menor impacto en el rendimiento del sistema.
Personalizable y transparente: La naturaleza de código abierto de ShellSweepX permite una total transparencia en sus métodos de detección. Puedes personalizar y ajustar fácilmente los parámetros de detección para adaptarlos a tu entorno específico.
Sin dependencia de servicios externos: ShellSweepX opera localmente sin depender de análisis basados en la nube ni actualizaciones constantes, asegurando que tus datos sensibles permanezcan bajo tu control.
Detección multicapa: ShellSweepX emplea varios métodos de detección, incluyendo análisis de entropía, coincidencia de patrones y análisis heurístico, proporcionando un enfoque integral para la detección de web shells.
Informes detallados: ShellSweepX proporciona información detallada sobre amenazas potenciales, incluyendo valores de entropía, métodos de detección y puntuaciones de confianza, permitiendo una toma de decisiones más informada.
Compatibilidad multiplataforma: Con versiones disponibles en PowerShell, Python y Lua, ShellSweepX puede desplegarse en varios entornos.
Si bien ShellSweepX no reemplaza una solución EDR completa, sirve como una herramienta especializada y potente en tu arsenal de seguridad, particularmente para entornos donde los web shells representan una amenaza significativa.
ShellScan proporciona la capacidad de escanear múltiples directorios conocidos de web shells maliciosos y generar los valores promedio, mediana, mínimo y máximo de entropía por extensión de archivo.
Pásale a ShellScan.ps1 algunos directorios de web shells, de cualquier tamaño. Yo usé:
Esto dará un conjunto de entrenamiento decente para obtener valores de entropía.
Ejemplo de salida:
Estadísticas para archivos .aspx:
Entropía promedio: 4.94212121048115
Entropía mínima: 1.29348709979974
Entropía máxima: 6.09830238020383
Entropía mediana: 4.85437969842084
Estadísticas para archivos .asp:
Entropía promedio: 5.51268104400858
Entropía mínima: 0.732406213077191
Entropía máxima: 7.69241278153711
Entropía mediana: 5.57351177724806
Primero, analicemos el uso de ShellCSV y cómo ayuda a identificar la entropía de los archivos buenos en el disco. La idea es que los defensores puedan ejecutarlo en servidores web para recopilar todos los archivos y valores de entropía, y así comprender mejor qué rutas y extensiones son más prominentes en su entorno de trabajo.
Consulta ShellCSV.csv como ejemplo de salida.
Blog: Ghost in the Web Shell: Introducing ShellSweep
Primero, elige tu sabor: Python, PowerShell o Lua.
Si has llegado hasta aquí, esta es la parte donde iteras en la afinación. ¿Encontraste un nuevo shell? Reúne la entropía y modifica según sea necesario.
Blog: Introducing ShellSweepPlus: Open-Source Web Shell Detection
ShellSweepPlus es un script avanzado de PowerShell diseñado para detectar y analizar posibles web shells en entornos web. Se basa en la funcionalidad principal de ShellSweep, ofreciendo características mejoradas y capacidades de detección.
Características clave:
Uso:
$DirectoryPaths.$suspiciousPatterns según sea necesario para tu entorno.$excludePaths para omitir directorios específicos.$ignoreHashes o $ignoreHashesFilePath para excluir archivos conocidos como seguros.Ejemplo de salida:
{
"TotalFilesScanned": 1000,
"Potential web shells": 5,
"ScanDuration": "00:05:30"
}
ShellSweepPlus proporciona una solución potente y flexible para la detección de web shells, combinando múltiples técnicas de análisis para mejorar la precisión y detectar incluso amenazas sofisticadas.
No dudes en abrir un issue en Git o consultar la Wiki.
Si disfrutaste este proyecto, asegúrate de darle estrella y compartirlo con tu familia y amigos.
| Característica/Aspecto | ShellSweep | ShellSweepPlus | ShellSweepX |
|---|
| Detección de línea base | Utiliza valores de entropía fijos para extensiones de archivo específicas | Detección dinámica de línea base que calcula la entropía sobre la marcha | Utiliza una combinación de detección basada en entropía y predicción de aprendizaje automático |
| Extensiones de archivo | Procesa archivos con extensiones: .asp, .aspx, .asax, .jspx, .html, .ashx | Procesa archivos con extensiones: .asp, .ashx, .asax, .jspx, .html, .aspx | Extensiones de archivo configurables a través de API |
| Cálculo de entropía | Calcula la entropía del contenido del archivo para detectar posibles web shells | Detección mejorada basada en entropía, cruzando referencias con palabras clave sospechosas | Cálculo avanzado de entropía con análisis basado en fragmentos |
| Función de exclusión | Puede excluir ciertos directorios del escaneo | Puede excluir ciertos directorios del escaneo | Exclusiones configurables a través de API |
| Ignorar hash | Ignora archivos con hashes específicos | Ignora archivos con hashes específicos | Ignorar hash configurable a través de API |
| Salida | Si se encuentran posibles web shells, muestra nombre de archivo, valor de entropía y hash. De lo contrario, imprime "No se identificó maldad hoy." | Si se encuentran posibles web shells, muestra el nombre de archivo, valor de entropía, hash, fecha de última modificación, método de detección y puntuación de confianza en formato JSON. De lo contrario, imprime "No se detectaron posibles web shells." | Salida JSON detallada que incluye metadatos del archivo, entropía, resultados de predicción y coincidencias de YARA |
| Entropía y desviación estándar | Utiliza valores de entropía | Calcula la media y la desviación estándar de los valores de entropía para cada extensión de archivo | Calcula tanto la entropía como la desviación estándar para un análisis avanzado |
| Detección en modo mixto | No presente | Utiliza una combinación de detección basada en entropía, detección basada en desviación estándar y detección en modo mixto (utilizando desviación estándar con umbrales fijos) | Combina detección basada en entropía, predicción de aprendizaje automático y coincidencia de reglas YARA |
| Análisis estático de código | No presente | Mecanismo de detección basado en patrones que analiza el código estáticamente para identificar y marcar patrones maliciosos conocidos | Utiliza reglas YARA para la detección basada en patrones |
| Análisis heurístico | No presente | Introduce la función Perform-HeuristicAnalysis para detectar anomalías basadas en reglas heurísticas, mejorando la detección de web shells de día cero | Implementa predicción basada en aprendizaje automático para el análisis heurístico |
| Presentación detallada de resultados | No presente | Presenta amenazas potenciales en un formato JSON estructurado, incluyendo ruta del archivo, entropía, desviación estándar, hash, fecha de última modificación, método de detección y puntuación de confianza | Proporciona resultados completos incluyendo todos los métodos de análisis en un formato JSON estructurado |
| Registro completo | No presente | Incorpora comandos Write-Verbose a lo largo del script para un registro detallado y transparencia operativa | Implementa registro verboso a lo largo de los componentes del agente y del servidor |
| Puntuación de confianza | No presente | Calcula una puntuación de confianza basada en el método de detección y la ajusta según la presencia de patrones sospechosos | Utiliza la confianza de la predicción del aprendizaje automático y la combina con otros métodos de detección para obtener una puntuación integral |
| Diseño modular | No presente | Utiliza funciones separadas para diferentes tareas (ej. Process-File, Create-ResultObject, Adjust-ConfidenceScore), promoviendo la reutilización y mantenibilidad del código | Diseño altamente modular con componentes separados para el agente, el servidor y las funciones de análisis |
| Compatibilidad multiplataforma | Solo PowerShell | Solo PowerShell | Soporta implementaciones en PowerShell, Python y Bash |
| Integración API | No presente | No presente | API completa para configuración, envío de resultados y gestión |
| Análisis impulsado por IA | No presente | No presente | Incorpora capacidades de triaje y análisis basadas en IA |
| Gestión de reglas YARA | No presente | No presente | Permite agregar, actualizar y eliminar reglas YARA a través de API |
| Interfaz web | No presente | No presente | Proporciona una interfaz web para la visualización y análisis de resultados |