webshell网络安全应急响应

admin 2024年1月7日19:02:07评论34 views字数 6376阅读21分15秒阅读模式

Webshell通常指JSP、ASP、PHP 等网页脚本文件形式存在的一种服务器可执行文件,一般带有文件操作、命令执行功能,是一种网页后门。攻击者在入侵一个网站后,通常会将 Webshell 后门文件与网站服务器Web目录下正常的网页文件混在一起,使用浏览器或专用客户端进行连接,从而得到一个服务器操作环境,以达到控制网站服务器的目的。

01
webshell的分类

根据不同的脚本名称划分,常见的 Webshell 脚本类型有JSP、ASP、PHP 等。
1、JSP 型 Webshell 脚本

JSP全称Java Server Pages,是一种动态Web资源的开发技术。JSP 是在传统的网页HTML 文件(*.htm,*.html)中插入Java程序段(scriptlet)和 JSP 标记(tag),从而形成JSP 文件(*.jsp)。

JSP 型 Webshell 脚本如下:

<%Runtime.getRuntime().exec(request.getParameter("i"));%>
2.ASP 型 Webshell 脚本

ASP全称Active Sever Page,是服务器开发专用脚本。它可以与数据库和其他程序进行交互,是在 IIS 中运行的一种程序。

ASP 型 Webshell 脚本如下:<%eval request("cmd")%>
3.PHP 型 Webshell 脚本

PHP 全称 Hypertext Preprocessor,是一种通用开源脚本语言,主要适用于 Web开发领域。PHP可支持常见的数据库及操作系统,可快速地执行动态网页。

PHP 型 Webshell 脚本如下:

<?php $a=exec($_GET["input"]); echo $a;?>

02
webshell检测方案

1.基于流量的 Webshell 检测

基于流量的Webshell检测方便部署,我们可通过流量镜像直接分析原始信息。基于payload的行为分析,不仅可对已知的Webshell进行检测,还可识别出未知的、伪装性强的Webshell,对 Webshell的访问特征(IP/UA/Cookie)、payload特征、path 特征、时间特征等进行关联分析,以时间为索引,可还原攻击事件。
2.基于文件的 Webshell 检测

通过检测文件是否加密(混淆处理),创建 Webshell样本hash库,可对比分析可疑文件。对文件的创建时间、修改时间、文件权限等进行检测,以确认是否为 Webshell。
3.基于日志的 Webshell 检测

对常见的多种日志进行分析,可帮助我们有效识别 Webshell 的上传行为等。通过综合分析,可回溯整个攻击过程

03
webshel防御方案

网页中一旦被植入Webshell,攻击者就能利用它获取服务器系统权限、控制“肉鸡”发起 DDos 攻击、网站篡改、网页挂马、内部扫描、暗链/黑链植入等一系列攻击行为。

因此,针对Webshell的防御至关重要,以下可作为参考的一些防御方法。

(1)配置必要的防火墙,并开启防火墙策略,防止暴露不必要服务为攻击者提供利用条件。

(2)对服务器进行安全加固,例如,关闭远程桌面功能、定期更换密码、禁止使用最高权限用户运行程序、使用 HTTPS 加密协议等。

(3)加强权限管理,对敏感目录进行权限设置,限制上传目录的脚本执行权限,不允许配置执行权限等。

(4)安装Webshell检测工具,根据检测结果对已发现的可疑 Webshell 痕迹立即隔离查杀,并排查漏洞。

(5)排查程序存在的漏洞,并及时修补漏洞。可以通过专业人员的协助排查漏洞及入侵原因。

  1. 时常备份数据库等重要文件。

(7)需要保持日常维护,并注意服务器中是否有来历不明的可执行脚本文件。

(8)采用白名单机制上传文件,不在白名单内的一律禁止上传,上传目录权限遵循最小权限原则。

04
常规处置方案

网站中被植入Webshell,通常代表着网站中存在可利用的高危漏洞,攻击者利用这些漏洞,将 Webshell写入网站,从而获取网站的控制权。一旦在网站中发现 Webshell文件,可采取以下步骤进行临时处置。
1、入侵时间确定

通过在网站目录中发现的 Webshell 文件的创建时间,判断攻击者实施攻击的时间范围,以便后续依据此时间进行溯源分析、追踪攻击者的活动路径。通过 Webshell 文件的创建时间,可以初步判断攻击者的入侵时间。
2、Web 日志分析

