Windows Vista下UIPI和Windows消息的故事
2016-03-01 11:49
344 查看
一、 什么是UIPI
UIPI指User Interface Privilege Isolation(用户界面特权隔离),是Windows Vista 新引入的一种安全特性。用于拦截接收比自身进程MIC等级还低的进程发来的消息。
根据Windows开发规范,用户自定义的消息ID均大于WM_USER,而且UIPI默认情况下会禁止所有高于WM_USER的消息,换句话说,在Windows Vista里面,如果你试图往一个高于你自身MIC等级的进程发送自定义消息,结果肯定是失败的,除非接收端设定了自定义消息过滤。对于那些低于WM_USER的系统定义的消息,只有选择性的消息会发送成功,对于那些容易引起危险的消息也会被禁止,而且不可更改。
……
二、 UIPI和窗口粉碎攻击
窗口粉碎攻击的方法是利用Windows消息机制,给指定的窗口句柄发送特定的Windows消息。消息发送成功以后,被发送的消息将进入接收方的消息循环里面进行处理。
常见的攻击方法有:发送WM_CLOSE消息让接收方退出。另外,还可以发送WM_SETTEXT给一个窗口设置文字等。
……
三、 UIPI的原理和实例
Windows里面,和窗口消息发送相关的API函数有2大类:SendMessage和PostMessage,这两个函数可以派生出n个类似函数,例如:SendMessageTimeout等。UIPI既然被称为User Interface Privilege Isolation(用户界面特权隔离),那么肯定需要对这2大类函数进行处理了。
……
前面说到,UIPI的本质是检查目标窗口和发送方是否具有相同的MIC等级或者发送方具有更高的MIC等级,如果符合上述条件,则允许消息的传递,否则将消息丢弃。
……
下面以一些例子说明UIPI的具体用途
下面分为6个实验分别讲述各种条件下的MIC和UIPI的关系。
实验一:当Client和Server进程都处于同一个MIC等级的时候
实验二:接收端MIC等级高于发送端情况下的时候
实验三:接收端MIC等级底于发送端情况下的时候
实验四:系统消息的处理
实验五:接收端运行在高MIC等级下,发送端运行在低MIC等级下的情况(消息过滤模式)
实验六:系统消息是否能够自动放行
……
四、 UIPI带来的兼容性问题
虽然UIPI给应用程序的安全带来了不少好处,微软在UIPI兼容性问题上也做了一些处理,但是UIPI还是会带来下面的一些兼容性问题:
……
五、 结论
UIPI的引入,比较有效的解决了窗口粉碎攻击的问题,同时也规范了应用程序开发商的Windows消息开发流程,虽然UIPI会导致一些兼容性问题的出现,但是不可否认的是,UIPI属于一种利大于弊的技术方法。
……
太晚了,先睡觉吧,详情还是看PDF文档吧。
全文PDF版本可以在 http://www.KZTechs.com 下载到
演示用的Demo程序可以在 http://www.KZTechs.com/uipistory/uipistorydemo.zip 下载到。
UIPI指User Interface Privilege Isolation(用户界面特权隔离),是Windows Vista 新引入的一种安全特性。用于拦截接收比自身进程MIC等级还低的进程发来的消息。
根据Windows开发规范,用户自定义的消息ID均大于WM_USER,而且UIPI默认情况下会禁止所有高于WM_USER的消息,换句话说,在Windows Vista里面,如果你试图往一个高于你自身MIC等级的进程发送自定义消息,结果肯定是失败的,除非接收端设定了自定义消息过滤。对于那些低于WM_USER的系统定义的消息,只有选择性的消息会发送成功,对于那些容易引起危险的消息也会被禁止,而且不可更改。
……
二、 UIPI和窗口粉碎攻击
窗口粉碎攻击的方法是利用Windows消息机制,给指定的窗口句柄发送特定的Windows消息。消息发送成功以后,被发送的消息将进入接收方的消息循环里面进行处理。
常见的攻击方法有:发送WM_CLOSE消息让接收方退出。另外,还可以发送WM_SETTEXT给一个窗口设置文字等。
……
三、 UIPI的原理和实例
Windows里面,和窗口消息发送相关的API函数有2大类:SendMessage和PostMessage,这两个函数可以派生出n个类似函数,例如:SendMessageTimeout等。UIPI既然被称为User Interface Privilege Isolation(用户界面特权隔离),那么肯定需要对这2大类函数进行处理了。
……
前面说到,UIPI的本质是检查目标窗口和发送方是否具有相同的MIC等级或者发送方具有更高的MIC等级,如果符合上述条件,则允许消息的传递,否则将消息丢弃。
……
下面以一些例子说明UIPI的具体用途
下面分为6个实验分别讲述各种条件下的MIC和UIPI的关系。
实验一:当Client和Server进程都处于同一个MIC等级的时候
实验二:接收端MIC等级高于发送端情况下的时候
实验三:接收端MIC等级底于发送端情况下的时候
实验四:系统消息的处理
实验五:接收端运行在高MIC等级下,发送端运行在低MIC等级下的情况(消息过滤模式)
实验六:系统消息是否能够自动放行
……
四、 UIPI带来的兼容性问题
虽然UIPI给应用程序的安全带来了不少好处,微软在UIPI兼容性问题上也做了一些处理,但是UIPI还是会带来下面的一些兼容性问题:
……
五、 结论
UIPI的引入,比较有效的解决了窗口粉碎攻击的问题,同时也规范了应用程序开发商的Windows消息开发流程,虽然UIPI会导致一些兼容性问题的出现,但是不可否认的是,UIPI属于一种利大于弊的技术方法。
……
太晚了,先睡觉吧,详情还是看PDF文档吧。
全文PDF版本可以在 http://www.KZTechs.com 下载到
演示用的Demo程序可以在 http://www.KZTechs.com/uipistory/uipistorydemo.zip 下载到。
相关文章推荐
- 让一个正方形View以四个角中的任意一角为起点放大或缩小
- UITabBarController
- JAVA学习之GUI组件中Toolkit的使用
- 1085. Perfect Sequence (25)
- 一起学习extjs(四)alias,config,mixins,require用法
- pyquery小记
- pyquery小记
- iOS开发之使用Storyboard预览UI在不同屏幕上的运行效果
- Build.VERSION.SDK_INT
- Qt使用教程之创建Qt Quick UI表单(四)
- SystemUI新增快捷方式
- 在iOS 8中使用UIAlertController
- 根据范围给UILabel设置颜色或字体,行间距
- 放肆地用 UIBezierPath 和 CAShapeLayer 画各种图形
- SPOJ 2939 QTREE5 - Query on a tree V
- UIImagePickerController 调用系统相机 相册
- UE4 命令行参数
- iOS开发之UISegmentedControl的圆角添加在navigationController小技巧
- Android Stuido Ndk-Jni 开发(四):Jni打包及引用aar
- question_004-JAVA之class-static