高校网络安全管理运维赛
Phishing

一开始就看到一个奇怪的程序,不知道什么作用,先留着

根据题目描述和文件结构,是一个针对游戏用户的钓鱼攻击:
- 攻击者诱导用户打开
helpme.chm帮助文件,然后 CHM文件执行恶意代码,最后 释放DLL文件进行劫持攻击
1 | hh.exe -decompile extracted helpme.chm |
先解压这个chm文件,然后会得到一个html文件test.html文件包含恶意JavaScript代码:
1 | <head> |
审计发现
- 页面加载时自动执行 command() 函数
- 函数将一段Base64编码的数据通过echo命令写入 reversed.zip 文件
- 文件名 reversed.zip 暗示数据可能被反转
将base64解码后: 000000001a2000000052000100010000,显然不是一个zip的标准文件头,反转后可得到
1 | import base64 |
解压这个normal.zip文件可以得到一个dll文件:filename.dll
尝试提取可读字符串:
1 | import re |
C:\Users\hasay\source\repos\DllHijacking_in_HonkaiStarRail\x64\Release\DllHijacking_in_HonkaiStarRail.pdb
- 项目名称:DllHijacking_in_HonkaiStarRail
- 这是一个针对《崩坏:星穹铁道》的DLL劫持程序
1 | 1. CHM文件本质是编译后的HTML帮助文件 |
原理就是运行程序会触发dll劫持,显示flag,但是这个程序运行不起来,所以直接分析文件内的字符串获取flag:
flag{the_Security_level_of_HonkaiStarRail_is_???}
DNS分身术

使用指令查询dns,根据提示可能存在多个地区多个厂商返回的内容是不一样的
中国香港 地区的查询返回了:”5o_we_gEt_The_wh01e_fl@g}”并且给了提示
1 | ──(root㉿kali)-[/home/kali/Desktop] |
查询电信地区:202.96.0.0/16返回中间flag: “1t_depends_0n_ECS“
1 | ┌──(root㉿kali)-[/home/kali/Desktop] |
然后猜测高校域名可能也有东西,接着查询
教育网(清华大学) → 59.66.0.0/16:”flag{DNS_V1eW_1s_P0w3rfu1”
1 | dig @ns3.dnsv2.com +subnet=59.66.0.0/16 flag1.cyberopschallenge.cn TXT |
完整:flag{DNS_V1eW_1s_P0w3rfu1_1t_depends_0n_ECS_5o_we_gEt_The_wh01e_fl@g}
flag2:
查询返回flag2.cyberopschallenge.cn TXT
1 | "Hint: Query flag2.cyberopschallenge.cn for the second flag, but it requires authorized network access (Authorized Networks: 172.32.255.0/24 and 172.33.255.255)" |
根据提示可以找到第二部分flag和提示
1 | dig @ns3.dnsv2.com +subnet=172.32.255.1/24 flag2.cyberopschallenge.cn TXT |
“There are two levels of trust… Only the ‘chosen one’ at 172.33.255.255 can see the complete secret. you must ask who is in charge: the highest authority”
1 | dig @ns3.dnsv2.com +subnet=172.33.255.255/32 flag2.cyberopschallenge.cn TXT |
从得到的记录中可以筛选出:W1th_TCP_Supp0rt}
完整flag:flag{Auth0r1z3d_N3tw0rk_W1th_TCP_Supp0rt}
网络运维小助手



1 | flag{S@y-the-w0rd} |
校园网络保卫战

Flag 1 (动态指令):
题目描述:
该程序启动后会尝试连接一个远程的C2(命令与控制)服务器来获取一个动态的“行动指令”,这个指令就是 Flag 1。你需要弄清楚程序是如何构建通信URL、如何进行身份验证的,并最终获得这个指令。攻击者似乎把它藏在了某个公开的代码托管平台上。
已知flag是一个指令,且藏在公开代码托管平台,第一反应就是github
进到主函数后查看1eb0函数果然发现了github的相关字样

审计一下这一串代码作用和函数可能的作用,分析发现这个函数是一个 从远程 URL(很可能是 GitHub)下载数据、解码并返回解析结果 的网络数据获取与处理函数

注意一下开头的两个函数,一个是用来获取url,一个可能就是来获取验证的token了
1880函数里,可以凑出完整的url

这里存着数据

完整url:https://api.github.com/repos/fwhong/srclog/contents/Ameroyt2dstg.txt
1A00函数里存着token,并且使用了0x42异或,解密出完整的token


1 | github_pat_11BM4SPEA0****************** # Token已隐藏(三段拼接) |
1 |
|

1 | 245919c3bdc2b6c29d27431dc3a8c2bec5a01d581dc385c3bac28d7b5649c2a9c2acc39d265019c3bec2afc5a0275305 |
往下翻函数到sub_401D30可以发现,吧这个数据进行了两次编码使用MultiByteToWideChar(CP_UTF8)和WideCharToMultiByte(CP1252)

编码完后会进入check函数,这里用key来循环异或
1 | 0x42,0x35,0x78,0x9A,0xCD,0xEF |

解密就是解两次码加异或
1 | #!/usr/bin/env python3 |

flag2: (静态后门密码): 除了远程指令,程序内部还硬编码了一个用于紧急情况下激活所有后门权限的“主控密码”,它就是 Flag 2。攻击者使用了一套加密算法(包括字节替换、位旋转和多层异或)来保护它。你需要剥茧抽丝,逆向解密算法,还原出原始的密码。
题目已经提示了加密算法的具体内容,只需要找到密文和具体加密算法就可以拿到flag2
这是flag的部分,一眼输入后就一个2270函数,然后直接check,确定是加密函数了 ,提取buf2的密文

1 | 0x94,0x58,0xB2,0x65,0xE6,0xF2,0x42,0xAF,0x40,0xBA,0xE7,0x7C,0xA8,0x9E,0xA6,0x4A, |
加密函数扔分析一正向加密步骤:
- 异或0x33:
input[i] = input[i] ^ 0x33 - S-box替换:
input[i] = sbox[input[i]] - 循环右移3位:
input[i] = ROR(input[i], 3) - 索引异或:
input[i] = input[i] ^ (i - 86)
注意这里的算法的sbox是靠算法生成的,使用SIMD指令生成,这下图就是在生成sbox的算法

下面就是右移,带索引异或

写解密脚本
1 | #!/usr/bin/env python3 |




