安全工程专栏导航:从 winos-gh0st 源码学安全工程

# 安全工程专栏导航:从 winos-gh0st 源码学安全工程

免责声明:本专栏仅用于安全工程学习研究,禁止使用本专栏介绍的技术做其他用途,否则后果自负,与本号无关。

这套专栏不是远控使用教程,而是一套面向企业安全、蓝队检测、安全研发、授权红蓝测试人员和安全工程学习者的源码拆解教程。

它的核心目标只有三个:

  1. 让新手能顺着源码看懂 Windows C++/MFC 远控类工程的结构、通信、插件和数据流。
  2. 让企业安全人员能把高风险实现转换成检测、响应、加固和合规整改思路。
  3. 让授权红蓝测试人员能在合法边界内复盘技术链路,帮助防御侧补齐证据、规则和流程。

# 怎么读最有效

读者类型 推荐路线 阅读目标
Windows 安全新手 01-20 顺序读,再进入插件课 先补齐环境、MFC、网络、插件、shellcode 和被控运行结构背景
企业蓝队 / SOC 08-14、18-23、31-35、41-50 把源码行为转成主机、网络、内存和日志检测点
授权红蓝测试人员 01、08-23、31-43、45-50 理解能力边界,用于授权演练复盘和防御验证
安全研发 / 平台工程师 03-17、20-23、47-51 学习工具链、插件加载、日志链、协议安全和合规重构
管理者 / 方案负责人 01、44-52 快速理解风险分级、整改路线和报告交付方式

# 学习全景

安全边界
  -> VS 工具链、依赖库、MFC/Win32 基础
  -> 主控架构、日志进程、网络协议、插件加载
  -> EXE/DLL 生成、x86/x64、被控 shellcode 生命周期
  -> 被控线程结构、网络连接结构、上线、登录、配置下发、复制和转移客户
  -> 系统、文件、注册表、启动、终端、交谈、键盘记录
  -> 屏幕、后台桌面、屏幕墙、视频、音频
  -> 代理、压力、注入、驱动、敏感数据读取
  -> 持久化、高危能力、协议缺陷、安全编码、检测工程
  -> 应急响应、合规重构、企业评估报告
1
2
3
4
5
6
7
8
9
10

每一课都尽量采用同一种读法:先说明源码目录和模块角色,再沿着触发路径读关键代码;关键变量、风险点和防御含义尽量写进代码注释;图解用于帮助新手建立调用链、时序和数据结构的整体感。

# 第一阶段:边界、环境和源码地图

这一阶段先解决“能不能学、在哪里学、怎么打开工程、怎么看目录”的问题。读完后,你应该能在隔离实验环境中打开工程,并知道每个目录大致承担什么职责。

课次 专栏 你会学到什么
01 专栏导论与安全边界 学习边界、适用人群、授权红蓝测试边界、实验环境和禁止事项
02 源码整体结构导览 从根目录看主控、主插件、第三方库、生成器和专栏阅读路线
03 安装编译与调试环境 面向不熟悉 VS 的新手解释工作负载、SDK、MFC、平台工具集和调试入口
04 第三方库下载编译与依赖管理 理解 thirdparty、lib/libx64、头文件、库文件和依赖匹配问题
05 工程编译顺序与调试方法 按安全实验方式梳理编译顺序、输出目录、断点和观察窗口
06 Windows C++/MFC 基础补课 快速补齐消息映射、窗口、句柄、线程、注册表和 Win32 API 基础
07 主控界面布局单独讲解 从主控界面反查源码、菜单、列表、对话框和命令入口

# 第二阶段:主控、日志、网络和插件加载主线

这一阶段是整套专栏的骨架。后面的每个功能插件,都离不开主控界面、网络收发、命令分发、插件加载和日志记录。

课次 专栏 你会学到什么
08 主控端架构分析 主控生命周期、连接上下文、列表展示、命令发送和窗口路由
09 主控内嵌日志进程与通信机制 日志进程如何被内嵌到主控、如何启动、如何通过 IPC 接收日志
10 网络通信模型 TCP/UDP、心跳、收包缓存、完整包判断和回调边界
11 协议与命令分发机制 TOKEN_*COMMAND_*、包头、业务窗口和插件命令如何串联
12 插件化设计与模块加载总览 插件来源、版本协商、缓存、加载方式和整体风险面
13 插件化设计与模块加载 插件 DLL 如何被请求、传输、缓存、校验和调度
14 插件 DLL 内存加载 MemoryModule 如何做 PE 映射、重定位、导入解析和入口调用
15 网络库:HPSocket HPSocket 在工程中的用途、连接模型、回调接口和检测线索

