应急响应 - Webshell 处理 15

 

目录

Webshell概述

Webshell分类

JSP型Webshell脚本

ASP型Webshell脚本

PHP型Webshell脚本

Webshell用途

1.站长工具

2.持续远程控制

3.权限提升

4.极强的隐蔽性

Webshell检测方法

1.基于流量的Webshell检测

2.基于文件的Webshell检测

3.基于日志的Webshell检测

Webshell防御方法

常规处置方法

入侵时间确定

Web日志分析

漏洞分析

漏洞修复

常用工具

扫描工具

抓包工具

技术操作指南

初步预判

1.了解Webshell事件表现

2.判断Webshell事件发生时间

3.判断系统架构

Webshell排查

1.Windows系统排查

2.Linux系统排查

Web日志分析

1.Windows系统排查

2.Linux系统排查

系统排查

1.Windows系统排查

日志排查

1.Windows系统排查

2.Linux系统排查

3.数据库日志排查

网络流量排查

清除加固

典型处置案例

网站后台登录页面被篡改

参考书籍


Webshell概述

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

Webshell分类

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

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"));%>

ASP型Webshell脚本

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

<%eval request("cmd")%>

PHP型Webshell脚本

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

PHP型Webshell脚本如下:

<?php

       $a=exec($_GET["input"]);

       echo $a;

?>

Webshell用途

1.站长工具

Webshell的一般用途是通过浏览器来对网站所在的服务器进行运维管理。随着Webshell的发展,其作用演变为在线编辑文件、上传和下载文件、数据库操作、执行命令等。

2.持续远程控制

当攻击者利用漏洞或其他方法完成Webshell植入时,为了防止其他攻击者再次利用,其会修补该网站的漏洞,以达到网站被其单独、持续控制。而Webshell本身所拥有的密码验证可以确保其在未遭受暴力破解工具攻击的情况下,只可能被其上传者利用。

3.权限提升

Webshell的执行权限与Web服务器运行的权限息息相关,若当前Web服务器是root权限,则Webshell也将获得root权限。在一般情况下,Webshell为普通用户权限,此时攻击者为了进一步提升控制能力,会通过设置任务计划、内核漏洞等方法来获取root权限。

4.极强的隐蔽性

部分恶意网页脚本可以嵌套在正常网页中运行,且不容易被查杀。一旦Webshell上传成功,其功能也将被视为所在服务的一部分,流量传输也将通过Web服务本身进行,因此拥有极强的隐蔽性。

Webshell检测方法

1.基于流量的Webshell检测

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

2.基于文件的Webshell检测

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

3.基于日志的Webshell检测

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

Webshell防御方法

网页中一旦被植入Webshell,攻击者就能利用它获取服务器系统权限、控制“肉鸡”发起DDos攻击、网站篡改、网页挂马、内部扫描、暗链/黑链植入等一系列攻击行为。因此,针对Webshell的防御至关重要,以下为一些防御方法。

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

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

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

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

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

(6)备份文件:时常备份数据库等重要文件。

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

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

常规处置方法

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

入侵时间确定

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

Web日志分析

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

漏洞分析

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

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

漏洞修复

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

常用工具

扫描工具

1.D盾

D盾是目前流行的Web查杀工具,使用方便,包含如下功能:

(1)Webshell查杀、可疑文件隔离;

(2)端口进程查看、base64解码,以及克隆用户检测等;

(3)文件监控。

2.河马Webshell查杀

河马Webshell查杀拥有海量Webshell样本和自主查杀技术,采用传统特征+云端大数据双引擎的查杀技术,支持多种操作系统。

抓包工具

Wireshark是一个支持多平台抓包分析的开源软件,可捕获网络流量并进行分析。

技术操作指南

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

然后根据日志进行溯源分析,同时除了进行Web应用层排查,还应对系统层进行全面排查,防止攻击者在获取Webshell后执行了其他的权限维持操作。可以从以下几个方向进行初步排查,分别包括Webshell排查、Web日志分析、系统排查、日志排查、网络流量排查。最后进行清除加固。

