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端漏洞