引言:终端程序执行的不可控风险

在企业纵深防御安全体系中,终端是攻击面最复杂、最难收敛的环节。传统防护侧重网络边界与病毒查杀,依靠防火墙、IDS/IPS、杀毒软件抵御外部威胁。但长期被忽略的风险点在于:终端运行的各类程序,无论是否携带恶意代码,都可能造成数据泄露、合规违规、业务中断。

员工运行未经审批软件会带来多重风险:盗版工具内置后门窃取图纸;非评估IM工具通过私有协议外传敏感资料;个人云盘后台自动同步涉密文档;普通娱乐软件SDK收集终端信息回传第三方。同时系统原生工具如powershell.execertutil.exe可被攻击者滥用,作为Living‑off‑the‑Land工具执行脚本、下载载荷,绕过传统杀毒检测。

另一方面关键业务进程(文档软件、设计工具、安全Agent)面临被终止、挂起、代码注入的威胁。勒索软件加密文件前优先杀掉安全进程;APT攻击依靠DLL/APC注入向合法进程植入恶意载荷,窃取内存敏感数据、建立持久后门。

对此需要一套完整终端程序治理体系:内核层实现进程创建实时监控与黑白名单管控,只允许授权程序运行;依托对象回调、API Hook、内存保护技术,为关键进程构建运行时完整性防护屏障。本文梳理整套体系技术实现,结合互成软件终端安全治理框架阐述企业落地工程价值。

一、程序黑白名单:内核层进程创建监控与策略执行

1.1 Windows进程创建底层机制

要理解程序白名单,需要了解Windows进程创建完整链路。调用CreateProcess系列API启动程序,系统会经历关键阶段:

  1. NtCreateUserProcess:用户态API最终调用内核系统调用,位于ntoskrnl.exe,是进程创建入口;
  2. 对象管理器解析:解析可执行文件路径,读取PE头部,校验程序架构兼容性;
  3. 内存管理器加载:新建进程虚拟地址空间,把PE代码段、数据段映射到内存;
  4. 进程通知回调:新进程插入全局链表,触发所有已注册的进程创建回调例程。

黑白名单核心思路:在进程创建早期介入决策,黑名单映像直接阻止初始化;白名单程序放行继续执行。

1.2 内核层进程通知回调

Windows内核提供PsSetCreateProcessNotifyRoutinePsSetCreateProcessNotifyRoutineEx(Win8.1及以上),内核驱动可以注册进程创建、销毁回调。

  • CreateInfo不为NULL:代表进程正在创建;
  • CreateInfo为NULL:代表进程退出销毁。

回调内可以获取关键信息:映像完整设备路径、命令行参数、父进程ID、创建线程Token身份。

互成软件管控驱动在此回调完成黑白名单匹配。PsSetCreateProcessNotifyRoutineEx支持直接设置CreationStatus = STATUS_ACCESS_DENIED拒绝进程创建。操作系统直接回收资源,进程完全不会执行,相比创建完成后调用ZwTerminateProcess终止更加干净,不会留下运行痕迹。

1.3 黑白名单策略引擎

黑白名单不只是简单字符串比对,包含路径归一化、签名校验、哈希比对、通配模式多重逻辑。

  1. 路径规范化 攻击者可使用符号链接、目录联接、8.3短文件名绕过路径匹配。驱动调用文件过滤接口获取标准化文件名,消除符号链接、短文件名差异,转换为盘符路径。

  2. 数字签名验证 仅靠路径容易被仿冒(恶意程序改名冒充系统程序)。内核校验PE文件代码签名证书链。白名单规则可限定:仅允许指定厂商签名的程序,抵御路径欺骗。

  3. 文件哈希校验 高安全场景使用SHA‑256哈希校验程序本体,不受路径、重命名影响;软件版本升级时需要同步更新哈希库。

  4. 通配模式匹配 支持灵活规则示例:

  • C:\Program Files\TrustedVendor\*.exe:指定目录全部exe放行
  • notepad.exe:全局匹配该文件名进程
  • *:winword.exe:限定路径格式匹配程序

1.4 用户态弹窗提醒机制

内核负责阻断决策,交互交由用户态Agent,内核‑用户态协同工作:

  1. 事件上报:驱动把阻断信息(进程名、路径、哈希、规则ID)写入环形共享内存,IOCTL通知Agent;
  2. 桌面弹窗:Agent在交互式用户桌面弹出提示,展示阻断原因,提供「申请使用」「查看详情」;
  3. 审批工作流:用户提交使用申请,加密上报管理平台;审批通过下发限时临时策略;
  4. 审计日志:所有阻断事件本地留存并上报平台,支持多维度检索。

二、进程保护:运行时完整性保障的技术实现

2.1 进程运行时面临的威胁

程序启动之后,依旧面临多种攻击手段:

  • 进程终止:拿到PROCESS_TERMINATE权限句柄调用终止接口,勒索软件常用;
  • 进程挂起NtSuspendProcess / NtSuspendThread冻结进程,防护失效但不产生退出告警;
  • DLL注入:远程线程、APC注入、线程劫持,把恶意模块加载进目标进程内存;
  • 内存篡改WriteProcessMemory改写进程代码、数据,篡改业务逻辑。