对访问网站的Web日志进行分析,重点关注已知的入侵时间前后的日志记录,从而寻找攻击者的攻击路径,以及所利用的漏洞。如下图所示,分析Web日志发现在文件创建的时间节点并未有可疑文件上传,但存在可疑的 Webservice 接口,这里需要注意的是,一般应用服务器默认日志不记录 POST 请求内容。

webshell网络安全应急响应
3、漏洞分析

通过日志中发现的问题,针对攻击者活动路径,可排查网站中存在的漏洞,并进行分析。如图 6.2.3 所示,针对发现的可疑接口 Webservice,访问发现变量buffer、distinctPath、newFileName 可以在客户端自定义,导致任意文件都可上传。

webshell网络安全应急响应
4、漏洞复现

对已发现的漏洞进行漏洞复现,从而还原攻击者的活动路径。如图 6.2.4 所示,对已发现的漏洞进行复现,成功上传 Webshell,并获取了网站服务器的控制权,如图 6.2.5 所示。

webshell网络安全应急响应

webshell网络安全应急响应
5、漏洞修复

清除已发现的 Webshell 文件,并修复漏洞。为避免再次受到攻击,网站管理员应定期对网站服务器进行全面的安全检查,及时安装相关版本补丁,修复已存在的漏洞等。

05
技术操作指南

在应急响应时,首先应判断系统是否存在植入 Webshell 的可能。根据事件发生的时间进行排查,对攻击路径进行溯源分析。如果网站被植入暗链或出现单击链接跳转到其他网站(如博彩网站、色情网站等)的情况,应首先排查网站首页相关js,查看是否被植入了恶意跳转的js。若网站首页被篡改或有其他被攻击的现象,则应根据网站程序信息,如程序目录、文件上传目录、war 包部署目录, 使用工具(如D盾)和搜索关键词(如 eval、base64_decode、assert)方式,定位到 Webshell 文件并清除。然后根据日志进行溯源分析,同时除了进行 Web 应用层排查,还应对系统层进行全面排查,防止攻击者在获取 Webshell 后执行了其他的 权限维持操作。

可以从以下几个方向进行初步排查,分别包括 Webshell排查、Web日志分析、系统排查、日志排查、网络流量排查。最后进行清除加固。
1、初步预判 Webshell 事件表现

植入 Webshell,系统可能出现的异常现象如下:

网页被篡改,或在网站中发现非管理员设置的内容;

出现攻击者恶意篡改网页或网页被植入暗链的现象;

发现安全设备报警,或被上级部门通报遭遇 Webshell。

如图 6.4.1 所示,查看网页信息,发现该网页被植入了赌博网站的暗链。

webshell网络安全应急响应

如图 6.4.2 所示,安全设备出现网页后门报警。

webshell网络安全应急响应
2、判断 Webshell 事件发生时间

根据异常现象发生时间,结合网站目录中 Webshell 文件的创建时间,可大致定位事件发生的时间段。如图 6.4.3 所示,Webshell 文件的创建时间2018年11月7 日,20:20:24。

webshell网络安全应急响应
3、判断系统架构

应急响应工程师应收集系统信息,为快速溯源分析提供前期准备工作,可参考表 6.4.1 中内容,以此定位系统可能存在的漏洞。

webshell网络安全应急响应
4、Webshell 排查

1、Windows 系统排查

可利用 Webshell 扫描工具对应用部署目录进行扫描,如网站D:WWW目录,或者将当前网站目录文件与此前备份文件进行比对,查看是否存在新增不一致内容,确定是否包Webshell 相关信息,并确定 Webshell 位置及 创建时间。

D 盾扫描出的可疑 Webshell 文件如图 6.4.4 所示

webshell网络安全应急响应

可用文本工具打开发现的可疑文件,查看代码内容,进行进一步确认,如图 6.4.5 所示

webshell网络安全应急响应

2、Linux 系统排查

在 Windows 系统中使用的 Webshell 检测方法在 Linux 系统中同样适用。在Linux系统中,可用河马 Webshell 查杀工具扫描,也可手工搜索可能包含 Webshell特征的文件,表 6.4.2 为常用的搜索命令

