1. AWD竞赛模式深度解析
AWD(Attack With Defense)是近年来CTF竞赛中最具实战性的赛制模式,模拟了真实网络攻防对抗场景。与传统的解题赛(Jeopardy)不同,AWD要求参赛队伍在防守己方服务的同时,攻击其他队伍的服务,这种攻防一体的模式对选手的综合能力提出了更高要求。
1.1 典型AWD环境拓扑
标准AWD比赛通常采用以下网络架构:
- 每支队伍分配独立靶机(通常为Web应用)
- 所有靶机部署在同一内网环境
- 裁判机实时监控各靶机服务状态
- 共享flag提交接口(每3-5分钟刷新一轮)
bash复制# 典型网络拓扑示意
[Team1 靶机] --\
[裁判服务器] -- [计分板]
[Team2 靶机] --/
1.2 核心得分机制
比赛得分由三个维度构成:
- 攻击得分:获取其他队伍flag并成功提交(每轮flag有效期为3-5分钟)
- 防守得分:保持自身服务持续可用(服务宕机即扣分)
- 额外加分:完成主办方设置的特定挑战(如修复0day漏洞)
关键提示:成熟的AWD策略要求攻击与防守的时间分配比例约为3:7,过度侧重攻击往往导致防守失分。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 防御体系构建实战
2.1 初始加固四步法
接到靶机后的前10分钟是黄金加固期,建议按以下顺序操作:
- 服务隔离
- 修改所有默认密码(包括SSH、数据库、后台等)
- 关闭非必要端口(
netstat -tulnp排查) - 限制SSH访问IP(通过
/etc/hosts.allow)
bash复制# 示例:紧急关闭非必要端口
sudo ufw default deny
sudo ufw allow 80/tcp
sudo ufw allow 22/tcp # 建议修改为非常用端口
sudo ufw enable
-
漏洞快速修复
- 查找已知漏洞文件(重点检查上传、命令执行、反序列化等功能点)
- 临时修补方案:
- 删除危险函数(如
eval、system) - 重命名敏感文件(如
admin.php→[随机字符串].php)
- 删除危险函数(如
-
监控部署
- 文件监控:
inotifywait -m -r /var/www/html - 进程监控:
nohup ./monitor.sh &(监控关键进程CPU占用)
- 文件监控:
-
备份机制
- 定时备份网站目录和数据库(建议每10分钟1次)
- 保留多个备份版本(
tar -zcvf backup_$(date +%s).tar.gz /var/www/html)
2.2 高级防御策略
2.2.1 动态防御技术
- 诱饵文件部署:在web目录创建伪flag文件(如
/flag.txt含假flag) - 日志混淆:修改中间件日志格式,插入干扰信息
- 流量染色:在响应头添加特定标识(如
X-Protected-By: [随机字符串])
2.2.2 自动化监控方案
推荐使用以下监控组合:
python复制# 简易文件监控脚本示例
import hashlib, time
def file_monitor(path):
origin_md5 = {}
for root, _, files in os.walk(path):
for f in files:
p = os.path.join(root, f)
with open(p, 'rb') as fp:
origin_md5[p] = hashlib.md5(fp.read()).hexdigest()
while True:
for p in origin_md5:
with open(p, 'rb') as fp:
current_md5 = hashlib.md5(fp.read()).hexdigest()
if current_md5 != origin_md5[p]:
os.system(f"cp ./backup/{p.split('/')[-1]} {p}")
os.system(f"echo 'Alert! {p} modified' >> /var/log/awd.log")
time.sleep(30)
3. 攻击战术全解析
3.1 常规攻击路径
3.1.1 漏洞扫描三板斧
- 基础扫描:
- 目录爆破(推荐工具:dirsearch)
- 敏感文件探测(如
phpinfo.php,backup.sql)
bash复制python3 dirsearch.py -u http://target.com -e php,asp,aspx,jsp
-
参数FUZZ:
- 测试所有输入点(GET/POST参数、Cookie、Headers)
- 重点检测:
- SQL注入(
'", sleep(5), benchmark等) - XSS(
<script>alert(1)</script>) - 命令注入(
;id,|ls,$(whoami))
- SQL注入(
-
框架漏洞:
- 识别CMS/框架版本(如
X-Powered-By响应头) - 搜索对应版本的历史漏洞
- 识别CMS/框架版本(如
3.1.2 攻击自动化实现
建议编写自动化攻击脚本处理以下流程:
- 批量获取目标IP
- 漏洞检测与利用
- flag提取与提交
python复制# 简易flag提交脚本示例
import requests
targets = ['192.168.1.1', '192.168.1.2'] # 目标IP列表
flag_pattern = r'flag\{[a-f0-9]{32}\}' # flag正则匹配
for ip in targets:
try:
r = requests.get(f'http://{ip}/vuln.php?cmd=cat+/flag')
flags = re.findall(flag_pattern, r.text)
for flag in flags:
requests.post('http://scoreboard/submit',
data={'team': 'your_team', 'flag': flag})
except:
continue
3.2 高级攻击技巧
3.2.1 权限维持技术
-
Webshell隐藏技巧:
- 使用
.htaccess设置特殊后缀解析(如xxx.abc解析为PHP) - 利用环境变量存储恶意代码(
putenv('EVIL=system');)
- 使用
-
隐蔽通信通道:
- DNS隧道(通过DNS查询传输数据)
- HTTP头部隐藏通信(如Cookie字段编码传输)
3.2.2 对抗防御策略
当遇到加固目标时,可尝试:
-
流量伪装:
- 修改User-Agent为合法浏览器标识
- 请求间隔加入随机延迟(
time.sleep(random.uniform(1,3)))
-
逻辑漏洞挖掘:
- 重点检查密码重置、权限校验等业务逻辑
- 测试越权访问(如
/admin.php?uid=1改为其他用户ID)
4. 实战问题排查手册
4.1 常见异常处理
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 服务突然宕机 | 被植入恶意进程占用资源 | `kill -9 $(ps aux |
| 网站文件被篡改 | 存在未修复的上传漏洞 | 恢复备份并检查upload目录权限 |
| 数据库连接失败 | 其他队伍删除数据库用户 | 使用备份SQL重建用户权限 |
4.2 性能优化技巧
-
资源限制:
bash复制# 限制PHP进程资源(防止CPU被挖矿脚本占满) sudo sed -i 's/memory_limit = .*/memory_limit = 64M/' /etc/php/7.4/fpm/php.ini -
连接数控制:
nginx复制# Nginx连接限制配置 http { limit_conn_zone $binary_remote_addr zone=perip:10m; server { limit_conn perip 10; } }
5. 团队协作与分工
5.1 角色分配建议
-
防御专员(1人):
- 负责服务监控与应急响应
- 维护自动化防御脚本
-
攻击手(2人):
- 分工进行漏洞挖掘和利用
- 一人负责常规漏洞扫描,一人专注逻辑漏洞
-
自由人(1人):
- 协助攻防两端
- 负责flag提交和分数监控
5.2 通信规范
- 使用加密通信工具(如Slack私密频道)
- 关键操作前团队确认(如大规模攻击前检查备份状态)
- 建立标准化报告格式:
code复制[时间] [操作类型] [目标] 示例: 14:30 [攻击] 192.168.5.3 发现SQL注入,已获取flag 14:32 [防御] 本机检测到异常登录,已封禁IP
在真实AWD比赛中,我们团队曾通过精细化分工在开局不利的情况下实现逆转。防御专员通过实时监控在20秒内发现并阻断了webshell上传,而攻击手则利用其他队伍忙于防守的时间差,集中爆破拿下了3个关键flag。这种攻防节奏的把握,往往比单纯的技术能力更重要。
