终端程序治理与进程保护:从内核层进程创建监控到运行时完整性保障的技术体系
引言:终端程序执行的不可控风险 在企业纵深防御安全体系中,终端是攻击面最复杂、最难收敛的环节。传统防护侧重网络边界与病毒查杀,依靠防火墙、IDS/IPS、杀毒软件抵御外部威胁。但长期被忽略的风险点在于:终端运行的各类程序,无论是否携带恶意代码,都可能造成数据泄露、合规违规、业务中断。 员工运行未经审批软件会带来多重风险:盗版工具内置后门窃取图纸;非评估IM工具通过私有协议外传敏感资料;个人云盘后台自动同步涉密文档;普通娱乐软件SDK收集终端信息回传第三方。同时系统原生工具如powershell.exe、certutil.exe可被攻击者滥用,作为Living‑off‑the‑Land工具执行脚本、下载载荷,绕过传统杀毒检测。 另一方面关键业务进程(文档软件、设计工具、安全Agent)面临被终止、挂起、代码注入的威胁。勒索软件加密文件前优先杀掉安全进程;APT攻击依靠DLL/APC注入向合法进程植入恶意载荷,窃取内存敏感数据、建立持久后门。 对此需要一套完整终端程序治理体系:内核层实现进程创建实时监控与黑白名单管控,只允许授权程序运行;依托对象回调、API Hook、内存保护技术,为关键进程构建运行时完整性防护屏障。本文梳理整套体系技术实现,结合互成软件终端安全治理框架阐述企业落地工程价值。 一、程序黑白名单:内核层进程创建监控与策略执行 1.1 Windows进程创建底层机制 要理解程序白名单,需要了解Windows进程创建完整链路。调用CreateProcess系列API启动程序,系统会经历关键阶段: NtCreateUserProcess:用户态API最终调用内核系统调用,位于ntoskrnl.exe,是进程创建入口; 对象管理器解析:解析可执行文件路径,读取PE头部,校验程序架构兼容性; 内存管理器加载:新建进程虚拟地址空间,把PE代码段、数据段映射到内存; 进程通知回调:新进程插入全局链表,触发所有已注册的进程创建回调例程。 黑白名单核心思路:在进程创建早期介入决策,黑名单映像直接阻止初始化;白名单程序放行继续执行。 1.2 内核层进程通知回调 Windows内核提供PsSetCreateProcessNotifyRoutine、PsSetCreateProcessNotifyRoutineEx(Win8.1及以上),内核驱动可以注册进程创建、销毁回调。 CreateInfo不为NULL:代表进程正在创建; CreateInfo为NULL:代表进程退出销毁。 回调内可以获取关键信息:映像完整设备路径、命令行参数、父进程ID、创建线程Token身份。 互成软件管控驱动在此回调完成黑白名单匹配。PsSetCreateProcessNotifyRoutineEx支持直接设置CreationStatus = STATUS_ACCESS_DENIED拒绝进程创建。操作系统直接回收资源,进程完全不会执行,相比创建完成后调用ZwTerminateProcess终止更加干净,不会留下运行痕迹。 1.3 黑白名单策略引擎 黑白名单不只是简单字符串比对,包含路径归一化、签名校验、哈希比对、通配模式多重逻辑。 路径规范化 攻击者可使用符号链接、目录联接、8.3短文件名绕过路径匹配。驱动调用文件过滤接口获取标准化文件名,消除符号链接、短文件名差异,转换为盘符路径。 数字签名验证 仅靠路径容易被仿冒(恶意程序改名冒充系统程序)。内核校验PE文件代码签名证书链。白名单规则可限定:仅允许指定厂商签名的程序,抵御路径欺骗。 文件哈希校验 高安全场景使用SHA‑256哈希校验程序本体,不受路径、重命名影响;软件版本升级时需要同步更新哈希库。 通配模式匹配 支持灵活规则示例: C:\Program Files\TrustedVendor\*.exe:指定目录全部exe放行 notepad.exe:全局匹配该文件名进程 *:winword.exe:限定路径格式匹配程序 1.4 用户态弹窗提醒机制 内核负责阻断决策,交互交由用户态Agent,内核‑用户态协同工作: 事件上报:驱动把阻断信息(进程名、路径、哈希、规则ID)写入环形共享内存,IOCTL通知Agent; 桌面弹窗:Agent在交互式用户桌面弹出提示,展示阻断原因,提供「申请使用」「查看详情」; 审批工作流:用户提交使用申请,加密上报管理平台;审批通过下发限时临时策略; 审计日志:所有阻断事件本地留存并上报平台,支持多维度检索。 二、进程保护:运行时完整性保障的技术实现 2.1 进程运行时面临的威胁 程序启动之后,依旧面临多种攻击手段: 进程终止:拿到PROCESS_TERMINATE权限句柄调用终止接口,勒索软件常用; 进程挂起:NtSuspendProcess / NtSuspendThread冻结进程,防护失效但不产生退出告警; DLL注入:远程线程、APC注入、线程劫持,把恶意模块加载进目标进程内存; 内存篡改:WriteProcessMemory改写进程代码、数据,篡改业务逻辑。 进程保护目标:在内核构建屏障,阻止针对受保护业务进程、安全Agent的上述操作。 2.2 进程防终止:对象回调与句柄过滤 Vista及以上提供ObRegisterCallbacks对象回调,监听进程句柄创建、复制操作,是防终止主流方案。 当外部调用OpenProcess获取目标进程句柄,触发对象回调,可以拿到目标EPROCESS对象、操作类型、请求访问权限掩码。 互成软件驱动执行逻辑: 判断目标进程是否属于受保护列表; 如果是受保护进程,剥离危险权限:PROCESS_TERMINATE、PROCESS_VM_WRITE、PROCESS_SUSPEND_RESUME;仅保留查询类安全权限; 调用方身份校验:系统核心进程允许必要访问,普通用户态程序直接剔除高危权限。 该方案工作在内核对象层,即便攻击者使用直接系统调用绕过用户态Hook,也拿不到危险权限句柄。 2.3 进程防注入:模块加载监控与内存保护 DLL注入本质是外部代码映射进目标进程地址空间,多层防御: 模块加载回调:注册镜像加载通知,DLL映射进入受保护进程时触发;校验DLL路径、签名、哈希;非信任模块直接卸载并告警; APC注入防护:监控NtQueueApcThread,检测向受保护进程线程插入异步调用的恶意行为; 内存页防护:拦截NtProtectVirtualMemory修改页属性,拦截NtWriteVirtualMemory对受保护进程内存非法写入。 2.4 进程防挂起:线程状态监控 攻击者通过NtSuspendProcess、NtSuspendThread等接口冻结进程线程。驱动监控相关内核函数调用,检测针对受保护进程的挂起请求,返回拒绝状态,同时记录发起调用的进程信息。 ...