关于ShellSweep
ShellSweep是一款功能强大的webshell检测工具,该工具使用了PowerShell、Python和Lua语言进行开发,可以帮助广大研究人员在特定目录中检测潜在的webshell文件。
ShellSweep由多个脚本模块组成,能够通过计算文件内容的熵来评估目标文件是webshell的可能性。高熵意味着更多的随机性,而这也是webshell文件中代码加密和代码混淆的典型特征。
功能特性
1、该工具只会处理具备默写特定扩展名的文件,即webshell常用的扩展名,其中包括.asp、.aspx、.asph、.php、.jsp等;
2、支持在扫描任务中排除指定的目录路径;
3、在扫描过程中,可以忽略某些特定哈希的文件;
运行机制
ShellSweep提供了一个Get-Entropy函数并可以通过下列方法计算文件内容的熵:
1、计算每个字符在文件中出现的频率;
2、使用这些频率来计算每个字符的概率;
3、求和每个字符的-p*log2(p),其中p是字符的概率。(这是信息论中熵的公式);
工具下载
广大研究人员可以直接使用下列命令将该项目源码克隆至本地:
git clone https://github.com/splunk/ShellSweep.git
相关模块
ShellScan
ShellScan模块能够扫描多个已知的包含恶意webshell的目录,并按照文件扩展名输出熵的平均值、中位数、最小值和最大值。
我们可以直接给ShellScan.ps1脚本传递一些包含webshell的目录,任何大小均可,大家测试时可以使用下列代码库:
tennc的webshell:【点我获取】
BlackArch的webshell:【点我获取】
tarwich的webshell:【点我获取】
执行分析后,工具就会输出对应的文件熵值。下面给出的是输出样例:
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
安全防御人员可以在网络服务器上运行ShellCSV,以收集所有文件和对应的熵值,从而可以更好地了解哪些路径和扩展在其工作环境中最突出。
下面给出的是ShellCSV的样例输出:
工具使用
首先,选择你喜欢的编程语言:Python、PowerShell或Lua。接下来:
1、基于ShellScan或ShellCSV的输出结果,按需要修改熵值;
2、按需修改文件扩展,不需要寻找ASPX或非ASPX应用;
3、修改路径,不建议仅扫描整个C盘;
4、按需修改过滤器;
5、运行工具脚本;
许可证协议
本项目的开发与发布遵循Apache-2.0开源许可证协议。
项目地址
ShellSweep:【GitHub传送门】
参考资料
https://people.math.harvard.edu/~ctm/home/text/others/shannon/entropy/entropy.pdf
GitHub - tennc/webshell: This is a webshell open source project
GitHub - BlackArch/webshells: Various webshells. We accept pull requests for additions to this collection.
https://github.com/tarwich/jackal/blob/master/libraries/