Cobalt Stike使用教程

目录:

安装与连接

监听器Listner

基本使用方法--Cobalt Strike生成后门

Beacon详解

菜单栏与视图

文件管理与进程管理

浏览器代理

Cobalt Strike扩展

提权

横向移动

参考

 

Cobalt Strike: C/S架构的商业渗透软件,适合多人进行团队协作,可模拟APT做模拟对抗,进行内网渗透。

本文介绍3.14版本。

安装与连接

链接:https://pan.baidu.com/s/1mtR3J_W3IQL-hdioxTdDig

提取码:tbel

 

服务器端kali Linux

将下载的CS程序放到Kali中,执行./teamserver 192.168.56.130 vege 即可启动Team Server服务。192.168.43.43表示本机IP地址,vege表示从客户端登录时需要填写的密码。

CS服务端程序会监听TCP 50050端口。

 

客户端win10

将下载的CS程序放到Windows中,切换到CS程序目录,在命令行窗口中运行java -jar cobaltstrike.jar即可启动客户端(也可以直接运行.exe程序),然后输入IP地址、用户名、密码等信息即可登录

用户名随意写,其他要填准确

 

登录成功后会看到如下操作界面:

 

客户端可以是任意操作系统,服务器端必须是linux,例如,我们也可以用kali linux连接服务器端:

 

可以通过点击Cobalt Strike ->New Connection 来连接多台服务器

 

 

 

 

监听器Listner

1Cobaltstrike Listner简介

Listner(监听器):专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动。

在许多的渗透测试工具中,例如empire,metasploit,cobaltstrike中都有Listner的存在。大家可以简单地理解为Listner就是用来接收目标主机权限的模块。

创建Listener的步骤:Cobaltstrike-->监听器

 

目前我用的是Cobaltstrike3.14版本,其中内置了九个Listener。

windows/beacon_dns/reverse_dns_txt

windows/beacon_dns/reverse_http

windows/beacon_tcp/bind_tcp

windows/beacon_http/reverse_http

windows/beacon_https/reverse_https

windows/beacon_smb/bind_pipe

windows/foreign/reverse_http

windows/foreign/reverse_https

windows/foreign/reverse_tcp

beacon为CS内置监听器,也就是说,当我们在目标系统成功执行Payload以后,会弹回一个beacon的shell给CS。

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

2Listener的配置

选择Cobaltstrike-->listener

随后输入Listener名字并选择你要使用的Listner类型,配置好IP和端口(不能冲突)点击save即可保存,在以后生成Payload的过程中即可使用该监听器。

 

基本使用方法--Cobalt Strike生成后门

 

HTML Application #
生成恶意的
HTA
木马文件

MS Office Macro #
生成
office
宏病毒文件

Payload Generator #
生成各种语言版本的
payload
USB/CD AutoPlay #
生成利用自动播放运行的木马文件

Windows Dropper #
捆绑器,能够对文档类进行捆绑

Windows Executable #
生成可执行
Payload
Windows Executable(S) #
把包含
payload,Stageless
生成可执行文件
(
包含多数功能
)

这里只演示一下Payload Generator   :

该模块可以生成多种语言的Payload,包括C,C#,Java,Perl,Powershell,Powershell命令,Python ,Ruby,Raw,Veil等

 

以Powershell Command为例,生成的Payload为一串命令,只要在主机上执行这一串命令(主机需安装Powershell),CS即可收到主机的beacon

 

CS生成的木马默认60秒回连一次,这就导致我们不能实时操作远程PC。通过修改sleep时间可以达到实时操作的功能,可以把sleep时间修改为1秒或0秒。(不过比建议将sleep改这么小,不然流量会很明显)

 

单击鼠标右键然后选择Interact会进入命令行交互窗口. 在界面最底下有个beacon>输入框,这就是输入命令的地方, 输入help会显示帮助文档(详细看下一节)。

 

通过CS还能浏览被控PC的文件目录,实现截屏、端口扫描等功能。

不过到目前为止,我们掌握的是PC电脑的普通权限。

CS内置的提权脚本很少

 

GitHub上有个提权工具包,使用这个工具包可以增加几种提权方法:https://github.com/rsmudge/ElevateKit

点击Script Manager按钮打开脚本管理界面,然后点击底下的Load按钮加载elevate.cna文件。

 

 

 

 

