韩一是划水通信公司的一名安服,某天在日常巡检的过程中发现客户网站被入侵并挂了黑页,他意识到自己需要应急哥的帮助,于是他毫不犹豫地给你打电话。请你找出攻击痕迹并还原攻击链,服务器已经处于网络隔离状态,排查出并清理攻击者留存的恶意文件,将web服务恢复正常,保证服务器不存在安全问题,在做应急处置、溯源的过程中请给发现存在的脆弱点加固建议
下载靶机并使用VMware Workstation打开:
随后使用账号密码登录:
用户:admin
密码:Aa123456
运行靶机中的"答题.exe"即可查看对应的题目
关联题目如下所示:
1.攻击者在黑页上留下的疑似黑客ID是?(末尾不带空格)
2.攻击者在什么时间修改了网站主页?(右键文件属性复制粘贴)
3.攻击者写入的第一个webshell文件名是?
4.攻击者写入的第二个webshell文件名是?
5.第二个webshell的连接密码是?
6.攻击者新建的隐藏账户是?
7.日志分析,隐藏账户创建时间是?(答案格式:2024/12/3 9:16:23)
8.添加隐藏账户进管理员组的时间是?(答案格式同上题)
9.攻击者在什么时间从文件中读取保留的密钥?(答案格式同上题)
10.隐藏账户通过(PTH)哈希传递攻击登录的时间是?
11.攻击者上传的两个CobaltStrike木马文件名是?(答案格式:"A.exe和B.exe")
靶机的第一个问题是"攻击者在黑页上留下的疑似黑客ID是?",这一个我们需要访问WEB服务并查看黑页的具体内容,于是我们可以直接进入到phpstudy的安装目录中去启动服务随后在本地访问WEB服务,从下面的界面可以看到黑客ID为"X123567X"
靶机的第二个问题是"攻击者在什么时间修改了网站主页?",这一个我们可以直接定位到网站的WEB路径下的index.php文件的修改时间——2023年11月6日,4:55:13
靶机的第三个问题是"攻击者写入的第一个webshell文件名是?",关于这个问题我们在WEB根目录下面无法直接看到对应的webshell文件,我们可以通过后面查杀工具D盾进行检测
从扫描结果中可以知晓第一个webshell的文件名称为SystemConfig.php,时间为2023-11-06 04:41:37,第二个webshell的文件名称为syscon.php,时间为2023-11-06 04:44:34
靶机的第四个问题是"攻击者写入的第二个webshell文件名是?",这一个我们在上面的扫描结果中已经得到了——syscon.php,时间为2023-11-06 04:44:34
靶机的第五个问题是"第二个webshell的连接密码是?",我们直接查看syscon.php文件内容可以看到对应的连接密码为——pass
靶机的第六个问题是"攻击者新建的隐藏账户是?",这个问题其实在我们登录系统的时候就已经看到了——admin$
当然我们也可以直接从计算机管理中查看到对应的隐藏账户-admin$
靶机的第七个问题是"日志分析,隐藏账户创建时间是?(答案格式:2024/12/3 9:16:23)",在这里我们需要对系统日志进行分析查看,在CMD中输入"eventvwr.msc"进入到事件查看器中,随后通过检索Event ID为"4720"的创建用户的日志我们可以明确的得到隐藏账户被创建的时间
随后可以看到如下检索结果,从中可以看到隐藏账户admin$是在2023/11/6 4:45:34创建的
备注:下面是常见的关于用户操作类的日志记录:
4624 登录成功
4625 登录失败,如果有人尝试破解系统密码,可以看到大量连续登录失败信息
4726 删除用户
4722 账号启用
4725 账号禁用
4723 修改密码
4724 重置密码
4634 注销成功
4647 用户启动的注销
4672 管理员登录
4720 创建用户,使用系统漏洞攻击成功后,往往会创建一个用户,方便远程登录
4732 加入安全组,常见于将新用户加入管理员组
4733 移除出安全组
4684 通过登陆界面登陆的
靶机的第八个问题是"添加隐藏账户进管理员组的时间是?(答案格式同上题)",关于这一个问题我们搜索4732事件即可——2023/11/6 4:46:07
靶机的第九个问题是"攻击者在什么时间从文件中读取保留的密钥?(答案格式同上题)",我们可以直接检索关键事件"5058"获取到对应的密钥读取操作记录,获取到对应的时间节点——2023/11/6 4:46:58
靶机的第十个问题是"隐藏账户通过(PTH)哈希传递攻击登录的时间是?",关于这个问题我们可以根据时间点来缩小排查范围
由于在PHT攻击时需要传递NTML Hash值且为登录类操作,所以我们重点关注Logon类型且身份验证数据报文为NTLM的,随后找到如下报文,确定对应的时间点——2023/11/6 4:47:28
靶机的第十一个问题是"攻击者上传的两个CobaltStrike木马文件名是?(答案格式:"A.exe和B.exe")",在这里我们使用D-Eyes进行辅助排查,首先下载安装包并在当前目录下以管理员权限运行CMD,随后执行以下命令检索C盘的可疑文件内容信息
D-Eyes.exe fs
同时我们也可以执行以下命令来检索可疑的进程信息:
D-Eyes.exe ps
最后会给出扫描后整理的结果:
通过执行以下命令获取计划任务信息:
D-Eyes.exe task
从上面的执行结果中发现可疑的计划任务信息,随后转到对应的目录下进行查看,未找到对应的文件:
联想到当前操作系统为Windows 10,默认自带Windows Defender,随后去查看Windows defender的隔离区
从下面的保护历史记录中我们可以发现异常文件:SysonmT.exe、SystemTemp.exe
下面我们来还原一下整个攻击链路,由于我们服务器上只部署了WEB服务,所以我们排查的重点主要集中在攻击者如何通过WEB服务漏洞实施的入侵,在这里我们使用360星图进行分析,首先在星图中配置日志文件的存放路径,随后运行星图软件进行日志分析
随后即可查看对应的分析结果:
不过这里的txt格式不是那么很友好,尤其是我们进行数据检索分析的时候,所以我们可以将其转换为Excel进行分析操作:
随后我们筛选状态码为200的日志,时间日期升序排序
随后我们对状态为200的日志按照时序从低到高进行着行查看,以最初的webshell访问时间为分水岭,往更早时间去回溯可以推断出漏洞利用点,往更晚的时间去分析相关异常可以得到攻击者利用webshell进行深入攻击的路径,这里我们以命令执行的时间点2023/11/6 4:36:56为分水岭进行先前和向后分析:
(1) 先前分析
从状态为200的请求先前可以看到请求了一次www.zip,我们直接转到WEB目录下可以看到确实存在www.zip压缩包,内容为网站的源码
通过查看源代码我们在inc\conn.info.php文件中发现MySQL的root账号密码,
而我们的web路径中有phpmyadmin,所以可以尝试使用账户密码进行登录操作:
随后获取到ohpmyadmin的权限
由于中间存在一段时间差,所以我们推测攻击者是否通过phpmyadmin来getshell:
从我们星图的分析中我们也看到有对应的phpmyadmin访问记录,同时看到了phpmyadmin/index.php记录,说明有登录成功
随后我们在phpmyadmin中执行以下命令查看是否有对文件写入做权限限制——无:
show global variables like "%secure%'
在这里可以直接执行以下命令来写webshell:
select "<?php echo 'SecTest';?>" into outfile 'C:\\phpstudy_pro\\WWW\\test.php';
随后我们对可疑的访问日志进行分析:
根据上面的URL请求特征不难看出这里是进行了SQL注入攻击,于是我们直接来到最后一个SQL语句构造处并对执行的SQL语句进行解码,从中可以看到这里的"INTO OUTFILE"操作,这个其实就是SQLmap的--os-shell的操作,其原理就是通过文件写入函数(INTO OUTFILE)落地一个有上传功能的脚本,随后再通过这个上传脚本进行上传命令执行的后门,但根据综合日志分析以及异常文件历史痕迹分析,该操作并未成功,但可以确定的是该payload插入利用的路径大概率存在SQL注入漏洞,因为SQLMAP在验证注入点的确真实存在之后才能执行OS-Shell的操作
随后对数据进行HEX解码
随后保存解码后的文件并访问可以看到这里是构造了一个文件上传的表单:
时间节点:
首先将黑页代码进行删除并把隐藏的正常代码文件名index.php.bak更改为index.php
取消隐藏属性
访问网站时可以看到攻击者发布的内容信息
随后我们登录后台并删除发布的内容即可(这里密码没试出来就不做尝试了)
随后我们需要清理之前扫描出来的webshell后门文件
以及对CS文件进行隔离删除:
https://learn.microsoft.com/zh-cn/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-5058