扫描网络中的邪恶
"ShellSweep" 是一款基于 PowerShell/Python/Lua 的工具,旨在检测指定目录中的潜在 Web Shell 文件。
ShellSweep 及其工具套件通过计算文件内容的熵来估算文件成为 Web Shell 的可能性。高熵表明随机性更高,这是加密或混淆代码的特征,常见于 Web Shell 中。
在信息论或数据科学背景下,熵是对一组数据不可预测性、随机性或混乱程度的度量。该概念由克劳德·香农在其1948年的论文《通信的数学理论》中提出。
当应用于文件或文本字符串时,熵有助于评估数据的随机性。其工作原理如下:
在寻找 Web Shell 或恶意文件的场景中,熵可以作为一个有用的指标:
因此,具有异常高熵的文件可能值得怀疑并需要进一步调查。然而,这并非万无一失的恶意指标——文件具有高熵可能有多种合理原因,而恶意软件也有多种方式避免产生高熵。它只是检测潜在威胁的更大工具箱中的一个工具。
ShellSweep 包含一个 Get-Entropy 函数,通过以下方式计算文件内容的熵:
ShellSweepX 将 ShellSweep 的核心功能提升到了新的水平,相比传统的 EDR(端点检测与响应)解决方案具有多项优势:
专精聚焦:与覆盖全面的 EDR 解决方案不同,ShellSweepX 专为检测 Web Shell 而设计。这种专精聚焦使其能够更准确、高效地检测此类特定威胁。
低资源开销:ShellSweepX 轻量级运行,无需像许多 EDR 解决方案那样持续占用后台进程或系统监控资源,从而减少对系统性能的影响。
可定制且透明:ShellSweepX 的开源特性使其检测方法完全透明。您可以轻松定制和微调检测参数,以适应特定环境。
无需依赖外部服务:ShellSweepX 在本地运行,不依赖云端分析或持续更新,确保敏感数据始终在您的控制范围内。
多层检测:ShellSweepX 采用多种检测方法,包括熵分析、模式匹配和启发式分析,提供全面的 Web Shell 检测手段。
详细报告:ShellSweepX 提供关于潜在威胁的深度信息,包括熵值、检测方法和置信度评分,从而支持更明智的决策。
跨平台兼容:提供 PowerShell、Python 和 Lua 版本,可在多种环境中部署。
虽然 ShellSweepX 不能完全替代成熟的 EDR 解决方案,但它是一款功能强大的专用工具,特别适用于 Web Shell 威胁严重的环境,是您安全武器库中的有力补充。
ShellScan 能够扫描多个已知恶意的 Web Shell 目录,并按文件扩展名输出熵值的平均值、中位数、最小值和最大值。
将 ShellScan.ps1 指向任意规模的 Web Shell 目录集合。我使用了以下来源:
这将提供一个合适的训练集,用于获取熵值。
输出示例:
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
首先,我们来分解 ShellCSV 的用法以及它如何帮助识别磁盘上正常文件的熵值。其理念是,防御者可以在 Web 服务器上运行该工具,收集所有文件及其熵值,以更好地了解工作环境中哪些路径和扩展名最为常见。
请参阅 ShellCSV.csv 作为输出示例。
首先,选择您偏好的版本:Python、PowerShell 或 Lua。
如果您已来到这里,那么就是反复调优的阶段。发现新的后门?收集熵值并相应修改。
博客文章:介绍 ShellSweepPlus:开源 Web Shell 检测工具
ShellSweepPlus 是一个高级 PowerShell 脚本,用于检测和分析 Web 环境中的潜在 Web Shell。它在 ShellSweep 核心功能基础上进行了增强,提供了更多功能和检测能力。
主要特性:
用法:
$DirectoryPaths 变量中指定要扫描的目录。$suspiciousPatterns。$excludePaths 跳过特定目录。$ignoreHashes 或 $ignoreHashesFilePath 排除已知的安全文件。输出示例:
json
{
"TotalFilesScanned": 1000,
"Potential web shells": 5,
"ScanDuration": "00:05:30"
}
ShellSweepPlus 提供了强大而灵活的 Web Shell 检测解决方案,结合多种分析技术,提高准确率,甚至能捕获复杂威胁。
欢迎打开 Git Issue 或查看 Wiki。
如果您喜欢这个项目,请给项目加星并与家人朋友分享。
| 功能/方面 | ShellSweep | ShellSweepPlus | ShellSweepX |
|---|
| 基线检测 | 对特定文件扩展名使用硬编码熵值 | 动态基线检测,实时计算熵值 | 结合基于熵的检测与机器学习预测 |
| 文件扩展名 | 处理扩展名为 .asp、.aspx、.asax、.jspx、.html、.ashx 的文件 | 处理扩展名为 .asp、.ashx、.asax、.jspx、.html、.aspx 的文件 | 通过 API 可配置的文件扩展名 |
| 熵计算 | 计算文件内容的熵以检测潜在 Web Shell | 增强的基于熵的检测,与可疑关键词交叉引用 | 基于分块的高级熵计算分析 |
| 排除功能 | 可排除特定目录不进行扫描 | 可排除特定目录不进行扫描 | 通过 API 可配置的排除项 |
| 哈希忽略 | 忽略具有特定哈希值的文件 | 忽略具有特定哈希值的文件 | 通过 API 可配置的哈希忽略 |
| 输出 | 如果发现潜在 Web Shell,则输出文件名、熵值和哈希值。否则输出"今天没有发现邪恶。" | 如果发现潜在 Web Shell,则以 JSON 格式输出文件名、熵值、哈希值、最后修改日期、检测方法和置信度评分。否则输出"未检测到潜在 Web Shell。" | 详细的 JSON 输出,包括文件元数据、熵值、预测结果和 YARA 匹配项 |
| 熵与标准差 | 使用熵值 | 计算每种文件扩展名的熵值平均值和标准差 | 为高级分析计算熵值和标准差 |
| 混合模式检测 | 不存在 | 结合基于熵的检测、基于标准差的检测以及混合模式检测(利用标准差配合硬编码阈值) | 结合基于熵的检测、机器学习预测和 YARA 规则匹配 |
| 静态代码分析 | 不存在 | 基于模式的检测机制,静态分析代码以识别并标记已知恶意模式 | 利用 YARA 规则进行基于模式的检测 |
| 启发式分析 | 不存在 | 引入 Perform-HeuristicAnalysis 函数,基于启发式规则检测异常,增强零日 Web Shell 的检测能力 | 实现基于机器学习的预测进行启发式分析 |
| 详细结果展示 | 不存在 | 以结构化 JSON 格式展示潜在威胁,包括文件路径、熵值、标准差、哈希值、最后修改日期、检测方法和置信度评分 | 提供包含所有分析方法的综合结果,以结构化 JSON 格式呈现 |
| 全面日志记录 | 不存在 | 在脚本中集成 Write-Verbose 命令,实现详细日志记录和操作透明 | 在代理和服务端组件中实现详细日志记录 |
| 置信度评分 | 不存在 | 基于检测方法计算置信度评分,并根据可疑模式的存在进行调整 | 使用机器学习预测置信度,并与其他检测方法结合形成综合评分 |
| 模块化设计 | 不存在 | 为不同任务使用独立函数(如 Process-File、Create-ResultObject、Adjust-ConfidenceScore),提高代码复用性和可维护性 | 高度模块化设计,包含独立的代理、服务端和分析组件 |
| 跨平台支持 | 仅 PowerShell | 仅 PowerShell | 支持 PowerShell、Python 和 Bash 实现 |
| API 集成 | 不存在 | 不存在 | 全面的 API,支持配置、结果提交和管理 |
| AI 驱动分析 | 不存在 | 不存在 | 集成基于 AI 的分类和分析能力 |
| YARA 规则管理 | 不存在 | 不存在 | 支持通过 API 添加、更新和删除 YARA 规则 |
| Web 界面 | 不存在 | 不存在 | 提供基于 Web 的界面,用于结果可视化和分析 |