310 likes | 645 Views
WCI 262 Windows Vista 安全特性深入分析 - 用户帐号保护 (UAP/LUA). 陈宇 软件设计工程师 Windows 核心安全测试组 Microsoft yuchen@microsoft.com. 提要. 为什么需要 UAP/LUA 定义 : 普通用户和特权用户 UAP/LUA 的设计目标 Windows Vista 中 UAP/LUA 的实现 Windows Vista UAP/LUA 演示 开发符合 UAP/LUA 规范软件. 为什么需要 UAP/LUA. 大多数用户以系统管理员的身份登录运行
E N D
WCI 262Windows Vista安全特性深入分析-用户帐号保护 (UAP/LUA) 陈宇 软件设计工程师 Windows核心安全测试组 Microsoft yuchen@microsoft.com
提要 • 为什么需要UAP/LUA • 定义: 普通用户和特权用户 • UAP/LUA 的设计目标 • Windows Vista 中 UAP/LUA 的实现 • Windows Vista UAP/LUA 演示 • 开发符合 UAP/LUA 规范软件
为什么需要UAP/LUA • 大多数用户以系统管理员的身份登录运行 • 一些常用的系统操作需要管理员权限 • 安装一个软件需要管理员权限 • 很多软件只能以管理员身份运行 • 以管理员用户运行造成的问题 • 病毒(Virus), 恶意软件(Malware), 间谍软件(Spyware), 可以控制/破坏整个机器,为所欲为 • 在企业环境中, 使IT管理更加困难, 可能造成更严重的破坏
困难 • 企业所用的众多日常工作软件, 往往需要某些管理员权限 • 不得不放松一些安全性限制 • IT主管要为每个软件独立测试, 来决定放松哪些安全性限制 • 高TCO (Total Cost of Ownership) • 一些常用的任务也需要管理员权限 • VPN • 普通用户无法修改一些只和他自己帐号有关的系统配置
定义 • 普通用户 • 系统的帐号管理向导创建的默认帐号类型 • 无权更改系统设置 • 也叫“最低权限用户”, “标准用户” • 管理员用户 • 对机器有最高的权限 • UAP/LUA中的 “受保护管理员用户” (PA): • 通常情况下只有和普通用户相同的权限 • 可以 “提升”成为特权用户, 有最高权限
定义(续) • “即时权限提升” OTS (Over the Shoulder) • 一个特殊的对话框 • 当普通用户执行某项需要管理员干涉的任务时出现
Windows Vista 之用户角色 • 家庭环境 • Abby (属于系统管理员组) • Toby (普通用户/最低权限用户) • 企业环境 • Ichiro (属于域管理员组) • Nicolas (属于域用户组) • “受保护管理员用户” (Protected Admin) • Abby • Ichiro
Windows Visa UAP/LUA 设计目标 • 减少“每个用户都是管理员用户”所带来的危险
策略 • 修改操作系统, 使普通用户能够完成日常工作所需要的功能, 而不必以管理员身份运行才行 • 所有人都以最少权限用户的身份运行 • 包括系统管理员组里的用户 (PA) • 唯一例外 –系统内建的管理员用户帐号 • 当需要提升权限时, 提供一种简单并且安全的途径 • 标记需要管理员权限的程序 • 隔离普通(LUA)进程和以管理员权限运行的进程 • 与软件开发商合作
操作系统内部的变化 • 修正/去处不必要的“管理员权限”检查 • 一个典型的例子 – 系统日期 • VPN (虚拟专用网络) • 对非管理用户, 隐藏没必要看到的信息 (例如一些属性菜单和选项) • 当创建用户帐号时, 使普通用户成为缺省的用户类型
所有人都以最少权限用户的身份运行 • 包括系统管理员组里的用户 • 用户桌面 (Explorer) 和所有应用程序 (IE, Outlook) 都以最少权限运行 • 当一个需要管理员权限的程序运行时, 用户会得到一个 “提升权限”提示对话框 • 具体的提示方式, 由系统的安全策略决定 • 注: 只限于互交式登陆的用户及其进程
“提升权限”对话框 • 提示方式 • “同意提升权限”对话框 (Ok/Cancel) • “输入密码” 对话框 • 通过安全桌面 (CRTL-ALT-DEL) • 例子 • 运行需要管理员权限的程序 • 改变系统全局设置 (系统时间) • 安装新软件
标记需要管理员权限的程序 • 程序的 “运行级别” • LUA –以最少权限运行 • Highest –以用户可能有的最高权限运行 • Admin –以管理员权限运行 • 如何标记 • 默认值为 “LUA”, 无需管理员权限 • 程序可在自己的 Manifest 里设置运行级别 • 系统的 “程序兼容性数据库” • 启发式的安装程序检测 • 鼠标右击菜单中的 “以管理员权限运行”选项
UI 新概念 - 加锁/开锁 • 系统设置界面中的 “加锁/开锁” 概念 • “加锁” 状态 –以最少权限用户身份运行 • “开锁”状态 –以管理员身份运行
现有软件的兼容性问题 • 目前许多的软件是为 Windows 9x 设计的 • 所有用户都是管理员用户 • 许多软件从未在最少权限用户下测试过 • 包括 Microsoft 和其他软件开发商 • 众多 “出毛病” 的软件有类似的问题 • 存取共享的文件 (例子: 游戏最高分排行版) • 存取共享的注册表键值
如何解决兼容性问题 • 虚拟化 • 写: 把写入系统文件夹/注册表的请求重定位到每个用户独有的存储区 (虚拟存储区) • 读: 先从每个用户独有的存储区读取, 再试真正的系统存储区 • 只影响 LUA 进程, 不影响以管理员权限运行的进程 • 只是一个过渡性的方案, 在将来的 Windows 操作系统 (Windows Vista + 2) 中可能去除
与安全性有关的问题 • LUA 进程和管理员进程在同一个桌面运行 • 跨进程的 Widows 消息 • 粉碎窗口攻击 (Shatter Attack) • 输入欺骗 (Spoofing) • LUA 进程和管理员进程有相同的 Sid • DLL/线程 注入 (CreateRemoteThread) • 直接的内存操作 (ReadProcessMemory) • 解决方案: 进程隔离 • 进程的 “UI完整性” 级别 • 进程的 “完整性” 级别 (MIC级别)
进程的 “完整性” 级别 系统服务 • 每个进程有自己的 “完整性” 级别 • “完整性” 级别越高, 系统越信任它 • 进程之间访问的隔离 • 能访问同一级别和比自己级别低的进程 • 不能访问级别比它高的进程 系统级别 (管理员) 防火墙 建立新 用户帐号 高级别 (普通用户) Word PowerPoint 中级别 IE 的 Internet区 低级别 下载的 可执行exe
SendMessage PostMessage 进程的 “UI完整性” 级别 防止输入欺骗 (Spoofing) 防止粉碎窗口攻击 (Shatter Attack) 由 Windows 的USER 子系统来实现 “提升权限” 提示对话框 防火墙 用户界面 高级别 恶意 代码 中级别
保护模式 IE (LoR IE) • 将IE在MIC低级别运行 • 详细请看: WCI 311 最新版本IE 7: 先睹为快
开发符合 UAP/LUA 规范软件 • 遵守 LUA 规范: • 用户界面设计, 文件存取, 注册表存取 • 使用 Application Verifier 中的 “LUA Predictor” 来及早发现程序中的问题 • 具体要求在 Windows Logo 规范中
Windows Logo 规范 • 在普通用户帐号下运行的程序 • 所有需要管理员权限的操作放在 “安装” 模快 • 不写入系统目录 (Windows, Program Files) • 不写入注册表系统区 (HKEY_LOCAL_MACHINE) • 用户相关信息保存在用户配置文件中 (Profiles) • 用 Windows Installer 来实现软件更新 • 在 “快速用户切换” 下能正常运行 • 在普通用户帐号下测试通过
Windows Logo 规范 (续) • 需要管理员权限运行的程序 • 在 Manifest 中设定程序的 “运行级别” <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> … <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> </assembly>
Application Verifier 工具中的LUA Predictor • 可用来预测一个程序在最少权限下能否正常运行 • 发现在最少权限下不工作的API调用 • 发现需要特殊权限的存取操作 • 如何使用 • 以管理员身份登录, 安装AppVerifier • 运行AppVerifier, 登记你的程序(.exe) • 运行你的程序, 结束后保存日志文件 • 查看日志文件
参考资料 Windows Vista Security: http://www.microsoft.com/windowsvista/security.mspx Application Verifier: http://www.microsoft.com/windows/appcompatibility/default.mspx IE 7: http://www.microsoft.com/windows/IE/ie7/default.mspx Windows Logo Program: https://partner.microsoft.com/global/winlogo