【服务器防护】WEB防护 - WEBSHELL攻击探测【转载】
原文:http://www.2cto.com/Article/201511/451757.html
1. 什么是webshell?
2. webshell的分类
大马、小马、一句话马
2.1上传"大马"
这种方式通过POST直接上传一个Webshell文件或者经过简单的变形然后上传到服务器上,如下面的一个例子:
2009-02-10 06:32:58 W3SVC77065997 XXXX.XXXX.XXXX.XXXX POST /lesson_manage/upload/40/ASP.asp – 80 – XXXX.XXXX.XXXX.XXXX Mozilla/4.0+compatible;+MSIE+6.0; 200 0 0
从上面这条访问记录中能够发现如下关键特:POST upload ASP.asp 200 通过这几个关键特征的就能够分析出ASP.php可能是一个疑似Webshell。
2.2上传"小马"
在不能直接上传“大马”Webshell的情况下黑客通常会上传一个“小马”以协助完成上传“大马”或者上传一句话Webshell并配合一个客户端实现控制服务器,这里我们也不讨论如何上传“小马”以及一句话Webshell。我们只讨论如何利用“小马”来上传“大马”。
这种方式的特殊点在于不是一个完整的文件在网络中中传输而是一个存在于HTTP协议中的一个参数在网络中传输,传输参数的方式既可能是GET也可能是POST,我们来看下面一个真实的例子:
在上图中我们不难发现这显然是使用一句话木马客户端通过POST的形式正在上传一个Webshell的脚本代码,并且将内容写入一句话木马相同目录 下的一个body.asp的文件当中,从而实现上传“大马”。在截取到的流量数据中可以发现,如:act= body.asp value=Execute等payload,通过在检测这些payload就可以在上传的过程中分析Webshell及其行为。
2.3. 访问过程中的Payload
于Webshell是被制作用来控制服务器或者窃取机密信息的,要实现这些能力攻击者就必须向Webshell发送一些控制指令从而操作Webshell。在控制指令中通常包含特征明显的攻击payload。我们来观察一下如下几种payload:
上图中显然是Webshell正在试图连接网站的数据库,并且攻击者使用的是POST的方式向Webshell提交连接参数,其中可以发现的 payload 有:action=sqladmin,dbhost=localhost,dbport=3306,dbuser=root,dbpass=1qaz2wsx,connect=connect 等。
3、webshell的检测
参考文章:http://www.sec-un.org/ideas-like-article-espionage-webshell-method.html
Webshell的检测的三种手段
从安全防护能力看,检测是第一位的能力,webshell的检测主要有以下几种方式:
(1)基于流量的webshell检测引擎
方便部署,通过流量镜像直接分析原始信息。基于payload的行为分析,不仅对已知webshell进行检测,还能识别出未知的、伪装性强的 webshell。对webshell的访问特征(IP/UA/Cookie)、payload特征、path特征、时间特征等进行关联分析,以时间为索 引,还原攻击事件。
(2)基于文件的webshell分析引擎
检测是否包含webshell特征,例如常用的各种函数。检测是否加密(混淆处理)来判断是否为webshell文件hash检测,创建webshell 样本hashing库,进行对比分析可疑文件。对文件的创建时间、修改时间、文件权限等进行检测,以确认是否为webshell沙箱技术,根据动态语言沙 箱运行时的行为特征进行判断
(3)基于日志的webshell分析引擎
支持常见的多种日志格式。对网站的访问行为进行建模,可有效识别webshell的上传等行为对日志进行综合分析,回溯整个攻击过程。
三种检测方式,基于文件的检测,很多时候获取样本的部署成本比较高,同时仅仅靠样本无法看到整个攻击过程。基于日志的有些行为信息在日志中看不到,总体来说还是基于“流量”的看到的信息最多,也能更充分的还原整个攻击过程。
4. webshell的应对措施
了解了webshell的基本原理之后,最关键的防止器植入asp、php、jsp等木马程序文件,使用webshell一般不会在系统日志中 留下记录,只会在网站的web日志中留下一些数据提交记录,没有经验的管理员是很难看出入侵痕迹的。我们一般可以从以下几方面对安全性进行处理: