2023陇剑杯初赛复现
数据分析-HW
哥斯拉 流量分析
hard_web_1
1 | 服务器开放了哪些端口,请按照端口大小顺序提交答案,并以英文逗号隔开(如服务器开放了80 81 82 83端口,则答案为80,81,82,83) |
80,888,8888
首先进去,后找到http流量,可以得知服务器ip为192.168.162.180

TCP连接:SYN ACK RST UTG PSH FIN
三次握手:发送端发送一个SYN=1,ACK=0标志的数据包给接收端,请求进行连接,这是第一次握手;接收端收到请求并且允许连接的话,就会发送一个SYN=1,ACK=1标志的数据包给发送端,告诉它,可以通讯了,并且让发送端发送一个确认数据包,这是第二次握手;最后,发送端发送一个SYN=0,ACK=1的数据包给接收端,告诉它连接已被确认,这就是第三次握手。之后,一个TCP连接建立,开始通讯。
所以如果成功建立连接的话,服务器会发送一个synack字段
所以我们可以筛选
1 | ip.dst == 192.168.162.188 and tcp.connection.synack |
或者
1 | tcp.flags.syn == 1 && tcp.flags.ack == 1 |

得知开放了80,888,8888端口
hard_web_2
1 | 服务器中根目录下的flag值是多少 |
flag{9236b29d-5488-41e6-a04b-53b0d8276542}
需要分析webshell
分析流量,可以看到


网站中有了shell.jsp流量,疑似上传了木马

同时可以得到webshell的内容
采用了AES-128加密payload和返回的内容,密钥是748007e861908c031
1 | 解密哥斯拉流量: |
1 | 哥斯拉流量核心特征 |
解密最后一个shell流量

可以得到flag

hard_web_3
1 | 该webshell的连接密码是多少 |
14mk3y
倒数第五个请求解密之后可以看到



md5查询获得秘钥

数据分析-WS
Wireshark1_1
1 | 被入侵主机的IP是? |
192.168.246.28
过滤tcp流量

根据tcp的握手规则,可以得知被入侵的ip为192.168.246.28
Wireshark1_2
1 | 被入侵主机的口令是? |
youcannevergetthis

Wireshark1_3
1 | 用户目录下第二个文件夹的名称是? |
Downloads
执行了ls命令

Wireshark1_4
1 | /etc/passwd中倒数第二个用户的用户名是? |
mysql

数据分析-SS
sevrer save_1
1 | 黑客是使用什么漏洞来拿下root权限的。格式为:CVE-2020-114514 本题附件见于平台公告的SS.zip,解压密码为c77ad47ba4c85fae66f08ec12e0085dd |
CVE-2022-22965
打开流量包,观察导出对象列表,可以发现最后进行了命令执行


在流105之前的流104中,有greeting

关键词搜索得到

sevrer save_2
1 | 黑客反弹shell的ip和端口是什么,格式为:10.0.0.1:4444 |
192.168.43.128:2333

sevrer save_3
1 | 黑客的病毒名称是什么? 格式为:filename |
main
流量中没什么东西了,去文件中看看

同时目录中的.log.txt 文件也能看出端倪

把main丢进微步沙箱中,

可以进一步确实,main为木马文件
sevrer save_4
1 | 黑客的病毒运行后创建了什么用户?请将回答用户名与密码:username:password |
ll:123456
在/etc/passwd和/etc/shadow可以分别发现用户名和密码

sevrer save_5
1 | 服务器在被入侵时外网ip是多少? 格式为:10.10.0.1 |
172.105.202.239
在之前的log文件中可以得知外网ip

sevrer save_6
1 | 病毒运行后释放了什么文件?格式:文件1,文件2 |
lolMiner,mine_doge.sh
根据微步的分析,加之log文件可知为lolMiner,mine_doge.sh

sevrer save_7
1 | 矿池地址是什么? 格式:domain:1234 |
doge.millpools.cc:5567

sevrer save_8
1 | 黑客的钱包地址是多少?格式:xx:xxxxxxxx |
DRXz1q6ys8Ao2KnPbtb7jQhPjDSqtwmNN9.lolMinerWorker
同上
数据分析-EW
ez_web_1
1 | 题目内容:服务器自带的后门文件名是什么?(含文件后缀) |
ViewMore.php
看导出对象,最后基本是d00r.php,并且进行了命令执行


