第二届“长城杯” 铁人三项赛应急响应wp(部分)
这次应急响应前面考察了木马程序分析和渗透
错过了第一届长城杯,那时候自己很摆,懒得打。打了第十七届ciscn,第一次去线下,第一次接触awdp,直接狠狠爆零,坐牢一天,什么奖都没拿到。不过好像awdp爆零和我一个re手也没有太大关系。
这一次,一年过后,我要夺回属于自己的一切。这一次也是运气好,分到了陕西赛区,以及好几个强队初赛被ban了,目标是打进决赛,虽然坎坷,但是还是稳稳拿下了。
早上awdp打完二十多名,感觉决赛无望了,还好下午爆种了,打了个第四名,要不然真的要寄了。贴个最终的得分图,这个分数在别的赛区可能不够看,但是这是陕西赛区,嘻嘻。小路是一名网络安全网管,据反映发现公司主机上有异常外联信息,据回忆前段时间执行过某些更新脚本(已删除),现在需要协助小路同学进行网络安全应急响应分析,查找木马,进一步分析,寻找攻击源头,获取攻击者主机权限获取 flag 文件。
入口主机请通过 ssh 进行登录,登录口令为:ubuntu/admin_123456,如需 root 权限请使用 sudo;
- 第一层解压密码:
5e9c5e0370a9c29816b44dfbe2ae5a8d - 第二层解压密码:
81c7e0d7a82ee016e304fb847c31e497
题目1:找出主机上木马回连的主控端服务器IP地址[不定时(3~5分钟)周期性],并以flag{MD5}形式提交,其中MD5加密目标的原始字符串格式IP:port。
flag{59110f555b5e5cd0a8713a447b082d63}
这道题怎么说呢?一言难尽,以为是最早能打出来的,没想到是比赛的时候最晚做出来的。聪明的队友直接全局爆搜ip地址,以为能秒杀,没想到藏在木马加载器里面,这个加载器所有的函数名基本都是被混淆了,一开始爆搜到了192.168.57.203和端口8080在一起,直接交了,发现不对
后面跟进这个ID...函数才发现后面的4948应该是端口号,试了一下就出了
题目2:找出主机上驻留的远控木马文件本体,计算该文件的MD5, 结果提交形式: flag{md5}
flag{bccad26b665ca175cd02aca2903d8b1e}
我其实是先找到木马加载器,然后才找到木马的,通过木马加载器找木马还是比较简单的。这几个名字都比较可疑,木马加载器哪里来和system有关的内容
所以直接在镜像里面搜文件名,是能直接搜到,直接试试,发现就是木马文件
题目3:找出主机上加载远控木马的持久化程序(下载者),其功能为下载并执行远控木马,计算该文件的MD5, 结果提交形式:flag{MD5}。
flag{78edba7cbd107eb6e3d2f90f5eca734e}
这一题当时好像拿的是一血,因为拿了500分没有衰减,也是我应急响应找到的flag。先讲一下做题过程吧,第一题不是全局搜了ip地址吗?然后发现靶机的历史命令有ping了两个ip地址,直接去匹配,然后发现了这个文件
这题当时出的也是很懵逼,突然就出了,而且这个比赛比较阴的是我出了不知道是出了哪个flag,全靠运气出的这个第一个,一开始还和队友说,出了第二题的flag。后面分析这个程序,发现好像只是一个下载和执行器,那就是第三题的东西了。
题目4:查找题目3中持久化程序(下载者)的植入痕迹,计算持久化程序植入时的原始名称MD5(仅计算文件名称字符串MD5),并提交对应flag{MD5}。
flag{9729aaace6c83b11b17b6bc3b340d00b}
这一题算是队友找到的,他发现有个被删除的1.txt下面有内容,特别是flag被/分割开来了,感觉就有东西。我想了想,发现这就是第四题的植入时的原名。用ida也能看见wget命令啥的。
题目5:分析题目 2 中找到的远控木马,获取木马通信加密密钥, 结果提交形式:flag{通信加密密钥}
flag{ThIS_1S_th3_S3cR3t_fl@g}
这题比赛的时候没做出来,看见一大堆东西,就不想分析。这里参考2025 长城杯 & 国赛 半决赛 ISW | Target Machines WriteUp这篇博客。当时比赛的时候还以为是明文密钥,队友说应急六七题没有思路,于是三个人一起来木马文件里面找明文密钥,现在想起来有点唐了。
比赛的时候也看见这段内容了,但是没有咋想,因为好像连程序的逻辑都没有搞清楚,也就不知道密钥去哪里找。unk这段就是密文,看看在哪里被调用了,交叉引用过去能找到一个函数,对每个字符都进行了异或0x69的操作
enc=[0x3D, 0x01, 0x20, 0x3A, 0x36, 0x58, 0x3A, 0x36, 0x1D,
0x01, 0x5A, 0x36, 0x3A, 0x5A, 0x0A, 0x3B, 0x5A, 0x1D, 0x36,
0x0F, 0x05, 0x29]
flag=''
for i in range(len(enc)):
enc[i]=enc[i]^0x69
flag+=chr(enc[i])
print(flag)
#ThIS_1S_th3_S3cR3t_fl@g题目6:分析题目 3 中持久化程序(下载者),找到攻击者分发远控木马使用的服务器,并获取该服务器权限,找到 flag,结果提交形式:flag{xxxx} tips:压缩包密码最后一位为.
比赛的时候就没有思路,当时的思路是找第四题那个mirror网站,不知道这个思路对不对,但是感觉最后几题应该也没那么好打,找到网站还得打进去,所以就放弃了。
题目7:获取题目 2 中找到的远控木马的主控端服务器权限,查找 flag 文件,结果提交形式:flag{xxxx}
这题应该得联系第一题的ip地址,但是我出了第一题的时候,距离比赛结束就剩十几分钟了,这道题肯定打不出来。