进程保护目标:在内核构建屏障,阻止针对受保护业务进程、安全Agent的上述操作。

2.2 进程防终止:对象回调与句柄过滤

Vista及以上提供ObRegisterCallbacks对象回调,监听进程句柄创建、复制操作,是防终止主流方案。 当外部调用OpenProcess获取目标进程句柄,触发对象回调,可以拿到目标EPROCESS对象、操作类型、请求访问权限掩码。

互成软件驱动执行逻辑:

  1. 判断目标进程是否属于受保护列表;
  2. 如果是受保护进程,剥离危险权限:PROCESS_TERMINATEPROCESS_VM_WRITEPROCESS_SUSPEND_RESUME;仅保留查询类安全权限;
  3. 调用方身份校验:系统核心进程允许必要访问,普通用户态程序直接剔除高危权限。

该方案工作在内核对象层,即便攻击者使用直接系统调用绕过用户态Hook,也拿不到危险权限句柄。

2.3 进程防注入:模块加载监控与内存保护

DLL注入本质是外部代码映射进目标进程地址空间,多层防御:

  1. 模块加载回调:注册镜像加载通知,DLL映射进入受保护进程时触发;校验DLL路径、签名、哈希;非信任模块直接卸载并告警;
  2. APC注入防护:监控NtQueueApcThread,检测向受保护进程线程插入异步调用的恶意行为;
  3. 内存页防护:拦截NtProtectVirtualMemory修改页属性,拦截NtWriteVirtualMemory对受保护进程内存非法写入。

2.4 进程防挂起:线程状态监控

攻击者通过NtSuspendProcessNtSuspendThread等接口冻结进程线程。驱动监控相关内核函数调用,检测针对受保护进程的挂起请求,返回拒绝状态,同时记录发起调用的进程信息。

三、互成软件的终端程序治理框架

3.1 分层防御架构

采用内核驱动层 + 用户态Agent层 + 管理平台层三层架构:

  1. 内核驱动层:进程创建回调、对象回调注册、句柄过滤、模块加载监控;驱动最小化设计,IOCTL接口受控;
  2. 用户态Agent层:策略缓存解析、弹窗交互、辅助签名校验、日志聚合上报;以System权限Windows服务运行;
  3. 管理平台层:策略编排、黑白名单维护、审批工作流、审计报表;管理员Web端配置全局/部门策略,加密通道下发终端。

3.2 精细化策略编排

不使用一刀切全局规则,支持多维度条件组合:

  • 用户身份维度:对接AD/LDAP,按部门、用户组分配权限。研发放行IDE编译器,财务放行ERP客户端;
  • 终端安全等级:高密终端默认拒绝,仅白名单程序运行;普通办公终端使用黑名单模式;
  • 网络环境维度:内网放开协作软件;外网漫游自动收紧策略;
  • 动态进程保护:检测到打开敏感文档时自动把Office加入保护列表;文档关闭撤销保护,降低性能开销。

3.3 兼容性与稳定性保障

内核驱动对系统稳定性影响高,配套工程保障:

  • 多版本适配:兼容Win7‑Win11各版本内核差异,规避PatchGuard限制;
  • 驱动签名:EV/WHQL签名,Secure Boot环境可正常加载;
  • 故障降级机制:驱动异常自动切换观察模式,只记录事件不阻断,规避蓝屏死机风险。

四、合规性与工程实践

4.1 合规性映射

合规标准 相关条款 技术映射
等保2.0 恶意代码防范、访问控制 程序黑白名单拦截未授权软件执行
ISO 27001 A.12.6技术合规性审查、A.14.2.2系统变更控制 软件运行审批管控
数据安全法 数据处理活动安全 抵御恶意程序窃取篡改业务数据
网络安全等级保护 入侵防范、恶意代码防范 进程保护,防止安全机制被绕过

4.2 性能与用户体验平衡

严格管控兼顾业务效率,落地优化手段:

  • 本地策略缓存:策略转为哈希、Trie树结构,进程创建额外延迟控制在1ms以内;
  • 静默阻断时段:夜间批处理任务期间只写日志不弹窗;
  • 审批加速通道:部门预授权,针对高频临时软件,避免重复提交申请。

结语

PsSetCreateProcessNotifyRoutineEx进程创建拦截,到ObRegisterCallbacks句柄过滤;从DLL、APC注入防护,到线程挂起行为检测。终端程序治理横跨内核对象管理、内存管理、线程调度、安全子系统。核心价值在于:传统杀毒依赖特征码存在滞后、用户态白名单容易被绕过的场景下,提供内核级程序执行准入与运行时完整性防护。

互成软件这套方案实现对程序执行主体的可控防护:内核构建进程创建门禁,只有经过路径、签名、哈希校验的程序才可运行;对象层为关键进程建立访问屏障,抵御终止、挂起、注入。两层防护协同,形成准入控制‑运行时保护‑审计闭环完整终端程序治理框架。

企业做等保建设、恶意软件防御、关键业务进程防护,该能力不是限制员工的工具,而是构建可信计算环境的基础设施。选型部署结合业务软件生态、终端性能基线、合规要求做差异化配置,平衡安全与可用性。终端程序治理的目标不是禁止一切程序运行,而是让每一段代码执行,都处于可信进程、可控权限、可审计的上下文当中。