ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

拆解HypoMux最小权限架构:普通权限UI与高权限Go Core服务如何安全协作

拆解HypoMux最小权限架构:普通权限UI与高权限Go Core服务如何安全协作 拆解HypoMux最小权限架构普通权限UI与高权限Go Core服务如何安全协作【免费下载链接】HypoMuxCN Windows 多网卡聚合与网络加速工具。一键融合有线、Wi-Fi、热点等连接实现多路径传输与智能流量调度。 EN Windows multi-NIC network accelerator. Combine Ethernet, Wi-Fi, hotspots and more for multi-path transmission and smart traffic routing.项目地址: https://gitcode.com/gh_mirrors/hy/HypoMuxHypoMux 是一款 Windows 多网卡聚合与网络加速工具可以一键融合有线、Wi-Fi、热点等连接实现多路径传输与智能流量调度。这类工具必须触碰 TUN 虚拟网卡、WFP 过滤平台、系统路由和 DNS 等内核级资源传统做法是把整个程序以管理员身份运行但这会让界面层暴露在最宽的攻击面之下。HypoMux 采用了最小权限架构界面进程始终以普通用户权限运行真正的高权限操作全部交给独立的 Go Core 服务两者通过经过严格身份校验的本地命名管道协作。本文将拆解这套架构的分工、通信通道和层层校验机制。一、为什么网络加速工具不能整个程序都开管理员多网卡聚合工具的工作方式决定了它必须使用高权限 APITUN 虚拟网卡接管系统流量需要创建 Wintun 驱动设备WFP / 路由 / DNS流量分流与网络恢复都依赖过滤平台和路由表多网卡健康检测与调度要读写系统网络状态并做故障回滚。如果让整个桌面程序包括渲染网页界面的 WebView2 进程常驻管理员权限任何前端组件被利用都可能直接转化为系统级风险。HypoMux 给出的答案是把系统拆成两半权限各归各位。二、整体分工普通权限 UI 高权限 Go Core官方架构文档 wails-architecture.md 明确了权限规则层进程权限职责HypoMux DesktopWails React UI始终普通权限asInvoker视图、交互、展示状态只发结构化命令HypoMux Go Corehypomux-engine管理员 / 系统代理、TUN、WFP、路由、DNS、恢复几个关键设计决策UI 永远不提升主题切换、日志查看、规则编辑等日常操作均不需要管理员权限前端被禁止直接调用 PowerShell、注册表、Win32 路由等危险 API所有系统级动作都走 Core命令语义化React 只发送engine.start、tun.activate、diagnostic.run等领域命令收到需要权限用户取消权限获取失败等结构化结果不接触任何底层资源。Core 服务本身的入口是 main.go 中的多命令分发serve标准输入输出模式、serviceWindows 服务模式、serve-pipe开发版管道模式、recover网络状态恢复和diagnose网络探测。三、正式版Core Service 与固定管道的四层校验安装程序只在安装、升级、卸载时提升一次权限注册名为HypoMuxCore的 Windows 服务见 service_windows.go。此后 UI 每次启动都只连接这条固定管道\\.\pipe\HypoMux-Core-Service并要闯过四层校验第 1 层管道 ACL。服务创建命名管道时附带受限安全描述符SDDL只允许 SYSTEM、Administrators 和交互式用户组访问并且显式拒绝远程客户端PIPE_REJECT_REMOTE_CLIENTS。第 2 层客户端进程身份。服务端通过GetNamedPipeClientProcessId读取连接方的 PID然后解析该 PID 对应的可执行文件路径——必须与安装时锁定的hypomux.exe完全一致。第 3 层文件指纹比对。仅比对路径还不够。安装时 Core 会把桌面程序与 sing-box 的 SHA-256 指纹写入注册表策略service_policy_windows.go每次握手都重新计算客户端二进制的哈希并验证validateServiceClientExecutable。文件被篡改、替换连接直接拒绝。第 4 层会话校验。服务通过 WTS API 查询客户端所在 Windows 会话的实时状态service_session_windows.go只接受处于active交互式会话中的用户防止来自服务会话或远程非活动会话的连接。此外服务宿主还要求可执行文件位于受保护的ProgramData目录、NTFS 固定卷上且目录 ACL 不允许普通用户写入——升级安装前还会先停掉旧服务避免新文件 旧策略的不一致窗口service_windows.go。HypoMux网络聚合工具TUN启动前的网络风险确认弹窗注意架构文档中一条重要红线服务已安装但停止、管道缺失或身份不匹配时必须报错禁止静默回退到临时进程。安全边界不允许悄悄降级。四、开发版runas 提权与一次性令牌双向握手未安装服务的开发环境走另一条路径UI 进程通过 UAC 弹框ShellExecuteExWrunas启动一个临时的高权限 Core两者之间建立一次性的认证管道。这套握手逻辑在 privileged_windows.go 中实现随机一次性令牌UI 生成 256 位随机数作为会话令牌管道名称本身也内嵌令牌前缀\\.\pipe\HypoMux-Core-token用完即销毁每用户 ACL开发版管道只对当前用户 SID Administrators SYSTEM开放其他账户无法接入双向 PID 校验UI 端核对连接方是否自己启动的那个 Core 进程acceptCore 端则反向核对 UI 的 PID 是否与自己期望的宿主进程一致connectAuthenticatedPipe两边任何一边身份不符都直接断开常量时间令牌比较令牌比对使用subtle.ConstantTimeCompare避免时序侧信道。如果用户取消 UAC客户端会将其映射为结构化错误ErrElevationCancelled用户取消了管理员权限请求首页显示 Toast 提示未获得管理员权限聚合未启动不会留下协商了一半的 Core 进程。而正式与开发两条路径由同一个启动器抽象统一调度launcher.go 中的serviceFirstLauncher遵循服务优先策略——先尝试 Core Service只有在服务未安装开发环境且通过路径信任校验时才回退到runas临时进程并如实记录回退原因service_unavailable/service_not_running供诊断和日志使用。五、普通用户能感受到的安全收益这套架构带来的直观体验UAC 只出现在安装/升级时日常启动、切换主题、编辑规则零打扰只有真实风险才弹窗预检检测到共享网关冲突、第三方 TUN 占用、WFP 异常等真实问题时才会显示风险确认弹窗无风险时直接进入原生 UAC 或直接启动取消提权不残留UAC 点否后不会留下半初始化的高权限进程降权自愈即使你习惯以管理员身份运行桌面入口也会尝试把 UI 进程纠正回普通权限详见 wails-architecture.md 的 2.4 节降权失败才进入显式的兼容模式并给出提醒可诊断每次 Core 启动的来源、阶段、PID、回退原因都会记录在LaunchReport中client.go排查为什么没启动有迹可循。六、小结与延伸阅读HypoMux 的最小权限架构可以用一句话概括界面永远普通权限特权永远独立进程通信永远多重校验。普通权限 UI 与高权限 Go Core 之间不信任默认值而是用管道 ACL、PID 比对、SHA-256 指纹和会话状态四道闸门互证身份——这也是安全工具值得借鉴的协作范式。 推荐阅读的源码与文档架构总览与权限模型docs/migration/wails-architecture.mdCore 服务入口与命令分发engine/cmd/hypomux-engine/main.goWindows 服务注册、管道与客户端校验engine/cmd/hypomux-engine/service_windows.go服务策略路径锁定 SHA-256 指纹engine/cmd/hypomux-engine/service_policy_windows.go开发版一次性令牌管道desktop/internal/engineclient/privileged_windows.go服务优先的启动器选择逻辑desktop/internal/engineclient/launcher.go【免费下载链接】HypoMuxCN Windows 多网卡聚合与网络加速工具。一键融合有线、Wi-Fi、热点等连接实现多路径传输与智能流量调度。 EN Windows multi-NIC network accelerator. Combine Ethernet, Wi-Fi, hotspots and more for multi-path transmission and smart traffic routing.项目地址: https://gitcode.com/gh_mirrors/hy/HypoMux创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进