webshell网络安全应急响应

使用命令搜索到包含命令执行参数的可疑Webshell文件“JspSpy.jsp”及“caidaoshell.jsp”如图 6.4.6 所示。

webshell网络安全应急响应
5、Web 日志分析

1.Windows 系统排查

接下来,需要对We日志进行分析,以查找攻击路径及失陷原因,常见 Web中间件默认路径如表 6.4.3 所示。

webshell网络安全应急响应

以 IIS 为例,可以打开【Microsoft 日志记录属性】对话框,查看日志文件目录及日志文件名,如图 6.4.7 所示。

webshell网络安全应急响应

根据 Webshell 文件创建时间,排查对应时间范围的 IIS 访问日志,可以发现最早的访问是在 2017 年 11 月 9 日,如图 6.4.8 所示。

webshell网络安全应急响应

进一步搜索 Webshell 文件创建时间前后的相关日志,可以看到在访问时间之前有利用POST方法访问Upload_user.aspx上传页面的情况,推断攻击者可能利用 Upload_user.aspx 页面的文件上传功能上传包含了 Webshell 的文件,且当前的中间件 IIS6存在后缀名解析漏洞,使得文件执行,如图 6.4.9 所示。

webshell网络安全应急响应

进一步分析得知该 Upload_user.aspx 页面需要登录后台才能访问。从日志中可以发现,攻击者在访问上传页面之前还访问了登录页面,由于 Web 应用日志默认不记录 POST 请求体,且通过测试发现网站后台存在弱密码用户,弱密码为123456,因此攻击者可以轻易登录后台,进而利用该上传功能上传 Webshell,如图 6.4.10 所示。

webshell网络安全应急响应

因此,通过Web日志分析可以大致推断出攻击者的攻击路径及攻击方法。

2.Linux 系统排查

在 Linux 系统中,常见 Web 中间件默认路径如表 6.4.4 所示。

webshell网络安全应急响应

可以根据发现 Webshell 的时间、系统异常的时间或 Webshell 查杀工具定位到木马的时间对相关时间段日志进行分析。如图 6.4.11 所示,根据发现 Webshell 的时间,分析相关时间段日志,发现了攻击者利用 Dedecms 后台 GetShell 漏洞上传的 Webshell。

webshell网络安全应急响应

在 Linux 日志排查时,为方便日志检索及溯源分析,列举了常用日志检索命令,如表 6.4.5 所示

webshell网络安全应急响应
6、系统排查

攻击者上传 Webshell后,往往还会执行进一步的操作,如提权、添加用户、写入系统后门等,实现持久化驻留。因此,还需要对系统进行排查,主要排查内容如下。

1.Windows 系统排查

1)用户信息排查

使用【net user】命令,可直接查看用户信息(此方法看不到隐藏用户),若发现存在非管理员使用账户,则可能为异常账户,如图 6.4.12 中的“hacker”。如果需查看某个账户的详细信息,可使用【net user username】命令

webshell网络安全应急响应

打开【计算机管理】窗口,单击【本地用户和组】,可查询隐藏用户。用户名称以$结尾的为隐藏用户,如图 6.4.13 所示。

webshell网络安全应急响应

可使用注册表,利用 F 值进行对比,以排查克隆用户,详见 2.1.2 节。也可直接使用 LP_Check 工具排查克隆用户。图 6.4.14 中的“shadow$”即为克隆用户。

webshell网络安全应急响应

2)进程、服务、驱动、模块、启动项排查

(1)进程排查。

在排查可疑进程时,可以关注进程名称,对于异常的、不常见的名称要格外注意,另外可以重点观察进程的路径、CPU 占用信息等。

攻击者通常会模仿系统进程的命名规则来伪装,如图6.4.15所示,“schost.exe”为模仿系统进程“svchost.exe”命名的恶意进程。

webshell网络安全应急响应

进程信息还可以使用PCHunter工具查看,信息中黑色的条目代表微软进程;蓝色的条目代表非微软进程,可能是第三方应用程序的进程,蓝色缺少文件厂商信息的进程需多加关注;红色的条目代表可疑进程、隐藏服务、被挂钩函数。

图 6.4.16 为使用 PCHunter 工具查看的进程信息,其中“schost.exe”被标记为恶