初步预判

1.了解Webshell事件表现

植入Webshell,系统可能出现的异常现象如下:网页被篡改,或在网站中发现非管理员设置的内容;出现攻击者恶意篡改网页或网页被植入暗链的现象;发现安全设备报警,或被上级部门通报遭遇Webshell。如图所示,查看网页信息,发现该网页被植入了赌博网站的暗链

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

2.判断Webshell事件发生时间

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

3.判断系统架构

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

Webshell排查

1.Windows系统排查

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

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

2.Linux系统排查

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

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

Web日志分析

1.Windows系统排查

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

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

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

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

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

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

2.Linux系统排查

在Linux系统中,常见Web中间件默认路径;

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

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

系统排查

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

1.Windows系统排查

1)用户信息排查

(1)用户信息排查

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

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

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

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

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

打开【系统信息】和【任务管理器】窗口,均可查看进程名称及其对应的执行文件。攻击者通常会模仿系统进程的命名规则来伪装,如图所示,“schost.exe”为模仿系统进程“svchost.exe”命名的恶意进程

进程信息还可以使用PCHunter工具查看,信息中黑色的条目代表微软进程;蓝色的条目代表非微软进程,可能是第三方应用程序的进程,蓝色缺少文件厂商信息的进程需多加关注;红色的条目代表可疑进程、隐藏服务、被挂钩函数。图为使用PCHunter工具查看的进程信息,其中“schost.exe”被标记为恶意进程,与使用上述方法查找的一致。

(2)服务排查。

在【系统信息】窗口中,单击【软件环境】下的【服务】,可查看服务的启动情况及其对应的启动文件。或使用【services.msc】命令,也可直接查看服务。如图所示,名称为“dBFh”的服务缺少描述内容,且其为非系统常见服务,属性中显示其通过cmd执行installed.exe程序。随后我们可进一步定位到C盘目录下的installed.exe恶意样本文件。此处的异常服务较为明显。

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

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

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

4)任务计划排查

攻击者在攻击成功后,添加任务计划往往是为了持久化控制。任务计划日志通常存放在C:\WINDOWS\System32\Tasks目录下,可以直接打开系统自带的【任务计划程序】窗口进行查看。若发现非自定义的任务计划,则较为可疑,需进行排查。图中的Autocheck、Ddrivers、WebServers为非自定义任务计划,同时,通过查看任务详情可知其操作是利用cmd执行mshta加载远程恶意文件的,为典型异常任务计划。

5)文件排查

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

(1)temp相关目录。temp指系统临时文件夹,用于存储系统临时文件。

在Windows系统中,常见temp目录主要分布在如下位置:

C:\Windows\temp;

C:\Users\Administrator\AppData\Local\temp。

在寻找可疑文件时,先重点查看攻击时间范围内的文件,然后通过文件命令来判断。

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

(2)recent相关目录。

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

C:\Documents and Settings\Administrator\recent;

C:\Documents and Settings\Default User\recent。

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

2.Linux系统排查

1)用户信息排查

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

排查中需要关注UID为0的用户,因为在一般情况下只有root用户的UID为0,其他用户的UID如果设置为0,即拥有root权限,需要重点排查。但需要注意的是,UID为0的用户也不一定都是可疑用户,如Freebsd默认存在toor用户,且UID为0,toor 在BSD官网的解释为root替代用户,属于可信的。常用的分析可疑用户的命令如表所示。

可以看到UID为0的用户除了root,还有admin。如果admin是非已知用户,那么极有可能为可疑用户,如图所示

2)进程、服务、网络连接排查

(1)在Linux系统中,可以使用【ps aux】命令查看系统进程,如图所示。

