发表于 2020-10-18 19:55:45
|
查看: 9124
|
回复: 1
前言 AWD(Attack With Defense,攻防兼备)模式是一个非常有意思的模式,你需要在一场比赛里要扮演攻击方和防守方,攻者得分,失守者会被扣分。也就是说,攻击别人的靶机可以获取 Flag 分数时,别人会被扣分,同时你也要保护自己的主机不被别人得分,以防扣分。
没接触过的同学第一次玩这种模式时,很可能都是一脸懵逼,最近我也打了一次小型AWD,借此来介绍一下一般的 AWD 比赛流程和所需准备的地方。由于我负责 Web 比较多,因此这篇文章不会涉及到二进制方面,主要从 Web 方向介绍。
聊聊AWD攻防赛流程及准备经验
AWD流程 1. 出题方会给每一支队伍部署同样环境的主机,主机有一台或者多台。
2. 拿到机器后每个队伍会有一定的加固时间或没有加固时间,这个视规则而定。
3. 每个服务、数据库、主机上都会可能存在 flag 字段,并且会定时刷新。通过攻击拿到 flag 后需要提交到裁判机进行得分,一般会提供指定的提交接口。下一轮刷新后,如果还存在该漏洞,可以继续利用漏洞获取 flag 进行得分。
通常来说,如果攻防赛时间比较短的话,一般只会考核 Web 、数据库的渗透、已有漏洞的利用;如果时间较长,很可能还需要做内网渗透,由于这块比较深入,这篇文章暂时不讲,(因为我自己也不太会。
聊聊AWD攻防赛流程及准备经验
一般一个队伍由三人组成。负责两个方面:一方面负责防守加固、做基线、加WAF、流量回放等等。一方面负责源码审计、写攻击脚本、维持权限、持续渗透,具体怎么安排都视三人能力而定。
攻击流程 在 AWD 中,Web 攻击流程一般分为信息收集、攻击端口、攻击Web服务、维持权限四步,只要能快速得分,也不一定按照这四步来。
信息收集 第一步,探测主机。 用 Nmap 或者 HTTPScan等工具,先扫描主办方给的内网存活主机,弄明白网络拓扑。如果主办方给了主机范围的话就更加省事儿了。
第二步,探测端口。 因为主办方给的机器都是一样的,所以直接看自己 开了什么端口就行。如果不一样的话,使用 Nmap 进行常见端口扫描,先攻击常见端口,再放后台进行全端口的扫描,发现新端口再加入到攻击队列中。
第三步,探测端口服务。 端口服务一般用 Nmap 就能扫到,并且可以用 Nmap 的脚本扫一下漏洞,但是需要注意 Nmap 的相关参数,这要根据情况灵活运用。
简单的信息收集到此完成,除了 Nmap 外可以使用自己熟悉的工具,比如说 msf 啥的,方便后续渗透。
端口攻击 由于 AWD 需要的就是手快,端口一般也会有弱口令的情况存在,比如常见的 22、3389、1443、3306 等主机登陆、数据库端口。
我打过的一次省赛中,就遇到了这种情况。主办方只给队伍机器的 IP,给定用户名,需要自行爆破进入机器,并修改密码。如果这个时候你的手慢,爆破脚本没准备好,你的机器就会沦入别人之手。当时我们就是手慢了,只能眼睁睁看着别人拿到了我们的机器,一轮轮掉分了……
聊聊AWD攻防赛流程及准备经验
Web 攻击 Web 方面的语言多为 PHP,小部分为 Java 和 Python。这里的 Web 环境分两种情况,一种是已有漏洞的框架,一种是出题人写的框架。
如果是已有漏洞的框架,通常会比较明显。比如说 Struts 2 各种漏洞等等,用工具扫就可以扫出来。这个需要准备得比较充分,在电脑中备好 EXP 库、漏洞库和各种扫描工具库,以便能够快速利用比较明显的漏洞。总之手要快 !
聊聊AWD攻防赛流程及准备经验
如果是出题人出的框架,常用并且简单有效的做法是把整站源码下载下来,直接用工具审计。以 PHP 举例,一般的流程是先D盾查杀,发现有带有预留后门或者 Webshell 马上报给防守队友进行加固。
把后门的问题搞定、防止别人快速拿分后,其次才是源码审计,发现问题点后迅速验证,报给防守队友,并且开始写攻击脚本。以 PHP 举例,一般是使用 Seay 等源码审计工具,审核出比较明显的漏洞。
完成了工具扫描后,开始常规的渗透测试,比如说文件上传、SQL 注入等等,看是否能绕过,找到一个点马上写利用脚本。
维持权限 一顿操作猛如虎,拿到 Webshell ,之后干啥呢?
聊聊AWD攻防赛流程及准备经验
当然是要维持权限啦!简单的 Webshell 一眼就看出来了好伐,在 AWD 中优先考虑种不死马、反弹 shell,用一般木马的留后门方式维持权限,以便后续刷 flag,再考虑提升权限。有的同学不知道啥叫“不死马”,解释一下,“不死马”的主要功能是执行后会不断在该路径生成一个 shell 文件,用于菜刀等工具进行连接,是一种维持权限的方法。
小 Trick : 使用 `find / -name *flag*` 或 `grep -rn "flag" *` 类似的语句可以快速发现 flag 所在的地方,方便后续拿分。
防守流程 防守队友做的事情简单来说,按优先级有以下几个:
1. 重中之重:备份 网站源码和数据库。这个作用有二,一是以防自己魔改网站源码或数据库后无法恢复,二是裁判一般会定时 Check 服务是否正常 ,如果不正常会进行扣分,因此备份也可以防对手入侵主机删源码后快速恢复服务。
2. 系统安全性检查 。就是不该开的端口 3306 有没有开启、有没有限制 SSH 登陆、SSH密码 修改、MySQL 是否为默认密码等等,这里可以用脚本刷一遍。
3. 部署 WAF 。用自己提前准备好的 WAF,使用脚本进行快速部署,但是要注意验证会不会部署完后服务不可用。
4. 修改权限 。比如说 MySQL 用户读表权限,上传目录是否可执行的权限等等。
5. 部署文件监控 脚本。监控可读写权限的目录是否新增、删除文件并及时提醒。这里说下,如果被种了不死马的话通常有以下几种克制方法:
强行 kill 掉进程后重启服务
建立一个和不死马相同名字的文件或者目录
写脚本不断删除文件
不断写入一个和不死马同名的文件
6. 部署流量监控 脚本或开启服务器日志记录。目的主要是为了进行流量回放,看其它大佬如何用我们没发现的漏洞来打我们的机子,抓取到之后把看不懂的流量直接回放到别的机子去,这里还得提到,我们自己在攻击的时候,也要试着混淆一下自己的攻击流量,不能轻易被别人利用。
聊聊AWD攻防赛流程及准备经验
总结 说了这么多,总结一下。AWD 攻防赛前需要准备的有:
1. 各种软件包,如 Python、CURL 等等,以备机器上没有而陷入尴尬
2. 一大堆 EXP 库和漏洞库,可以放个乌云的虚拟机备用
3. 加固、基线检查脚本
4. WAF 代码和部署脚本
5. AWD 专用的批量拿 Webshell、批量交 flag、批量维持权限的基本代码或小框架
希望自己以后有时间能整理一个脚本集,整合到一个框架,这样打 AWD 会很舒服~
另外,我在写文章和准备 AWD 时搜集的一些资源如下:
Github资源: - (⭐235) AWD攻防赛脚本集合: <https://github.com/admintony/Prepare-for-AWD>
- (⭐124) Attack-Defense-Framework: <https://github.com/SniperOJ/Attack-Defense-Framework/tree/v2>
- (⭐99) AWD攻防赛webshell批量利用框架: <https://github.com/Ares-X/AWD-Predator-Framework>
- (⭐28) awd-frame: <https://github.com/xnianq/awd-frame>
- (⭐4) WEB-AWD-Framework:<https://github.com/dahua966/WEB-AWD-Framework>
- (⭐0) AWD-helper: <https://github.com/sarleon/AWD-helper>
AWD经验: - CTF线下赛AWD模式下的生存技巧: <https://www.anquanke.com/post/id/84675>
- CTF线下赛AWD套路小结: <https://xz.aliyun.com/t/25>
- AWD混战攻略: <https://www.jianshu.com/p/d21b7e1bffaf>
- CTF线下AWD攻防模式的准备工作及起手式: <https://blog.csdn.net/like98k/article/details/80261603>
- 2017强网杯线下AWD攻防总结(适合新手): <https://www.t00ls.net/articles-42278.html>
- AWD攻防线下生存之道: [http://47.95.201.153/blog/AWD 攻防线下生存之道.html](http://47.95.201.153/blog/AWD%E6 ... B9%8B%E9%81%93.html )
- CTF AWD模式攻防Note: <https://www.cnblogs.com/nul1/p/9576386.html>
权限维持: - 不死马的删除: <https://yq.aliyun.com/zt/325638>
- awd攻防之kill不死马: <https://www.jianshu.com/p/ba79686987da>
- python中的后渗透|也可用于AWD攻防--shell管理: <https://www.jianshu.com/p/2e8e7330b73e>
- 从0到1掌握AWD攻防之RSA必杀: <https://www.360zhijia.com/anquan/456324.html>
- 资深大牛教你如何web端权限维持(内附具体步骤): [http://www.sohu.com/a/127074604 \_472906](http://www.sohu.com/a/127074604_472906 )
温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的认可,还可以获得学币奖励,请尊重他人的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【
投诉建议 】板块发帖举报。