# 第三阶段:生成链、架构适配和被控启动流程

这一阶段解释“生成出来的 EXE/DLL 是什么、配置如何写进去、x86/x64 怎么区分、shellcode 如何启动并取回上线模块,以及被控运行后线程和网络连接如何展开”。读完后,你再看上线、登录和后续插件,就不会觉得链路跳跃。

课次 专栏 你会学到什么
16 生成 EXE 与 DLL 主控如何选择模板、写入配置、输出 EXE/DLL,生成物在工程中的角色
17 x86/x64 双产物与 DLL 使用 32/64 位产物、插件目录、函数指针、结构体偏移和 DLL 使用方式
18 被控 shellcode 生成与执行流程 从构建、启动、自定位、API 解析、配置读取到加载上线模块的完整生命周期
19 生成被控五个选项下发机制 键盘记录、结束蓝屏、反查流量、进程守护、傀儡进程五个选项如何写入配置并下发
20 被控线程结构与网络连接结构 不启用插件和启用插件时,被控端线程、基础连接、插件连接和回调绑定如何展开
21 主插件:上线模块 配置解析、连接初始化、版本请求、上线链路和防御侧证据
22 主插件:登录模块 登录信息结构、插件链枢纽、命令入口、缓存和心跳机制
23 主控复制与转移客户 主控如何下发复制/转移命令,登录模块如何解释目标地址并改变连接归属

# 第四阶段:系统、文件、注册表和交互能力

这一阶段进入功能插件。重点不是学习如何操作,而是学习如何从代码里识别资产枚举、远程管理、路径边界、注册表修改和用户交互风险。

课次 专栏 你会学到什么
24 主插件:系统管理 进程、窗口、服务、网络连接、软件列表等系统信息如何枚举
25 主插件:文件管理 文件浏览、传输、搜索、压缩、删除、路径边界和审计证据
26 主插件:查注册表 注册表根键、子键、值、增删改查、敏感键和 WoW64 视图
27 主插件:启动管理 启动项、服务、计划任务、启动目录和持久化相关风险
28 主插件:远程终端 管道、命令解释器、输出回传和命令执行审计
29 主插件:远程交谈 聊天协议格式、装包解包、窗口生命周期和锁屏实现
30 主插件:键盘记录 键盘记录功能、窗口标题、剪贴板、离线键盘记录开关和实现机制

# 第五阶段:屏幕能力与屏幕墙

这一阶段专门处理屏幕相关能力。先比较高速屏幕、差异屏幕、娱乐屏幕三种当前桌面采集方式,再讲后台桌面/后台窗口,最后把主控侧“加入监控/屏幕墙”作为独立看板能力讲清楚。

课次 专栏 你会学到什么
31 主插件:高速屏幕 为什么叫高速屏幕、GDI 截屏、JPEG/zlib 依赖、全帧传输和检测点
32 主插件:差异屏幕 差异块如何获取、如何组装成完整画面、首帧/增量帧和带宽特征
33 主插件:娱乐屏幕 为什么使用 H.264、libyuv/x264、采集转换编码队列和播放流程
34 主插件:后台桌面与后台窗口 后台桌面原理、技术历史、正常桌面对比、画面来源、窗口控制和能力限制
35 主控屏幕墙与加入监控 主控如何把多个目标加入监控面板、定时取缩略图、刷新显示和退出监控

# 第六阶段:视频、音频、代理、注入、驱动和敏感数据

这一阶段覆盖高敏感能力。专栏只做源码阅读和防御分析,关注权限、授权、可见性、日志、检测和处置,不提供可直接复用的攻击步骤。

