9、线程监控

2022年11月29日Windows内核安全

摘要1、课程目标 1. 掌握线程创建回调的注册和使用 2. 实现线程创建和退出监控 3. 学会识别远程线程注入 4. 理解线程监控在安全防护中的作用 2、名词解释 3、使用工具 4、技术原理 4.1、线程回调机制 5、代码实现 5.1、示例1:基础线程监控 5.2、示例2:扩展线程监控 5.3、示例3:远程线程防护 5.4、示例4:线程注入检测用户模式组件 6、课后作业 1. 实现线程起始地址分析,检测异常线程 2. 添加线程活动日志记录 3. 实现基于规则的远程线程拦截 4. 结合进程监控构建完整的注入防护系统 7、扩展阅读 - Windows线程调度机制 - DLL注入检测技术 - APC注入防护

8、监控进程与拦截进程

2022年11月28日Windows内核安全

摘要1、课程目标 1. 掌握进程创建回调的注册和使用 2. 实现进程创建/退出监控 3. 学会拦截和阻止特定进程启动 4. 理解进程监控在安全软件中的应用 2、名词解释 3、使用工具 4、技术原理 4.1、进程回调机制 5、代码实现 5.1、示例1:基础进程监控 5.2、示例2:扩展进程监控(可拦截) 5.3、示例3:完整的进程保护驱动 5.4、示例4:用户模式控制程序 6、课后作业 1. 实现进程父子关系验证 2. 添加进程命令行参数过滤 3. 实现进程创建日志记录到文件 4. 编写规则引擎支持复杂的进程策略 7、扩展阅读 - PsSetCreateProcessNotifyRoutineEx2 - 进程回调的性能影响 - 杀毒软件的进程监控实现

7、R3与R0通信

2022年11月27日Windows内核安全

摘要1、课程目标 1. 理解用户模式与内核模式通信机制 2. 掌握IOCTL通信方式 3. 学会使用Direct I/O和Buffered I/O 4. 实现完整的驱动通信框架 2、名词解释 3、使用工具 4、技术原理 4.1、IOCTL控制码结构 4.2、三种I/O传输方式对比 5、代码实现 5.1、示例1:公共头文件定义 5.2、示例2:驱动端通信实现 5.3、示例3:用户模式通信库 5.4、示例4:异步IOCTL通信 6、课后作业 1. 实现一个完整的驱动通信框架 2. 添加数据加密和校验功能 3. 实现异步通知机制 4. 编写压力测试程序验证通信稳定性 7、扩展阅读 - Windows Driver Model (WDM) I/O - IOCP完成端口详解 - 驱动通信安全性分析

6、链表操作

2022年11月26日Windows内核安全

摘要1、课程目标 1. 理解内核双向链表结构 2. 掌握LISTENTRY的使用方法 3. 学会安全的链表操作 4. 理解链表在内核编程中的应用 2、名词解释 3、使用工具 4、技术原理 4.1、LISTENTRY结构 4.2、CONTAINING_RECORD宏原理 5、代码实现 5.1、示例1:基础链表操作 5.2、示例2:安全遍历(边遍历边删除) 5.3、示例3:InterlockedXxx无锁链表操作 5.4、示例4:内核链表实战 - 遍历进程链表 5.5、示例5:泛型链表封装 6、课后作业 1. 实现一个LRU缓存,使用双向链表 2. 编写线程安全的优先级队列 3. 实现链表排序功能 4. 使用WinDbg的!list命令遍历内核链表 7、扩展阅读 - Windows内核链表实现 - SLIST性能分析…

5、字符串操作

2022年11月25日Windows内核安全

摘要1、课程目标 1. 掌握内核字符串类型和结构 2. 学会使用RtlXxx字符串函数 3. 理解ANSI和Unicode字符串转换 4. 掌握安全的字符串处理方法 2、名词解释 3、使用工具 4、技术原理 4.1、字符串结构 5、代码实现 5.1、示例1:基础字符串操作 5.2、示例2:动态字符串分配 5.3、示例3:ANSI与Unicode转换 5.4、示例4:安全字符串函数 5.5、示例5:字符串查找和操作 6、课后作业 1. 实现一个字符串解析器,解析路径中的目录和文件名 2. 编写安全的字符串格式化函数 3. 实现字符串分割功能 4. 处理用户传入的字符串并进行验证 7、扩展阅读 - MSDN: Rtl String Functions - ntstrsafe.h头文件 -…

4、驱动内存管理

2022年11月24日Windows内核安全

