Windows安全机制学习笔记

文章目录
  1. 1. 系统安全
    1. 1.1. 代码完整性:
    2. 1.2. 服务加固
    3. 1.3. 完整性级别校验
    4. 1.4. 用户界面特权隔离(UIPI)
    5. 1.5. UAC管理员机制
    6. 1.6. 防止缓冲区溢出攻击
    7. 1.7. 64位防止RootKit
  2. 2. 网络攻击安全
    1. 2.1. 网络访问保护(NAP:Network Access Protection)
    2. 2.2. IE浏览器安全防护【保护模式PMIE】
  3. 3. Intel处理器提供的安全策略

参考资料:
Windows Vista操作系统最新安全特性分析:改进和局限
Windows Vista 安全指南
您必须知道的Windows Vista安全功能
Win8的安全特性
Windows 8 安全性改进
Understanding Windows Service Hardening
逆向Windows 8:内核安全特性拾趣

系统安全

代码完整性:

代码完整性(CI:Code Integrity)可以有效地防范木马、rootkit等对系统文件的恶意修改,防范不安全的第三方驱动对系统的危害。CI会检查代码的hash值(内嵌于代码中的x.509证书,或者位于%windir%\system32\catroot里的编录文件),一旦发现hash值不符,就会停止加载代码。
CI主要检查以下的代码:

  • (1) 系统启动时,检查内核、HAL和驱动的完整性
  • (2) 检查所有加载到内核内存空间的代码完整性
  • (3) 对加载到受保护进程空间里的代码进行完整性检查

服务加固


Windows Xp和Vista Session的不同
  • session 0隔离
  • 最小特权账户(把更多服务的启动帐户,从LocalSystem迁移到LocalService或者NetworkService)
  • 独立SID(每个服务都有一个独立的SID,这样服务就可以利用该SID来控制其专属资源的ACL)、
  • 服务的SID标记为Write-Restricted(写限制)、
  • 减少不必要的特权
  • 限制网络访问

完整性级别校验

Windows中各种对象都有完整性级别,例如进程主要级别从低到高为Untrust、Low、Medium、Hight和System。Windows 2000/XP安全体系里,安全子系统把进程的访问令牌和资源的访问控制列表进行匹配比较,以确认该进程是否具有访问该资源的权限。而在WindowsVista下,除了遵守传统的安全控制机制外,还必须检查进程和资源对象的完整性级别,完整性级别低的进程,不能写入完整性级别高的资源对象【通过这种完整性级别可以防止一些恶意行为如dll注入、代码注入或则修改pe文件】。

注释:

  • • Medium Mandatory Level:其SID为S-1-16-8192。
    • High Mandatory Level:其SID为S-1-16-12288
    • System Mandatory Level:其SID为S-1-16-16384
    • Low Mandatory Level:该标志主要用于保护模式的IE浏览器等进程
    当我们尝试启动某个标记为需要高特权的进程时,Windows Vista会检查其“父进程”的访问令牌,并根据访问令牌里的Mandatory Label SID进行相应的判断:
    • 如果是Medium Mandatory Level:则弹出consent对话框要求确认权限的提升。
    • 如果是High Mandatory Level:则直接以完全权限打开目标进程,而无需确认。

• 如果是System Mandatory Level:则直接以完全权限打开目标进程,而无需确认。*

用户界面特权隔离(UIPI)

Windows的窗口系统采用完整性机制,以防止较低完整性级别的进程向较高完整性级别进程的窗口发送大多数窗口消息。服务隔离实现了用户界面特权隔离(UIPI)

UAC管理员机制

  • 安全桌面
  • 虚拟化

防止缓冲区溢出攻击

  • NX保护:“No Execution”。在以上的缓存溢出的例子中,恶意代码在堆栈上被执行。NX保护可以指定特定的页面(如堆栈所在页面)是数据页面,不允许在上运行指令。这样,一旦IP寄存器指向了堆栈所在页面,会导致硬件异常,而不是执行恶意数据(代NX保护:码)。
    DEP相关

  • 寻址空间随机分布(ASLR):如果写入的新的返回地址不是指回堆栈页面,而是指向了一个系统函数的入口地址,那样NX保护就不起作用。这类攻击有一个前提,即特定系统函数的入口地址是可以事先确定的。
    寻址空间随机分布(ASLR: Address Space Layout Randomization)就是针对此类攻击手段。在Windows Vista启动时,操作系统随机从256个地址空间中选出一个载入DLL/EXE。这样攻击方就难以事先确定系统函数的入口地址。

64位防止RootKit

  • 设备驱动程序数字认证。在64位平台Windows Vista中,所有工作在核心模式下的设备驱动程序都必须提供数字认证,才能被系统加载。由于需要修改操作系统行为,Rootkit往往是一个工作在核心模式下的设备驱动程序。那么,数字认证首先可以指明一个驱动程序是由哪个厂商发布的。其次,数字认证可以验证这个驱动程序的代码完整性,也就是否被篡改过。这样,就可以防止系统加载Rootkit驱动程序。
  • 核心模式保护(Kernel Patch Protection)。这个技术也被称为PatchGuard。它用来防止未经认证的代码自由修改操作系统的核心状态(KernelState)。最为危险的Rootkit往往直接修改核心模式的重要数据,例如系统的进程控制表,中断控制表等等。通过对核心状态的保护,可以有效阻止这类攻击。

网络攻击安全

网络访问保护(NAP:Network Access Protection)

网络访问保护(NAP:Network Access Protection)就是为了防止不健康的Vista计算机感染企业内部网络,从而提高整个内部网络的安全性。网络权限保护就是要求:

  • 1.任何电脑必须通过系统健康检查(policy compliant)后,如是否安装最新的安全补丁,防病毒软件的特征库是否更新等,才能接入公司内部网络
  • 2.未通过系统健康检查的机器会被隔离到一个受控网络。在受控网络中,修复自身的状态已达到系统健康检查的标准,从特定服务器下载专门的系统补丁。完成修复工作后,才能接入公司内部网络。

IE浏览器安全防护【保护模式PMIE】

主要利用了前面介绍的系统安全中的技术包括UAC、DEP、ALSR、SEHOP、Low Right等

  • IE运行权限低于普通用户程序
  • 只能对文件系统的特定部分执行写操作
  • 不能对高权限的其它进程操作,如创建远程线程等
  • 敏感操作,如修改Internet设置,或安装ActiveX控件,由代理进程(broker process)执行。

Intel处理器提供的安全策略

  • Secure Key技术:在第三代Core处理器Ivy Bridge中加入,提供硬件底层随机数生成(主要增强Security Cookie及ASLR的生成过程),Windows系统的一些地址生成加入随机化支持
  • SMEP内核模式执行保护:可用于禁止从Ring 0执行标记为Ring 3地址空间的代码

其他介绍
从加固系统到守护隐私:桌面安全进化之路(下篇)
个人理解的Windows漏洞利用技术发展史
Windows溢出保护原理与绕过方法概览
Windows漏洞利用技术概述