选择合适的exp进行提权,当然不知道用哪个的话也可以都试试。

如果提权成功,session列表中会增加一个新会话,星号(*)表示该会话是一个提权成功的会话。

 

这里只想简要介绍一下,详细介绍参见后文。

Beacon详解

Beacon命令

右键目标interact来使用Beacon,我们用它来执行各种命令。注意:Beacon中不能直接输入cmd命令,比如要让目标机执行ipconfig这条cmd命令,对应的Beacon命令是shell ipconfig

 

输入help会显示帮助文档

beacon> help
Beacon Commands
===============
Command                   Description
-------                   -----------
argue                     
进程参数欺骗

blockdlls                 
阻止子进程加载非
Microsoft DLL
browserpivot              
注入受害者浏览器进程

bypassuac                 
绕过
UAC
提升权限

cancel                    
取消正在进行的下载

cd                        
切换目录

checkin                   
强制让被控端回连一次

clear                     
清除
beacon
内部的任务队列

connect                   Connect to a Beacon peer over TCP
covertvpn                 
部署
Covert VPN
客户端

cp                        
复制文件

dcsync                    
从
DC
中提取密码哈希

desktop                   
远程桌面
(VNC)
dllinject                 
反射
DLL
注入进程

dllload                   
使用
LoadLibrary
将
DLL
加载到进程中

download                  
下载文件

downloads                 
列出正在进行的文件下载

drives                    
列出目标盘符

elevate                   
使用
exp
提权

execute                   
在目标上执行程序
(
无输出
)
execute-assembly          
在目标上内存中执行本地
.NET
程序

exit                      
终止
beacon
会话

getprivs                  Enable system privileges on current token
getsystem                 
尝试获取
SYSTEM
权限

getuid                    
获取用户
ID
hashdump                  
转储密码哈希值

help                      
帮助

inject                    
在注入进程生成会话

jobkill                   
结束一个后台任务

jobs                      
列出后台任务

kerberos_ccache_use       
从
ccache
文件中导入票据应用于此会话

kerberos_ticket_purge     
清除当前会话的票据

kerberos_ticket_use       Apply 
从
ticket
文件中导入票据应用于此会话

keylogger                 
键盘记录

kill                      
结束进程

link                      Connect to a Beacon peer over a named pipe
logonpasswords            
使用
mimikatz
转储凭据和哈希值

ls                        
列出文件

make_token                
创建令牌以传递凭据

mimikatz                  
运行
mimikatz
mkdir                     
创建一个目录

mode dns                  
使用
DNS A
作为通信通道
(
仅限
DNS beacon)
mode dns-txt              
使用
DNS TXT
作为通信通道
(
仅限
D beacon)
mode dns6                 
使用
DNS AAAA
作为通信通道
(
仅限
DNS beacon)
mode http                 
使用
HTTP
作为通信通道

mv                        
移动文件

net                       net
命令

note                      
备注
       
portscan                  
进行端口扫描

powerpick                 
通过
Unmanaged PowerShell
执行命令

powershell                
通过
powershell.exe
执行命令

powershell-import         
导入
powershell
脚本

ppid                      Set parent PID for spawned post-ex jobs
ps                        
显示进程列表

psexec                    Use a service to spawn a session on a host
psexec_psh                Use PowerShell to spawn a session on a host
psinject                  
在特定进程中执行
PowerShell
命令

pth                       
使用
Mimikatz
进行传递哈希

pwd                       
当前目录位置

reg                       Query the registry
rev2self                  
恢复原始令牌

rm                        
删除文件或文件夹

rportfwd                  
端口转发

run                       
在目标上执行程序
(
返回输出
)
runas                     
以其他用户权限执行程序

runasadmin                
在高权限下执行程序

runu                      Execute a program under another PID
screenshot                
屏幕截图

setenv                    
设置环境变量

shell                     
执行
cmd
命令

shinject                  
将
shellcode
注入进程

shspawn                   
启动一个进程并将
shellcode
注入其中

sleep                     
设置睡眠延迟时间

socks                     
启动
SOCKS4
代理

socks stop                
停止
SOCKS4
spawn                     Spawn a session 
spawnas                   Spawn a session as another user
spawnto                   Set executable to spawn processes into
spawnu                    Spawn a session under another PID
ssh                       
使用
ssh
连接远程主机

ssh-key                   
使用密钥连接远程主机

