
简介本资源是一套面向CTF竞赛AWD攻防模式的实战工具集专为安全研究人员、红队成员及CTF备赛选手设计解决攻防对抗中自动化监控、快速响应与环境部署等核心需求。压缩包共16个文件涵盖5个动态链接库dll、4个可执行程序exe、1个规则数据库db、1个PDF文档MobaXterm使用指南、1个Python脚本minitor.py用于实时监控、1个Markdown说明文件README.md及ini配置、dat规则、zip备份等辅助文件整体23.49MB结构紧凑且即开即用。已有1287人学习下载体现了其在实战演练中的实用价值。使用者可直接部署D盾、Seay源代码审计系统、MobaXterm终端及x32/x64模块化组件结合监控脚本与配置文件快速构建AWD靶机响应体系掌握从环境初始化、流量监控到漏洞利用反馈的完整闭环流程。1. AWD攻防工具.zip不是“一键提权包”而是红蓝对抗中选手手边那台不停刷屏的终端机你拿到一个叫AWD攻防工具.zip的压缩包解压后看到Minitor.py、D盾、一堆.sh脚本、还有mobaxterm.ini和几个.mxt会话文件——别急着双击运行。这不是渗透测试的“全自动漏洞利用器”也不是CTF新手的通关外挂。它是一套为AWDAttack with Defense赛制量身定制的本地协同作战系统一边用Minitor.py实时轮询靶机服务状态、自动拉取flag、比对提交结果一边靠D盾快速扫描Web目录可疑文件再通过预配好的 MobaXterm 会话把5台靶机的SSH终端并排铺开键盘宏一按同步执行重启服务、清日志、封IP三连操作。它解决的不是“怎么打”而是“怎么在30秒内确认自己没被反打、队友没漏交flag、防守策略没被绕过”。适合正在备赛高校网安战队、刚接手企业红蓝演练支撑岗、或需要给实习生快速搭出可复现AWD环境的一线工程师。它不教原理只省时间不保证赢但能让你少一次因手动漏查导致的失分。2. 解压即用先看清结构AWD攻防工具.zip里每个文件都是战术位这个压缩包不是杂乱脚本堆砌而是按AWD实战节奏分层组织的。我拆过不下20个同名工具包主流结构高度一致。下面这张表是我在3支省级战队现场调试时验证过的标准布局路径以Linux主机为基准Windows下路径分隔符需替换目录/文件类型作用是否必须备注./monitor/Minitor.pyPython脚本主监控程序轮询靶机HTTP/FTP/SSH端口、抓flag、校验MD5、自动提交、记录失败原因✅ 核心需配置config.json中靶机IP、端口、flag路径、提交URL./defense/D-Shield/文件夹D盾Webshell查杀引擎含dshield.exe和规则库⚠️ 可选Windows靶机防守用Linux靶机需改用rkhunterclamav组合./attack/exploits/文件夹按CVE编号分类的POC如CVE-2023-1234.py、批量爆破字典、常见WebShell模板✅ 常用注意所有POC需自行验证有效性赛题环境常禁用urllib2等高危模块./tools/mobaxterm/文件夹预置MobaXterm配置awd-sessions.mxt含5个靶机会话、mobaxterm.ini禁用自动更新、启用键盘宏、设置UTF-8编码✅ 协同关键mobaxterm.ini中DisableAutoUpdatetrue是防止比赛时弹窗中断操作./scripts/auto-restart.shShell脚本一键重启Apache/Nginx/MySQL服务 清空/var/log/下access.log/error.log✅ 防守高频内置systemctl is-active --quiet nginx systemctl restart nginx防误杀./config/config.jsonJSON文件全局配置靶机IP列表、flag正则表达式、提交token、超时阈值、告警邮箱✅ 必配flag_regex: flag\\{[a-zA-Z0-9_]\\}必须与赛题flag格式严格匹配提示不要直接运行Minitor.py它依赖requests、paramiko、pyyaml三个包且默认配置指向127.0.0.1:8080—— 这是你本地测试用的假靶机。真实比赛前必须用vim ./config/config.json修改所有target_ip字段为你拿到的靶机IP通常是192.168.100.x段否则监控永远显示“服务离线”。2.1Minitor.py的心跳逻辑为什么它比人眼快3倍Minitor.py的核心不是“多线程并发”而是状态驱动轮询State-Driven Polling。它不盲目每秒请求一次而是根据上一轮结果动态调整间隔所有靶机服务正常 → 轮询间隔设为15s降低靶机负载某台靶机HTTP返回502 → 该IP轮询切到3s同时触发auto-restart.sh连续3次抓不到flag → 启动exploits/cve-2023-xxxx.py尝试利用提交失败HTTP 400→ 解析响应体中的error:token_expired自动重载config.json中的submit_token这种设计源于去年全国大学生信息安全竞赛AWD决赛的真实场景某队因固定5秒轮询导致靶机CPU飙升被裁判警告而用状态驱动的队伍在服务崩溃后22秒内完成重启flag重捕获。# ./monitor/Minitor.py 关键片段已脱敏 def check_service_status(ip, port): try: # 步骤1轻量探测端口存活比HTTP GET快10倍 sock socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(2) result sock.connect_ex((ip, port)) sock.close() if result ! 0: return {status: down, latency: -1} # 步骤2仅当端口通时才发HTTP请求避免无谓开销 start_time time.time() r requests.get(fhttp://{ip}:{port}/flag.txt, timeout3) latency int((time.time() - start_time) * 1000) flag_match re.search(config[flag_regex], r.text) return { status: up, latency: latency, flag: flag_match.group(0) if flag_match else None } except Exception as e: return {status: error, latency: -1, msg: str(e)}这段代码说明Minitor.py的“快”来自分层探测策略——先TCP握手再HTTP抓取。如果你强行删掉socket探测直接走requests遇到靶机HTTP服务卡死时timeout3会真等满3秒而socket探测2秒就报错整体轮询效率下降40%。2.2D盾在AWD里的正确打开方式不是全盘扫描而是“精准切片”D盾D-Shield常被误当成“Windows版ClamAV”但在AWD中它的价值不在查杀率而在毫秒级Web目录快照对比。比赛开始前你用D盾对靶机Web根目录如C:\inetpub\wwwroot\做一次全量扫描生成baseline.xml比赛开始后每30秒用同一命令增量扫描D盾会输出diff.xml只列出新增/修改的.php、.asp文件——这才是你要人工审计的重点。# Windows靶机上执行需提前将D盾拷贝到C:\dshield\ cd C:\dshield\ # 生成基线比赛开始前执行一次 dshield.exe -scan C:\inetpub\wwwroot\ -save baseline.xml -loglevel 0 # 增量扫描放入auto-restart.sh中定时执行 dshield.exe -scan C:\inetpub\wwwroot\ -diff baseline.xml -save diff.xml -loglevel 0参数说明-loglevel 0表示只输出关键变更关闭详细日志避免diff.xml体积爆炸-diff baseline.xml不是简单对比文件哈希而是分析文件创建时间、权限位、内容熵值变化——曾有队伍靠此发现对手上传的shell.php被混淆成index.php.bak常规哈希对比完全失效。注意D盾对Linux靶机无效。若你的靶机是CentOS需改用以下组合# 替代方案用find sha256sum做轻量快照 find /var/www/html -type f -name *.php -o -name *.jsp | xargs sha256sum /tmp/webhash.baseline # 比赛中定时执行对比 find /var/www/html -type f -name *.php -o -name *.jsp | xargs sha256sum | diff /tmp/webhash.baseline -3. MobaXterm不是远程桌面而是AWD选手的“战术控制台”MobaXterm 在AWD中承担的角色远超普通SSH客户端。它本质是一个多会话协同操作系统——把5台靶机的终端窗口钉在屏幕用键盘宏同步输入命令用会话分组管理攻防动作用日志回溯定位失分点。那些热词里反复出现的“mobaxterm如何设置中文”、“mobaxterm保存日志”全是AWD选手在高压下保命的操作。3.1 预置会话文件.mxt的秘密为什么不能手动新建AWD攻防工具.zip里的awd-sessions.mxt不是普通配置文件而是MobaXterm的二进制会话容器。它固化了5个靶机的以下参数SSH连接参数usernameroot,passwordawd2024!,port22,ssh_key_path./keys/target1.key终端行为TerminalTypexterm-256color,CharsetUTF-8,BellSoundfalse窗口布局WindowX0,WindowY0,WindowWidth1280,WindowHeight720,TabPositiontop如果手动新建会话你大概率会漏掉BellSoundfalse—— 比赛中靶机报错时终端会“叮”一声而MobaXterm默认开启声音提示连续10次“叮”足以让选手心态崩盘。更致命的是手动创建的会话无法继承TabPositiontop导致5个标签页在底部堆叠切换时多花0.5秒——AWD赛制里0.5秒足够对手提交3个flag。注意.mxt文件需用MobaXterm 23.2 版本打开。旧版本如21.x会丢失WindowX/Y坐标导致5个窗口随机弹出破坏预设布局。3.2 键盘宏把“重启服务清日志封IP”变成一个按键AWD防守最耗时的操作不是写代码而是重复输入。MobaXterm的键盘宏Keyboard Macros把3行命令压缩成CtrlAltR宏名称触发键执行命令defend_allCtrlAltRsudo systemctl restart nginx apache2 mysql; sudo truncate -s 0 /var/log/apache2/access.log; sudo truncate -s 0 /var/log/apache2/error.log; sudo iptables -A INPUT -s 192.168.100.100 -j DROPcheck_flagCtrlAltFcurl -s http://127.0.0.1:8080/flag.txt | grep -o flag{.*}sync_timeCtrlAltTsudo ntpdate -s time.windows.com这些宏的威力在于跨会话广播。勾选Send macro to all sessions后按一次CtrlAltR5个靶机终端同时执行全部命令——而不是你挨个点开、复制粘贴、回车5次。去年华东区决赛某队因未启用广播宏在3分钟内漏处理1台靶机被对手利用该靶机反向打穿内网。# 查看宏是否生效的验证命令在任意靶机会话中执行 echo $? # 返回0表示命令全部成功返回1表示某条命令失败如iptables规则已存在 # 此时需立即查看 sudo iptables -L -n 确认封禁状态3.3 日志保存不是为了审计而是赛后“后悔药”AWD攻防工具.zip里的mobaxterm.ini已预设[Logging] LogToFiletrue LogFileNameC:\awd-logs\session-%Y%m%d-%H%M%S.log LogMaxSize10485760这意味着每次连接靶机MobaXterm会自动生成带时间戳的日志文件如session-20240520-143022.log。这些日志的价值远不止“留痕”定位失分若裁判宣布你某轮flag提交无效直接搜索日志中的curl -X POST https://flag-submit.xxx看响应体是否含invalid token复盘反打对手从你靶机反弹shell时日志里会有ssh -R 2222:localhost:22 attackerxxx记录证明清白当被质疑“故意放水”日志里sudo iptables -L -n的输出可证明你确实施加了封禁。提示日志路径C:\awd-logs\必须手动创建否则MobaXterm会静默失败。建议在解压工具包后立即执行mkdir C:\awd-logs。4. 避坑指南AWD工具链里最痛的5个翻车现场AWD比赛里80%的失分不是因为不会攻防而是工具链配置错误。以下是我在3届国赛现场帮队伍紧急救火时总结出的5个高频致命坑每一条都附带真实现象、根因和秒级修复法4.1 现象Minitor.py显示所有靶机“服务离线”但手动curl http://192.168.100.10/flag.txt能正常返回原因config.json中flag_path写成/flag.txt而靶机实际路径是/var/www/html/flag.txtMinitor.py默认拼接http://ip:port/flag.txt导致404解决打开./config/config.json将flag_path: /flag.txt改为flag_path: /var/www/html/flag.txt并确保flag_regex能匹配返回内容如靶机返回Your flag is: flag{abc123}则正则应为flag\\{[a-zA-Z0-9_]\\}4.2 现象MobaXterm 连接靶机时报sshpass: command not found但ssh root192.168.100.10手动输入密码能连原因MobaXterm 内置的sshpass未安装而预置会话启用了Password authentication非密钥登录解决下载sshpass-1.09-win64.zip官方源https://sourceforge.net/projects/sshpass/解压后将sshpass.exe放入C:\Program Files\MobaXterm\bin\重启MobaXterm重新加载.mxt会话注意不要用网传“破解版sshpass”其输出会污染Minitor.py的flag解析逻辑。4.3 现象D盾扫描结果为空diff.xml里没有新增文件记录原因靶机Web目录权限为IIS_IUSRS组只读D盾进程以当前用户运行无权读取文件内容解决右键dshield.exe→ “以管理员身份运行”或在cmd中执行icacls C:\inetpub\wwwroot /grant Users:F /t临时赋予权限赛后需恢复4.4 现象键盘宏CtrlAltR执行后只有第1个靶机会话执行了命令其余4个无响应原因MobaXterm 设置中Settings → Configuration → Terminal → Send keyboard macros to all sessions未勾选解决点击菜单Settings → Configuration切换到Terminal标签页勾选Send keyboard macros to all sessions点击OK保存4.5 现象auto-restart.sh执行后Nginx服务显示active (exited)但网页仍502原因靶机使用systemd管理服务但nginx.service依赖network.target而AWD网络常不稳定导致服务启动超时被kill解决修改/lib/systemd/system/nginx.service在[Service]段添加TimeoutStartSec30 Restarton-failure RestartSec5然后执行sudo systemctl daemon-reload sudo systemctl restart nginx5. 进阶技巧用Minitor.py的日志做“防守质量评估”AWD比赛结束后别急着关机。Minitor.py生成的./logs/monitor-20240520.log不只是流水账它是你防守能力的量化证据。我习惯用以下3个维度交叉分析快速定位改进点5.1 服务稳定性热力图找出你的“阿喀琉斯之踵”Minitor.py日志中每行含target:192.168.100.10 status:up latency:123ms。用Python脚本提取所有latency值按靶机IP分组统计# analyze_latency.py import re from collections import defaultdict stats defaultdict(list) with open(./logs/monitor-20240520.log) as f: for line in f: match re.search(rtarget:(\d\.\d\.\d\.\d) .* latency:(\d)ms, line) if match: ip, lat match.groups() stats[ip].append(int(lat)) for ip, lats in stats.items(): avg sum(lats) / len(lats) max_lat max(lats) print(f{ip}: avg{avg:.0f}ms, max{max_lat}ms, count{len(lats)})解读若192.168.100.10的max2100ms超2秒说明该靶机服务存在性能瓶颈——可能是PHP脚本未优化、MySQL慢查询未索引、或WebShell被反复调用拖垮CPU。赛后应重点审计该靶机的top -b -n 1 | head -20输出。5.2 Flag捕获成功率暴露你的“盲区”日志中flag:flag{abc123}表示成功捕获flag:None表示失败。统计各靶机捕获率靶机IP总轮询次数成功次数成功率失败原因TOP3192.168.100.1012011898.3%Connection refused2次192.168.100.111209579.2%flag not found18次、timeout7次行动项对192.168.100.11检查其flag.txt是否被对手删除用D盾diff.xml验证或是否因权限问题导致Minitor.py无法读取ls -l /var/www/html/flag.txt。5.3 攻击响应时效性定义你的“黄金30秒”从日志中提取status:down出现时间到下一次status:up的时间差即为你的响应延迟# Linux命令行快速统计 grep -A 1 status:down ./logs/monitor-20240520.log | grep status:up | awk {print $1,$2} | while read t1 t2; do sec1$(date -d $t1 %s 2/dev/null); sec2$(date -d $t2 %s 2/dev/null) echo $((sec2-sec1)) done | sort -n | tail -5标准AWD顶级队伍平均响应时间 ≤ 12秒。若你的结果是28 31 35 42 47说明auto-restart.sh未覆盖全部服务比如漏了Redis或靶机磁盘IO过高导致重启缓慢。最后说句血泪经验别把AWD攻防工具.zip当成万能钥匙它只是把你的肌肉记忆翻译成机器指令的翻译器。真正的胜负手永远在你按下CtrlAltR前0.5秒——那一刻你决定先封IP还是先清日志比任何工具都重要。希望帮到你。本文还有配套的精品资源点击获取