课次 专栏 你会学到什么
36 主插件:视频查看 DirectShow、摄像头枚举、采集回调、编码压缩和隐私风险
37 主插件:播放监听 系统播放声音采集、WASAPI loopback、缓冲和播放监听链路
38 主插件:语音监听 麦克风采集、waveIn、G.729 编码、传输和用户授权边界
39 主插件:代理映射 代理中继、连接转发、内网访问路径和东西向流量检测
40 主插件:压力测试 高并发流量、可用性风险、授权边界和防御控制
41 主插件:注入管理 跨进程句柄、远程写入、RWX、远程线程、BoxedApp SDK 和 WoW64 线索
42 主插件:驱动插件 驱动服务、设备对象、IOCTL、内核分发和高优先级响应
43 主插件:解密数据 浏览器数据库、SQLite、DPAPI/OpenSSL、敏感数据读取和凭据保护

# 第七阶段:检测工程、应急响应和安全重构

这一阶段把前面的源码知识组合成企业安全交付。目标是能写规则、能做应急、能给整改方案、能形成评估报告。

课次 专栏 你会学到什么
44 持久化机制综合识别 注册表、启动目录、计划任务、服务、驱动等持久化入口的综合识别
45 高危能力综合识别 输入、屏幕、音视频、代理、注入、驱动、凭据等能力的风险分层
46 代理映射、内网扫描与横向风险 从代理链路理解内网暴露、横向移动风险和分段防护
47 加密、认证与协议安全缺陷 弱协议、短标识、异或处理、插件可信链和加固方向
48 C/C++ 安全编码核查 长度、内存、句柄、线程、权限和资源生命周期问题
49 检测工程:从源码提取行为特征 把 API、路径、token、结构体和时序转换成检测模型
50 应急响应与清理思路 证据保全、隔离、持久化排查、账号处置和恢复验证
51 安全重构:合规远程运维工具 mTLS、MFA、RBAC、插件签名、用户提示、隐私最小化和审计日志
52 综合案例:企业安全评估报告 把源码证据、风险分级、检测建议、整改路线和管理摘要写成报告

# 如果时间有限,优先读这些

必读课 为什么优先
01 先建立合法边界,避免把源码学习变成越界操作
08 主控端是所有命令、窗口和连接状态的中心
09 日志进程解释了主控如何做本地记录和进程间通信
11 协议和命令分发决定了后续所有插件如何被触发
14 插件 DLL 内存加载是理解插件体系和内存侧检测的关键
18 被控 shellcode 生命周期把生成、启动、加载上线模块串成一条线
19 五个生成选项解释了配置如何影响运行期行为
20 被控线程和连接结构解释了为什么插件启用后会出现额外连接
22 登录模块是连接、插件请求、命令执行的枢纽
31-35 屏幕类能力是隐私和合规风险最集中的部分之一
41-43 注入、驱动、敏感数据读取是高危响应优先级最高的部分
49 检测工程把源码阅读转换成可落地规则
50-52 应急、重构和报告决定企业能否真正整改

# 最终你应该获得的能力

能力 具体表现
源码定位 能从界面功能定位到目录、类、函数、命令和调用链
数据流分析 能画出配置、命令、插件、文件、注册表、内存和网络之间的关系
风险识别 能判断哪些行为涉及隐私、凭据、持久化、横向、注入和内核风险
检测工程 能把 API、路径、token、结构体和时序转成日志字段、规则和关联逻辑
应急响应 能保全证据、隔离资产、排查持久化、处理账号风险并验证恢复
安全重构 能把高风险远控能力改造成有身份、有授权、有审计、有用户提示的合规远程运维设计
报告交付 能写出管理层看得懂、研发能整改、安全团队能落地的企业安全评估报告

这套专栏的价值不在于复现某个功能,而在于训练一种安全工程能力:面对复杂、高风险、历史包袱很重的 Windows C++ 工程,仍然能把它拆清楚、讲明白、检测到、整改掉。

上次更新: 2026/07/13, 09:10:59

社区交流

讨论与留言

前往 GitHub Issues →

本留言区仅对应当前文章,欢迎补充观点、提出问题或帮助修正文中疏漏。 留言由 GitHub/Gitalk 提供,需要使用 GitHub 登录。

最近更新
第 1 课:专栏导论与安全边界
07-01
第 3 课:安装编译与调试环境
07-01
第 4 课:第三方库下载、编译与依赖管理
07-01
更多文章>