意进程,与使用上述方法查找的一致。

webshell网络安全应急响应

(2)服务排查。

在【系统信息】窗口中,单击【软件环境】下的【服务】,可查看服务的启动情况及其对应的启动文件。或使用【services.msc】命令,也可直接查看服务。如图 6.4.17 所示,名称为“dBFh”的服务缺少描述内容,且其为非系统常见服务,

属性中显示其通过 cmd 执行 installed.exe 程序。随后我们可进一步定位到 C 盘目录下的 installed.exe 恶意样本文件。此处的异常服务较为明显。

webshell网络安全应急响应

(3)驱动、模块、启动项排查。

在系统排查中,还要对驱动、模块、启动项的内容进行排查,

3)网络连接排查

使用系统自带的【netstat -ano】命令,可查看当前网络连接情况,定位可疑的 ESTABLISHED 连接。如果当前服务器只允许对指定 IP 地址建立连接,那么若发现未在指定范围内的连接情况,则很可能是异常连接,如图 6.4.18 所示,此连接的外部地址不在已知范围内,因此初步判定为可疑连接。

webshell网络安全应急响应

也可以使用工具(如 TCPView)查看网络连接详细信息。TCPView 可用于检测当前系统中的进程及其对应的连接状态。当进程标记为绿色时,表示该连接为新发起的连接,当进程标记为红色时,表示该连接为结束状态。图 6.4.19 是用TCPView 查看网络连接的情况,其中标记的为新发起的连接

webshell网络安全应急响应

4)任务计划排查

攻击者在攻击成功后,添加任务计划往往是为了持久化控制。任务计划日志通常存放在 C:WINDOWSSystem32Tasks 目录下,可以直接打开系统自带的【任务计划程序】窗口进行查看。若发现非自定义的任务计划,则较为可疑,需进行排查。

图 6.4.20 中的 Autocheck、Ddrivers、WebServers 为非自定义任务计划,同时,通过查看任务详情可知其操作是利用 cmd 执行 mshta 加载远程恶意文件的,为典型异常任务计划。

webshell网络安全应急响应

5)文件排查

攻击者在攻击成功后可能会在本地留下过程文件,这时需要应急响应工程师排查各个盘符下的相关敏感目录,以便确定是否存在异常文件。

(1)temp 相关目录。

temp 指系统临时文件夹,用于存储系统临时文件。在 Windows系统中,常见temp 目录主要分布在如下位置:

C:Windowstemp;

C:UsersAdministratorAppDataLocaltemp。

在寻找可疑文件时,先重点查看攻击时间范围内的文件,然后通过文件命令来判断。一般凡是在非系统 System32 或 Syswow64 目录下的 svchost.exe 文件基本为恶意文件,另外,命名特殊的文件也要重点排查。发现可疑文件后,可以提取样本做进一步的鉴定。m.ps1 为 PowerShell 文件,直接利用文本编辑器打开可以查看内容,还有 mkatz.ini 也为典型的恶意文件,如图 6.4.21 所示

webshell网络安全应急响应

(2)recent 相关目录。

可通过查看最近打开的文件,判断可疑文件,目录如下:

C:Documents and SettingsAdministratorrecent;

C:Documents and SettingsDefault Userrecent。

我们可根据文件夹内文件列表的时间进行排序,查找可疑文件,也可以通过搜索指定日期或日期范围内的文件及文件夹来查找,如图 6.4.22 所示。

webshell网络安全应急响应

Linux 系统排查

1)用户信息排查

使用【cat /etc/passwd】命令,可查看系统用户信息,与管理员确认是否存在未知新增用户。如图 6.4.23 所示,发现未知 admin 用户,具备 root 权限,因此需要进行重点排查。

webshell网络安全应急响应

排查中需要关注 UID 为 0 的用户,因为在一般情况下只有 root 用户的 UID为 0,其他用户的 UID 如果设置为 0,即拥有 root 权限,需要重点排查。

如果 admin 是非已知用户,那么极有可能为可疑用户,如图 6.4.24 所示。

webshell网络安全应急响应

原文始发于微信公众号(安全架构):webshell网络安全应急响应

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月7日19:02:07
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   webshell网络安全应急响应http://cn-sec.com/archives/2372598.html

发表评论

匿名网友 填写信息