Skip to content

Latest commit

 

History

History
867 lines (811 loc) · 40.4 KB

File metadata and controls

867 lines (811 loc) · 40.4 KB

Sliver项目详细架构报告

1. 整体架构概述

Sliver采用经典的三层架构设计,包含:

  • Server层: C2指挥控制服务器
  • Client层: 用户控制客户端
  • Implant层: 植入载荷终端
┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│     Server      │◄──►│     Client      │    │    Implant      │
│   (C2服务器)    │    │   (控制客户端)   │    │   (植入载荷)    │
└─────────────────┘    └─────────────────┘    └─────────────────┘
        ▲                       ▲                       ▲
        │                       │                       │
        ▼                       ▼                       ▼
   ┌─────────┐            ┌─────────┐            ┌─────────┐
   │  数据库  │            │ 命令行  │            │ 处理器  │
   │ (SQLite)│            │  接口   │            │ (Handlers)│
   └─────────┘            └─────────┘            └─────────┘

2. 详细目录结构分析

2.1 根目录结构

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依赖校验和

2.2 Server模块详细结构

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           # 服务器模块说明

2.3 Client模块详细结构

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           # 客户端模块说明

2.4 Implant模块详细结构

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           # 植入模块说明

2.5 Protobuf模块结构

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说明

2.6 Util工具模块结构

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)

3. 核心组件功能详细分析

3.1 会话管理系统 (server/core/sessions.go)

主要功能:

  • 管理所有活跃的植入会话
  • 提供会话生命周期管理
  • 实现消息路由和响应处理
  • 健康检查和死会话检测

关键数据结构:

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              // 完整性级别
}

3.2 信标管理系统 (server/core/beacons.go)

主要功能:

  • 管理周期性检查的信标
  • 任务队列管理
  • 时间间隔和抖动控制
  • 异步任务处理

关键特性:

  • 可配置的检查间隔
  • 随机抖动避免检测
  • 任务状态跟踪
  • 批量任务处理

3.3 C2通信系统 (server/c2/)

支持的传输协议:

  1. mTLS: 双向TLS加密,最高安全性
  2. HTTP(S): Web协议伪装,良好隐蔽性
  3. DNS: DNS隧道,极佳隐蔽性
  4. WireGuard: VPN隧道,网络层加密
  5. Named Pipes: Windows管道,内网穿透

通信机制:

  • 长连接保持
  • 心跳检测
  • 消息确认机制
  • 断线重连

3.4 数据库系统 (server/db/)

技术栈:

  • ORM: GORM
  • 默认引擎: SQLite
  • 支持: MySQL, PostgreSQL

主要模型:

  • Session: 会话数据
  • Beacon: 信标数据
  • BeaconTask: 信标任务
  • ImplantBuild: 植入构建记录
  • Job: 后台任务

3.5 命令处理系统

处理器分类:

// 系统处理器 (处理文件、进程等基础操作)
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,
}

4. 数据流向详细分析

4.1 客户端到服务器

Client Command → gRPC → Server Handler → Database → Response
     ↓              ↓          ↓            ↓         ↑
   用户输入      序列化     业务处理      数据持久化   返回结果

4.2 服务器到植入

Server → Transport Layer → Implant → Handler → Response
   ↓           ↓              ↓         ↓         ↑
 消息封装    协议传输      消息接收    命令执行   结果返回

4.3 事件驱动流程

Event Occurs → Event Broker → Reactions → Automated Actions
     ↓              ↓              ↓              ↓
   事件发生      事件分发      反应匹配      自动执行

5. 并发模型详细设计

5.1 Goroutine使用策略

  • 连接处理: 每个连接独立goroutine
  • 消息处理: 异步处理避免阻塞
  • 任务执行: 并发执行提高效率
  • 定时任务: ticker驱动的周期性任务

5.2 同步机制

// 互斥锁保护共享资源
var sessionsMutex = &sync.RWMutex{}

// Channel用于goroutine间通信
respChan := make(chan *sliverpb.Envelope)

// WaitGroup等待任务完成
var wg sync.WaitGroup

6. 安全架构详细设计

6.1 认证授权

  • 双向TLS: 服务器和客户端相互认证
  • 证书管理: 自动生成和管理PKI体系
  • 会话管理: 安全的会话状态跟踪

6.2 数据保护

  • 传输加密: TLS 1.3加密所有通信
  • 数据完整性: 消息签名验证
  • 密钥管理: age加密库的安全密钥处理

6.3 反检测机制

  • 进程注入: DLL注入、反射注入技术
  • 内存操作: 直接内存读写避免磁盘IO
  • 行为伪装: 模拟正常系统行为

7. 扩展性详细设计

7.1 插件架构

// 可动态加载的扩展模块
type Extension interface {
    Name() string
    Execute([]byte) ([]byte, error)
}

7.2 协议扩展

  • 支持自定义C2协议
  • 可插拔的传输层实现
  • 动态协议协商

7.3 功能模块化

  • BOF (Beacon Object Files) 支持
  • COFF加载器
  • .NET程序集执行

8. 部署架构

8.1 单机部署

┌─────────────────────────────┐
│        Single Server        │
│  ┌─────────┐ ┌─────────┐   │
│  │  Sliver │ │ Database│   │
│  │ Server  │ │ (SQLite)│   │
│  └─────────┘ └─────────┘   │
└─────────────────────────────┘

8.2 分布式部署

┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│ Load Balancer│    │   Database  │    │   Storage   │
└──────┬──────┘    └──────┬──────┘    └──────┬──────┘
       │                  │                  │
┌──────┴──────┐   ┌──────┴──────┐   ┌──────┴──────┐
│ Sliver Node1│   │ Sliver Node2│   │ Sliver Node3│
└─────────────┘   └─────────────┘   └─────────────┘

9. 监控与运维

9.1 日志系统

  • 结构化日志记录
  • 多级别日志输出
  • 性能指标收集

9.2 健康检查

  • 连接状态监控
  • 系统资源监控
  • 自动故障恢复

9.3 配置管理

  • 动态配置更新
  • 环境变量支持
  • 配置文件管理

10. 总结

Sliver项目的架构设计体现了现代安全工具的最佳实践:

优势特点:

  • ✅ 模块化设计,易于维护和扩展
  • ✅ 多层次安全防护机制
  • ✅ 高并发处理能力
  • ✅ 跨平台兼容性
  • ✅ 丰富的协议支持
  • ✅ 完善的错误处理

适用场景:

  • 企业红队演练
  • 渗透测试评估
  • 安全研究分析
  • 威胁模拟训练

该架构为类似的安全工具开发提供了优秀的参考模板。