steal_token               
从进程中窃取令牌

timestomp                 
将一个文件的时间戳应用到另一个文件

unlink                    Disconnect from parent Beacon
upload                    
上传文件

wdigest                   
使用
mimikatz
转储明文凭据

winrm                     
使用
WinRM
横向渗透

wmi                       
使用
WMI
横向渗透

二、多种Beacon

SMB Beacon

1、简介

官网介绍:SMB Beacon使用命名管道通过父级Beacon进行通讯,当两个Beacons连接后,子Beacon从父Beacon获取到任务并发送。

因为连接的Beacons使用Windows命名管道进行通信,此流量封装在SMB协议中,所以SMB Beacon相对隐蔽,绕防火墙时可能发挥奇效。

 

2SMB Beacon使用

这种Beacon要求具有SMB Beacon的主机必须接受端口445上的连接。

派生一个SMB Beacon方法:在Listner生成SMB Beacon>目标主机>右键> spawn >选中对应的Listener>上线

或在Beacon中使用命令spawn smb(smb为我的smb listener名字)

 

运行成功后外部可以看到∞∞这个字符,这就是派生的SMB Beacon。

当前是连接状态,你可以Beacon上用link <ip>命令链接它或者unlink <ip>命令断开它。

 

这种Beacon在内网横向渗透(后面会讲)中运用的很多。在内网环境中可以使用ipc $生成的SMB Beacon上传到目标主机执行,但是目标主机并不会直接上线的,需要我们自己用链接命令(link <ip>)去连接它。

DNS Beacon

DNS Beacon在绕过防火墙 权限维持上非常有效,DNS beacon可谓是最受欢迎的Cobalt Strike功能之一。

官网给出的原理示意图如下:

 

使用DNS Beacon首先要有一个域名,域名建议用国外的,省去一些不必要的麻烦,也防止被查水表。域名使用一些通用平常的即可,整个配置过程非常简单,一条A记录和几条NS记录即可。

(由于本菜没有域名,以下暂没办法复现,图源网络)

首先进入到域名管理界面

配置A记录指向服务器ip -->ns记录都指向A记录域名

配置好了我们可以用nslookup或者dig +trace来测试下是否成功:

 

如果返回的IP地址与你的服务器IP地址对应是正确的,那我们就可以开始配置dns beacon的监听器了。

 

Host那里最好填域名(A记录解析那个),不要填服务器的IP地址。

 

然后确定填上ns记录,英文逗号隔开,然后生成后门测试效果。

 

这是主机栏上出现了一个黑屏的logo,经过一段时间的等待,目标主机即可上线。

SSH beacon

目前有两种SSH Beacon连接方法:

①密码直接连接

Beacon命令: ssh [target:port] [user] [pass]

②SSH密匙连接

ssh [target:port] [user] [/path/to/key.pem]

连接成功后,就会出现一个子Beacon。

菜单栏与视图

菜单栏

1.新建连接
2.断开当前连接
3.监听器
.改变视图为
 
(可以显示各个目标的关系)
.改变视图为
 
(会话列表)
.改变视图为
 
(目标列表)
7.查看凭据信息
8.查看文件下载
9.查看键盘记录
10.查看屏幕截图
.生成无状态
后门
12.java自签名程序攻击
.生成
宏后门
.生成脚本通过
传递(利用powershell,bitsadmin,regsvr32生成会话)
.在
 
的
服务上托管一个文件(提供一个文件下载)
.管理
 
上运行的
服务
17.帮助
18.关于

Cobalt Strike

 

New Connection #
新的连接
(
支持连接多个服务器端
)
Preferences #
偏好设置
(
设置
Cobal Strike
界面、控制台、以及输出报告样式、
TeamServer
连接记录等
)
Visualization #
窗口视图模式
(
展示输出结果的形式
)
VPN Interfaces #VPN
接入

Listenrs #
监听器
(
创建
Listener)
Script Manager #
脚本管理

Close #
关闭

View

 

Applications #
应用
(
显示受害者机器的应用信息
)
Credentials #
凭证
(
通过
hashdump
或
Mimikatz
抓取过的密码都会储存在这里
)
Downloads #
下载文件

Event Log #
事件日志
(
主机上线记录以及团队协作聊天记录
)
Keystrokes #
键盘记录

Proxy Pivots #
代理模块

Screenshots #
截图

