NetD efender网页木马防御系统设计报告.doc

NetD efender网页木马防御系统设计报告.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
· PAGE 4· 首届全国大学生信息安全竞赛参赛作品 NetDefender网页恶意代码防御系统 1.设计背景与需求分析 随着近几年网络的飞速发展,互联网在人们的日常生活中扮演了越来越重要的作用。电子商务等互联网新应用已经被越来越多的人接受和采用。因此,网络安全问题就显得愈发重要,网络安全已经直接关系到人们的财产和生活。在各种网络入侵中,网页木马因其工作量小、波及范围广的特点,已经成为最主要的木马传播途径。从各大网站的漏洞列表就可以看出,基于浏览器及其第三方插件的溢出漏洞已成为当前漏洞挖掘领域的主要研究方向。而纵观当前网络安全市场,还没有一款比较成功的专门处理网页木马的安全工具,因此,我们开发了NetDefender网页恶意代码防御系统,为用户的安全上网提供一份保障。 2.关键技术 本系统由进程监控程序和HTML插件构成,两部分之间形成互补。 进程监控主要运用了inline Hook技术。通过挂钩CreateProcessInternalW函数实现对新进程创建的监控。使用inline Hook可以实现挂钩指定进程的CreateProcessInternalW函数,从而避免了对全局进程创建的拦截,避免了频繁的提示给用户造成的干扰。 HTML代码过滤插件主要应用了微软的可插入协议扩展(Asynchronous Pluggable Protocols)技术,通过在系统中注册一个“text/html”类型的MIME Filter来实现对HTML代码的全文过滤。 两部分的具体实现过程可参见“系统设计”的相关内容。 3.系统设计 3.1进程监控部分 3.1.1 网页木马执行原理分析 网页木马从触发方式上可分两类,一类基于缓冲区溢出漏洞,另一类基于系统设计上的一些缺陷。前者又主要包括IE自身的溢出漏洞(如MS07004矢量标记语言缓冲区溢出漏洞等)和浏览器第三方插件的溢出漏洞(如迅雷ActiveX控件远程代码执行漏洞等)。这类漏洞利用缓冲区溢出执行一段具有攻击性的代码(shellcode),从而获得系统的控制权。在实际情况下,受溢出空间大小的限制,shellcode一般不可能实现太多的功能,因此几乎所有的网页木马都选择了具有“下载并执行”(Download and Execute)功能的shellcode,通过下载一个功能更为强大的木马来实现对系统的控制。此类网页木马的执行过程总结如下: 而基于系统设计缺陷的网页木马相对少见,比较有代表性的有近期被公布的Microsoft Access快照查看器ActiveX控件任意文件下载漏洞(MS08-041),此类漏洞并不触发缓冲区溢出,而是利用相关函数对参数过滤不严,通过提交特殊参数,达到下载执行木马的目的。这类网页木马执行过程为: 从对上述两种木马启动的分析中可以看出,二者都有一个下载和执行程序的过程。而由进程创建原理可知,新建进程的父进程都是浏览器。基于这点,如果能够对浏览器创建进程的动作进行监视,便可在木马执行初期进行干预,达到阻止有害程序运行的目的。 3.1.2 Windows系统下进程创建的一般流程如下: 由图示可见,无论显式使用哪个函数创建进程,最终都要调用CreateProcessInternalW函数,那么可以HOOK此函数,在其调用时通过分析参数判断正在创建的进程是否存在威胁,从而采取相应的处理方式。 在实际操作中,本文选择了Inline Hook方式,修改CreateProcessInternalW函数前10个字节,使函数执行时先跳转到自定义的函数之中,将创建中的进程的完整路径传递给主程序,通过用户的选择决定是继续创建进程还是终止。 程序中定义了SetHook函数安装Hook函数,其原形如下: int SetHook(DWORD dwPid, LPCTSTR lpApiName, LPCTSTR lpExportDllName, LPVOID lpHookFunAddr); 其中dwPid为被监视进程的PID,lpApiName为被HOOK函数的名称,lpExportDllName为被HOOK函数所在DLL的文件名,lpHookFunAddr为插入的自定义函数的地址。如果要挂钩IE中的CreateProcessInternalW函数则只需调用SetHook(IEPID, "CreateProcessInternalW", "kernel32.dll", &HookApi)。 在自定义函数HookApi中要进行堆栈维护和与主程序通信的工作。HookApi通过命名管道与主程序通信,依据主程序中用户选择的结果或与黑/白名单比对的结果来决定继续或终止进程的创建。 3.2 HTML过滤插件 3.2.1 网页挂马原理分析 进程

文档评论(0)

ranfand + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档