搜索d00r.php可以发现,最开始在ViewMore.php文件下写了d00r.php,可得知自带的后门文件为ViewMore.php

ez_web_2
1 | 题目内容:服务器的内网IP是多少? |
192.168.101.132
在之后的流量中可以看到执行了ifconfig查看

ez_web_3
1 | 题目内容:攻击者往服务器中写入的key是什么? |
7d9ddff2-2d67-4eba-9e48-b91c26c42337

同时在之前的看到密码

解url编码后解base64后解压可得

数据分析-SSW
SmallSword_1
1 | 连接蚁剑的正确密码是______________?(答案示例:123asd) |
6ea280898e404bfabd0ebb702327b18f
进入后在导出对象中发现了sql联合注入的痕迹

在流74中发现了写入木马

显然蚁剑密码是6ea280898e404bfabd0ebb702327b18f但是不对,在之后的执行命令的流中可以发现变为了6ea280898e404bfabd0ebb702327b19f
中间隔着几个tls流量,貌似改变了密钥

SmallSword_2
1 | 攻击者留存的值是______________?(答案示例:d1c3f0d3-68bb-4d85-a337-fb97cf99ee2e) |
ad6269b7-3ce2-4ae8-b97f-f259515e7a91
搜索antsword在某一个流中发现有hacker.txt,攻击者的留存值大概就在这

然后找一下前后流量

SmallSword_3
1 | 题目内容:攻击者下载到的flag是______________?(答案示例:flag3{uuid}) |
flag3{8f0dffac-5801-44a9-bd49-e66192ce4f57}
在130和137的tcp流的相应包中都发现了exe程序的踪影


解码发现和huorong.exe有关

将130的流中的另存为,010编辑把MZ头之前的删除,运行程序

在上层目录中发现了一张图片,但是貌似高度不对,随波逐流改一下

数据分析-BF
baby_forensics_1
1 | 题目内容:磁盘中的key是多少? |
2e80307085fd2b5c49c968c323ee25d5
估计内存文件中可能会有

丢给随波逐流

baby_forensics_2
1 | 题目内容:电脑中正在运行的计算器的运行结果是多少? |
7598632541
使用vol2中的windows命令查看程序窗口句柄信息,搜索calc.exe,可以在一处找到数字

但是为了保险起见还是去程序进程那gimp一下

baby_forensics_3
1 | 题目内容:该内存文件中存在的flag值是多少? |
flag{ad9bca48-c7b0-4bd6-b6fb-aef90090bb98}
在开机自启动项目中有个便签程序,搜索得知便签文件的后缀为snt

去找一下便签的文件,导出

导出后用win7打开
用qemu将vmdk文件转为raw文件qemu-img.exe convert -p -f vmdk -O raw baby_forensics.vmdk aa.raw,然后使用passware爆破bitlocker密码
(因为passware不支持vmdk)

1 | 560604-255013-655633-128854-663223-316063-484946-476498 |
结果发现这只是一个系统盘,艹
还是老老实实找个win7打开吧

得到密文U2FsdGVkX195MCsw0ANs6/Vkjibq89YlmnDdY/dCNKRkixvAP6+B5ImXr2VIqBSp 94qfIcjQhDxPgr9G4u++pA==,然后在Music文件夹下的i4k3y文件中发现密钥q(这个在内存中搜索leet的key就能找到)


得到flag
数据分析-TP
tcpdump_1
1 | 攻击者通过暴力破解进入了某Wiki 文档,请给出登录的用户名与密码,以:拼接,比如admin:admin |
TMjpxFGQwD:123457
筛选流量

发现errcode为200的流量,username=TMjpxFGQwD&password=123457

tcpdump_2
1 | 攻击者发现软件存在越权漏洞,请给出攻击者越权使用的cookie的内容的md5值。(32位小写) |
383c74db4e32513daaa1eeb1726d7255
将cookie列为列,筛选(http) and http.cookie

观察cookie的变化可以看出从2到1,体现越权,md5即可

tcpdump_3
1 | 攻击使用jdbc漏洞读取了应用配置文件,给出配置中的数据库账号密码,以:拼接,比如root:123456 |
zyplayer:1234567
搜索jdbc