Script Console #
脚本控制台
(
可以加载各种脚本,增强功能
) 
Targets #
显示目标主机

Web Log #Web
日志

Attacks

Packages

 

HTML Application #
生成恶意的
HTA
木马文件

MS Office Macro #
生成
office
宏病毒文件

Payload Generator #
生成各种语言版本的
payload
USB/CD AutoPlay #
生成利用自动播放运行的木马文件

Windows Dropper #
捆绑器,能够对文档类进行捆绑

Windows Executable #
生成可执行
Payload
Windows Executable(S) #
把包含
payload,Stageless
生成可执行文件
(
包含多数功能
)

Web Drive-by

 

Manage #
对开启的
web
服务进行管理

Clone Site #
克隆网站
(
可记录受害者提交的数据
)
Host File #
提供
Web
以供下载某文件

Scripted Web Delivery #
提供
Web
服务,便于下载和执行
PowerShell Payload
,类似于
Metasploit
的
web_delivery 
Signed Applet Attack #
启动一个
Web
服务以提供自签名
Java Applet
的运行环境

Smart Applet Attack #
自动检测
Java
版本并利用已知的
exploits
绕过
security
System Profiler #
用来获取一些系统信息,比如系统版本,
Flash
版本,浏览器版本等

Reporting

 

0. Activity report #
活动报告

1. Hosts report #
主机报告

2. Indicators of Compromise #
威胁报告

3. Sessions report #
会话报告

4. Social engineering report #
社会工程学报告

5. Tactics, Techniques, and Procedures #
策略、技巧和程序
  
Reset Data #
重置数据

Export Data #
导出数据

Help

 

Homepage #
官方主页

Support #
技术支持

Arsenal #
开发者

System information #
版本信息

About #
关于

右键菜单

Interact

详见 “Beacon命令”

Access

 

Dump Hashes #
获取
hash
Elevate #
提权

Golden Ticket #
生成黄金票据注入当前会话

Make token #
凭证转换

Run Mimikatz #
运行
 Mimikatz 
Spawn As #
用其他用户生成
Cobalt Strike
侦听器

Explore

Browser Pivot #
劫持目标浏览器进程(浏览器代理)

Desktop(VNC) #
远程桌面

File Browser #
文件管理

Net View #
命令
Net View
Port Scan #
端口扫描

Process List #
进程列表

Screenshot #
截图

Pivoting

SOCKS Server #
代理服务

Listener #
反向端口转发

Deploy VPN #
部署
VPN

Spawn

外部监听器(如指派给MSF,获取meterpreter权限)

Session

 

Note #
备注

Remove #
删除

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

Exit #
退出

文件管理与进程管理

文件管理

右键菜单->Explore->File Browser

 

Upload上传、Make Directory创建目录、List Drives列出盘符、Refresh刷新

文件上传并执行

点击按钮upload,选择要上传的文件

 

选中文件可以进行复制、下载、执行、删除

 

执行文件时要求你输入要执行程序的参数,不需要参数直接点击确定就好。

 

文件下载

右键要下载的文件,Download,然后在菜刀栏点击下载按钮查看下载的文件

 

 

 

 

下载的文件会保存在CS下的downloads目录下

 

进程管理

右键菜单->Explore->Process List

 

Kill关闭程序、Refresh刷新进程列表、Inject是把beacon注入进程、Log Keystrokes键盘记录、Steal Token窃取运行指定程序的用户令牌

Inject进程注入

所谓进程注入就是把你的beacon会话注入到另外一个进程之中,注入后,即使你传入的后面进程被关闭,你依然可以维持目标机的权限。

用法:选中目标进程,点击Inject,然后会弹出选择监听器的框,可以选择现有的,也可以添加,选择完毕之后CS会弹回一个目标机的新的会话。

 

 

 

 

窃取token

在进程列表中,寻找以域管理员身份运行的进程,并选定进行steal token,如果成功,则会返回域管权限的beacon。

 

浏览器代理

选择一个beacon,右键,Explore-->Browser Pivot

配置好相关的端口信息后,点击Launch,即可使用目标机的指定端口作为浏览器代理


随后cobaltstrike就会注入浏览器代理dll到进程中

 

我们通过配置我们服务器的IP、端口,即可使用目标机作为浏览器代理。

 

Socks

Socks概念