其中,USER列表示启动进程的用户名,PID列表示进程的PID值,TIME列表示进程已经运行的时间,COMMAND列表示启动进程的命令。在排查中,应优先关注CPU、内存占用较高的进程。若要强制结束进程,则可以使用【kill-9 PID】命令,如【kill-9 13009】,即可结束PID值为13009的进程。

(2)使用【netstat-anp】命令,可查看网络连接、进程、端口及对应的PID等,如图所示。排查时可优先关注对外连接的进程,或连接高危端口的进程。

(3)根据PID,使用【ls-alh/proc/PID】命令,可查看其对应的可执行程序。如使用命令【ls-alh/proc/1021】,可查询PID 为1021的可执行程序,发现文件chronyd,如图所示。

若为恶意进程,可以使用【kill-9 PID】命令结束进程,然后使用【rm-rffilename】命令删除进程。如果root用户都无法删除相关文件,那么很可能是因为文件被加上了i属性(设定文件不能被删除、改名、设定连接关系,同时不能写入或新增内容)。此时,需要使用【lsatter filename】命令查看文件属性,然后使用【chattr-i filename】命令移除i属性,进而删除文件。

(4)也可使用【lsof-p PID】命令查看PID对应的可执行程序。如使用【lsof-p1021】命令,可查询PID为1021的可执行程序,可以得到同样的结果,如图所示。

可使用【lsof-i:port】命令查看指定端口对应的可执行程序。如使用【lsof-i:18043】命令,可查询端口为18043的可执行程序,如图所示。

使用【top】命令,可以根据CPU、内存占用率查看可疑进程。如图所示,该进程占用大量CPU,因此需要进行重点关注与排查。

(5)查看隐藏进程。可以借助unhide工具排查隐藏进程。unhide是一个小巧的网络取证工具,能够发现隐藏的进程和TCP/UDP端口。该工具在Linux、UNIX、MS-Windows等操作系统中都可使用。在CentOS中安装unhide时,首先需要安装epel源(使用命令【yum-y installepel-release】),然后安装unhide(使用命令【yum-y install unhide】)。

例如,在应急响应中发现攻击者利用LD_PRELOAD劫持系统函数,将恶意动态链接库路径写入/etc/ld.so.preload(没有则创建)配置文件,使对应的恶意动态链接库文件隐藏。执行【ps】和【top】命令均无法看到恶意进程,但使用【unhideproc】命令可查出隐藏的恶意进程。图为执行的恶意程序,图为使用【ps】命令查看进程,未发现该恶意进程,图为使用unhide工具检测,发现该恶意进程

(6)使用【chkconfig--list】命令,可查看系统运行的服务,核查是否存在异常服务,如图所示。

3)开机自启动排查

攻击者在攻击成功后往往会设置开机自启动,以实现持久化控制。在Linux系统中,系统启动内核挂载根文件系统,然后启动并运行一个init程序,init是非内核进程中第一个被启动运行的,因此它的PID的值总是1,init读取其配置文件来进行初始化工作,init程序的配置文件如表所示,这里以服务器常用的CentOS操作系统举例。

init进程的任务就是运行开机启动的程序,Linux系统为不同的场合分配不同的开机启动程序,又称为“运行级别”(runlevel),如表所示。

7个运行级别分别对应7个目录,如图所示,可以看到/etc目录下的7个文件夹/rc[0-6].d其实就是/rc.d/rc[0-6].d的软链接,目的是保持与UNIX系统的兼容性

在上述每个目录下有对应的启动文件,图为软链接文件,真实文件都存放在/etc/rc.d/init.d/目录中,文件名都是“字母S[K]+两位数字+程序名”的形式。字母S表示Start,也就是启动的意思,字母K表示Kill,也就是关闭的意思

在/etc/rc.d/目录下还有init.d目录和rc.local文件,如图所示。init.d目录通常用于存放一些脚本,包括Linux系统中以rpm包安装时设定的一些服务的启动脚本,类似于Windows系统中的注册表;rc.local文件会在用户登录之前读取,在每次系统启动时都会执行一次,也就是说,如果有任何需要在系统启动时运行的工作,那么只需写入/etc/rc.d/rc.local 配置文件即可。

