Sliver采用经典的三层架构设计,包含:
- Server层: C2指挥控制服务器
- Client层: 用户控制客户端
- Implant层: 植入载荷终端
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Server │◄──►│ Client │ │ Implant │
│ (C2服务器) │ │ (控制客户端) │ │ (植入载荷) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
▲ ▲ ▲
│ │ │
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ 数据库 │ │ 命令行 │ │ 处理器 │
│ (SQLite)│ │ 接口 │ │ (Handlers)│
└─────────┘ └─────────┘ └─────────┘
sliver-go-v1.23.5/
├── .github/ # GitHub工作流配置
├── client/ # 客户端控制台应用程序
├── docs/ # 项目文档
├── implant/ # 植入载荷源代码
├── protobuf/ # Protocol Buffer定义文件
├── server/ # C2服务器核心组件
├── util/ # 通用工具函数库
├── vendor/ # 第三方依赖包
├── .dockerignore # Docker忽略文件
├── .gitignore # Git忽略文件
├── CONTRIBUTING.md # 贡献指南
├── Dockerfile # Docker构建文件
├── LICENSE # 开源许可证
├── Makefile # 构建脚本
├── README.md # 项目说明
├── SECURITY.md # 安全策略
├── build.py # Python构建脚本
├── go-assets.sh # Go资源处理脚本
├── go-tests.sh # Go测试脚本
├── go.mod # Go模块定义
└── go.sum # Go依赖校验和
server/
├── assets/ # 静态资源管理
│ ├── fs/ # 嵌入文件系统
│ │ ├── english.txt # 英语词典
│ │ ├── sliver.asc # GPG公钥
│ │ └── traffic-encoders/ # 流量编码器
│ ├── traffic-encoders/ # 流量编码器资源
│ ├── assets-helpers.go # 资源助手函数
│ ├── assets.go # 资源管理主文件
│ └── assets_*_*.go # 平台特定资源
├── builder/ # 构建系统
│ └── builder.go # 构建器实现
├── c2/ # C2通信处理
│ ├── dns.go # DNS传输实现 (27.5KB)
│ ├── dns_test.go # DNS传输测试
│ ├── http.go # HTTP传输实现 (25.4KB)
│ ├── http_test.go # HTTP传输测试
│ ├── jobs.go # 作业管理 (8.5KB)
│ ├── mtls.go # mTLS传输实现 (6.8KB)
│ ├── tcp-stager.go # TCP分段加载器
│ ├── wireguard.go # WireGuard传输 (8.8KB)
│ ├── c2_test.go # C2通用测试
│ ├── c2profile.go # C2配置文件
│ └── README.md # C2模块说明
├── certs/ # 证书管理系统
│ ├── acme.go # ACME协议实现
│ ├── ca.go # CA证书管理
│ ├── cert.go # 证书生成
│ ├── client.go # 客户端证书
│ ├── csr.go # CSR处理
│ ├── key.go # 密钥管理
│ ├── letsencrypt.go # Let's Encrypt集成
│ ├── minisign.go # Minisign签名
│ ├── multiplayer.go # 多玩家证书
│ ├── server.go # 服务器证书
│ └── utils.go # 证书工具函数
├── cli/ # 命令行接口
│ ├── cli.go # CLI主入口
│ ├── commands.go # 命令定义
│ ├── config.go # 配置管理
│ ├── console.go # 控制台接口
│ ├── generate.go # 生成命令
│ ├── jobs.go # 作业命令
│ ├── server.go # 服务器命令
│ └── version.go # 版本命令
├── codenames/ # 代号生成器
│ └── codenames.go # 代号生成功能
├── configs/ # 配置管理
│ ├── configs.go # 配置主文件
│ ├── database.go # 数据库配置
│ ├── filesystem.go # 文件系统配置
│ ├── logging.go # 日志配置
│ ├── network.go # 网络配置
│ └── security.go # 安全配置
├── console/ # 控制台界面
│ ├── console.go # 控制台主文件
│ ├── input.go # 输入处理
│ └── output.go # 输出处理
├── core/ # 核心业务逻辑 (14个文件)
│ ├── sessions.go # 会话管理 (8.0KB)
│ ├── beacons.go # 信标管理
│ ├── events.go # 事件系统 (2.6KB)
│ ├── hosts.go # 主机管理 (3.1KB)
│ ├── jobs.go # 作业管理 (2.4KB)
│ ├── pivots.go # 代理管理 (6.1KB)
│ ├── socks.go # SOCKS代理 (2.0KB)
│ ├── tunnels.go # 隧道管理 (5.4KB)
│ ├── builders.go # 构建管理 (1.6KB)
│ ├── clients.go # 客户端管理 (2.4KB)
│ ├── connnection.go # 连接管理 (2.3KB)
│ ├── core.go # 核心初始化 (0.9KB)
│ ├── crackstations.go # 破解站管理 (2.6KB)
│ └── rtunnels/ # 反向隧道目录
├── cryptography/ # 加密功能
│ ├── crypto.go # 加密主文件
│ ├── keygen.go # 密钥生成
│ └── utils.go # 加密工具
├── daemon/ # 守护进程
│ ├── daemon.go # 守护进程主文件
│ └── service.go # 服务管理
├── db/ # 数据库层 (10个文件 + models目录)
│ ├── models/ # 数据模型定义 (17个文件)
│ │ ├── session.go # 会话模型
│ │ ├── beacon.go # 信标模型
│ │ ├── implant.go # 植入模型
│ │ ├── jobs.go # 作业模型
│ │ ├── host.go # 主机模型
│ │ ├── credentials.go # 凭据模型
│ │ ├── loot.go # 战利品模型
│ │ ├── website.go # 网站模型
│ │ ├── certificates.go # 证书模型
│ │ ├── operator.go # 操作员模型
│ │ ├── canary.go # 金丝雀模型
│ │ ├── crackstations.go # 破解站模型
│ │ ├── http-c2.go # HTTP C2模型
│ │ ├── keyex.go # 密钥交换模型
│ │ ├── keyvalue.go # 键值对模型
│ │ ├── monitor.go # 监控模型
│ │ ├── resource_id.go # 资源ID模型
│ │ └── wgkeys.go # WireGuard密钥模型
│ ├── db.go # 数据库主文件
│ ├── helpers.go # 数据库助手 (41.7KB)
│ ├── logger.go # 数据库日志
│ ├── sql-cgo.go # CGO SQL实现
│ ├── sql-go.go # Go SQL实现
│ ├── sql-wasm.go # WASM SQL实现
│ ├── sql.go # SQL通用实现 (3.9KB)
│ └── wasmsqlite/ # WASM SQLite目录
├── encoders/ # 编码器
│ ├── encoders.go # 编码器主文件
│ └── traffic.go # 流量编码器
├── generate/ # 植入载荷生成 (12个文件)
│ ├── compiler.go # 编译器
│ ├── config.go # 生成配置
│ ├── cross-compiler.go # 交叉编译器
│ ├── external.go # 外部生成器
│ ├── generator.go # 生成器主文件
│ ├── go-config.go # Go配置
│ ├── implant.go # 植入生成
│ ├── profiles.go # 配置文件
│ ├── stage.go # 分段加载
│ ├── stager.go # 加载器
│ ├── templates.go # 模板管理
│ ├── third-party.go # 第三方集成
│ └── wasm.go # WASM支持
├── gogo/ # GoGo协议缓冲区
│ ├── gogo.go # GoGo主文件
│ ├── plugin.go # 插件支持
│ └── types.go # 类型定义
├── handlers/ # 请求处理器 (7个文件)
│ ├── beacon.go # 信标处理器
│ ├── handlers.go # 处理器主文件
│ ├── jobs.go # 作业处理器
│ ├── pivot.go # 代理处理器
│ ├── sessions.go # 会话处理器
│ ├── tunnel.go # 隧道处理器
│ └── utils.go # 处理器工具
├── log/ # 日志系统
│ ├── log.go # 日志主文件
│ └── logger.go # 日志记录器
├── loot/ # 战利品管理
│ ├── loot.go # 战利品主文件
│ ├── file.go # 文件战利品
│ ├── cred.go # 凭据战利品
│ └── screenshot.go # 截图战利品
├── main.go # 服务器主入口
├── msf/ # Metasploit集成
│ ├── msf.go # MSF主文件
│ └── payload.go # 载荷生成
├── netstack/ # 网络栈
│ └── netstack.go # 网络栈实现
├── rpc/ # gRPC服务接口 (45个文件)
│ ├── rpc.go # RPC主文件 (5.7KB)
│ ├── errors.go # 错误处理 (2.1KB)
│ ├── rpc-backdoor.go # 后门RPC (3.9KB)
│ ├── rpc-beacons.go # 信标RPC (4.4KB)
│ ├── rpc-c2profile.go # C2配置RPC (2.7KB)
│ ├── rpc-certificates.go # 证书RPC (2.8KB)
│ ├── rpc-client-logs.go # 客户端日志RPC (5.5KB)
│ ├── rpc-crackstations.go # 破解站RPC (15.7KB)
│ ├── rpc-creds.go # 凭据RPC (5.0KB)
│ ├── rpc-env.go # 环境RPC (1.7KB)
│ ├── rpc-events.go # 事件RPC (1.3KB)
│ ├── rpc-execute.go # 执行RPC (1.5KB)
│ ├── rpc-extensions.go # 扩展RPC (1.2KB)
│ ├── rpc-filesystem.go # 文件系统RPC (7.0KB)
│ ├── rpc-generate.go # 生成RPC (24.0KB)
│ ├── rpc-hijack.go # 劫持RPC (12.3KB)
│ ├── rpc-hosts.go # 主机RPC (2.1KB)
│ ├── rpc-jobs.go # 作业RPC (7.1KB)
│ ├── rpc-kill.go # 终止RPC (2.5KB)
│ ├── rpc-loot.go # 战利品RPC (2.3KB)
│ ├── rpc-monitor.go # 监控RPC (1.3KB)
│ ├── rpc-msf.go # MSF RPC (3.5KB)
│ ├── rpc-net.go # 网络RPC (1.4KB)
│ ├── rpc-operators.go # 操作员RPC (1.6KB)
│ ├── rpc-ping.go # Ping RPC (0.4KB)
│ ├── rpc-pivots.go # 代理RPC (2.3KB)
│ ├── rpc-portfwd.go # 端口转发RPC (1.5KB)
│ ├── rpc-priv.go # 权限RPC (5.1KB)
│ ├── rpc-process.go # 进程RPC (1.7KB)
│ ├── rpc-reconfig.go # 重新配置RPC (3.0KB)
│ ├── rpc-registry.go # 注册表RPC (3.3KB)
│ ├── rpc-rportfwd.go # 反向端口转发RPC (1.9KB)
│ ├── rpc-screenshot.go # 截图RPC (1.1KB)
│ ├── rpc-service.go # 服务RPC (2.0KB)
│ ├── rpc-sessions.go # 会话RPC (3.1KB)
│ ├── rpc-shell.go # Shell RPC (2.1KB)
│ ├── rpc-shellcode.go # Shellcode RPC (2.0KB)
│ ├── rpc-socks.go # SOCKS RPC (5.2KB)
│ ├── rpc-stager.go # 加载器RPC (1.8KB)
│ ├── rpc-tasks.go # 任务RPC (14.7KB)
│ ├── rpc-tunnel.go # 隧道RPC (7.5KB)
│ ├── rpc-wasm.go # WASM RPC (2.0KB)
│ ├── rpc-website.go # 网站RPC (4.8KB)
│ └── rpc-wg.go # WireGuard RPC (3.0KB)
├── sgn/ # Shikata Ga Nai编码器
│ └── sgn.go # SGN实现
├── transport/ # 传输层抽象
│ ├── transport.go # 传输层主文件
│ ├── mtls.go # mTLS传输
│ ├── http.go # HTTP传输
│ ├── dns.go # DNS传输
│ └── wireguard.go # WireGuard传输
├── watchtower/ # 监控塔
│ ├── watchtower.go # 监控塔主文件
│ └── canary.go # 金丝雀检测
├── website/ # Web站点管理
│ ├── website.go # 网站主文件
│ ├── content.go # 内容管理
│ └── handler.go # 请求处理器
└── README.md # 服务器模块说明
client/
├── assets/ # 客户端资源
│ ├── aliases.go # 别名资源
│ ├── armories.go # 军械库资源
│ ├── assets.go # 资源主文件
│ ├── c2profiles.go # C2配置文件资源
│ ├── config.go # 配置资源
│ ├── extensions.go # 扩展资源
│ ├── README.md # 资源说明
│ └── settings.go # 设置资源
├── cli/ # 命令行接口
│ ├── cli.go # CLI主文件
│ ├── config.go # CLI配置
│ ├── console.go # CLI控制台
│ ├── implant.go # 植入CLI
│ ├── import.go # 导入功能
│ ├── version.go # 版本信息
│ └── README.md # CLI说明
├── command/ # 命令实现 (55个子目录)
│ ├── alias/ # 别名命令 (7个文件)
│ ├── armory/ # 军械库命令 (8个文件)
│ ├── backdoor/ # 后门命令 (3个文件)
│ ├── beacons/ # 信标命令 (7个文件)
│ ├── builders/ # 构建器命令 (2个文件)
│ ├── c2profiles/ # C2配置命令 (2个文件)
│ ├── certificates/ # 证书命令 (2个文件)
│ ├── clean/ # 清理命令 (1个文件)
│ ├── completers/ # 自动补全 (2个文件)
│ ├── crack/ # 破解命令 (4个文件)
│ ├── creds/ # 凭据命令 (6个文件)
│ ├── cursed/ # 诅咒命令 (10个文件)
│ ├── dllhijack/ # DLL劫持命令 (3个文件)
│ ├── environment/ # 环境命令 (5个文件)
│ ├── exec/ # 执行命令 (12个文件)
│ ├── exit/ # 退出命令 (1个文件)
│ ├── extensions/ # 扩展命令 (8个文件)
│ ├── filesystem/ # 文件系统命令 (21个文件)
│ ├── flags/ # 标志命令 (1个文件)
│ ├── generate/ # 生成命令 (17个文件)
│ ├── help/ # 帮助命令 (3个文件)
│ ├── hosts/ # 主机命令 (6个文件)
│ ├── info/ # 信息命令 (4个文件)
│ ├── jobs/ # 作业命令 (9个文件)
│ ├── kill/ # 终止命令 (2个文件)
│ ├── licenses/ # 许可证命令 (1个文件)
│ ├── loot/ # 战利品命令 (9个文件)
│ ├── monitor/ # 监控命令 (5个文件)
│ ├── network/ # 网络命令 (4个文件)
│ ├── operators/ # 操作员命令 (3个文件)
│ ├── pivots/ # 代理命令 (8个文件)
│ ├── portfwd/ # 端口转发命令 (5个文件)
│ ├── privilege/ # 权限命令 (8个文件)
│ ├── processes/ # 进程命令 (7个文件)
│ ├── reaction/ # 反应命令 (8个文件)
│ ├── reconfig/ # 重新配置命令 (4个文件)
│ ├── registry/ # 注册表命令 (7个文件)
│ ├── rportfwd/ # 反向端口转发命令 (4个文件)
│ ├── screenshot/ # 截图命令 (3个文件)
│ ├── sessions/ # 会话命令 (8个文件)
│ ├── settings/ # 设置命令 (6个文件)
│ ├── shell/ # Shell命令 (5个文件)
│ ├── shikata-ga-nai/ # SGN命令 (2个文件)
│ ├── socks/ # SOCKS命令 (5个文件)
│ ├── taskmany/ # 批量任务命令 (2个文件)
│ ├── tasks/ # 任务命令 (6个文件)
│ ├── update/ # 更新命令 (3个文件)
│ ├── use/ # 使用命令 (5个文件)
│ ├── wasm/ # WASM命令 (3个文件)
│ ├── websites/ # 网站命令 (7个文件)
│ ├── wireguard/ # WireGuard命令 (9个文件)
│ ├── command.go # 命令主文件 (4.2KB)
│ ├── server.go # 服务器命令 (5.1KB)
│ ├── sliver.go # Sliver命令 (5.3KB)
│ └── README.md # 命令说明
├── console/ # 控制台界面
│ ├── console.go # 控制台主文件
│ ├── log.go # 控制台日志
│ └── README.md # 控制台说明
├── constants/ # 常量定义
│ ├── constants.go # 常量主文件
│ └── README.md # 常量说明
├── core/ # 客户端核心功能 (8个文件)
│ ├── bof.go # BOF支持 (2.3KB)
│ ├── curses.go # Curses界面 (2.3KB)
│ ├── portfwd.go # 端口转发 (6.7KB)
│ ├── reactions.go # 事件反应 (3.2KB)
│ ├── socks.go # SOCKS代理 (6.3KB)
│ ├── tunnel.go # 隧道管理 (2.2KB)
│ ├── tunnel_io.go # 隧道IO (3.0KB)
│ └── tunnels.go # 隧道集合 (3.9KB)
├── credentials/ # 凭据管理
│ ├── credentials.go # 凭据主文件
│ ├── sniff.go # 凭据嗅探
│ ├── sniff_test.go # 凭据嗅探测试
│ └── EXAMPLES.md # 凭据示例
├── licenses/ # 许可证管理
│ ├── licenses.go # 许可证主文件
│ └── README.md # 许可证说明
├── main.go # 客户端主入口
├── overlord/ # Overlord模块
│ └── overlord.go # Overlord实现
├── packages/ # 包管理
│ └── output.go # 输出包
├── spin/ # 旋转动画
│ └── spin.go # 旋转实现
├── tcpproxy/ # TCP代理
│ └── tcpproxy.go # TCP代理实现
├── transport/ # 传输层
│ └── mtls.go # mTLS传输
├── version/ # 版本管理
│ ├── sliver-version.go # Sliver版本
│ ├── updates.go # 更新检查
│ └── README.md # 版本说明
└── README.md # 客户端模块说明
implant/
├── scripts/ # 构建脚本
│ ├── update-vendor.go # 更新供应商脚本
│ └── update-vendor.sh # 更新供应商脚本
├── sliver/ # 主要植入代码 (34个子目录)
│ ├── constants/ # 常量定义
│ │ └── constants.go # 常量主文件
│ ├── cryptography/ # 加密功能
│ │ ├── crypto.go # 加密主文件
│ │ ├── keygen.go # 密钥生成
│ │ ├── utils.go # 加密工具
│ │ └── wrapper.go # 加密包装器
│ ├── encoders/ # 编码器 (15个文件)
│ │ ├── base64.go # Base64编码
│ │ ├── hex.go # Hex编码
│ │ ├── xor.go # XOR编码
│ │ └── ... # 其他编码器
│ ├── evasion/ # 规避技术
│ │ ├── evasion.go # 规避主文件
│ │ ├── process.go # 进程规避
│ │ ├── timing.go # 时间规避
│ │ └── user.go # 用户规避
│ ├── extension/ # 扩展功能
│ │ ├── extension.go # 扩展主文件
│ │ ├── bof.go # BOF支持
│ │ ├── coff.go # COFF支持
│ │ ├── dotnet.go # .NET支持
│ │ ├── python.go # Python支持
│ │ ├── wasm.go # WASM支持
│ │ └── wrapper.go # 扩展包装器
│ ├── forwarder/ # 转发器
│ │ ├── forwarder.go # 转发器主文件
│ │ ├── tcp.go # TCP转发
│ │ └── udp.go # UDP转发
│ ├── handlers/ # 命令处理器 (21个文件)
│ │ ├── handlers.go # 处理器主文件 (42.8KB)
│ │ ├── handlers_darwin.go # Darwin处理器 (4.8KB)
│ │ ├── handlers_generic.go # 通用处理器 (2.4KB)
│ │ ├── handlers_linux.go # Linux处理器 (12.1KB)
│ │ ├── handlers_windows.go # Windows处理器 (26.8KB)
│ │ ├── kill-handlers.go # 终止处理器 (1.5KB)
│ │ ├── kill-handlers_windows.go # Windows终止处理器 (1.9KB)
│ │ ├── pivot-handlers.go # 代理处理器 (3.8KB)
│ │ ├── rpc-handlers.go # RPC处理器 (6.7KB)
│ │ ├── rpc-handlers_darwin.go # Darwin RPC处理器 (1.7KB)
│ │ ├── rpc-handlers_linux.go # Linux RPC处理器 (5.5KB)
│ │ ├── rpc-handlers_windows.go # Windows RPC处理器 (1.8KB)
│ │ ├── rpc-handlers-cgo.go # CGO RPC处理器 (1.4KB)
│ │ ├── rpc-handlers-generic.go # 通用RPC处理器 (0.9KB)
│ │ ├── extensions-wasm.go # WASM扩展 (2.9KB)
│ │ ├── handlers-wireguard.go # WireGuard处理器 (4.6KB)
│ │ ├── tun-rportfwd.go # 反向端口转发 (4.3KB)
│ │ ├── tun.go # 隧道处理 (1.6KB)
│ │ ├── matcher/ # 匹配器目录
│ │ └── tunnel_handlers/ # 隧道处理器目录
│ ├── hostuuid/ # 主机UUID
│ │ ├── hostuuid.go # UUID主文件
│ │ ├── darwin.go # Darwin UUID
│ │ ├── linux.go # Linux UUID
│ │ ├── windows.go # Windows UUID
│ │ └── utils.go # UUID工具
│ ├── limits/ # 限制检查
│ │ ├── limits.go # 限制主文件
│ │ ├── domain.go # 域限制
│ │ ├── file.go # 文件限制
│ │ ├── hostname.go # 主机名限制
│ │ └── time.go # 时间限制
│ ├── locale/ # 本地化
│ │ ├── locale.go # 本地化主文件
│ │ ├── darwin.go # Darwin本地化
│ │ └── windows.go # Windows本地化
│ ├── mount/ # 挂载功能
│ │ ├── mount.go # 挂载主文件
│ │ └── windows.go # Windows挂载
│ ├── netstack/ # 网络栈
│ │ └── netstack.go # 网络栈实现
│ ├── netstat/ # 网络状态
│ │ ├── netstat.go # 网络状态主文件
│ │ ├── darwin.go # Darwin网络状态
│ │ ├── linux.go # Linux网络状态
│ │ ├── windows.go # Windows网络状态
│ │ ├── parser.go # 状态解析器
│ │ ├── tcp.go # TCP状态
│ │ ├── udp.go # UDP状态
│ │ └── utils.go # 网络工具
│ ├── pivots/ # 代理功能
│ │ ├── pivot.go # 代理主文件
│ │ ├── namedpipe.go # 命名管道
│ │ ├── tcp.go # TCP代理
│ │ ├── websocket.go # WebSocket代理
│ │ ├── wireguard.go # WireGuard代理
│ │ └── utils.go # 代理工具
│ ├── priv/ # 权限提升
│ │ ├── priv.go # 权限主文件
│ │ └── windows.go # Windows权限
│ ├── procdump/ # 进程转储
│ │ ├── procdump.go # 转储主文件
│ │ ├── darwin.go # Darwin转储
│ │ ├── linux.go # Linux转储
│ │ └── windows.go # Windows转储
│ ├── proxy/ # 代理功能 (14个文件)
│ │ ├── proxy.go # 代理主文件
│ │ ├── http.go # HTTP代理
│ │ ├── socks5.go # SOCKS5代理
│ │ ├── tcp.go # TCP代理
│ │ └── ... # 其他代理类型
│ ├── ps/ # 进程管理 (6个文件)
│ │ ├── ps.go # 进程主文件
│ │ ├── darwin.go # Darwin进程
│ │ ├── linux.go # Linux进程
│ │ ├── windows.go # Windows进程
│ │ ├── parser.go # 进程解析
│ │ └── utils.go # 进程工具
│ ├── registry/ # 注册表操作
│ │ ├── registry.go # 注册表主文件
│ │ └── windows.go # Windows注册表
│ ├── rportfwd/ # 反向端口转发
│ │ ├── rportfwd.go # 反向转发主文件
│ │ └── tcp.go # TCP反向转发
│ ├── screen/ # 屏幕操作 (4个文件)
│ │ ├── screen.go # 屏幕主文件
│ │ ├── darwin.go # Darwin屏幕
│ │ ├── linux.go # Linux屏幕
│ │ └── windows.go # Windows屏幕
│ ├── service/ # 服务管理
│ │ ├── service.go # 服务主文件
│ │ └── windows.go # Windows服务
│ ├── shell/ # Shell功能 (6个文件)
│ │ ├── shell.go # Shell主文件
│ │ ├── cmd.go # CMD支持
│ │ ├── powershell.go # PowerShell支持
│ │ ├── sh.go # SH支持
│ │ └── ... # 其他Shell类型
│ ├── spoof/ # 欺骗功能
│ │ ├── spoof.go # 欺骗主文件
│ │ └── mac.go # MAC地址欺骗
│ ├── syscalls/ # 系统调用 (4个文件)
│ │ ├── syscalls.go # 系统调用主文件
│ │ ├── darwin.go # Darwin系统调用
│ │ ├── linux.go # Linux系统调用
│ │ └── windows.go # Windows系统调用
│ ├── taskrunner/ # 任务运行器 (6个文件)
│ │ ├── taskrunner.go # 任务运行器主文件
│ │ ├── bof.go # BOF任务
│ │ ├── coff.go # COFF任务
│ │ ├── dotnet.go # .NET任务
│ │ └── ... # 其他任务类型
│ ├── tcpproxy/ # TCP代理
│ │ └── tcpproxy.go # TCP代理实现
│ ├── transports/ # 传输层实现 (12个文件)
│ │ ├── transports.go # 传输层主文件 (5.2KB)
│ │ ├── beacon.go # 信标传输 (7.6KB)
│ │ ├── connection.go # 连接管理 (2.2KB)
│ │ ├── session.go # 会话传输 (16.1KB)
│ │ ├── tunnel.go # 隧道传输 (1.0KB)
│ │ ├── transports_generic.go # 通用传输 (1.0KB)
│ │ ├── transports_windows.go # Windows传输 (3.6KB)
│ │ ├── dnsclient/ # DNS客户端目录
│ │ ├── httpclient/ # HTTP客户端目录
│ │ ├── mtls/ # mTLS传输目录
│ │ ├── pivotclients/ # 代理客户端目录
│ │ └── wireguard/ # WireGuard传输目录
│ ├── version/ # 版本信息 (5个文件)
│ │ ├── version.go # 版本主文件
│ │ ├── build.go # 构建信息
│ │ ├── git.go # Git信息
│ │ ├── runtime.go # 运行时信息
│ │ └── utils.go # 版本工具
│ ├── winhttp/ # WinHTTP客户端 (3个文件)
│ │ ├── winhttp.go # WinHTTP主文件
│ │ ├── client.go # HTTP客户端
│ │ └── utils.go # HTTP工具
│ ├── sliver.go # 植入主文件 (19.3KB)
│ ├── sliver.c # C绑定 (1.5KB)
│ ├── sliver.h # C头文件 (0.2KB)
│ └── README.md # 植入模块说明
├── vendor/ # 植入依赖包
├── generate.go # 构建脚本
├── go-mod # Go模块模板
├── go-sum # Go校验和模板
├── implant.go # 植入主文件
└── README.md # 植入模块说明
protobuf/
├── clientpb/ # 客户端协议缓冲区
│ ├── client.pb.go # 生成的Go代码
│ └── client.proto # 客户端协议定义
├── commonpb/ # 公共协议缓冲区
│ ├── common.pb.go # 生成的Go代码
│ └── common.proto # 公共协议定义
├── dnspb/ # DNS协议缓冲区
│ ├── dns.pb.go # 生成的Go代码
│ └── dns.proto # DNS协议定义
├── rpcpb/ # RPC协议缓冲区
│ ├── rpc.pb.go # 生成的Go代码
│ ├── rpc_grpc.pb.go # 生成的gRPC代码
│ └── rpc.proto # RPC协议定义
├── sliverpb/ # 植入协议缓冲区
│ ├── sliver.pb.go # 生成的Go代码
│ ├── sliver_grpc.pb.go # 生成的gRPC代码
│ └── sliver.proto # 植入协议定义
├── protobufs.go # Protobuf主文件
└── README.md # Protobuf说明
util/
├── encoders/ # 编码器工具 (22个文件)
│ ├── base64.go # Base64编码器
│ ├── hex.go # Hex编码器
│ ├── xor.go # XOR编码器
│ └── ... # 其他编码器
├── leaky/ # 泄漏检测
│ └── bucket.go # 桶泄漏检测
├── minisign/ # Minisign签名 (10个文件)
│ ├── minisign.go # Minisign主文件
│ ├── key.go # 密钥管理
│ ├── signature.go # 签名处理
│ └── ... # 其他签名功能
├── cryptography.go # 加密工具 (2.6KB)
├── files.go # 文件工具 (2.7KB)
├── generics.go # 泛型工具 (0.3KB)
├── implant.go # 植入工具 (1.3KB)
├── implant_test.go # 植入测试 (1.2KB)
├── paths_generic.go # 通用路径处理 (0.2KB)
├── paths_test.go # 路径测试 (0.4KB)
├── paths_windows.go # Windows路径处理 (0.4KB)
└── resource_ids.go # 资源ID工具 (0.3KB)
主要功能:
- 管理所有活跃的植入会话
- 提供会话生命周期管理
- 实现消息路由和响应处理
- 健康检查和死会话检测
关键数据结构:
type Session struct {
ID string // 会话唯一标识
Name string // 会话名称
Hostname string // 主机名
UUID string // 主机UUID
Username string // 用户名
UID string // 用户ID
GID string // 组ID
OS string // 操作系统
Version string // Sliver版本
Arch string // 架构
PID int32 // 进程ID
Filename string // 可执行文件名
Connection *ImplantConnection // 连接对象
ActiveC2 string // 活跃C2地址
ReconnectInterval int64 // 重连间隔
ProxyURL string // 代理URL
PollTimeout int64 // 轮询超时
Burned bool // 是否被标记
Extensions []string // 加载的扩展
ConfigID string // 配置ID
PeerID int64 // 对等ID
Locale string // 本地化信息
FirstContact int64 // 首次接触时间
Integrity string // 完整性级别
}主要功能:
- 管理周期性检查的信标
- 任务队列管理
- 时间间隔和抖动控制
- 异步任务处理
关键特性:
- 可配置的检查间隔
- 随机抖动避免检测
- 任务状态跟踪
- 批量任务处理
支持的传输协议:
- mTLS: 双向TLS加密,最高安全性
- HTTP(S): Web协议伪装,良好隐蔽性
- DNS: DNS隧道,极佳隐蔽性
- WireGuard: VPN隧道,网络层加密
- Named Pipes: Windows管道,内网穿透
通信机制:
- 长连接保持
- 心跳检测
- 消息确认机制
- 断线重连
技术栈:
- ORM: GORM
- 默认引擎: SQLite
- 支持: MySQL, PostgreSQL
主要模型:
- Session: 会话数据
- Beacon: 信标数据
- BeaconTask: 信标任务
- ImplantBuild: 植入构建记录
- Job: 后台任务
处理器分类:
// 系统处理器 (处理文件、进程等基础操作)
var SystemHandlers = map[uint32]RPCHandler{
sliverpb.MsgPing: pingHandler,
sliverpb.MsgLsReq: dirListHandler,
sliverpb.MsgDownloadReq: downloadHandler,
}
// 特殊处理器 (终止、迁移等特殊操作)
var KillHandlers = map[uint32]KillHandler{
sliverpb.MsgKill: killHandler,
}
// 隧道处理器 (网络隧道相关)
var TunnelHandlers = map[uint32]TunnelHandler{
sliverpb.MsgTunnelOpen: tunnelOpenHandler,
}Client Command → gRPC → Server Handler → Database → Response
↓ ↓ ↓ ↓ ↑
用户输入 序列化 业务处理 数据持久化 返回结果
Server → Transport Layer → Implant → Handler → Response
↓ ↓ ↓ ↓ ↑
消息封装 协议传输 消息接收 命令执行 结果返回
Event Occurs → Event Broker → Reactions → Automated Actions
↓ ↓ ↓ ↓
事件发生 事件分发 反应匹配 自动执行
- 连接处理: 每个连接独立goroutine
- 消息处理: 异步处理避免阻塞
- 任务执行: 并发执行提高效率
- 定时任务: ticker驱动的周期性任务
// 互斥锁保护共享资源
var sessionsMutex = &sync.RWMutex{}
// Channel用于goroutine间通信
respChan := make(chan *sliverpb.Envelope)
// WaitGroup等待任务完成
var wg sync.WaitGroup- 双向TLS: 服务器和客户端相互认证
- 证书管理: 自动生成和管理PKI体系
- 会话管理: 安全的会话状态跟踪
- 传输加密: TLS 1.3加密所有通信
- 数据完整性: 消息签名验证
- 密钥管理: age加密库的安全密钥处理
- 进程注入: DLL注入、反射注入技术
- 内存操作: 直接内存读写避免磁盘IO
- 行为伪装: 模拟正常系统行为
// 可动态加载的扩展模块
type Extension interface {
Name() string
Execute([]byte) ([]byte, error)
}- 支持自定义C2协议
- 可插拔的传输层实现
- 动态协议协商
- BOF (Beacon Object Files) 支持
- COFF加载器
- .NET程序集执行
┌─────────────────────────────┐
│ Single Server │
│ ┌─────────┐ ┌─────────┐ │
│ │ Sliver │ │ Database│ │
│ │ Server │ │ (SQLite)│ │
│ └─────────┘ └─────────┘ │
└─────────────────────────────┘
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Load Balancer│ │ Database │ │ Storage │
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
│ │ │
┌──────┴──────┐ ┌──────┴──────┐ ┌──────┴──────┐
│ Sliver Node1│ │ Sliver Node2│ │ Sliver Node3│
└─────────────┘ └─────────────┘ └─────────────┘
- 结构化日志记录
- 多级别日志输出
- 性能指标收集
- 连接状态监控
- 系统资源监控
- 自动故障恢复
- 动态配置更新
- 环境变量支持
- 配置文件管理
Sliver项目的架构设计体现了现代安全工具的最佳实践:
优势特点:
- ✅ 模块化设计,易于维护和扩展
- ✅ 多层次安全防护机制
- ✅ 高并发处理能力
- ✅ 跨平台兼容性
- ✅ 丰富的协议支持
- ✅ 完善的错误处理
适用场景:
- 企业红队演练
- 渗透测试评估
- 安全研究分析
- 威胁模拟训练
该架构为类似的安全工具开发提供了优秀的参考模板。