最后在jdbc的应用配置文件application.yml中发现zyplayer:1234567

tcpdump_4
1 | 攻击者又使用了CVE漏洞攻击应用,执行系统命令,请给出此CVE编号以及远程EXP的文件名,使用:拼接,比如CVE-2020-19817:exp.so |
CVE-2022-21724:custom.dtd.xml
在这个文件中,反弹了shell

同时在之前的流中

搜索可以知道cveCVE-2022-217241

tcpdump_5
1 | 给出攻击者获取系统权限后,下载的工具的名称,比如nmap |
fscan

数据分析-HD
hacked_1
1 | admIn用户的密码是什么? |
flag{WelC0m5_TO_H3re}
在wireshark中发现了登录的流量,追踪tcp流可知

上下看一下



hacked_2
1 | app.config['SECRET_KEY']值为多少? |
ssti_flask_hsfvaldb
在某一个流中


执行了命令

hacked_3
1 | flask网站由哪个用户启动? |
red
注意到cookie的session在变化

分别解密这两个cookie可得为red


hacked_4
1 | 攻击者写入的内存马的路由名叫什么?(答案里不需要加/) |
Index
注意到有一个index,解密看看

无法解密,看看之前的流


可以看到在/Index下写了内存马
数据分析-IR
1 | 你是公司的一名安全运营工程师,今日接到外部监管部门通报,你公司网络出口存在请求挖矿域名的行为。需要立即整改。经过与网络组配合,你们定位到了请求挖矿域名的内网IP是10.221.36.21。查询CMDB后得知该IP运行了公司的工时系统。(虚拟机账号密码为:root/IncidentResponsePasswd) |
OVA 文件的取证核心是对其包含的虚拟磁盘文件(如.vmdk)和配置文件(.ovf)进行解析,提取与案件相关的证据。
双击OVA 文件会在VMware中新建一个虚拟机打开,也可直接进行解压
IncidentResponse_1
1 | 挖矿程序所在路径是?(答案中如有空格均需去除,如有大写均需变为小写,使用echo -n 'strings'|md5sum|cut -d ' ' -f1获取md5值作为答案) |
6f72038a870f05cbf923633066e48881
虚拟机打开后起一下网卡,windterm连接,ls -lha --sort=t查看目录下文件的修改时间

发现最近修改了bash_history和viminfo,查看内容,在.viminfo中发现大量修改了redis的文件

查看redis的配置文件/etc/config/redis.conf,看到pools池有个奇怪的url


可以确实为redis程序,路径/etc/redis/redis-server
从文件内容看,这是 Redis 配置文件被恶意篡改植入挖矿脚本 的典型特征,以下是详细分析:
- 文件与场景识别
- 文件路径:
/etc/redis/redis.conf(Redis 核心配置文件),被篡改后注入了非 Redis 标准的配置项。 - 工具痕迹:
R-Viewer是远程文件查看工具,说明攻击者或运维可能通过远程方式访问系统文件。
- 关键恶意配置分析
1 | "url": "donate.v2.xmrig.com:3333", |
这是 XMRig 挖矿程序 的配置片段:
url:指向 XMRig 挖矿池(donate.v2.xmrig.com是知名门罗币挖矿池),用于接收挖矿指令、上报算力。user:攻击者的门罗币钱包地址,挖矿收益会转入该地址。
挖矿程序所在路径就是/etc/redis/redis-server

IncidentResponse_2
1 | 挖矿程序连接的矿池域名是?(答案中如有空格均需去除,如有大写均需变为小写,使用echo -n 'strings'|md5sum|cut -d ' ' -f1获取md5值作为答案) |
3fca20bb92d0ed67714e68704a0a4503
由上题可知

IncidentResponse_3
1 | 攻击者入侵服务器的利用的方法是?(答案中如有空格均需去除,如有大写均需变为小写,使用echo -n 'strings'|md5sum|cut -d ' ' -f1获取md5值作为答案) |
3ee726cb32f87a15d22fe55fa04c4dcd
在之前看bash_history文件发现启动了jar包

在windterm中把jar包的日志和jar包下载下来分析,在日志中看到了shiro的内容


