尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
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),仅供参考
RELATED

相关推荐

Monero 依赖构建系统(contrib/depends)完全指南:跨平台交叉编译与依赖缓存

Monero 依赖构建系统(contrib/depends)完全指南:跨平台交叉编译与依赖缓存

区块链金融科技 【免费下载链接】monero Monero: the secure, private, untraceable cryptocurrency 项目地址: https://gitcode.com/gh_mirrors/mo/monero 点击查看 免费下载 导读 本文围绕 Monero 仓库中 contrib/depends 目录自带的依赖构建系统展开&#xff0…

📅 2026/9/23 16:38:05
IronClaw GitHub Webhook 归一化:`github.handle_webhook` 能力源码级深度解析

IronClaw GitHub Webhook 归一化:`github.handle_webhook` 能力源码级深度解析

IronClaw GitHub Webhook 归一化:github.handle_webhook 能力源码级深度解析 【免费下载链接】ironclaw IronClaw is an Agent OS focused on privacy, security and extensibility 项目地址: https://gitcode.com/gh_mirrors/iro/ironclaw 在 IronClaw&…

📅 2026/9/23 16:38:05
日照临街户型怎么选家具?隔音、耐磨、耐脏家居搭配方案

日照临街户型怎么选家具?隔音、耐磨、耐脏家居搭配方案

一、日照临街户型独有的居家软装痛点日照多数临街楼栋、沿街小区,虽然采光好、视野开阔,但常年面临灰尘大、路面噪音多、家具损耗快的问题。临街户型日常开窗通风,灰尘、扬尘、尾气颗粒物容易进入室内,普通家具极易积灰、变脏、磨…

📅 2026/9/23 16:38:05
MORE NEWS

更多资讯

📰

linux库

从静态库、动态库到 ELF 加载与 GOT 机制 一、为什么需要库? 现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始。库本质上是一种可执行代码的二进制形式,可以被操作系统载入内存执行。 Linux 下主要有两种库&#xff1a…

📰

3个西沃客车项目避坑:版本升级API全变,性能优化实战指南

3个西沃客车项目避坑:版本升级API全变,性能优化实战指南 版本升级后 API 全变了,代码直接崩?西沃客车调度系统一跑就卡,性能优化无从下手? 别慌,这坑我踩了十年,今天把血泪经验全抖出来。 坑的现象:升级即崩溃,API 面目全非…

📰

Atlas 300V 24G推理卡部署YOLO实战:环境、转换与调优

1. 看懂Atlas 300V 24G这块卡,以及它和GPU的本质区别1.1 先回答那个反复被问的问题开工后我经常在群里看到一句话:“atlas 300v 24g 是运算加速卡吗?”说实话,第一次看到这个问法我也愣了一下。这个问题的背后,其实是很…

📰

力高答题下载避坑指南:5道高频面试题助你拿下大厂Offer

力高答题下载避坑指南:5道高频面试题助你拿下大厂Offer 是不是觉得看了一堆教程,理论背得滚瓜烂熟,真到写项目或者面试时还是脑子一片空白?这种“眼高手低”的困境,在编程圈太常见了。很多人沉迷于收藏各种资料,比如到处找所谓的 力高答题下载…

📰

3年Java老兵总结:高级java工程师保姆级教程

3年Java老兵总结:高级java工程师保姆级教程 看了一堆B站视频,背了无数八股文,为什么一到写项目还是抓瞎? 因为教程只教你“怎么用”,没教你“为什么这么设计”。 这篇保姆级教程,我不讲虚的,直接拆解高级java工程师的核心底层逻辑。…

📰

INS_EKF-master组合导航代码解析:EKF融合与调参实践

简介:这份资源面向惯性导航与组合导航方向的学习者与工程人员,提供一套基于扩展卡尔曼滤波(EKF)的INS组合导航MATLAB实现代码,可用于理解姿态、速度与位置估计的完整流程,并作为算法验证与课程设计的参考基…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