第二届国赛ISW

小路是一名网络安全网管,据反映发现公司主机上有异常外联信息,据回忆前段时间执行过某些更新脚本(已删除),现在需要协助小路同学进行网络安全应急响应分析,查找木马,进一步分析,寻找攻击源头,获取攻击者主机权限获取flag文件。(入口主机请通过ssh进行登录,登录口令为:ubuntu/admin_123456,如需root权限请使用sudo;附件第一层解压密码:5e9c5e0370a9c29816b44dfbe2ae5a8d,第二层解压密码:81c7e0d7a82ee016e304fb847c31e497)。请根据以下问题进行提交提交:
题目1:找出主机上木马回连的主控端服务器IP地址[不定时(3~5分钟)周期性],并以flag{MD5}形式提交,其中MD5加密目标的原始字符串格式IP:port。
题目2:找出主机上驻留的远控木马文件本体,计算该文件的MD5, 结果提交形式: flag{md5}
题目3:找出主机上加载远控木马的持久化程序(下载者),其功能为下载并执行远控木马,计算该文件的MD5, 结果提交形式:flag{MD5}。
题目4:查找题目3中持久化程序(下载者)的植入痕迹,计算持久化程序植入时的原始名称MD5(仅计算文件名称字符串MD5),并提交对应flag{MD5}。
题目5:分析题目2中找到的远控木马,获取木马通信加密密钥, 结果提交形式:flag{通信加密密钥}。
题目6:分析题目3中持久化程序(下载者),找到攻击者分发远控木马使用的服务器,并获取该服务器权限,找到flag,结果提交形式:flag{xxxx}。tips:压缩包密码最后一位为.
题目7:获取题目2中找到的远控木马的主控端服务器权限,查找flag文件,结果提交形式:flag{xxxx}

题目1

rstdio打开raw附件,在home下可以看见有一个1.txt打开里面是下载一个system_upgrade这个文件在

image-20260401215832092

image-20260401220032412

在同一目录下面可以看见有system-upgrade.service这个文件的完整路径,所以可能是下载的恶意文件执行之后创建了systemd 服务,找到这个文件打开里面只指示到system-upgrade.ko这个elf,恢复文件之后ida打开,查找字符串中里面除了主机地址还有一个地址

image-20260401220218030

192.168.57.203:4948

所以是flag{59110f555b5e5cd0a8713a447b082d63}

image-20260401220517158

题目2

远控木马文件应该就是同一函数里面的systemd-agentd

在字符串中可以看到路径是/lib/systemd/systemd-agentd

恢复之后用工具查md5值就可以了

image-20260402115224258

flag{bccad26b665ca175cd02aca2903d8b1e}

题目3

下载并且执行木马应该是system-upgrade.service这个服务文件

image-20260402115755991

flag{78edba7cbd107eb6e3d2f90f5eca734e}

题目4

植入痕迹,应该就是weget这个命令,下载了一个叫.system_upgrade的文件

image-20260402120358233

flag{9729aaace6c83b11b17b6bc3b340d00b}

题目5

分析我们拿到的第二个文件,字符串找到通信的函数sub_40641D分析

密钥地址就是unk_4BEFFD,然后异或一个0x69就能得到flag

image-20260402121257212

flag{ThIS_1S_th3_S3cR3t_fl@g}

题目6和7好像是渗透,看网上说 是一个rop栈溢出,由于没环境就不复现了

公交车系统攻击事件排查

给的两个网址第一个是web服务的,题目描述中给了ssh连接的密码,可以直接连接第二个

image-20260402195307329

然后先查看一下服务和端口,可以看到这里有三个服务,mysql只针对本机开放,然后还有web和ssh,而且可以看到web服务是apache2的,所以可以查看其日志

image-20260402195903325

在Linux系统中,Web访问日志的存放位置取决于所使用的Web服务器类型及其配置。大多数情况下,这些日志位于/var/log目录下,但具体路径会因服务器软件和发行版不同而有所差异。
常见Web服务器默认日志路径:
Apache HTTP Server
Debian/Ubuntu 系统:/var/log/apache2/access.log
RHEL/CentOS 系统:/var/log/httpd/access_log
Nginx 默认路径:/var/log/nginx/access.log
Lighttpd 默认路径:/var/log/lighttpd/access.log

