欢迎光临 Enjoy IT (ITECN.NET) 登录 | 注册 | 帮助

捉鬼记:深入 Norton UAC Tool 实现原理

张康宗(Smallfrogs)
http://www.KZTechs.com

刚刚看到 Asuka 的一篇文章《Norton UAC Tool原理剖析》,文章中已经很好的解释了Norton UAC是如何做到 Don't ask me again的,从开发的角度上看,这个要实现不是很难,但是我感兴趣的地方是: Norton 是如何把 Microsoft 的 Consent.EXE 给截获的,如果能够截获 Consent.EXE,就很容易实现 Norton 的功能了。

下面就让我带领大家深入这个工具的实现细节吧:

  1. 下载安装过程很简单,不停的Next就可以了。

  2. 安装完成以后,我找了一个会启动 UAC 的软件试了试,果然出现了 Norton 的 UAC 提示框。Microsoft Windows Vista 的那个 UAC提示框不见了。当时很诧异!!

  3. 当 Norton UAC 提示框正在询问的时候,用 Process Explorer 看了看进程,惊讶发现 Process Explorer 进程列表里面显示的是 Symconsent.EXE,但是这个进程的相信信息里面 Image 指向的是 Windows Vista 的 Consent.EXE。惊讶~~!

      

    发现上述的内容,Smallfrogs 第一反应是想到碰到鬼了~
    但是根据 Smallfrogs 多年的经验分析,得出这个“鬼”一定是人为的。看来 Norton UAC Tool 这个东东有搞头,于是乎马上振作精神,开始进一步的分析。

  4. 启动 Process Monitor,开始检测进程的创建过程,果然,鬼情出现了:在触发 UAC 的时候,Consent.EXE 进程加载的时候,Consent.EXE 会执行一个 LoadImage 动作,但是发现 LoadImage 对象不是 system32\consent.exe,而是 system32\symconsent.exe,如下图:

     

    这是一个非常重要的现象,根据这个现象,Smallfrogs 当机立断,有东东做了 Hook。

  5. 使用 Image File Execution Options 技术,对 consent.exe 设置了调试器通知,确认在触发 UAC 的时候,系统的确调用了 consent.exe 进程,而且进一步发现,调试器模式下,挂接 consent.exe 进程以后,Norton UAC Tool 的提示框没有出现。

    Smallfrogs 当时想:这只鬼很神奇啊~~难道要逼迫 Smallfrogs 做复杂、烦琐的内核调试吗?Smallfrogs 环顾四周,周围只有一台用了2年的本本,看来又要伤机器了。

  6. 正在准备开启VMWare的时候,Smallfrogs 突然想起忘记看看安装程序做了什么事情了,于是乎对安装程序 NUACx86.exe 进行了一个简单的分析,发现不就是一个普通的EXE嘛,而且这个EXE不是 symconsent.exe,看来这个EXE 有隐藏的东东。在 Exescope 的帮助下,果然发现 NUACx86.exe 有附带几个资源二进制文件,解出来一看,哈哈,这只鬼终于现身了。

    Norton UAC Tool 安装了一个文件过滤驱动,叫做 SymAFR,当然,这个驱动通过了 Microsoft WHQL 认证(这只鬼做的还挺标准的),数字签名日期是 2008年2月29日 22:47:48。驱动的文件名叫做 SymAFR.sys。

    Norton UAC Tool 可能是这样实现的(有不对的地方请大家指正):

    1、当 UAC 触发的时候,Windows Vista 尝试加载 system32\constent.exe。

    2、SymAFR.sys 截获了这个操作,然后转而让系统加载 symconstent.exe。

    3、symconstent.exe 成功的代替了 Windows Vista 的 constent.exe 进程,后面的事情就简单了。

    4、验证方法很简单,执行 sc stop symafr 命令以后,再看看你还能够看到 Norton UAC Tool 的提示吗?呵呵。

Smallfrogs 评论:恩,这是一个非常巧妙的方法!实现简单,稳定,有效~

注意:Norton UAC Tool 是会把每一个触发 UAC 的程序的信息上报给 Norton 信息收集中心的。

 --------------------------------

20080916 Update:

1、原文写的是 IEFO 劫持技术为笔误,实为 IFEO,即 Image File Execution Options
2、Exescope 是一个查看资源文件的工具,类似的还有 Resource Hacker 等
3、细心的朋友会发现,我的第一副截图里面的参数和 Asuka 的截图的参数不一样,他的截图里面指向的是一个 XML文件,针对这个问题,我做了一些分析,发现:当Norton UAC Tool 出现的时候,如果点击 Cancel,会创建一个新的 Symconsent.exe进程,新的进程的参数就是 Asuka 发现内容。新创建的 Symconsent.exe 进程应该是用于上报数据用的。感觉Gdier的报告!!Smile

已发表 2008年9月15日 20:29 作者 smallfrogs

评论

# re: 捉鬼记:深入 Norton UAC Tool 实现原理

2008年9月15日 22:26 by hu2n

似乎看起来很有意识。

# re: 捉鬼记:深入 Norton UAC Tool 实现原理

2008年9月16日 8:40 by Asuka

支持一下smallfrog兄弟,看了你的雄文,真有醍醐灌顶的感觉啊

# re: 捉鬼记:深入 Norton UAC Tool 实现原理

2008年9月16日 12:17 by smileruner

Nice。

HOOK,IEFO劫持,Exescope.不了解。

# re: 捉鬼记:深入 Norton UAC Tool 实现原理

2008年9月16日 13:18 by smallfrogs

20080916 Update:

1、原文写的是 IEFO 劫持技术为笔误,实为 IFEO,即 Image File Execution Options

2、Exescope 是一个查看资源文件的工具,类似的还有 Resource Hacker 等

# re: 捉鬼记:深入 Norton UAC Tool 实现原理

2008年9月16日 14:17 by Gdier

Asuka和青蛙第一张截图上有差异,Asuka的截图中的Path,真的是Symconsent.EXE哦!

期待答案中

# re: 捉鬼记:深入 Norton UAC Tool 实现原理

2008年9月16日 14:25 by smallfrogs

细心的朋友会发现,我的第一副截图里面的参数和 Asuka 的截图的参数不一样,他的截图里面指向的是一个 XML文件,针对这个问题,我做了一些分析,发现:当Norton UAC Tool 出现的时候,如果点击 Cancel,会创建一个新的 Symconsent.exe进程,新的进程的参数就是 Asuka 发现内容。新创建的 Symconsent.exe 进程应该是用于上报数据用的。感觉Gdier的报告!!

# re: 捉鬼记:深入 Norton UAC Tool 实现原理

2008年9月19日 11:05 by wbpluto

很有意义,就是要有这种追根究底的精神!

该帖子已禁止评论