Shiro反序列化
1 | echo -n 'shirodeserialization'|md5sum|cut -d '' -f1 |
IncidentResponse_4
1 | 攻击者的IP是?(答案中如有空格均需去除,如有大写均需变为小写,使用echo -n 'strings'|md5sum|cut -d ' ' -f1获取md5值作为答案) |
c76b4b1a5e8c9e7751af4684c6a8b2c9
获取攻击者 IP 的核心方法是从登录记录和网络访问日志中提取异常 IP,具体如下:
- 通过系统登录记录定位
执行last命令查看用户登录历史,筛选出非管理员常用的异常 IP(如陌生公网 IP、与挖矿程序植入时间吻合的登录 IP),这些 IP 大概率是攻击者通过 SSH 等方式直接登录服务器的地址。 - 通过 Nginx 访问日志定位
查看 Nginx 访问日志(tail /var/log/nginx/access.log),寻找频繁发送异常请求(如漏洞利用 Payload、恶意路径访问)的 IP,这类 IP 通常是攻击者通过 Web 漏洞(如之前提到的 JAR 包漏洞)入侵时使用的源地址。
查看登录记录



IncidentResponse_5
1 | 攻击者发起攻击时使用的User-Agent是?(答案中如有空格均需去除,如有大写均需变为小写,使用echo -n 'strings'|md5sum|cut -d ' ' -f1获取md5值作为答案) |
6ba8458f11f4044cce7a621c085bb3c6
在上上图的日志中发现攻击者的UA是Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)


IncidentResponse_6
1 | 攻击者使用了两种权限维持手段,相应的配置文件路径是?(md5加密后以a开头)(答案中如有空格均需去除,如有大写均需变为小写,使用echo -n 'strings'|md5sum|cut -d ' ' -f1获取md5值作为答案) |
a1fa1b5aeb1f97340032971c342c4258
查看ssh目录下的文件
- authorized_keys 文件:存储允许登录本服务器的 SSH 公钥。若有陌生公钥,可能是攻击者植入用于免密登录 。
cat authorized_keys输出了公钥内容,可用于排查是否有未授权公钥添加。可能是攻击者(用 Kali 系统)植入的公钥,用于后续持久化访问。 - id_rsa.pub 文件:是当前服务器的 SSH 公钥,可用于识别本服务器的 SSH 身份,若被泄露,他人可能模拟身份。
查看日志文件
Ubuntu系统对应日志文件是 /var/log/auth.log,功能与 secure 一致,记录系统认证相关事件(SSH 登录是典型场景 )。
找到该文件后进行恢复,查看分析,同样可以看到进行了公钥认证
经过爆破无果后,利用公私钥成功登录了系统,应该是通过某种方式写入了公钥,配置文件路径一般都是/root/.ssh/authorized_keys



IncidentResponse_7
1 | 攻击者使用了两种权限维持手段,相应的配置文件路径是?(md5加密后以b开头)(答案中如有空格均需去除,如有大写均需变为小写,使用echo -n 'strings'|md5sum|cut -d ' ' -f1获取md5值作为答案) |
b2c5af8ce08753894540331e5a947d35
需要寻找另一种权限维持
一、定时任务与提权检测
基础定时任务排查:执行
crontab -l,检查当前用户(如 root )是否有直接配置的定时任务,排查简单定时脚本后门。
SUID 权限审计:通过
find / -perm -u=s -type f 2>/dev/null,查找系统中带 SUID 权限的文件(此类文件因特殊权限,可能被攻击者利用提权 ),验证是否存在异常文件。

查看影子账户,没有什么东西

二、系统服务状态检测
执行 systemctl list-unit-files --type=service ,列出所有 systemd 服务的启用状态,筛选出异常启用的服务(如陌生服务、正常服务被篡改用途 ),重点标记需深度校验的服务(如案例中 redis.service )。
三、敏感服务配置审计
针对标记的可疑服务(如 redis.service ),定位其 systemd 配置文件(常规路径为 /lib/systemd/system/[服务名].service ),执行 cat [配置文件路径] 查看内容。重点检查 ExecStart 等启动指令字段,判断是否被注入恶意命令(如挖矿程序启动逻辑 ),确认服务是否被用作权限维持后门。

看到挖矿程序被间歇反复重启,故第二种维权中的配置文件路径为/lib/systemd/system/redis.service
