基于Webshell恶意代码注入检测研究与分析

作者: 邢士发

基于Webshell恶意代码注入检测研究与分析0

摘要:随着计算机应用技术的不断提升,网站应用程序的处理功能逐渐强大起来,随之而来的是暴露在网络上的各种企业或者个人敏感信息资源可能面临着各种网络的攻击[1]。该文主要研究基于Webshell的恶意代码的注入后门的反弹以及如何预防检测的相关问题,计划利用所搭建的环境进行相关Webshell的上传及利用工具获取其权限[2]。此次实验项目是基于上传为Webshell类型的一句话木马。常用的Web管理工具有中国菜刀(China chopper)、蚁剑(AntSword)、冰蝎(Behinder);后门反弹工具用到了NC(Netcat)、流量分析工具wireshark;后门查杀工具有D盾后门查杀、河马Webshell查杀、火绒等 [3]。

关键词:Webshell;注入;入侵检测;网络安全

中图分类号:TP383        文献标识码:A

文章编号:1009-3044(2022)25-0126-03

开放科学(资源服务) 标识码(OSID) :

1 前言

Webshell的隐蔽性不仅很强,而且种类也愈来愈繁杂,让网络安全管理员防不胜防。从最初基于 TCP和UDP 的 Webshell到后来基于ICMP和DNS 的shell[4],其中就包含有直接上传Webshell、远程文件包含(RFI) 、SQL注入和FTP,可能存在跨站点脚本(XSS)作为攻击的形式,甚至一些比较老旧的方法利用后台数据库备份及恢复获取Webshell的各种数据库压缩权限等[5]。常用的方法有NC反弹、SSH 端口转发和Telnet 反弹等,更隐藏和更强大的手段诸如利用awk来进行反弹获得shell[6]。正是越来越多的语言支持后门的编写,才使得Webshell隐蔽性更好[7]。

2 实验环境及工具作用

本次实验主要使用的工具有phpstudy、Burp Suite、中国菜刀(China chopper)、wireshark等。其中Burp Suite主要用于抓包、改包、放包,用于前端绕过;中国菜刀(China chopper)主要用于连接一句话木马获取shell,遍历目录;wireshark主要检测Webshell恶意代码注入的过程。

3 Webshell注入攻击与检测

3.1 搭建upload-labs本地靶场实验场景

图1为已经搭建好的靶场界面图。

3.2 简单的前端绕过

本实验利用upload-labs漏洞测试环境进行一句话木马文件上传,首先利用前端绕过技术并上传成功后,然后利用Web管理工具进行连接,连接成功后即可实现文件管理。利用此方法可以打开虚拟终端,对数据库进行管理并在后台留下后门文件,对wireshark抓取的流量包进行流量分析。如图2所示,进行分析源码发现上传的文件必须是图片的格式(若限制的是文件类型那么需要抓包修改文件类型) 。

根据代码提示,现将一句话木马的文件格式改为jpg图片的格式并上传至服务器,然后用Burp Suite进行抓包、改包,然后再放包。具体实现过程如图3所示。

网页没有显示报错信息,然后复制此图片路径进行访问,验证是否上传成功,其中文件路径选取方法如图4所示。

然后访问上述图片URL路径,如图5显示上传成功。

最后使用中国菜刀连接Payload,成功获取网站文件目录和虚拟终端Shell,具体操作如图6所示。

如图7所示,通过菜刀工具成功连接后并进入系统文件管理界面,此时证明网站服务器能够被成功访问以及获取到虚拟终端Shell。

在wireshark中分析已捕获的上传文件过程中的数据包,可以发现菜刀在连接一句话木马的过程中存在相关的post流量数据包。基于流量的检测是不能作为检测Webshell危险函数的唯一手段,因为Webshell带有常见的系统调用、系统配置、数据库、文件的操作等动作,所以这些行为方式决定了它的数据流量中可以多带有一些明显的特征参数,并且通过匹配行为的流量特征作为检测方法,这也正是基于Webshell入侵后的行为特征进行检测,除此之外,还可以从系统层面的Webshell入侵行为进行检测。流量数据包如图8所示。

3.3 上传.htaccess文件绕过

