简介:这是一份面向AWD线下赛选手与网络攻防学习者的工具与资料合集,围绕攻击与防御实战场景,整合了代码审计、流量监控、远程连接、端口扫描等常用工具及配套学习资料,适合具备一定渗透测试基础、希望系统备赛或查漏补缺的参赛者。压缩包共115个文件,约92.7MB,以php、exe、dll、css、conf、js等类型为主,涵盖Web脚本、可执行程序、动态库与配置文件,另有少量py、jar、aspx、jsp等脚本与文档,覆盖工具运行与配置所需的多类组件。资源中既有OWASP ZAP、Burp Suite、Wireshark、tcpdump、Nmap、masscan等工具的部署文件,也包含SSH、TeamViewer、RDP等远程管理组件,并附带AWD教程、策略指南与往届案例分析,便于理解比赛规则、复盘攻防思路。目前已有2619人学习下载,可作为线下赛备赛与日常攻防练习的参考工具集。
1. 从一场被打穿的线下赛说起:这套 AWD 工具集到底装了什么
去年秋天某高校内部对抗赛,我带的队伍在第三轮被对手用两个弱口令加一个未修复的上传点直接打穿,三台靶机权限全丢。复盘时发现,问题不在技术储备,而在响应速度——对手从扫描到拿到 flag 只用了四分钟,我们还在手动翻日志。那之后我开始系统整理一套 AWD 线下赛必备的工具集合,也就是今天要拆的这份资源。它不是某个单一漏洞利用脚本,而是把网络攻防场景里最耗时的几个环节——资产发现、权限维持、流量分析、批量利用——打包成可快速部署的模块。适合已经打过一两次比赛、想补齐工具链短板的选手,也适合负责搭建内部靶场环境的运维人员。如果你还在用零散脚本拼凑流程,这套东西能帮你省掉大量重复造轮子的时间。
2. 工具集拆解:从目录结构看设计意图
2.1 顶层目录与模块划分
拿到压缩包后先别急着运行,花五分钟看目录结构能避免后面很多弯路。我习惯用tree -L 2快速过一遍,重点关注三类目录:scanner/、exploit/、monitor/。scanner下通常放资产探测和端口扫描的封装脚本,exploit是按漏洞类型分类的利用模块,monitor则负责流量捕获和异常告警。这套工具集的一个明显特点是每个模块都有独立的config.yaml,而不是全局配置一把梭。这样做的好处是你可以只启用需要的模块,减少资源占用和误报干扰。
# 查看目录结构,重点关注二级目录 tree -L 2 ./awd-toolkit # 输出示例(节选) # ./awd-toolkit # ├── scanner # │ ├── port_scan.py # │ ├── dir_brute.py # │ └── config.yaml # ├── exploit # │ ├── web_upload.py # │ ├── weak_pass.py # │ └── config.yaml # └── monitor # ├── traffic_capture.py # ├── alert_rule.yaml # └── config.yaml上面这段命令只是看结构,不涉及任何攻击行为。参数-L 2限制递归深度,避免目录太深刷屏。如果你在比赛现场时间紧,至少确认exploit/下有没有你熟悉的漏洞类型,没有的话后面批量利用会很难受。
2.2 核心脚本的参数设计逻辑
以scanner/port_scan.py为例,它的参数设计比一般扫描器更贴近比赛节奏。默认超时设得很短,只有 0.5 秒,因为线下赛靶机都在内网,延迟极低,设长了纯属浪费时间。并发数默认 200,但可以通过-t调整。我一般会先跑一遍全端口快速扫描,再针对开放端口做服务识别。
# port_scan.py 核心参数片段(示意) import argparse parser = argparse.ArgumentParser() parser.add_argument("-i", "--ip", required=True, help="目标IP或网段") parser.add_argument("-p", "--ports", default="1-65535", help="端口范围") parser.add_argument("-t", "--threads", type=int, default=200, help="并发线程数") parser.add_argument("--timeout", type=float, default=0.5, help="单端口超时秒数") args = parser.parse_args() # 逻辑说明: # 1. 默认全端口扫描,适合内网靶机场景 # 2. 超时0.5秒是平衡速度和准确率的结果,再低容易漏报 # 3. 线程数200在普通笔记本上不会打满CPU,但能跑满千兆内网参数调整建议:如果靶机数量多,把--timeout降到 0.3,-t提到 300,但要注意本机文件描述符限制,Linux 下先ulimit -n 65535。Windows 下建议用 WSL 跑,原生环境并发一高就卡死,这是血泪经验。
2.3 配置文件的优先级与覆盖规则
这套工具集另一个值得说的点是配置加载顺序:命令行参数 > 环境变量 > 模块config.yaml> 全局默认值。这意味着你可以在比赛前把常用目标网段写进config.yaml,现场直接用命令行覆盖个别参数。比如monitor/config.yaml里可以预设告警阈值,但临时想调高灵敏度,直接加--threshold 0.3就行。
# monitor/config.yaml 示例 capture: interface: eth0 filter: "tcp port 80 or tcp port 443" alert: threshold: 0.5 # 异常评分阈值,越低越敏感 window: 60 # 统计窗口秒数 action: "log" # 可选 log / block / notifythreshold这个参数很关键。设 0.5 时误报少但可能漏掉慢速攻击,设 0.3 能抓到更多异常但日志会刷得很快。我一般比赛前半段设 0.3 观察,后半段调回 0.5 减少干扰。action字段建议先设log,确认规则没问题再改block,否则容易把自己人拦了。
3. 部署与实战流程:从零到跑通一次完整响应
3.1 环境准备与依赖安装
这套工具集依赖 Python 3.8+ 和几个常见库:scapy用于流量处理,requests用于 Web 交互,pyyaml读配置。不建议在 Windows 原生环境跑,scapy的抓包权限和性能都有问题。我一般用 Ubuntu 20.04 或 Kali 的 WSL2 环境,网络模式选桥接,这样能直接看到靶机流量。
# 创建虚拟环境并安装依赖 python3 -m venv venv source venv/bin/activate pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple # 检查关键库版本 python -c "import scapy; print(scapy.__version__)" python -c "import requests; print(requests.__version__)"requirements.txt里通常锁了版本号,不要随意升级。我有次手贱把scapy升到最新版,结果抓包过滤器语法变了,排查了半小时才发现是版本问题。如果 pip 安装慢,换国内源,但注意有些内网比赛环境完全断外网,提前在能联网的机器上把 wheel 包下好。
3.2 资产发现与端口扫描的联动
比赛开始后第一件事不是急着打,而是摸清自己负责的靶机有哪些端口开放。这套工具集支持把扫描结果直接喂给后续模块,省去手动整理。具体做法是port_scan.py输出 JSON 格式,然后exploit模块读取这个 JSON 作为目标列表。
# 第一步:扫描网段,输出JSON python scanner/port_scan.py -i 192.168.1.0/24 -p 1-65535 -t 300 --timeout 0.3 -o result.json # 第二步:查看开放端口统计 python -c " import json data = json.load(open('result.json')) for ip, ports in data.items(): print(f'{ip}: {len(ports)} open ports -> {ports[:10]}') "-o result.json是输出文件参数,不指定的话只打印到屏幕。第二步的统计脚本能帮你快速判断哪些靶机是重点目标——开放端口多的通常服务多,攻击面大。注意192.168.1.0/24这种网段写法,如果你的靶机在10.0.0.0/24,记得改。扫描结果里如果出现大量filtered状态,说明有防火墙,别硬扫,换 UDP 或分片扫描试试。
3.3 权限维持与流量监控的配合
拿到权限后最怕的是被对手挤掉。这套工具集的monitor模块可以在你拿到 shell 后启动,监控是否有异常登录或文件改动。同时exploit模块里的weak_pass.py可以帮你批量检查自己靶机的弱口令,提前加固。
# 启动流量监控,后台运行 nohup python monitor/traffic_capture.py -i eth0 --filter "tcp port 22 or tcp port 80" --threshold 0.3 > monitor.log 2>&1 & # 检查自己靶机的弱口令 python exploit/weak_pass.py -i 192.168.1.10 -u admin -p passwords.txt --delay 0.1nohup和&让监控在后台跑,> monitor.log保存日志。--delay 0.1是每次尝试的间隔,设太小会被目标封 IP,设太大又慢。我一般设 0.1 到 0.2 之间。passwords.txt是你自己准备的字典,建议包含常见弱口令和比赛环境可能用的默认密码。注意这个脚本只用于检查自己的靶机,别拿去扫别人的,线下赛有明确规则。
4. 避坑与排查:那些比赛现场容易翻车的地方
4.1 扫描太快导致靶机服务崩溃
现象:跑完端口扫描后,目标 Web 服务返回 502,SSH 连不上。原因:并发线程数设太高,靶机本身性能弱,被扫崩了。有些比赛靶机是容器跑的,资源限制很死。解决:把-t降到 50 以下,--timeout提到 1 秒。如果已经崩了,等两分钟再试,或者联系裁判重启靶机。我现在的习惯是先用-t 20慢扫一遍,确认服务稳定再提速。
4.2 配置文件路径写错导致模块不生效
现象:改了config.yaml里的阈值,但运行结果没变化。原因:工具集默认从当前工作目录找config.yaml,如果你在别的目录执行脚本,它读的是默认值。解决:要么cd到模块目录再执行,要么用--config /path/to/config.yaml显式指定。我一般在脚本里加一行os.chdir(os.path.dirname(__file__))强制切换,但这样会影响相对路径输出,需要权衡。
4.3 流量监控抓不到包
现象:traffic_capture.py启动后日志空白,没有任何流量记录。原因:网卡选错了,或者没有抓包权限。WSL2 下默认网卡是eth0,但如果你用桥接模式,可能是eth1或其他名字。解决:先用ip addr或ifconfig确认网卡名,再用-i指定。权限问题用sudo跑,或者给 Python 加cap_net_raw能力:sudo setcap cap_net_raw+eip $(which python3)。注意后者有安全风险,比赛环境用完记得撤销。
4.4 批量利用脚本被目标封 IP
现象:weak_pass.py跑了几十个请求后全部超时,换 IP 才能继续。原因:目标有频率限制或入侵检测,短时间内大量失败登录触发封禁。解决:加大--delay,或者用代理池轮换。但线下赛通常不允许用代理,那就只能降低速度,或者换其他攻击路径。我一般会先手动试两三个密码,确认没有封禁机制再跑批量。
4.5 权限维持脚本被对手发现并利用
现象:自己留的后门被对手找到,反过来控制了我的靶机。原因:后门脚本没有做隐藏,或者用了默认端口和密码。解决:后门端口改随机高位端口,密码用随机字符串,文件属性改成隐藏。这套工具集里的exploit模块有简单的隐藏选项,但别依赖它,自己手动改更靠谱。比赛里我见过太多人因为后门太明显被反杀。
5. 进阶技巧:把工具集改成适合自己手速的形态
比赛打多了你会发现,原版工具集再全,也不如自己改过的顺手。我现在的做法是保留核心扫描和监控模块,把利用脚本全部重写成带交互确认的版本——每打一个目标前弹一次确认,避免手滑打错 IP。另外把常用命令封装成 shell 函数,比如awd-scan直接调扫描并输出精简结果,awd-mon启动监控并 tail 日志。
# 在 ~/.bashrc 里加两个函数 awd-scan() { python /path/to/scanner/port_scan.py -i "$1" -p 1-65535 -t 100 --timeout 0.5 -o /tmp/scan_$(date +%s).json echo "Scan done. Result saved to /tmp/" } awd-mon() { sudo python /path/to/monitor/traffic_capture.py -i eth0 --threshold 0.3 --action log }这两个函数省去了每次敲长命令的时间,$1让你直接传网段。/tmp/scan_$(date +%s).json用时间戳命名,避免覆盖。注意awd-mon用了sudo,因为抓包需要权限。如果你在比赛环境,提前把sudo设成免密,否则每次输密码太耽误事。
还有一个技巧是给exploit模块加一个--dry-run参数,只打印将要执行的操作而不实际发送请求。这样在不确定目标状态时可以先跑一遍看看逻辑对不对。实现方式很简单,在发送请求前加一个if args.dry_run: print(payload); return就行。我靠这个习惯避免了好几次误操作,尤其是打自己人靶机的时候。
验证工具集是否配置正确,我一般会用一个本地起的测试靶机跑全流程:扫描、发现漏洞、利用、维持权限、监控告警。全部跑通再上比赛环境。这套流程走一遍大概十分钟,但能省掉现场排查的半小时。从那以后我每次赛前都强制走一遍完整验证,哪怕工具集没改过。希望帮到你。
本文还有配套的精品资源,点击获取