付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
windows下的代码签名机制
0签名验证机制众所周知,大多数计算机病毒都是以可执行文件的形式存在的。攻击者可以修改或添加目标计算机系统的可执行文件,并将恶意代码嵌入到恶意代码中。当攻击者获取程序的执行权限从而成功入侵后,便能控制用户的计算机并窃取其隐私数据,给用户带来极大的损失代码签名机制对可执行文件的数字签名进行验证,从而可以判断文件是否已经签名并且签名是否有效。微软公司在Windows平台下设计了一种代码签名的机制,并且在64位操作系统的平台下强制性地对涉及到内核的驱动程序进行签名验证。1代码签名机制1.1处理器访问模式为了避免用户应用程序访问或修改关键的操作系统数据,Windows使用了两种处理器访问模式:用户模式和内核模式。对于在内核模式下运行的组件,Windows对它们的读写系统内存并不加以保护1.2驱动签名的验证代码签名机制的内部工作机制分为初始化和驱动程序签名验证两个部分。(1)初始化代码签名机制的核心在于一个可执行映像CI.dll。初始化程序CI!CiInitialize在NT内核中导入,并在系统初始化时调用。在初始化过程中:程序首先检查自我的完整性并验证最终分配给模块的数字签名。如果遇到任何异常,则会返回错误代码;如果通过自检,程序会验证每一个在启动驱动程序列表上的驱动程序的签名。(2)驱动程序签名验证初始化结束后,如果代码签名机制中断了驱动程序加载的过程,可以推断系统试图加载未签名的驱动程序,此时将对映像头部进行验证,检查nt!g_CiEnabled是否为TRUE,如果是,则比较nt!g_CiCallbacks[0]指针是否为空,如果不为空,则调用nt!g_CiCallbacks[0]函数并退出,否则返回0xc0000428。nt!g_CiEnabled如果不为TRUE,则在分页池里分配一个字节,把结果地址存到第一个参数指定的内存中,返回STATUS_SUCCESS。至此,整个代码签名的验证过程结束。2检测方法的缺陷虽然代码签名机制表面上设计非常完美,但还是存在一些方法可以绕过,有一些还涉及到Windows的内核缺陷。目前绕过的思路有:挖掘已签名的但是存在安全漏洞的设备驱动程序;利用散列值碰撞来伪造签名或数字证书。2.1代码签名机制的攻击在驱动程序的开发阶段,由于程序设计人员的疏忽,某些驱动程序可能会存在漏洞。如果带有漏洞的驱动程序被签了合法的数字签名并且发布出来,攻击者就可以利用这些漏洞获取计算机的内核权限,关闭代码签名机制SecurStar的DriveCrypt是一个计算机数据安全保护工具,在其老版本的64位驱动DCR.sys中存在漏洞。在一个DCR句柄中,发送一个经过设计的IoCtl请求,通过此漏洞进入内核态,注入ShellCode之后即可关闭代码签名机制。只要用户安装了DriveCrypt,攻击者就可以利用该漏洞关闭代码签名机制。“长老漏洞”自1992年就存在于Windows操作系统中,恶意程序通过修改注册表获取对电脑系统的控制权。经过Win7到Win8的安全机制大幅提升之后,只有通过一些间接的方法才能利用到这个漏洞。mountmgr.sys负责管理驱动器挂载的相关工作,Win7下的该驱动能够被Win8认证通过。Win8自带的系统驱动已经不存在触发漏洞的条件,不过Win7下的该驱动与Win8存在一些不当交互。在管理员模式下,用户可以先卸载Win8的该驱动,然后加载Win7的驱动,进入内核态构造ROP链代码来关闭驱动程序强制签名机制上述两个实例都是安全研究人员发现的已经存在于第三方驱动中可以利用来关闭代码签名机制的漏洞。如果用户不经常更新驱动,计算机中存在漏洞的可能性就比较大。如果新版本的驱动已经不存在漏洞,则可以先卸载新驱动,手动加载有漏洞的老版本驱动,之后再触发漏洞进行攻击。由上述两个实例可知,攻击者可以重点对驱动程序进行漏洞的挖掘,进而通过驱动程序中的漏洞对计算机系统发动攻击。2.2利用散列值签名对于软件程序来说,保持其完整性指的是软件程序从发布到用户的使用过程中不被恶意篡改。一般通过互联网发布的软件程序都会发布所对应的散列值,通常为MD5或SHA-1算法计算得到的散列值。正规的软件开发商还对这个散列值进行数字签名,从而清楚地表明软件的来源,保证在分发过程中没有经过恶意的篡改或伪造。在2004年,山东大学的王小云教授就已经研究发现并实现了MD5散列算法的碰撞。之后来自荷兰的MarcStevens和他的团队设计出了一种“选择性前缀的MD5碰撞”此研究成果可以有如下实际用途:伪造程序的签名、伪造数字证书2.2.1cdb值的比较假设某攻击者现在有两个不同的程序A和B,程序A是一个简单的计算器,而程序B是一个恶意程序。攻击者利用“选择性前缀MD5碰撞”方法,计算填充二进制代码C和D,使得A||C的MD5值与B||D的MD5值相同。此时,攻击者使用正规的数字证书对程序A(实际上是A||C的MD5值)进行签名,签名值为E附在程序A之后,以表明程序A已经经过数字签名。因为程序B签名值F与E相等,如果把E直接附在程序B之后,并且由MD5值判断为程序A,而且也会误以为B程序也是经过签名的程序。通过这种方法,攻击者可以发布正常无害的签过名的程序A给普通用户,针对特定用户使用恶意程序B。不过,通过审计可以发现恶意程序B的签名所使用的数字证书为攻击者所持有,从而可以发现攻击者的身份,如图1所示。2.2.2填充信息的伪造和前一种方法的思路类似,攻击者事先准备好两份数字证书,其中证书A包含填充信息C,证书B包含填充信息D,并且A||C的MD5值与B||D的MD5值相同。其中证书A的持有者信息是真实有效的,而证书B的信息是攻击者伪造的(也可以伪造成证书授权机构(CA,CertificationAuthority)代理)。由于签名使用的加密算法是非对称的3代码签名机制的改进由对代码签名机制的介绍可以知道,该机制对于Windows的防护起到了非常大的作用。针对2.1节中的绕过方法,可以从两方面进行改进:1)对于设计代码签名机制的微软来说,可以效仿苹果的APP审核制度2)对于用户来说,应该及时进行软件和操作系统的更新,及时打补丁,避免攻击者利用最新的漏洞进行攻击。针对2.2节中的绕过方法,其缺陷主要存在于MD5算法的碰撞性上。代码签名机制可以同时使用MD5和SHA-1散列算法,对两个散列值都进行验证。MD5、SHA-1算法的碰撞概率都非常小,如果要同时碰撞,可以说概率几乎为零。4代码签名机制的改进通过对代码签名机制原理、绕过思路以及相应的改进措施和解决方案的分析,得出以下结论:1)总体来讲,代码签名机制能够有效地防止恶意程序在操作系统中运行,在很大程度上帮助用户抵挡了攻击者的攻击行为,完善了计算机操作系统的安全体系。2)代码签名机制还存在缺陷。恶意程序可以利用已经签名的驱动程序的漏洞获取内核态权限关闭代码签名机制。利用MD5碰撞可以欺骗该机制,使其认为恶意程序无害且合法,从而使恶意程序绕过该机制的检查,对用户计算机操作系统产生损害。3)代码签名机制
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 淮安市H学院贫困生资助工作的困境与突破之道
- 液态金属微环境中液滴与颗粒的电场操控:原理、方法与应用
- 液体酶稳定性与生物学效价评定的多维度解析
- 消费者购买有机食品行为的影响因素分析-基于杭州市城镇居民的调查
- 2026年企业劳动合同模板下载
- 先进计算技术发展研究报告202
- 能源项目管理与工程手册
- 妊娠期结核病合并妊娠期胎儿窘迫的宫内复苏措施
- 2026晋城市中考生物考前冲刺卷含答案
- 重庆八中高2026届高三 4月强化训练(二)政治试卷含答案及解析
- 北斗三号区域短报文新技术新产品和新应用-北斗与电力整合讲座课件完整版
- 便利店商品陈列技巧
- 2024年四川省内江市中考英语试题(含答案)
- 2023年港澳台联考历史真题及答案
- 2024金融数据安全数据安全评估规范
- 护工术语和专业知识培训
- 耙斗装岩机操作规程培训
- 2023年湖南永州市中医医院招聘56人历年高频难易度、易错点模拟试题(共500题)附带答案详解
- 2×300MW火电厂电气一次部分设计
- 内科学教学课件:胃炎
- 职业教育学新编第三版知识点
评论
0/150
提交评论