在WAMP Server安装的目录下进行编辑访问控制文件.htaccess,该文件中的<Files Match"xiaoma">是要匹配的内容,如果上传的文件名字中含有“xiaoma”字符的都可以上传,并且取得Webshell的权限,这种方式危害性会很大。服务器如果被黑客上传此类文件,就会实现文件上传并拿下服务器所有权限。

攻击者首先上传.htaccess,使得所有文件都会被解析为php,然后再上传木马并解析,.htaccess的编写内容如图9所示。

3.4 利用00截断上传文件

文件截断有%00、0x00、/00三种常见技术,本次实验以0x00为例,在url中%00表示ascll码中的0,而ASCII中0作为特殊字符保留,表示字符串结束,所以当url中出现%00时就会认为读取已结束。如在1.php文件名改为1.php%00.jpg时会被解析为1.php,这样就能绕过后缀限制并实现上传shell[8]。具体攻击通过修改Hex中的上传脚本扩展名后的内容可达到阶段性的效果。具体操作如图10所示。

3.5 其他检测方法

除了以上方法还有如下检测方法:

(1) 动态检测(沙箱) ,即Webshell一旦被上传到服务器,Webshell在动态执行时所表现出来的特征。这种检测方式类似于Selenium模拟浏览器的行为[9]。

(2) 日志检测,使用Webshell的时候不会在操作系统日志中留下任何记录,在网站的Web日志中可能会留下Webshell页面的访问数据和数据提交记录。日志分析检测技术通过大量的日志文件建立请求模型,从而检测出异常文件HTTP异常请求模型检测[10]。

4 结束语

本次实验通过WAMP Server搭建的本地服务器upload-labs靶机,演示了攻击者如何利用网站与服务器的Webshell漏洞并实现达到长期控制网站服务器的过程。受害者需及时修复此漏洞,以免其他人继续利用该漏洞 [11]。在服务器没有配置错误的情况下,Webshell可以在Web服务器的相关用户权限下运行。同时通过使用Webshell,攻击者可以尝试利用系统上的本地漏洞来执行权限提升,常见的方法有查找敏感配置文件、通过内核漏洞提权、利用低权限用户目录下可被Root权限用户调用的脚本提权、任务计划等。通过以上实验发现,Webshell隐蔽性很强,不易被发现和查杀。在没有记录流量的情况下,Webshell使用post包发送,这种方式不会被记录到系统日志中,仅会在Web日志中保留一些提交的数据记录[12],所以本次实验是全程开启wireshark来捕获流量数据,因此可以获取Webshell恶意代码注入的流量包,从而进行漏洞分析与防御。

参考文献:

[1] 车生兵,张光琳.基于深度学习的Webshell检测[J].计算机工程与科学,2022,44(6):994-1002.

[2] 常昊,陈岑,张铮,等.基于文本特征和日志分析的Webshell检测[J].网络安全技术与应用,2022(2):10-12.

[3] 李源,王运鹏,李涛,等.基于多特征融合的Webshell恶意流量检测方法[J].网络与信息安全学报,2021,7(6):143-154.

[4] 王世通.基于HTTP协议的WebShell检测研究[D].北京:北京邮电大学,2021.

[5] 何树果,张福,朱震,等.Webshell检测方案探索与实践[J].信息网络安全,2020(S1):141-144.

[6] 岳子涵,薛质,沈兴文,等.基于语义分析的PHP Webshell检测方法研究[J].通信技术,2020,53(12):3051-3055.

[7] 端木怡婷.Webshell检测方法研究综述[J].软件,2020,41(11):67-69.

[8] 何树果,张福,朱震,等.Webshell检测方案探索与实践[C]//2020互联网安全与治理论坛论文集.上海,2020:144-147.

[9] 郭优.基于综合策略的Webshell检测方法研究[D].西安:西安工业大学,2020.

[10] 关洪超.基于HTTP流量的WebShell检测研究[D].北京:北京邮电大学,2019.

[11] 康志辉.基于PHP扩展的Webshell检测研究[J].科技传播,2015,7(19):123-124.

[12] 石刘洋,方勇.基于Web日志的Webshell检测方法研究[J].信息安全研究,2016,2(1):66-73.

【通联编辑:代影】

上一篇 点击页面呼出菜单 下一篇