Webshell是黑客经常使用的一种恶意脚本,其目的是获得对服务器的执行操作权限,比如执行系统命令、窃取用户数据、删除web页面、修改主页等,其危害不言而喻。黑客通常利用常见的漏洞,如SQL注入、远程文件包含(RFI)、FTP,甚至使用跨站点脚本攻击(XSS)等方式作为社会工程攻击的一部分,最终达到控制网站服务器的目的。

"Web"的含义是需要服务器开放web服务,"shell"的含义是取得对服务器某种程度上的操作权限,常常被称为匿名用户(入侵者)通过网站端口对网站服务器的某种程度的操作权限。由于Webshell大多是以动态脚本的形式出现,也有人称之为网站后门工具或者WEB应用脚本后门。但由于此类后门往往与系统契合度较高,利用了系统部分功能模块以实现以假乱真、长期潜伏的目的。该类后门往往不具备文件操作、命令执行等常见木马功能,多数只具备查询数据库功能,可直接调用系统自身的存储过程来连接数据库,与系统契合度高。

黑客使用Webshell的第一步通常是将其上传到可以访问的服务器中,例如利用用户CMS系统的第三方插件中的漏洞上传一个简单的php Webshell。当然,Webshell类型和作用也不完全相同,一些简单的Webshell只起到连接外界的作用,允许黑客插入更加精准的恶意脚本,执行他们所需要的指令;另外一些则可能更加复杂,带有数据库或文件浏览器,让黑客能够从数千英里之外的地方查看入侵系统的代码和数据。无论何种设计,Webshell都极其危险,是网络罪犯和高级持续威胁(APTs)的常用工具。

一、事件调查

攻击者在其他系统上安装了额外的web shell,并在outlookweb Access(OWA)服务器上安装了DLL后门。为了在服务器上持久控制,后门将自己注册为服务或Exchange传输代理,从而允许它访问和拦截所有传入和传出的电子邮件,并收集敏感信息。后门程序还执行其他攻击命令以及下载恶意有效载荷。此外,攻击者还发送了特殊电子邮件,DLL后门会将其解释为命令。

这起案件是常见的web攻击之一,影响到各个部门的多个组织。常用web开发编程语言(如ASP、PHP、JSP)编写恶意代码,攻击者将其植入web服务器上,可远程访问和代码执行,通过执行命令从Web服务器窃取数据。

在攻击中观察到包括 ZINC, KRYPTON和 GALLIUM多个shell。为了植入webshell,攻击者利用暴露在互联网上的web服务器安全漏洞进行攻击,通常是web应用程序中的漏洞,例如CVE-2019-0604或CVE-2019-16759。

在对这些类型的攻击的调查中,发现文件中的web shell试图使用web服务器中合法文件名称隐藏或混合,例如:index.aspx、fonts.aspx、css.aspx、global.aspx、default.php、function.php、Fileuploader.php、help.js、write.jsp、31.jsp。

China Chopper是最常用的web shell之一,常见示例如下:

https://image.3001.net/images/20200206/1580966480_5e3ba250c33a0.png

服务器中发现的jsp恶意代码如下:

php语言编写的China Chopper变体:

KRYPTON在一个ASP.NET页面中使用了用C#编写的web shell:

一旦web shell成功插入web服务器,攻击者就可以在web服务器上执行各种任务。Webshell可以窃取数据,漏洞攻击,并运行其他恶意命令进一步进行破坏。

Web shell已经影响到了很多行业,公共部门组织是最常见的目标部门之一。除了利用web应用程序或web服务器中的漏洞外,攻击者还利用服务器中的其他弱点。例如缺少最新的安全更新、防病毒工具、网络保护、安全配置等。攻击通常发生在周末或休息时间,这时攻击可能不会立即被发现和响应。这些漏洞攻击很普遍,每个月微软(ATP)平均会在46000台不同的机器上检测到77000个webshell相关文件。

二、检测与预防

1.静态检测

静态特征检测是指对脚本文件中所使用的关键词、高危函数、文件修改的时间、文件权限、文件的所有者以及和其它文件的关联性等多个维度的特征进行检测,即先建立一个恶意字符串特征库,例如:"组专用大马|提权|木马|PHP\s?反弹提权cmd执行","WScript.Shell、Shell.Application、Eval()、Excute()、Set Server、Run()、Exec()、ShellExcute()",同时对WEB文件修改时间,文件权限以及文件所有者等进行确认。通常情况下WEB文件不会包含上述特征或者特征异常,通过与特征库的比对检索出高危脚本文件。

该检测方法的优点:可快速检测,快速定位;

缺点:容易误报,无法对加密或者经过特殊处理的Webshell文件进行检测。尤其是针对窃密型Webshell无法做到准确的检测,因为窃密型Webshell通常具有和正常的WEB脚本文件具有相似的特征。

2.动态检测

动态特征检测通过Webshell运行时使用的系统命令或者网络流量及状态的异常来判断动作的威胁程度,Webshell通常会被加密从而避免静态特征的检测,当Webshell运行时就必须向系统发送系统命令来达到控制系统或者操作数据库的目的,通过检测系统调用来监测甚至拦截系统命令被执行,从行为模式上深度检测脚本文件的安全性。

优点:可用于网站集群,对新型变种脚本有一定的检测能力。

缺点:针对特定用途的后门较难检测,实施难度较大。

3.日志分析

