原文:http://www.2cto.com/Article/201511/451757.html

1. 什么是webshell?

    基于b/s架构的软件部署在Internet上,那么安全性是必须要关注的,攻击者可以采用各种方式进行攻击,获取系统的控制权,其中webshell是常见的攻击方式。
    Webshell是攻击者在被攻击网站上植入的asp、php、jsp程序文件,攻击者在入侵了一个web系统后,常常在将这些asp、php、jsp木 马后门文件放置在web服务器的web目录中,与正常的网站文件混在一起。然后攻击者就可以通过正常的web访问方式,访问其植入asp、php、jsp 程序木马后门控制web服务器,包括创建、修改、删除文件,上传下载文件,查看数据库,执行任意程序命令等。
    webshell攻击应用于所有基于b/s结构的系统,包括网站、OA(www.chysoft.net)、CRM、ERP等等。

2. webshell的分类

  大马、小马、一句话马

  【服务器防护】WEB防护-风君雪科技博客

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,我们来看下面一个真实的例子:

【服务器防护】WEB防护-风君雪科技博客

 

在上图中我们不难发现这显然是使用一句话木马客户端通过POST的形式正在上传一个Webshell的脚本代码,并且将内容写入一句话木马相同目录 下的一个body.asp的文件当中,从而实现上传“大马”。在截取到的流量数据中可以发现,如:act= body.asp value=Execute等payload,通过在检测这些payload就可以在上传的过程中分析Webshell及其行为。

2.3. 访问过程中的Payload

于Webshell是被制作用来控制服务器或者窃取机密信息的,要实现这些能力攻击者就必须向Webshell发送一些控制指令从而操作Webshell。在控制指令中通常包含特征明显的攻击payload。我们来观察一下如下几种payload:

【服务器防护】WEB防护-风君雪科技博客

上图中显然是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日志中留下一些数据提交记录,没有经验的管理员是很难看出入侵痕迹的。我们一般可以从以下几方面对安全性进行处理:

1、Web软件开发的安全
    A、程序中存在文件上载的漏洞,攻击者利用漏洞上载木马程序文件。
    B、防sql注入、防暴库、防COOKIES欺骗、防跨站脚本攻击。
2、服务器的安全和web服务器的安全
    A、服务器做好各项安全设置,病毒和木马检测软件的安装(注:webshell的木马程序不能被该类软件检测到),启动防火墙并关闭不需要的端口和服务。
    B、提升web服务器的安全设置
    C、对以下命令进行权限控制(以windows为例):
    cmd.exe net.exe net1.exe ping.exe netstat.exe ftp.exe tftp.exe telnet.exe
3、ftp文件上载安全
    设置好ftp服务器,防止攻击者直接使用ftp上传木马程序文件到web程序的目录中
4、文件系统的存储权限
    设置好web程序目录及系统其它目录的权限,相关目录的写权限只赋予给超级用户,部分目录写权限赋予给系统用户。
  将web应用和上传的任何文件(包括)分开,保持web应用的纯净,而文件的读取可以采用分静态文件解析服务器和web服务器两种服务器分 别读取(Apache/Nginx加tomcat等web服务器),或者图片的读取,有程序直接读文件,以流的形式返回到客户端。
5、不要使用超级用户运行web服务
    对于apache、tomcat等web服务器,安装后要以系统用户或指定权限的用户运行,如果系统中被植入了asp、php、jsp等木马程序文件,以超级用户身份运行,webshell提权后获得超级用户的权限进而控制整个系统和计算机。