目录
Windows Executable & Windows Executable(S)
创建监听器Listener
什么时候需要创建一个监听器了,比如我们拿到一个shell。此时我们就需要用cs生成一个payload传入到目标服务器上来,这个payload要与服务器进行连接就需要服务器先开启一个监听,payload才能找到服务器。
如下进行点击,然后在最下面点击add,进行监听器的添加
页面配置信息如下
name:为监听器名字,可任意
payload:payload类型
HTTP Hosts: shell反弹的主机,也就是我们kali的ip(如果是阿里云,则填阿里云主机的公网ip)
HTTP Hosts(Stager): Stager的马请求下载payload的地址(一般也是和上面的ip填一样)
HTTP Port(C2): C2监听的端口
这里面有一个很重要的点就是选择payload类型
payload类型
目前有8种payload,如下
内部的Listener
- windows/beacon_dns/reverse_dns_txt
- windows/beacon_http/reverse_http
- windows/beacon_https/reverse_https
- windows/beacon_bind_tcp
- windows/beacon_bind_pipe
外部的Listener
- windows/foreign/reverse_http
- windows/foreign/reverse_https
External
- windows/beacon_ext
Beacon为内置的Listener,即在目标主机执行相应的payload,获取shell到CS上;其中包含DNS、HTTP、HTTPS、SMB。Beacon可以选择通过DNS还是HTTP协议出口网络,你甚至可以在使用Beacon通讯过程中切换HTTP和DNS。其支持多主机连接,部署好Beacon后提交一个要连回的域名或主机的列表,Beacon将通过这些主机轮询。目标网络的防护团队必须拦截所有的列表中的主机才可中断和其网络的通讯。通过种种方式获取shell以后(比如直接运行生成的exe),就可以使用Beacon了。
Foreign为外部结合的Listener,常用于MSF的结合,例如获取meterpreter到MSF上。
- name: 为监听器名字,可任意
- HTTP Hosts: 进行回连的主机(shell反弹的主机),也就是我们kali的ip(如果是阿里云,则填阿里云主机的公网ip),可以设置多个
- HTTP Hosts(Stager): Stager的马请求下载payload的地址(一般也是和上面的ip填一样)
- HTTP Port(C2): payload回连的端口
-
HTTP Port(Bind): 字段指定你的 HTTP Beacon payload web 服务器绑定的端口。如果你要设置端口弯曲重定向器(例如,接受来自 80 或 443 端口的连接但将连接路由到团队服务器开在另一个端口上的连接,这样的重定向器),那么这些选 项会很有用。
-
HTTP Host Header :值被指定了,会影响你的 HTTP stagers ,并通过你的 HTTP 通信。这个选项 使得通过 Cobalt Strike 利用域名前置变得更加容易
-
HTTP Proxy : 字段旁边的 ... 按钮来为此 payload 指定一个显式的代理配置
生成后门
设置了监听后,就需要生成后门payload了。
如下点击 Attacks -> Packages
这里的Attacks有几种,如下
- HTML Application 生成一个恶意HTML Application木马,后缀格式为.hta。通过HTML调用其他语言的应用组件进行攻击,提供了可执行文件 、PowerShell、VBA三种方法。
- MS Office Macro 生成office宏病毒文件;
- Payload Generator 生成各种语言版本的payload,可以生成基于C、C#、COM Scriptlet、Java、Perl、PowerShell、Python、Ruby、VBA等的payload
- Windows Executable 生成32位或64位的exe和基于服务的exe、DLL等后门程序
- Windows Executable(S) 用于生成一个exe可执行文件,其中包含Beacon的完整payload,不需要阶段性的请求。与Windows Executable模块相比,该模块额外提供了代理设置,以便在较为苛刻的环境中进行渗透测试。该模块还支持powershell脚本,可用于将Stageless Payload注入内存
Windows Executable & Windows Executable(S)
这两个模块直接用于生成可执行的exe文件或dll文件。Windows Executable是生成Stager类型的马,而Windows Executable(S)是生成Stageless类型的马。那Stager和Stageless有啥区别呢?
- Stager是分阶段传送Payload。分阶段啥意思呢?就是我们生成的Stager马其实是一个小程序,用于从服务器端下载我们真正的shellcode。分阶段在很多时候是很有必要的,因为很多场景对于能加载进内存并成功漏洞利用后执行的数据大小存在严格限制。所以这种时候,我们就不得不利用分阶段传送了。如果不需要分阶段的话,可以在C2的扩展文件里面把 host_stage选项设置为false。
- 而Stageless是完整的木马,后续不需要再向服务器端请求shellcode。所以使用这种方法生成的木马会比Stager生成的木马体积要大。但是这种木马有助于避免反溯源,因为如果开启了分阶段传送,任何人都能连接到你的C2服务器请求payload,并分析payload中的配置信息。在CobaltStrike4.0及以后的版本中,后渗透和横向移动绝大部分是使用的Stageless类型的木马。
这里生成Windows Executable程序,如下,我们创建了监听器后生成的时候就需要先选择。然后选择保存的路径
这样当我们双击生成的exe程序后cs就会直接上线。可以同时连接多个相同的exe payload。如下会话表
会话表介绍
会话表展示了哪些 Beacon 回连到了这台 Cobalt Strike。Beacon 是 Cobalt Strike 用于模拟高级
威胁者的 payload。在这里,你将看到每个 Beacon 的外网 IP 地址、内网 IP 地址、该 Beacon 的出口监听器、此 Beacon 最后一次回连的时间,以及其他信息。每一行最左边是一个图标,用于说明被害目 标的操作系统。如果此图标是红色的、并且带有闪电,那么说明此 Beacon 运行在管理员权限的进程中。一个褪色的图标意味着此 Beacon 会话被要求离开并且它接受了此命令。
在已经上线的服务器上右击==>打开Beacon,在里面可以执行各种命令
在cs中默认的心跳时间是60s,我们可以用sleep 命令来更改心跳时间(心跳时间是指上线的服务器和cs服务器的通信时间)。
所以如果我们不修改的话,那么我们每次执行命令服务器要好很久才会返回。心跳时间很长就会响应的时间很慢,但也不能设置的很短,不让很容易会被监测到与cs通信的流量,具体多少可以根据测试环境自己来设置。这里设置为5,这样时间到了5s,就会返回结果
Beacon就是一个命令解释器,供我们来执行命令。在Beacon中执行cmd命令时需要在前面加上shell,例如:
shell whoami/systeminfo/netstat -an
我们可以用help来查看更过的命令
beacon> help
Beacon Commands
===============
Command Description
------- -----------
browserpivot 注入受害者浏览器进程
bypassuac 绕过UAC
cancel 取消正在进行的下载
cd 切换目录
checkin 强制让被控端回连一次
clear 清除beacon内部的任务队列
connect Connect to a Beacon peer over TCP
covertvpn 部署Covert VPN客户端
cp 复制文件
dcsync 从DC中提取密码哈希
desktop 远程VNC
dllinject 反射DLL注入进程
dllload 使用LoadLibrary将DLL加载到进程中
download 下载文件
downloads 列出正在进行的文件下载
drives 列出目标盘符
elevate 尝试提权
execute 在目标上执行程序(无输出)
execute-assembly 在目标上内存中执行本地.NET程序
exit 退出beacon
getprivs Enable system privileges on current token
getsystem 尝试获取SYSTEM权限
getuid 获取用户ID
hashdump 转储密码哈希值
help 帮助
inject 在特定进程中生成会话
jobkill 杀死一个后台任务
jobs 列出后台任务
kerberos_ccache_use 从ccache文件中导入票据应用于此会话
kerberos_ticket_purge 清除当前会话的票据
kerberos_ticket_use 从ticket文件中导入票据应用于此会话
keylogger 键盘记录
kill 结束进程
link Connect to a Beacon peer over a named pipe
logonpasswords 使用mimikatz转储凭据和哈希值
ls 列出文件
make_token 创建令牌以传递凭据
mimikatz 运行mimikatz
mkdir 创建一个目录
mode dns 使用DNS A作为通信通道(仅限DNS beacon)
mode dns-txt 使用DNS TXT作为通信通道(仅限D beacon)
mode dns6 使用DNS AAAA作为通信通道(仅限DNS beacon)
mode http 使用HTTP作为通信通道
mv 移动文件
net net命令
note 备注
portscan 进行端口扫描
powerpick 通过Unmanaged PowerShell执行命令
powershell 通过powershell.exe执行命令
powershell-import 导入powershell脚本
ppid Set parent PID for spawned post-ex jobs
ps 显示进程列表
psexec Use a service to spawn a session on a host
psexec_psh Use PowerShell to spawn a session on a host
psinject 在特定进程中执行PowerShell命令
pth 使用Mimikatz进行传递哈希
pwd 当前目录位置
reg Query the registry
rev2self 恢复原始令牌
rm 删除文件或文件夹
rportfwd 端口转发
run 在目标上执行程序(返回输出)
runas 以另一个用户权限执行程序
runasadmin 在高权限下执行程序
runu Execute a program under another PID
screenshot 屏幕截图
setenv 设置环境变量
shell cmd执行命令
shinject 将shellcode注入进程
shspawn 生成进程并将shellcode注入其中
sleep 设置睡眠延迟时间
socks 启动SOCKS4代理
socks stop 停止SOCKS4
spawn Spawn a session
spawnas Spawn a session as another user
spawnto Set executable to spawn processes into
spawnu Spawn a session under another PID
ssh 使用ssh连接远程主机
ssh-key 使用密钥连接远程主机
steal_token 从进程中窃取令牌
timestomp 将一个文件时间戳应用到另一个文件
unlink Disconnect from parent Beacon
upload 上传文件
wdigest 使用mimikatz转储明文凭据
winrm 使用WinRM在主机上生成会话
wmi 使用WMI在主机上生成会话
argue 进程参数欺骗