摘要1、课程目标 1. 理解内核内存池的类型和特性 2. 掌握内核内存分配和释放 3. 学会使用MDL描述用户内存 4. 理解内存映射和共享机制 2、名词解释 3、使用工具 4、技术原理 4.1、内核内存架构 4.2、内存池对比 5、代码实现 5.1、示例1:基础内存分配 5.2、示例2:Lookaside List快速分配 5.3、示例3:MDL内存操作 5.4、示例4:内核与用户空间内存映射 5.5、示例5:跨进程内存读写 6、课后作业 1. 实现一个内存池管理器,统计分配释放 2. 使用MDL实现驱动与用户程序的数据交换 3. 编写跨进程内存读写的完整示例 4. 使用PoolMon监控内存池使用情况 7、扩展阅读 - Windows内存管理机制 - MDL详解 - 内核池溢出利用

3、IRQL中断请求级别

2022年11月23日Windows内核安全

摘要1、课程目标 1. 理解IRQL的概念和作用 2. 掌握不同IRQL级别的特性 3. 学会在正确的IRQL下执行操作 4. 避免IRQL相关的蓝屏错误 2、名词解释 3、使用工具 4、技术原理 4.1、IRQL级别层次 4.2、各级别限制 5、代码实现 5.1、示例1:IRQL基础操作 5.2、示例2:SpinLock与IRQL 5.3、示例3:DPC延迟过程调用 5.4、示例4:IRQL安全的内存分配 5.5、示例5:常见IRQL错误及解决 6、课后作业 1. 编写程序演示不同IRQL级别的转换 2. 实现一个线程安全的队列,使用SpinLock 3. 编写DPC和WorkItem配合处理数据的示例 4. 使用Driver Verifier检测IRQL违规 7、扩展阅读 - Windows内核原理与实现 -…

1、配置双机调试环境

2022年10月26日Windows内核安全

摘要1、课程目标 1. 理解内核调试的基本概念和原理 2. 掌握VMware虚拟机双机调试配置 3. 学会使用WinDbg进行内核调试 4. 熟悉常用内核调试命令 2、名词解释 3、使用工具 4、技术原理 4.1、双机调试架构 4.2、调试通信方式对比 5、配置步骤 5.1、步骤1:VMware虚拟机配置 5.2、步骤2:被调试系统配置 5.3、步骤3:WinDbg连接配置 6、代码实现 6.1、示例1:WinDbg常用命令 6.2、示例2:调试脚本 6.3、示例3:VirtualKD加速调试 6.4、示例4:网络调试配置 6.5、示例5:常用调试场景 7、课后作业 1. 配置VMware+WinDbg双机调试环境 2. 安装VirtualKD并验证调试速度提升 3. 练习使用WinDbg查看进程、线程、模块信息…

6、阶段合集

2022年10月25日进程通信专题

摘要1、课程目标 1. 综合运用各种进程间通信技术 2. 构建完整的C2通信框架 3. 实现多通道备份通信机制 4. 掌握隐蔽通信技术的实战应用 2、名词解释 3、使用工具 4、技术原理 4.1、进程通信方式对比 4.2、综合通信架构 5、代码实现 5.1、项目1:统一IPC通信库 5.2、项目2:多通道C2 Agent框架 5.3、项目3:C2 Controller控制端 5.4、项目4:隐蔽通道通信 6、课后作业 1. 完善IPC库,添加WM_COPYDATA和剪切板通道支持 2. 实现通道自动切换和故障恢复机制 3. 为通信数据添加加密和完整性校验 4. 实现一个完整的本地C2通信演示系统 5. 研究并实现更多隐蔽通道(如文件时间戳、ADS等) 7、扩展阅读 - Windows IPC机制深度解析 -…

2、第一个驱动程序

2022年10月13日Windows内核安全

摘要1、课程目标 1. 理解Windows驱动程序架构 2. 掌握WDK开发环境配置 3. 编写第一个内核驱动程序 4. 学会驱动的加载和卸载 2、名词解释 3、使用工具 4、技术原理 4.1、驱动程序架构 4.2、驱动类型 5、代码实现 5.1、示例1:最简单的驱动程序 5.2、示例2:完整的驱动框架 5.3、示例3:用户模式测试程序 5.4、示例4:驱动加载服务 6、Visual Studio项目配置 7、课后作业 1. 配置VS+WDK开发环境 2. 编写一个可以读写的驱动程序 3. 实现自定义IOCTL通信 4. 使用WinDbg调试驱动程序 8、扩展阅读 - Windows Driver Development (Penny Orwick) - WDK文档和示例 - OSR驱动开发资源