目前利用网络防火墙将组织内部的网络结构与外部网络如 INTERNET 中有效地隔离开来,这种方法正变得逐渐流行起来。这些防火墙系统通常以应用层网关的形式工作在网络之间,提供受控的 TELNET 、 FTP 、 SMTP 等的接入。SOCKS 提供一个通用框架来使这些协议安全透明地穿过防火墙。

说的简单明了一点,在渗透测试中,我们使用socks技术,可以穿透进入目标机的内网,从而扩大我们的战果。

 


Cobaltstrike自带Socks功能

选择一个beacon,右键,Pivoting-->SOCKS Server,或使用命令socks [port]

 

弹出一个窗口,按要求配置好代理端口。

 

如图,成功开启socks 4,连接我们teamserver的17701端口,即可进入目标机内网。

Cobalt Strike扩展                

扩展是Cobalt Strike一个极为重要的模块,它有效地丰富了Cobalt Strike的功能。

选择菜单栏的Cobalt Strike-->Script Manager,点击load,然后选择cna扩展文件即可,旁边的unload为去除该扩展,reload为重新加载该扩展。

 

在前面我们曾介绍过提权脚本,现在再介绍几个其他好用的脚本:

脚本名称:Persistence_Meau.cna

脚本功能:持久化控制集合

 

 

脚本名称:AVQuery.cna

脚本功能:查询目标所安装的所有杀软

AV_Query   使用powershell查询注册表,查找目标上安装的所有AV

 

 

脚本名称:RedTeamRepo.cna

脚本功能:提示一下常用的渗透命令

RedRepo Windows/Linux/Tips

 

 

 

更多请看:

https://github.com/harleyQu1nn/AggressorScripts

 

 

 

提权

选择beacon,右键,Access-->Elevate。

 

 

MS14-058、MS15-051、MS16-016  :
windows本地提权漏洞

UAC-DLL

这是一种绕过UAC的攻击,它试图将本地管理员运行的有效负载从低权限提升到高权限。此攻击使用UAC漏洞将ArtifactKit生成的DLL复制到特权位置。此攻击适用于Windows7和Windows8及更高版本的未修补版本。

uac-token-duplication  :

这是另一种绕过UAC的攻击,将其从低权限提升到高权限(作为本地管理员)。这种攻击使用一个UAC漏洞,允许非提升进程使用从提升进程中窃取的token启动任意进程。此漏洞要求攻击删除分配给提升token的多个权限。此攻击适用于Windows7及更高版本。如果AlwaysNotify处于其最高设置,则此攻击要求提升的进程已在当前桌面会话中运行(作为同一用户),此漏洞使用PowerShell生成会话。

横向移动

1、横向渗透概念

横向渗透攻击技术是复杂网络攻击中广泛使用的一种技术,特别是在高级持续威胁(Advanced Persistent Threats,APT)中更加热衷于使用这种攻击方法。攻击者可以利用这些技术,以被攻陷的系统为跳板,访问其他主机,获取包括邮箱、共享文件夹或者凭证信息在内的敏感资源。

攻击者可以利用这些敏感信息,进一步控制其他系统、提升权限或窃取更多有价值的凭证。借助此类攻击,攻击者最终可能获取域控的访问权限,完全控制基于Windows系统的基础设施或与业务相关的关键账户。

在提权后,我们可以用mimikatz dump目标机的凭证,并进行内网横向移动。

2Psexec横向移动

在执行端口扫描后,目标视图中,选择一个目标,右键-->登录--psexec,即可选择凭证进行横向移动。

 

 

 

如果该机使用了和之前的目标机一样的凭证,则会成功返回一个system beacon。

 

3、窃取token

在进程列表中,寻找以域管理员身份运行的进程,并选定进行steal token,如果成功,则会返回域管权限的beacon。

 

4、其他手段横向移动

①使用各种系统漏洞:比如说用ms17-010,ms08-067批量检测一下内网。

②弱口令检测

内网中ssh弱口令,各种数据库的弱口令可谓是层出不穷。Mysql可以mof提权,sqlserver可以xp_cmdshell,redis写shell,oracle也有方法执行系统命令。

③中间件漏洞

这个就非常常见了,比如weblogic各种rce漏洞等等。

④Web端漏洞

 

参考

https://www.jianshu.com/p/8d823adbc6b5

https://www.cnblogs.com/ichunqiu/p/12134247.html

posted @   yokan  阅读(2769)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示