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
1、Cobaltstrike 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回来,来继续后面的内网渗透,这时就选择使用外部监听器。
2、Listener的配置
选择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相对隐蔽,绕防火墙时可能发挥奇效。

2、SMB 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.监听器
4.改变视图为PivotGraph(可以显示各个目标的关系)
5.改变视图为SessionTable(会话列表)
6.改变视图为TargetTable(目标列表)
7.查看凭据信息
8.查看文件下载
9.查看键盘记录
10.查看屏幕截图
11.生成无状态Beacon后门
12.java自签名程序攻击
13.生成office宏后门
14.生成脚本通过web传递(利用powershell,bitsadmin,regsvr32生成会话)
15.在CobaltStrike的web服务上托管一个文件(提供一个文件下载)
16.管理CobaltStrike上运行的web服务
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 #脚本控制台(可以加载各种脚本,增强功能https://github.com/rsmudge/cortana-scripts)
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目标机的凭证,并进行内网横向移动。
2、Psexec横向移动
在执行端口扫描后,目标视图中,选择一个目标,右键-->登录--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端漏洞

浙公网安备 33010602011771号