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:
https://github.com/tennc/webshell
BlackArch的webshell:
https://github.com/BlackArch/webshells
tarwich的webshell:
https://github.com/tarwich/jackal/blob/master/libraries/
执行分析后,工具就会输出对应的文件熵值。下面给出的是输出样例:
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:
https://github.com/splunk/ShellSweep
原文始发于微信公众号(FreeBuf):如何使用ShellSweep检测特定目录中潜在的webshell文件
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论