Stagr0 or Stager1
序言
- 何为 Stager0 ?
- 我们都知道Stager 是分阶段意思,在渗透测试中我们在不同对阶段需要不同功能,而在C2中也是这样的,可以分为建立立足点、内网渗透、持久化控制等阶段,而Stager0 则代表建立立足点和持久化控制阶段。
- Stager0 和Stager1 区别?
- Stager0 功能简单,Stager1功能复杂。
- Stager0 加载Stager1。
- Stager0 注重隐蔽,作用是持久化控制。
- Stager1 注重功能,主要是实现各种功能。
Stager0 可以理解为小马,加载器,但是本身具有一些简单功能。
Stager0 介绍
功能介绍
- 执行命令(并返回结果)
- 文件操作
- 上传文件
- 下载文件
- 加载ShellCode (此功能不是优先考虑)
通信协议
由于Stager0 首重隐蔽,所以优先考虑DNS协议,而且DNS协议局限小,实际效果好。具体通信协议参考CobaltStrike DNS Beacon。原则做到以下几点。
- 简洁,不必要数据不要
- 隐蔽性好,避免出现特征
- 通信加密,防止内容被解密
通信流程
通信流程按照木马上线时间来列举。
心跳包
存活检测,可自由更改间隔时间,默认时间为60秒。
大写字母为自定义值,小写字母为固定内容。
DNS 查询类型:A
查询域名:www.UUID.domain.com
UUID 为主机随机ID,用于机器唯一ID,长度未定
返回结果:8.8.8.8
任务查询
查询是否有任务,没有任务则循环
DNS 查询类型:A
查询域名:www.UUID.domain.com
UUID 为主机随机ID,用于机器唯一ID,长度未定
返回结果:8.8.8.1
进行任务1
- 上传系统信息
返回结果:8.8.8.2
进行任务2
- 上传文件
返回结果:8.8.8.3
进行任务3
- 下载文件
返回结果:8.8.8.4
进行任务4
- 执行命令
返回结果:8.8.8.5
进行任务5
- 加载ShellCode
元数据
上报系统信息。包括(Hostname、IP、PID、OS)
// 查询任务
DNS 查询类型:A
查询域名:www.UUID.domain.com
UUID 为主机随机ID,用于机器唯一ID,长度未定
返回结果:8.8.8.1
进行任务1
- 上传系统信息
程序收集系统信息并进行加密(加密方法未定)和编码(编码需要考虑不能包含特殊字符不能进行DNS查询)
// 传输内容
DNS 查询类型:TXT
查询域名:update.UUID.TARICK.INT.STRING.domain.com
UUID 为主机随机ID,用于机器唯一ID,长度未定
TARICK 为任务ID
INT 为传输顺序ID,乱序传输也可以后期排序
STRING 为传输内容
返回结果:8.8.8.8 (服务响应正常)
// 传输内容结束
DNS 查询类型:TXT
查询域名:upgrade.UUID.TARICK.domain.com
UUID 为主机随机ID,用于机器唯一ID,长度未定
TARICK 为任务ID
返回结果:8.8.8.8 (服务响应正常)
文件传输
文件传输分为上传文件与下载文件,数据由4部分组成(本地文件名、远程文件名、文件长度、文件内容)
数据由后段程序进行解析
文件上传
// 查询任务
DNS 查询类型:A
查询域名:www.UUID.domain.com
UUID 为主机随机ID,用于机器唯一ID,长度未定
返回结果:8.8.8.1
进行任务2
- 上传文件
程序将本地文件进行加密(加密方法未定)和编码(编码需要考虑不能包含特殊字符不能进行DNS查询)
// 传输内容
DNS 查询类型:TXT
查询域名:upload.UUID.TARICK.INT.STRING.domain.com
UUID 为主机随机ID,用于机器唯一ID,长度未定
TARICK 为任务ID
INT 为传输顺序ID,乱序传输也可以后期排序
STRING 为传输内容
返回结果:8.8.8.8 (服务响应正常)
// 传输内容结束
DNS 查询类型:TXT
查询域名:upgradefile.UUID.TARICK.domain.com
UUID 为主机随机ID,用于机器唯一ID,长度未定
TARICK 为任务ID
返回结果:8.8.8.8 (服务响应正常)
文件下载
// 查询任务
DNS 查询类型:A
查询域名:www.UUID.domain.com
UUID 为主机随机ID,用于机器唯一ID,长度未定
返回结果:8.8.8.3
进行任务3
- 下载文件
程序将本地文件进行加密(加密方法未定)和编码(编码需要考虑不能包含特殊字符不能进行DNS查询)
// 传输内容
DNS 查询类型:TXT
查询域名:download.UUID.TARICK.INT.STRING.domain.com
UUID 为主机随机ID,用于机器唯一ID,长度未定
TARICK 为任务ID
INT 为传输顺序ID,乱序传输也可以后期排序
STRING 为传输内容
返回结果:8.8.8.8 (服务响应正常)
// 传输内容结束
DNS 查询类型:TXT
查询域名:downloadfile.UUID.TARICK.domain.com
UUID 为主机随机ID,用于机器唯一ID,长度未定
TARICK 为任务ID
返回结果:8.8.8.8 (服务响应正常)
命令执行
调用cmd执行命令,并将结果返回