Sliver Watchtower 威胁情报监控:monitor 命令组实战与实现原理

发布时间:2026/9/23 16:38:03
Sliver Watchtower 威胁情报监控:monitor 命令组实战与实现原理 网络安全【免费下载链接】sliverAdversary Emulation Framework项目地址https://gitcode.com/gh_mirrors/sl/sliver点击查看免费下载本指南基于 Sliver Adversary Emulation Framework 的monitor命令组client/command/monitor/README.md讲解如何利用内置的 Watchtower 能力将植入体Implant构建哈希与 VirusTotal、IBM X-Force 等威胁情报平台进行周期比对从而判断植入体是否已被安全厂商捕获Burned。读完本文你将掌握monitor命令的完整用法、服务端配置方式以及从客户端命令到服务端扫描循环、事件发布的完整调用链。Watchtower 功能概述Sliver 服务端内置了一个名为 Watchtower瞭望塔的监控子系统周期性把服务器上生成过的所有植入体构建Implant Build的 MD5 哈希提交到 VirusTotal 与 IBM X-Force检测这些构建是否已经被上传到威胁情报平台。一旦某个构建的哈希被命中该构建就会被标记为Burned并触发watchtower事件推送给控制台提醒操作者该植入体已不再安全。该能力在文档 docs/sliver-docs/pages/docs/md/Watchtower.md 中有明确定义属于 Sliver 服务端的内置能力而非第三方扩展。从 server/watchtower/watchtower.go 的源码可以看到其核心循环基于第三方库github.com/lesnuages/snitch实现。monitor 命令组结构与注册monitor命令组位于 client/command/monitor/共四个 Go 源文件职责划分如下文件职责commands.go注册monitor命令套件start/stop子命令config.go解析监控配置处理配置的增删查并实现目标选择start.go启动监控任务向服务端发送MonitorStartRPCstop.go停止监控任务向服务端发送MonitorStopRPC命令注册入口在 commands.gomonitor根命令被分配了consts.SliverHelpGroup帮助分组并挂载两个子命令monitor start—— 启动监控循环monitor stop—— 停止监控循环。命令名常量定义在 client/constants/constants.goMonitorStr monitor、MonitorConfigStr config。整个命令组通过 client/command/server.go 中的monitor.Commands注册进客户端命令树与 sessions、jobs 等命令组并列。服务端配置server.json 的 watch_tower 段使用监控功能前需要在 Sliver 服务端配置文件中写入威胁情报平台的 API 凭据。官方文档 docs/sliver-docs/pages/docs/md/Watchtower.md 给出的配置片段如下{ watch_tower: { vt_api_key: YOUR_VIRUSTTOTAL_API_KEY, xforce_api_key: YOUR_XFORCE_API_KEY, xforce_api_password: YOUR_XFORCE_API_PASSWORD } }配置文件位于$HOME/.sliver/configs/server.json修改后需重启 Sliver 服务端生效。配置结构体定义在 server/configs/server.go// WatchTowerConfig - Watch Tower job config type WatchTowerConfig struct { VTApiKey string json:vt_api_key yaml:vt_api_key XForceApiKey string json:xforce_api_key yaml:xforce_api_key XForceApiPassword string json:xforce_api_password yaml:xforce_api_password }vt_api_keyVirusTotal API Key必填若启用 VirusTotal 扫描xforce_api_keyIBM X-Force API Keyxforce_api_passwordIBM X-Force API 密码仅 X-Force 需要对应代码中apiType xforce时的APIPassword字段。字段同时带有json与yaml标签说明服务端配置同时兼容 JSON 与 YAML 两种格式。服务端配置测试 server/configs/server_config_test.go 覆盖了旧版legacyJSON 配置向新格式迁移后watch_tower段被正确加载的完整路径包括旧配置文件被备份、新 YAML 配置生成的迁移行为可作为排查配置加载问题的参考。monitor 命令的完整用法monitor start / monitor stop在控制台console中输入monitor start即可启动监控monitor stop停止监控。二者的实现非常简洁start.go 调用con.Rpc.MonitorStart(ctx, commonpb.Empty{})成功后打印Started monitoring threat intel platforms for implants hashesstop.go 调用con.Rpc.MonitorStop(ctx, commonpb.Empty{})成功后打印Stopped monitoring threat intel platforms for implants hashes。monitor config配置管理辅助虽然官方文档仅提及start/stop两个子命令但从源码看 config.go 中还实现了配置的增删查逻辑命令名config常量见 constants.goMonitorConfigCmd调用MonitorListConfigRPC将当前已保存的监控配置以表格形式输出列为 ID、Type、APIKey、APIPassword渲染逻辑见PrintWTConfigconfig.goMonitorAddConfigCmd通过--apiKey、--apiPassword、--type三个 Flag 构造clientpb.MonitoringProvider当type xforce时额外填充APIPassword然后调用MonitorAddConfigRPCconfig.goMonitorDelConfigCmd先列出全部配置再通过forms.Select交互式选择要删除的配置selectWatchtowerConfigconfig.go随后调用MonitorDelConfigRPC。注意这些 config 子命令在当前commands.go中并未直接挂载到monitor根命令下源码中保留的 API 级配置管理逻辑配合start/stop构成了完整的生命周期控制实际使用时以你所用版本控制台输出的帮助信息为准。服务端调用链与实现原理RPC 层客户端的所有 monitor 操作最终都会落到 server/rpc/rpc-monitor.go 中的四个 gRPC 方法它们直接代理到 watchtower 包RPC 方法调用MonitorStartwatchtower.StartWatchTower(config)MonitorStopwatchtower.StopWatchTower()MonitorListConfigwatchtower.ListConfig()MonitorAddConfigwatchtower.AddConfig(m)MonitorDelConfigwatchtower.DelConfig(m)其中MonitorStart会先通过ListConfig读取当前已保存的 provider 凭据再启动扫描器因此必须先完成配置配置文件或运行期添加才能成功启动监控否则StartWatchTower会返回 missing provider credentials 错误。对应的 protobuf 消息定义位于 protobuf/clientpb/client.proto// watchtower message MonitoringProviders { repeated MonitoringProvider providers 1; } message MonitoringProvider { string ID 1; string Type 2; string APIKey 3; string APIPassword 4; }数据库层的MonitoringProvider模型定义在 server/db/models/monitor.goType字段注释明确指出当前仅支持vt或xforce两种类型。Watchtower 核心循环监控的核心实现在 server/watchtower/watchtower.go其启动流程StartWatchTower第 65-100 行包括检查watcher是否已初始化已启动则返回 monitoring already started检查configs.Providers是否为空为空返回 missing provider credentials遍历 providerType vt创建snitch.NewVTScanner(APIKey, VTMaxRequests, Virus Total)Type xforce创建snitch.NewXForceScanner(APIKey, APIPassword, XForceMaxRequests, IBM X-Force)若扫描器列表为空同样返回 missing provider credentials通过snitch.WithHandleFlagged(handleBurnedImplant)注册命中回调AddScanner逐个加入扫描器后watcher.Start()启动循环调用addExistingImplants()把数据库中已有的、未标记 Burned 的植入体构建逐个加入监控名单update函数按 MD5 加入 watch list。命中回调handleBurnedImplant第 30-46 行是监控的收尾动作通过db.ImplantBuildByName(result.Sample.Name())找到对应构建将Burned置为true并持久化遍历core.Sessions.All()若会话名与样本名一致则通过core.EventBroker.Publish发布consts.WatchtowerEvent事件事件 Data 形如Provider - LastSeen包含命中的平台名称与最近出现时间。Burned字段定义在植入体构建模型 server/db/models/implant.go注释明确其含义has been seen on threat intel platforms已在威胁情报平台出现。这解释了监控的完整业务闭环发现命中 → 标记 Burned → 发布事件 → 操作者收到警报。停止流程StopWatchTower第 106-112 行则调用watcher.Stop()、重置initialized并将watcher置空保证可以再次monitor start。请求频率限制官方文档 docs/sliver-docs/pages/docs/md/Watchtower.md 明确说明服务端会自觉保持在各平台免费额度之下即VirusTotal4 次请求/分钟500 次请求/天对应snitch.VTMaxRequestsIBM X-Force6 次请求/小时对应snitch.XForceMaxRequests。这一设计确保长期运行的监控循环不会因为超出免费额度而触发平台的 API 限流或封禁。与反应Reaction机制的联动watchtower事件可以作为 Reaction反应的触发条件实现自动化告警。在 client/command/reaction/commands.go 中consts.WatchtowerEvent被注册为可用的反应事件类型事件类型常量定义在 client/constants/constants.go// WatchtowerEvent - An implant hash has been identified on a threat intel platform. WatchtowerEvent watchtower事件的人类可读名称在 client/command/reaction/reaction.go 中映射为Watchtower Trigger。因此操作者可以配置类似reaction watchtower 自定义命令的规则在植入体哈希被威胁情报平台发现的第一时间自动执行后续动作例如通知值守人员或更换植入体构建。此外client/command/help/long-help.go 与 client/command/ai/grpc_test.go 中对该事件类型的引用也印证了它作为标准客户端事件流的一员被广泛消费。常见问题排查monitor start报 missing provider credentials服务端配置文件中watch_tower段缺失或为空或数据库中尚无任何 provider 配置。请检查$HOME/.sliver/configs/server.json的watch_tower字段并重启服务端也可以尝试通过 config 管理逻辑MonitorAddConfigCmd对应 RPC在运行期添加凭据。monitor start报 monitoring already started监控循环已在运行无需重复启动如需重启先执行monitor stop。监控已启动但始终没有命中请确认数据库中确实存在已构建的植入体记录addExistingImplants只会把已存在且未 Burned 的构建加入名单同时注意 VirusTotal 免费额度4 次/分钟、500 次/天与 X-Force 的 6 次/小时限制首次全量比对可能需要较长时间。小结Sliver 的monitor命令组把植入体是否被安全厂商识破这件威胁情报工作自动化了配置好 VirusTotal / IBM X-Force 凭据后一条monitor start即可让服务端周期性比对所有植入体构建的哈希命中时自动标记 Burned、推送watchtower事件并可联动 Reaction 实现告警。从 commands.go 的命令注册、start.go 与 stop.go 的 RPC 转发到 server/watchtower/watchtower.go 的扫描循环与命中回调整条链路清晰可控是红队对抗演练中检查植入体暴露面的实用内置工具。赞分享网络安全【免费下载链接】sliverAdversary Emulation Framework项目地址https://gitcode.com/gh_mirrors/sl/sliver点击查看免费下载相关推荐Pydantic Evals 内置评测器全解确定性断言、LLM-Judge 与 Span 行为评估Pydantic Evals 内置评测器全解确定性断言、LLM Judge 与 Span 行为评估 Pydantic Evals 是 pydantic ai网络安全z安全监控实时威胁情报集成z安全监控实时威胁情报集成 项目概述 z项目是一款高效的目录跳转工具通过记录用户的目录访问历史提供快速的目录切换功能。该工具通过维护一个跳转列表jump开发工具CLISystem.CommandLine与dotnet-suggest集成实现跨平台Shell自动补全的终极指南System.CommandLine与dotnet suggest集成实现跨平台Shell自动补全的终极指南 System.CommandLine是.NET生创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考