应急响应-MHT应急响应靶场

应急响应-MHT应急响应靶场
At4ckxu暗月:linux 服务器被黑应急响应
介绍
该靶场环境来自暗月2025培训课程,请使用web123/Abc@1234 通过ssh远程连接,如需root使用sudo -i切换,flag答题程序在桌面文件夹中,执行后答题获取最终flag |
WP
攻击者ip:192.168.10.145 |
第1题:攻击者是哪天打进来的?
如果是web端打进来,那就是webshell拿权限,分析web目录/var/www/html/是否存在恶意文件,以及日志分析
文件分析
查看web目录下是否存在恶意文件
find /var/www/html -name "*.php" -type f | xargs grep -n --color=always -B2 -A2 "base64_decode\|eval(\|gzinflate\|passthru\|shell_exec" 2>/dev/null |
发现存在shell.php文件
查看该文件
典型冰蝎码
密码:rebeyond |
确定shell.php为上传的恶意文件之后,检索日志中的shell.php
查看Apache日志
先查看access.log.1
发现最新的日志为20250630:00:09:57,此时已经post请求shell.php,响应为200,此时已经上传shell.php成功了
下载已压缩的日志分析
攻击者192.168.10.145进行了大量后门文件的扫描,第一次访问shell.php时间为:29/Jun/2025:13:22:03
继续检索
29/Jun/2025:14:32:53,访问shell.php,此时响应200,已经访问成功,此时shell.php已存在,并且Referer为http://192.168.10.107/dede/makehtml_homepage.php
猜测/dede/makehtml_homepage.php可能为漏洞存在点,攻击者通过该接口上传了shell.php
提交时间 2025-06-29
把makehtml_homepage.php提出来给ai分析一下
第2题:攻击者用于提权获取root权限的最终可执行文件名是什么?
获取shell权限->提权
查看身份验证日志auth.log,看攻击者在什么时候登录过
其中auth.log.2记录的是6.29:01:05:34之前的,而攻击者是在6.29下午两点才拿到的webshell,因此不查看该文件
查看auth.log和auth.log.1
cat auth.log.1 | grep "Accepted" |
查看登录成功的信息,发现在06-30 00:42:31登录成功
在29:05-29:24之间执行了提权操作
分析用户,查看可以登录shell的用户,与日志一致
cat /etc/passwd | grep bash |
查看用户组
重点是 root组和sudo组
查看root用户的历史命令
下载了gcc,编译了用于提权的文件rootshell
提权文件创建时间为:2025-06-30 00:53:11
第3题:攻击者最后一次创建的后门用户名是什么?
经上述分析,创建了两个后门用户,最后一次创建后门用户为backdoor
事件分析
攻击者在2025-06-29 14:32:53通过web/dede/makehtml_homepage.php接口漏洞上传webshell,获取用户web123权限,2025-06-30:00:42:31登录成功,该用户在sudo组,攻击者通过su下载gcc并编译执行提权工具rootshell获取root权限,2025-06-30 00:41:32创建后门用户sysadmin,并且将该用户加入root组和sudo组,2025-06-30 00:55:58创建后门用户backdoor,提权文件rootshell创建时间为2025-06-30 00:53:11
Linux服务器挖矿病毒应急案例
介绍
靶机来源于wxiaoge应急响应培训,请使用ssh访问机器,账户:zyr 密码:wxiaoge123 flag在用户桌面目录中,请答题获取最终flag |
WP
问题 1: 挖矿进程的command是什么?
存在挖矿,分析进程,查看cpu占用率前10的进程
存在rsync
问题 2: 最终运行的挖矿程序名称?提示:k开头
提示k开头,可以全局搜索文件
进程 PID = 2013 ⇔
/proc/2013是内核为该进程创建的“实时视图目录”
进程存在 →/proc/2013存在
进程结束 →/proc/2013立即消失
/proc是一个 伪文件系统(procfs):
- 不在磁盘上
- 内容由 内核实时生成
- 用来暴露进程、内存、CPU、打开文件等信息
所以:
/proc/2013 ≠ 一个普通目录
/proc/2013 = PID 为 2013 的进程在内核中的“镜像”
分析:
/proc/2013/attr/keycreate |
/home/zyr/.mozilla/.../key4.db |
kswapd0为实际恶意挖矿程序
/home/zyr/.cache/vmware/drag_and_drop/.../.rsync/a/kswapd0 |
并且路径特征:
~/.cache/
~/.configrc/
~/桌面/.rsync/a/
vmware/drag_and_drop/这些都是:
- 用户可写目录
- 非系统二进制路径
- 挖矿马 / 后门最爱藏身点
.rsync/a/目录(经典矿马结构)
.rsync/
└─ a/
└─ kswapd0 ← ELF 挖矿程序进程名伪装成
rsync实际执行文件叫
kswapd0两层同时伪装
问题 3: 计划任务中完整的重启计划。
进程已经知道了,挖矿进程是当前用户的,查看当前用户计划任务
crontab -l |
问题 4: Ssh 公钥免密后门文件全路径?
SSH 公钥免密后门文件全路径为:
/home/zyr/.ssh/authorized_keys |
如果是 root 用户,则是:
/root/.ssh/authorized_keys |
2025年勒索病毒排查溯源
介绍
详情 |
WP
rdp连接后,桌面上的docx、txt等文件都被加密为了LIVE后缀,并且桌面存在flag.txt.LIVE,也是被加密器加密了,直接打开显示乱码
同时存在一个txt文件,查看内容为勒索信
问题1:病毒家族的名称(不区分大小写):
到Solar在线病毒检测,输入后缀名查询病毒家族
https://www.solarsecurity.cn/detection.html
问题2:勒索病毒预留的ID:
勒索id是勒索组织对于数据恢复的一个凭证,一般勒索id会存放在以下位置
- 勒索信
- 被加密后的文件名
- 勒索信文件名
查看勒索信,预留的id在勒索信文件名中
问题3:解密并提交桌面中flag.txt.LIVE的flag:
Solar下载恢复工具
https://www.solarsecurity.cn/tools.html
用法:https://www.solarsecurity.cn/tools/35.html
问题4:Windows Defender删除攻击者C2的时间(格式示例:2070.12.13):
打开windowsDefender显示已关闭,证明可能为攻击者关闭了
可以直接查看WindowsDefender->历史记录->隔离的项目,可以看到直接删除的文件信息
这里我在查看的时候没有信息
可以去系统日志查看WindowsDefender日志
事件查看器:“应用程序和服务日志” > “Microsoft” > “Windows” > “Windows Defender” > “Operational”
windowsDefender在2025/8/25 10:43:32对Backdoor:Win64/CobaltStrike.NP!dha进行了查杀,路径为C:\Users\Administrator\Desktop\Wq12D.exe
提交攻击者关闭Windows Defender的时间
关闭Windows Defender的事件id:5001
使用fulleventlogview->查看->使用快速筛选
只存在一个事件id5001的日志
时间为2025.8.25 10:45:08
问题5:攻击者上传C2的绝对路径:
在windowsDefender日志中查看,查杀路径为C:\Users\Administrator\Desktop\Wq12D.exe,但是在桌面并没有看到该文件,说明攻击者可能将windowsDefender关闭后把后门上传到其他路径了
Everything全局搜索Wq12D.exe
C:\Users\Administrator\Downloads
但是实际情况中攻击者可能会更改后门名称,我们也可以全局查看exe文件排查
时间排序,查找2025/8/25 10:43:32之后的exe文件
问题6:攻击者C2的IP外联地址:
查看外链地址:
- 虚拟机运行该exe,查看网络连接中外连情况
- 威胁平台样本分析
192.168.186.2
8. 提交攻击者加密器绝对路径
思路:已知加密后文件拓展名为LIVE,全局搜索.LIVE文件,查看修改时间,找到最早的修改时间,加密器上传时间一定在该时间之前
2025.8.25 11.14之前,搜索在此之前的exe文件
大部分加密器为exe,很少有py,按照优先级查找
Wq12D.exe为后门程序,沙箱分析systime.exe是否为加密器
C:\Users\Administrator\Documents\systime.exe
9. 溯源黑客攻击路径,利用的哪个漏洞并推测验证
2025.8.25 10:43:32 windowsDefender查杀后门 |
攻击者的入口是什么?web?rdp爆破?
查看日志,不存在大量rdp登录失败信息
排除rdp爆破
查看网络端口,看开放了哪些服务
netstat -ano |
开放了80、8081等web端口,3306数据库端口,存在web服务
在访问12333端口时,发现为web若依
无法访问时是因为windows系统防火墙自动开启,没有将端口对外映射
搜索发现,E盘下存在ruoyi文件夹,对文件夹进行解密
查看日志,没有直接信息
爆破ruoyi shiro密钥,这里我没有爆破出来密钥,查看wp是可以爆破的
攻击者是怎么关闭的Windows defender的?
shiro rce之后,通过powershell关闭了防火墙
https://www.cnblogs.com/tomtellyou/p/16300557.html
事件分析
web端若依存在弱密钥,攻击者通过爆破若依密钥,rce,尝试上传后门文件,上传后发现被windowsDefender查杀,通过powershell关闭防火墙,关闭后上传后门文件,上传加密器、对文件进行加密从而勒索
某项目特洛伊挖矿木马靶场
介绍
https://mp.weixin.qq.com/s/cMj5vZqF4hBSeMSmqpSqZw
靶机来源于州弟学安全 题目描述: 角色: 你是一名初级安全工程师。 事件: 运维团队报告,公司的一台核心开发服务器(Ubuntu 22.04 LTS)出现CPU使用率异常飙高告警及安全设备检出外联挖矿事件。现在,你需要登录该服务器,排查并处置这一安全事件,并最终找出问题的根源。 账号:root 密码:P@ssw0rd 请使用ssh远程 flag获取请运行ulabflag,完成答题获取 |
本次环境是在8月份的一次勒索排查项目中遇到的,先描述一下当时情况
- 某日某客户被勒索病毒加密
- 我方经过排查和溯源后找到漏洞点,并在后续进入客户需求与数据恢复工作和安全运营的工作
- 安全运营期间,通过奇安信天眼发现有外出挖矿流量
- 在上机排查后发现属实,程序表现为以下特征:
- 挖矿程序和计划任务删除提示:无权限(当时以root权限运行)
- 使用busybox删除挖矿程序与计划任务成功
- 但当使用sudo、以及wget后,挖矿程序和计划任务再次重现
根据此类木马特征和服务器业务开放情况判断,可能是运维、开发人员安装了非官方程序或U盘内存在病毒文件导致感染,当运行了程序后会释放挖矿文件和感染常用可执行文件的情况,并且会感染
stat、rm等对应文件,导致stat无法查看文件创建时间和删除挖矿程序(无权限),执行ls -la sudo后发现修改时间在6月份,时间已经过去两个月,溯源难度大且不确定此类程序是否在运行并感染后自删除,根据经验先行进行应急响应,而后将完成流程进行复现汇报
题目信息: |
WP
1. 提交挖矿文件的绝对路径,最终以flag{/xxx/xxx}格式提交
存在挖矿,查看CPU占用信息
使用top查看cpu
回显为空,可能为以下三种原因
- alias改别名:程序自动化或人为更改了别名,在执行指定的命令后,会按照修改后的别名显示出对应结果
- 环境变量劫持:这里在直播中强调,如在:tmp目录下创建一个top,其中输出打印123,修改环境变量$PATH,当再次执行top后则会输出123
- top程序被感染:也就是特洛伊等病毒的特征,会自动化感染其它文件,达到所谓永生
查看别名
alias |
top的别名的确被修改,执行top会echo空
删除别名,查看是否删除,重新执行top
unalias top |
发现存在PID为356,Command为kworkerds的进程,cpu占用率在30%上下,对比其他进程不合理
定位程序位置:
lsof -p 356 |
txt表示可执行文本段(executable text),这是进程正在运行的可执行文件本身。每个进程的lsof输出中:
txt指向的就是进程的可执行程序文件- 这通常是程序二进制文件本身
mem表示该进程当前映射到内存中的共享库文件(这里是libc库),这通常是:
- 进程动态链接的共享库
- 通过
mmap()映射到进程地址空间的库文件
找到对应的该文件,查看字符串内容
strings kworkerds |
{"id": 1, "method": "login", "params": {"login": "%s", "pass": "x", "agent": "%s"}}这是典型的加密货币矿机连接到矿池的登录协议格式(通常是XMR/门罗币矿工)。
/tmp/kworkerds.pid程序会创建PID文件
根据特征:
CPU占用、所在目录(可执行文件在tmp目录下、可在对运维核实确认后作为佐证)、其中字符等,暂时判定为它是挖矿文件的决定路径
2. 提交挖矿文件的外联的IP与端口,最终以flag{ip:port}格式提交
- 沙箱分析
- ss查看
识别为木马,但是无网络行为
无网络行为不代表不存在外联行为,可能只是沙箱没有检测到,或者样本对沙箱有检测等原因
使用ss -tanpan|grep “kworker”筛选相关程序的外联情况
发现ss可以看到内容,而netstat无法看到内容
ss能看到而netstat看不到,本质原因是:ss直接读取内核的 socket 状态,而netstat依赖用户态的进程映射与旧接口,容易被“隐藏”。
还有一种是可以使用lsof -p pid去查看,运行完毕后就可以看到
但是我这里运行之后无法看到外链情况
还有一种情况是我们执行ss以后没有结果,有可能是因为这个程序外联有心跳机制,第一个可能规避频繁外联的检测,第二个就是无需长连接校验(业务有关),就像我们的C2一样,有心跳机制
flag{104.21.6.99:10235}
3. 停止挖矿进程并尝试删除挖矿程序,根据异常判断,提交守护进程脚本的绝对路径
尝试删除病毒和kill进程
删除时,提示无权限,但当前为root用户
两种情况:
- 感染程序
- 文件属性锁
文件属性锁,也就是chattr,他会将我们的文件进行锁住,可以自定义是否增删改的权限,执行lsattr /tmp/kworkerds(chattr负责加锁、lsattr负责查看属性)
先查看是否有文件属性锁
lsattr /tmp/kworkerds |
说明此时无文件属性锁,要考虑感染,是否为rm命令被感染
我们猜测rm命令被感染,尝试使用其他去删除文件
使用busybox中的rm删除文件
busybox rm -rf /tmp/kworkerds |
两个问题
- 系统中存在计划任务,导致定时写入挖矿文件
- 有程序被感染,当感染后会检查挖矿进程是否存在、挖矿程序是否存在,不存在则释放和运行
排查计划任务
crontab -l |
cat /etc/crontab |
都没有看到计划任务
ls -la /etc/cron* |
其中的内容为:每分钟、每天、每小时、每月、每周,当把文件存放到里面以后,会按照规律进行启动,类似于Windows中的计划任务
依次排查,根据特征(刚删除文件立马就创建了),排查每分钟
cat /etc/cron.d/0guardian |
每次执行该计划任务脚本时,会执行/usr/bin/.0guardian的脚本
跟踪查看
cat /usr/bin/.0guardian |
脚本内容为执行stat /tmp
此时的stat命令已经被感染了
stat命令可以帮助我们查看此文件的创建时间、最后修改时间等,但是当我们想要试图查看这个计划任务脚本和挖矿程序的创建和修改时间时,结果为空,但是查看passwd文件却成功,这说明stat被感染后又做了篡改逻辑,在其中加了类似于”白名单”机制,组织我们进一步追溯
strings查看stat命令
strings /usr/bin/stat |
猜测该部分为被修改的白名单
通过特征:每分钟运行、守护进程脚本为隐藏文件、stat的异常行为,最终确认:/usr/bin/.0guardian为守护进程脚本,目的是为了让挖矿程序和进程重生
计划任务(每分钟)->调用守护进程脚本->调用stat命令->检查挖矿程序是否存在、进程是否存活->如有则退出->如没有则释放程序和启动进程
问题 4: 分析病毒文件逻辑,提交感染程序名,最终以md5(/usr/bin/whoai,/usr/bin/ls,/usr/bin/top)后的密文进行提交,比如e10adc3949ba59abbe56e057f20f883e,顺序需以病毒文件中为准
需要逆向查看源码, 一般逆向前,先使用DIE查看一下此程序有无加壳,什么语言编写的,这是一个正常的流程
未加壳,并且程序为c语言写
c语言入口为main函数
后续IDA分析
6. 修复系统并恢复文件完整性
我们通过刚才的逆向得知,wget也被感染了,那使用apt源进行更新的时候,就会调用wget进行下载,这是不安全的,其次就是当服务器中招以后,我们需要进行断网排查的,以免横向感染
所以除了杀毒软件进行清除,我们还可以利用如图的程序进行离线覆盖更新,执行命令:dpkg -i --force-overwrite *.deb会自动安装覆盖所有的感染程序























































































