前言
在打CTF或渗透时,经常会遇到waf,普通的一句话木马便会被检测出来,打CTF还好,如果是渗透测试那么就有可能直接封IP,而且会发出报警信息。所以要掌握一句话木马的免杀。
Webshell检测方式
网上有很多免杀的一句话木马,但是如果不知道主流杀毒或waf的检测方式,也只是类似爆破而已,运气好了能进去,运气不好就换下一个payload。因此在此之前,先来了解一下都有哪些检测方式。
日志检测
使用Webshell一般不会在系统日志中留下记录,但是会在网站的web日志中留下Webshell页面的访问数据和数据提交记录。日志分析检测技术通过大量的日志文件建立请求模型从而检测出异常文件,称之为:HTTP异常请求模型检测。它的优点为当网站上的访问量级达到一致值时,这种检测方法具有比较大参考性价值。它的缺点则是存在一定误报率,对于大量的日志文件,检测工具的处理能力和效率都会变的比较低。
文件内容检测(静态检测)
静态检测是指对脚本文件中所使用的关键词、高危函数、文件修改的时间、文件权限、文件的所有者以及和其它文件的关联性等多个维度的特征进行检测,即先建立一个恶意字符串特征库。对已知的webshell查找准确率高,但缺点是漏报率、误报率高,无法查找0day型webshell,而且容易被绕过。
具体的检测方式如下:
Webshell特征检测
使用正则表达式制定相应的规则是很常见的一种静态检测方法,通过对webshell文件进行总结,提取出常见的特征码、特征值、威胁函数形成正则,再进行扫描整个文件,通过关键词匹配脚本文件找出webshell。
比较常见的如:
系统调用的命令执行函数:eval\system\cmd_shell\assert等
统计特征检测
经常会出现一些变形混淆webshell,正则一般检测不出来,但是这类脚本都明显与正常脚本不同,通过统计文本熵、字符串长度、特殊符号个数、重合指数、压缩比等来制定相应的规则以预防混淆的webshell。
Neopi是一个基于统计学的Webshell后门检测工具,使用五种计学方法在脚本文件中搜索潜在的被混淆或被编码的恶意代码。
1、信息熵(Entropy):通过使用ASCII码表来衡量文件的不确定性;
2、最长单词(LongestWord):最长的字符串也许潜在的被编码或被混淆;
3、重合指数(Indexof Coincidence):低重合指数预示文件代码潜在的被加密或被混效过;
4、特征(Signature):在文件中搜索已知的恶意代码字符串片段;
5、压缩(Compression):对比文件的压缩比。
文件名检测
这个便很好理解,有的文件名一看便知道是webshell,也是根据一些常见的webshell文件名进行总结然后再进行过滤。
如:
backdoor.php、webshell.php等等
文件行为检测(动态检测)
动态特征检测是通过Webshell运行时使用的系统命令或者网络流量及状态的异常来判断动作的威胁程度,Webshell通常会被加密从而避开静态特征的检测,当Webshell运行时就需要向系