查看日志前面基本都是search.php的文件请求,后面都是shell1.php的,大概是利用search.php里的漏洞然后拿到shell的吧

image-20260402221410034

2.黑客通过获取的用户名密码,利用密码复用技术,爆破了FTP服务,分析流量以后找到开放的FTP端口,并找到黑客登录成功后获取的私密文件,提交其文件中内容,提交格式:flag{xxx}

在根目录下还有一个pcap流量包

image-20260403102119640

scp提取出来

image-20260403104336307

流量分析可以知道攻击者的ip地址

image-20260403104414659

ftp分析

wireshark把它当作了TCP协议,而且FTP是有特征的,比如successfully

1
tcp.port==2121&&tcp contains "successfully"

在追踪流里面看到wangqing这个用户的密码以及它下载了敏感凭证

image-20260403105500687

私密文件如下

image-20260403110245067

flag{INTERNAL_FTP_ADMIN_PASSWORD=FtpP@ssw0rd_For_Admin_Backup_2025}

3.可恶的黑客找到了任意文件上传点,你需要分析日志和流量以及web开放的程序找到黑客上传的文件,提交木马使用的密码,提交格式:flag{password}

http分析

前面一堆都是在base编码的sql语言

image-20260403111705562

image-20260403111906801

往后翻可以看到上传了图片马

image-20260403111936187

往下继续追踪流,上传了shell1.php

密码是woaiwojia,还有key

image-20260403112409641

flag{woaiwojia}

4.分析流量,黑客植入了一个web挖矿木马,这个木马现实情况下会在用户访问后消耗用户的资源进行挖矿(本环境已做无害化处理),提交黑客上传这个文件时的初始名称,提交格式:flag{xxx.xxx}

攻击者是通过web任意文件上传控制了主机权限,然后还请求了27次

从最后面的数据包开始分析,很明显的哥斯拉加密

image-20260403153921079

image-20260403154502138

再往上一点的

image-20260403154633945

image-20260403154800514

所以把index.php删掉了换成了map.php

flag{map.php}

5.分析流量并上机排查,黑客植入的网页挖矿木马所使用的矿池地址是什么,提交矿池地址(排查完毕后可以尝试删除它)提交格式:flag{xxxxxxx.xxxx.xxx:xxxx}

访问web服务的index.php,里面有一个混淆代码,拿出来解码直接字符串还原就可以了

image-20260403161454422

所以矿池是gulf.moneroocean.stream:10128

flag{gulf.moneroocean.stream:10128}

zui的使用

安装玩brim之后cmd打开该路径

1
brimcap analyze (pcap文件路径) > sample.zng

将生成的zng文件放到zui里面分析

image-20260403082244013

count() by id.orig_h | sort -r count 统计每个源IP 的请求数量

id.orig_h == 192.168.1.100 筛选来自源IP 的所有流量

count() by id.resp_h | sort -r count 统计每个目的IP 接受的请求数

count() by uri | status_code == 200 | sort -r count 每个url成功次数

uri contains “/api/“ 筛选含有特定的url

count() by uri | sort -r count | head 10 访问量前十的url

count() by hour(ts) | sort hour(ts) 按小时统计请求数量

ts >= “2023-10-01 08:00:00” and ts <= “2023-10-01 12:00:00” 筛选特定时间

段的流量

count() by dayofweek(ts) | sort dayofweek(ts) 统计每天请求量的变化

count() by status_code | sort -r count 统计不同HTTP状态码的分布

status_code >= 400 筛选所有错误状态码(4xx 客户端错误或 5xx 服务器错误)

status_code == 404 | table id.orig_h, uri, ts 查看特定状态码(如 404 未找到)

的请求详情

id.orig_h == 10.0.0.5 and status_code >= 400 and ts >= “2023-10-01 00:00:00” 特定 IP 在特定时间段的错误请求

count() by id.orig_h, uri | uri == “/login” and status_code != 200 | sort -r count 统计某 URI 被不同 IP 访问的次数(排除成功请求)

使用count () by id.orig_h,status_code,uri|status_code==200 | sort -r count命令查看成功的都是什么,从这里也能看到大部分都是search.php

image-20260403102432977