使用Webshell一般不会在系统日志中留下记录,但是会在网站的web日志中留下Webshell页面的访问数据和数据提交记录。日志分析检测技术通过大量的日志文件建立请求模型从而检测出异常文件,称之为:HTTP异常请求模型检测。例如:一个平时是GET的请求突然有了POST请求并且返回代码为200、某个页面的访问者IP、访问时间具有规律性等。

优点:采用了一定数据分析的方式,网站的访问量达到一定量级时这种检测方法的结果具有较大参考价值。

缺点:存在一定误报,对于大量的访问日志,检测工具的处理能力和效率会比较低。

4.基于数据库操作审计的检测方式

针对窃密型Webshell必须具有操作数据库的能力,可以引申出一种新的检测方法,通过分析正常WEB脚本文件和窃密型Webshell对数据库操作的差异进行分析是本检测方法所重点研究的方向。

正常情况下WEB站点进行数据操作的过程应该是重复性且较为复杂的查询过程,这种查询通常精确度非常高,查询过程不会出现类似于"select * from"这种查询语句。正常的WEB脚本在进行数据库操作的过程中也不会出现跨越数据库查询的情况,一旦出现这种现象基本可以判断为非正常的WEB脚本操作过程。

就以上思路设计如下的检测方案:

审计数据操作记录。通过审计数据库操作记录可以单独的为每一个WEB站点甚至WEB站点中的每一个脚步文件建立查询请求模型,通过几天甚至数月的自我学习过程来学习并维护一份查询请求数据库。该数据库的内容包含了每次查询操作的详细信息、请求归类和分析结果。并且建立动态查询请求规则,Agent一旦检测到违反该规则的查询请求后会向Server端传递相关信息,Server端再结合其它的扫描过程综合判断发起请求的文件是否为Webshell,并最终决定是否向管理员报警。

由于webshell是一个多方面的威胁,企业应该从多个攻击面建立全面的防御:身份验证、终端、电子邮件和数据、应用程序和基础架构等。

了解面向internet的服务器是检测和解决web威胁的关键。可以通过监视web应用程序目录中的文件写入来检测web shell的安装。Outlook Web Access(OWA)这样的应用程序在安装后很少更改,对这些应用程序目录的写入应该被视为可疑操作。

通过分析信息服务(IIS)w3wp.exe创建的进程来检测webshell活动。与侦察活动相关联的进程序列,如net.exe、ping.exe、systeminfo.exe和hostname.exe进程序列。w3wp.exe在通常不执行诸如"MSExchangeOWAAppPool"进程的应用程序池中运行的任何cmd.exe进程都应被视为异常并视为潜在的恶意行为。

目前针对Webshell的特征检测一般是通过特征比对及文件属性异常的静态检测和基于访问情况、行为模式特征的动态检测方式进行查杀,由于窃密型Webshell通常会伪装成正常的WEB脚本文件,静态特征检测及动态行为检测都无法有效的针对此类后门进行检测。

三、总结

Webshell编码简单,使用方便,但由于许多Web服务器的设置方式问题,即使是一个简单的脚本也足以造成严重的破坏。这就是为什么有成千上万的公开Webshell的原因所在。Webshell存在如此多的变种,导致入侵检测和入侵防御系统(IDS/IPS)很难检测到它们,尤其是当使用签名来检测此类Webshell时。有些Webshell非常复杂,即使进行行为分析,也几乎无法检测到。

话虽如此,但Webshell只是漏洞利用后的实施工具,这就意味着首先要尽早检测出Webshell,防止其上传后进行漏洞利用。

现有技术是针对普通的脚本后门、以控制服务器为目的、通常包含较为明显的静态特征或者行为模式,不能对窃密型后门进行有效检测。

由于业务系统更新频繁,WEB脚本文件相关的属性经常发生变化所以偏重于文件属性检测的方法往往会产生更多的误报,基于动态行为检测的方法往往技术难度较大,难以实现,而且对系统造成的性能影响较大,甚至可能对系统稳定性造成影响,基于日志的检测方法,一方面,由于业务功能较多且复杂,部分功能可能很少会被用到,其日志访问可能会命中某些检测规则从而造成更多的误报,另一方面,大量的日志记录处理起来会对服务器性能产生负担、而且由于日志量巨大检测过程消耗时间长,检测速度较慢。而窃密型Webshell后门往往会模拟正常的数据库操作、不具有较为明显静态特殊属性、被访问的次数比较少无法形成较为明显的访问特征,通过日志分析也很难发现。

与大多数安全问题一样,预防至关重要。通过采取以下预防措施可以增强系统抵御webshell攻击的能力:

1、识别并修复web应用程序和web服务器中的漏洞或错误配置,并及时进行更新。

2、经常审核和检查web服务器的日志,注意直接暴露在internet上的所有系统。

3、尽可能利用Windows Defender防火墙、入侵防御设备和网络防火墙来阻止端点之间的命令执行和与控制服务器通信,限制横向移动和其他攻击活动。

4、检查外围防火墙和代理以限制对服务的不必要访问,包括通过非标准端口访问服务。

5、启用云保护以获得最新防御措施。

6、教育终端用户如何预防恶意软件感染,建立用户是要进行凭据限制。

只依靠一种检测方法也是很难以进行全面检测的。在真实的环境中进行部署检测系统时需要同步的部署传统检测方法的系统,来达到互补和增强检测结果可行度的目的。

结语

探讨渗透测试及黑客技术,请关注并私信我。#小白入行网络安全# #安界网人才培养计划#

分类: 软件分享 标签: 暂无标签

评论

暂无评论数据

暂无评论数据

目录