因此,在进行应急响应处置时应重点关注以下目录文件(依系统而定):

/etc/inittab;

/etc/init/*.conf;

/etc/systemd/system;

/etc/rc.d/rdN.d;

/etc/rc.d/local;

/etc/rc.d/init.d。

4)定时任务排查

在应急响应中,定时任务也是重要的排查点,攻击者通常用其进行持久化控制。一般常用的【crontab-l】命令是用户级别的,保存在/var/spool/cron/{user}中,每个用户都可以使用【crontab-e】命令编辑自己的定时任务列表。而/etc/crontab是系统级别的定时任务,只有root账户可以修改。另外,还需要注意的有/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly等周期性执行脚本的目录。例如,攻击者若想每日执行一个脚本,则只需将脚本放到/etc/cron.daily下,并且赋予执行权限即可。

(1)使用【crontab-l】命令,可查看当前用户的定时任务,检查是否有后门木马程序启动相关信息。如图所示,发现存在每隔23分钟向远程网盘下载恶意文件的服务。

(2)使用【ls/etc/cron*】命令,可查看etc目录系统级定时任务相关文件。通过排查发现,在cron.hourly目录下存在恶意oanacroner文件,其每小时会从恶意网盘下载恶意文件并执行,如图所示。

5)rootkit排查

rootkit是一种特殊的恶意软件,功能是在安装目标上隐藏自身及指定的文件、进程和网络连接等信息。rootkit一般会与木马、后门等其他恶意程序结合使用。

(1)在对应目录使用【ls-alt/bin】命令,可查看相关系统命令的修改时间,判断是否有更改,如图

(2)在指定目录使用【ls-alh/bin】命令,可查看相关文件大小,若明显偏大,则很可能被替换,如图所示。

(3)使用【rpm-Va】命令,可查看发生过变化的软件包,若一切校验结果均正常,则不会产生任何输出,图是正常的校验结果。

(4)还可以使用第三方查杀工具,如chkrootkit、rkhunter进行查杀。使用chkrootkit,若出现INFECTED,则说明检测出系统后门。使用rkhunter,在出现异常时,会进行标记并突出显示。需要注意的是,在使用前应将工具更新为最新版本。chkrootkit运行结果如图所示,rkhunter运行结果如图所示。

6)文件排查

通过对一些敏感文件及敏感目录的排查,可判断是否存在攻击者的攻击存留文件,以及修改访问过的文件。

(1)使用【ls-al】命令,可查看隐藏的文件

(2)使用【find/-mtime 0】命令,可查看最近24小时内修改过的文件,如图

(3)使用【stat filename】命令,可查看文件的修改、创建、访问时间。例如,使用【stat echo】命令,可查看echo文件的相关属性信息,如图所示。应重点关注与事件发生时间接近的文件的情况,或者修改、创建、访问时间存在逻辑错误的文件的情况。

(4)使用【ls-alh/tmp】命令,可查看/tmp目录文件,发现“.beacon”恶意文件,如图所示。

(5)使用【ls-alh/root/.ssh/】命令,可查看是否存在恶意的ssh公钥,一旦发现非已知ssh公钥,则很可能是攻击者写入的。如图所示,发现在某个kali主机上生成的ssh公钥

日志排查

操作系统日志记录着系统及其各种服务运行的细节,对于溯源攻击者的操作有非常重要的作用。但在大多数Webshell应急响应中,进行日志排查的情况较少,以下进行简要介绍。

1.Windows系统排查

(1)查看安全日志,多关注其中的特殊事件,如事件ID为4728,指“已向启用了安全性的全局组中添加某个成员”,表示添加账户操作,如图所示。

表中是Webshell应急响应中应重点关注的事件ID,在溯源分析时可参考进行分析。

(2)在%SystemRoot%\System32\Winevt\Logs目录下还存在大量其他日志,

例如,远程桌面会话日志会记录通过RDP登录的信息,包含登录源网络地址、登录用户等,在Webshell应急响应中也应当关注。其中,事件ID为21,表示远程桌面会话登录成功;事件ID为24,表示远程桌面会话断开连接;事件ID为25,表示远程桌面会话重新连接成功。图是远程桌面会话登录成功日志。

2.Linux系统排查

Linux系统日志一般位于/var/log目录下,几乎保存了系统所有的操作记录,包括用户认证时产生的日志、系统定期执行任务计划时产生的日志、系统某些守护进程产生的日志、系统邮件日志、内核信息等。

表为Webshell应急响应常见的系统日志。

3.数据库日志排查

数据库日志同样在Webshell应急响应中较少使用,以下进行简要介绍。

1)MySQL日志在Windows系统中,MySQL的默认配置路径为

C:\Windows\my.ini、C:\Windows\mysql\my.ini。

在Linux系统中,MySQL的默认配置路径为/etc/mysql/my.cnf。查看是否开启日志审计,若开启,则将显示日志路径。

常规MySQL日志记录配置见表。

MySQL常见的日志记录格式如图所示。

查看Webshell当前的用户,若是MySQL,则很可能是通过MySQL漏洞攻击进来的;若是httpd,则说明可能是通过Web攻击进来的。

2)SQL Server日志

可以直接利用日志文件查看器分析SQL Server日志,如图所示。

网络流量排查

网络流量排查主要利用现场部署的网络安全设备,通过网络流量排查分析以下内容:服务器高危行为、Webshell连接行为、数据库危险操作、邮件违规行为、非法外连行为、异常账户登录行为等,为有效溯源提供强有力的支撑。排查发现的告警文件help.jsp   如图所示。

在缺少流量分析设备时,Windows系统可以借助抓包工具Wireshark辅助分析

需要注意的是,若数据包中带有z0、eval、base64_decode,则该数据包很可能是中国菜刀客户端连接一句话木马时产生的

若数据包中带有特殊的Referer、Accept-Language,则一般是攻击者利用Weevely Webshell工具连接产生的,如图所示。

如果攻击者在攻击成功后利用msf中的 reverse_tcp上线,那么在Wireshark数据包中一般会有PSH标志位,如图所示

清除加固

清除加固的方法如下:

(1)处置时先断网,清理发现的Webshell;

(2)如果网站被挂黑链或者被篡改首页,那么应删除篡改内容,同时务必审计源码,保证源码中不存在恶意添加的内容;

(3)在系统排查后,及时清理系统中隐藏的后门及攻击者操作的内容,若发现存在rootkit类后门,则建议重装系统;

(4)对排查过程中发现的漏洞利用点进行修补,切断攻击路径,必要时可以做黑盒渗透测试,全面发现应用漏洞;

(5)待上述操作处置完成,重新恢复网站运行。

典型处置案例

网站后台登录页面被篡改

1.事件背景

在2018年11月29日4时47分,某网站管理员发现网站后台登录页面被篡改,“中招”服务器为Windows系统,应用采用Java语言开发,所使用的中间件为Tomcat。

2.事件处置

1)Webshell排查

利用D盾对网站目录进行扫描,发现Webshell痕迹

查看对应的文件内容,确认为Webshell,如图所示。通过D盾的扫描结果定位Webshell文件位于网站root根目录(\root\indexweb4.jsp),文件的创建时间为2018年11月23日5时55分,如图所示。

2)Web日志分析

进一步分析Web日志。Web应用运行在Tomcat 中间件上,查看Tomcat的配置文件server.xml,发现其中的日志配置项被注释,即未启用日志,因此导致无Web日志记录,如图所示。

对系统后台进行人工排查,发现系统对互联网开放,且管理员与其他角色用户均使用相同弱密码“asd123”。系统显示攻击者在2018年11月29日4时47分左右通过网站管理后台对登录界面Logo进行了篡改。同时,经排查发现Tomcat中间件使用了弱密码“tomcat”,攻击者可以轻易登录probe监控系统,如图所示。

逆向分析病毒文件,查看此恶意程序攻击行为,可基本确定其对应挖矿木马特征,可见攻击者不仅篡改网页,同时还植入挖矿程序进行挖矿,如图

4)系统日志分析

通过事件查看器筛选分析安全日志(security.evtx),发现36979条审核记录

分析系统登录日志发现,自2018年11月2日起至网页篡改发现时,存在大量RDP远程桌面暴力破解攻击行为与IPC暴力破解攻击行为,且存在多个异常RDP远程桌面登录记录,涉及的源IP有125.68.10.14(四川德阳)、104.222.32.79(美国)、77.77.98.81(伊朗),说明此前已存在攻击者通过暴力破解RDP服务登录到服务器的情况,如图所示。

5)问题总结

综上,对发现的线索梳理如下:

(1)服务器于2018年11月23日被上传了Webshell网页木马文件;

(2)Web应用后台存在弱密码;

(3)中间件后台存在弱密码;

(4)服务器未开启Web日志记录功能;

(5)服务器于2018年11月23日就存在挖矿木马的恶意程序;

(6)服务器于2018年11月2日就被RDP暴力破解并被远程登录。

综上分析,由于页面是通过后台Logo上传功能进行篡改的,因此推测攻击者在2018年11月29日通过后台弱密码登录系统并执行了篡改Logo操作。但在此前系统已经被入侵控制,甚至在2018年11月2日就已经被RDP暴力破解并被远程登录。由于服务器未开启Web日志记录功能,且存在较多漏洞,因此给溯源定位带来困难。

3.根除及恢复

(1)暂停相关业务服务,对遗留网页木马(Webshell)和攻击者工具进行移除;

(2)对服务器启用的服务进行安全加固,关闭不用的端口和服务,减小攻击面;

(3)当前启用的服务器因未开启Web访问日志记录给溯源带来一定困难,后续应开启Web访问日志记录;

(4)避免使用弱密码,并定期对服务器进行病毒查杀,减小攻击面,提升服务器的安全防护能力

参考书籍

网络安全应急响应技术实战指南

应急响应webshell指的是对于网络攻击中利用Web应用漏洞植入的恶意脚本进行应急处理及消除的过程。 首先,当发现系统中存在Webshell时,需要立即进行紧急处置。首要任务是确定受到攻击的服务器是否被完全控制,并尽快切断服务器与外部网络的连接,防止进一步的恶意操作和信息泄漏。 接着,需要分析并确定Webshell的来源,包括被攻击的Web应用程序、操作系统的漏洞或者网络设备的安全风险等,以便进一步修复漏洞和强化系统安全防护。 在查杀Webshell时,可以通过以下步骤进行: 1. 隔离受感染的服务器,确保不会进一步感染其他系统。 2. 分析Webshell的特征和行为,并使用防病毒软件进行扫描查杀。 3. 删除或修复被攻击的Web应用程序,修复系统漏洞,同时更新操作系统和相关补丁,加强系统安全性。 4. 对服务器上的所有账号密码进行修改,并确保使用强密码策略,以防止重新被攻击。 5. 监控服务器日志,确定是否有其他的疑似入侵行为,及时采取应对措施。 6. 恢复服务器服务,重启Web服务和其他相关服务。 最后,应对Webshell攻击的关键是预防。加强安全意识培训,及时更新和升级系统和应用程序,部署防火墙、入侵检测系统等安全设备,进行定期安全审计和漏洞扫描,并配置合理的安全策略和权限控制,以最大程度减少Webshell的攻击风险。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

战神/calmness

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值