CVE漏洞中文网

0DayBank一个专门收集整理全球互联网漏洞的公开发布网站
  1. 首页
  2. 百科
  3. 正文

bypass功能

2017年5月23日 766点热度 0人点赞 0条评论

bypass功能

  • 首页
  • 分类阅读
  • 文库
  • 专栏
  • 公开课
  • 商城
  • 漏洞盒子
注册 | 登录
投稿

Bypass UAC的一个实例分析

zzz666862016-09-03共167191人围观 ,发现 11 个不明物体系统安全

* 本文原创作者:zzz66686,本文属FreeBuf原创奖励计划,未经许可禁止转载

1. 引言

关于Bypass UAC这个主题,早已有了很多很成熟的方法,但普遍是以demo的形式出现,让大家参考学习的。在本文中,笔者拿出一个运用bypassUAC技术的病毒实例Cerber进行分析,通过逆向分析该实例让各位读者能够对bypass UAC的完整执行过程有一个正确的认识。

Cerber是一款著名的勒索软件,如果对勒索软件有过一些研究,那一定听说过这款勒索软件。此外,本文可以作为www.freebuf.com/sectool/95661.html 的补充,该文只提到了一个工具的使用,而本文则深入讨论了Cerber中用到的Bypass UAC的技术细节。

2. 整体概述

Cerber勒索软件有多种运行模式,在启动时传递不同参数会进入不同的模式,但本文并不对Cerber勒索软件本身进行分析。如果启动默认模式,即以无命令行参数启动Cerber勒索软件,那么其执行流程是这样子的:

QQ截图20160824165309.png

其中,dropper是拿到的样本;launcher隐藏在dropper内的另一个执行体,dropper会在内存中直接加载launcher。此后,launcher会检测当前执行体的所在路径,若不在其指定位置,则将其复制到指定位置即%APPDATA%\Roaming,然后重新加载运行自身;若已在其指定位置,则进行bypass UAC以管理员权限重新加载自身。最后,样本会开始其恶意行为,如加密用户文件等。

至于UAC的严格定义,可以参考msdn。这里仅仅摘抄下度娘:用户帐户控制(User Account Control, UAC)是Windows Vista的一个重要的新增安全功能。它可以防止恶意软件获取特权,就算用户是以管理员帐户登录也可以起到保护作用。简言之,可以把UAC理解为下图内容:

image002.png

本文的研究内容即为Cerber是如何静默地过掉该提示,并以管理员身份运行自身。也就是研究第一幅图中的Bypass UAC的环节。

3. 详细分析

受限于篇幅原因,本文就不介绍bypass UAC之前的内容。按照第二章整体概述的说明,应该可以很快的找到bypass UAC的起始位置,这里直接开始分析其bypass UAC的过程。首先,在%SystemRoot%\system32目录下寻找一个Windows白名单程序。这里所谓的Windows白名单程序特指有UAC权限且不触发UAC对话框的系统程序:

image003.png

其查找过程是通过FindFirstFile实现的,获取文件之后取其后缀名,与.exe比较

image004.png

在笔者的调试环境中,最终会找到AdapterTroubleshooter.exe这个可执行文件:

image005.png

第二步,获取AdapterTroubleshooter.exe的manifest资源文件,方法如下:

image006.png

进而在获取的manifest中查找是否有autoElevate标签,并判断其标签内容是否为true;然后查找是否有requestedExecutionLevel标签,判断其标签的level属性是否为requireAdministrator。

image007.pngimage008.png

样本找到的AdapterTroubleshooter.exe显然满足以上条件,顺利进入下一步。如果不满足会继续第一步的查找过程,找到一个新的可执行程序。

第三步,遍历AdapterTroubleshooter.exe的导入表,找到一个可以被劫持的dll。其判断是否可被劫持的方法是调用ZwOpenSection函数,判断其返回值是否成功。如果ZwOpenSection返回成功,则该dll不可作为劫持dll;反之,则可劫持。

image009.png

相关函数的作用以在上图中标出。下图展示了调用ZwOpenSection函数判断是否可以劫持的逻辑流程。

image010.png

在笔者的测试机中,Cerber发现了d3d9.dll可以被劫持。

第四步,将d3d9.dll复制到临时的目录中,并在结尾处追加一个新的段,可以用PEiD查看:

image011.png

其追加内容如图所示:

image012.png

此外,d3d9.dll的入口点也被修改:

image013.png

由图可见,原入口点被挂钩,直接跳到新添加的段中执行,原有代码不会再执行。

第五步,创建并挂起explorer.exe,向该进程写入Cerber完整执行体,执行参数和小段shellcode,并通过hook原有代码的方式执行shellcode,shellcode调用Cerber执行体中的文件复制函数,并将参数传给该函数。

image014.png

在explorer中申请空间,然后3个WriteProcessMemory函数分别写入Cerber执行体,参数和shellcode:

image015.png

上图中的注释已经写明本次调用WriteProcessMemory写入的内容。

第六步,在explorer.exe进程中可以看到写入的shellcode内容:B8 00 10 30 00 50 B8 E1 55 2E 00 FF D0 C3,如下图:

image018.png

其中,0×301000是执行WriteProcesMemory之前确定的,其他的几个字节是固定的。

explorer.exe的作用就是通过IFileOperation的COM对象将d3d9.dll和AdapterTroubleshooter.exe复制到system32目录,并启动AdapterTroubleshooter.exe,使被劫持的d3d9.dll被加载。

image019.png

用COM对象进行复制操作的原因是为了避免因为复制文件到关键目录而弹出UAC提示。

第六步,在d3d9.dll的执行过程中,可以看到之前增加的段作用:通过d3d9.dll加载时的参数,获取d3d9.dll的基址,然后通过该基址查找新增加段的位置,最后调用WinExec函数。

image020.png

上图为获取d3d9.dll的基址。新增加段的前8个字节分别为WinExec和ExitProcess函数的地址,如下图:

image021.png

最后,调用WinExec并将字符串参数传入:

image022.png

注意,在此前的步骤中,Cerber已将自己重命名为PnPutil.exe,希望读者不要误会这个奇怪的名字。至此,Cerber就已经bypass UAC了。此后还有一些清理工作,如果读者有兴趣的话,可以继续分析,本文的分析就到此为止了。

4. 小结

本文展示了一种较为流行的bypass UAC方法,并以恶意软件Cerber为实例,逆向分析了其bypass UAC的每一步细节,该方法也确实有不错的实际效果。笔者忠心希望本文能给读者一点启发和帮助,但由于笔者知识有限,才疏学浅,文中不当或错误之处还请各位读者包容和指正。最后,还希望本文仅作为技术讨论,切勿用于非法目的。

* 本文原创作者:zzz66686,本文属FreeBuf原创奖励计划,未经许可禁止转载

zzz666864 篇文章等级: 3级
|
|
  • 上一篇:“百家”木马集团第二弹:冒领数字签名
  • 下一篇:从某云服务商溯源黑客老巢:实例讲解Botnet僵尸网络和DDoS
发表评论

已有 11 条评论

  • cwg2552298 (6级)Follow my own course 2016-09-03回复1楼

    受教了!这篇不错啊! :grin:

    亮了(0)
  • hundan 2016-09-03回复2楼

    想知道楼下这个链接授权了没
    http://www.evil0x.com/posts/30323.html

    亮了(1)
  • uac 2016-09-03回复3楼

    dll劫持方式的passuac 不是最好的,涉及注入和拷贝文件,卸载接口才是上上策

    亮了(2)
    • 奥巴牛哥 2016-09-06回复

      @ uac https://github.com/smb01/uac_bypass_uninstall

      亮了(0)
      • uac 2016-09-06回复

        @ 奥巴牛哥 卸载接口… 牛逼

        亮了(0)
      • 我是昵称 2016-09-19回复

        @ uac 这个是不是更简单 https://github.com/w1nds/ByPassUac

        亮了(0)
  • 狗哥 2016-09-06回复4楼

    https://github.com/smb01/uac_hijack_find

    亮了(1)
    • zzz66686 (3级) 2016-09-06回复

      @ 狗哥 干得漂亮!咱俩合伙可以写个新的Cerber了。

      亮了(0)
  • virk 2016-09-07回复5楼

    几位大牛,我公司严重缺乏反病毒人才,有机会咱聊聊跳槽guomingqiang825@126.com

    亮了(0)
    • 啥公司啥价位 2016-09-07回复

      @ virk 啥公司啥价位

      亮了(0)
  • 三十减三 (1级) 2016-09-18回复6楼

    "如果ZwOpenSection返回成功,则该dll不可作为劫持dll"
    求教下这个是为什么 :eek:

    亮了(0)

必须您当前尚未登录。登陆?注册

必须(保密)

表情插图

取消

zzz66686

这家伙太懒,还未填写个人描述!

4 篇文章1 条评论

相关阅读

  • ShadowBroker是这样放大招的:Windows零日利用工具更多数据呈现
  • 如何防止Mimikatz「获取」Windows密码
  • 没有外部工具,如何快速发现Windows中毒了
  • 个人情报收集系统浅谈
  • Windows用户帐户控制 (UAC) 的绕过与缓解方式

特别推荐

关注我们 分享每日精选文章

不容错过

  • 我与学校SafeConnect软件斗智斗勇的经历zasdfgbnm2017-02-06
  • 测一测才知道,百度安全软件是不是真流氓?dedogger2014-12-29
  • 360成功入侵特斯拉汽车,获特斯拉官方回复phper2014-07-19
  • 技术揭秘“QQ空间”自动转发不良信息渔村安全2015-08-22

FREEBUF

  • 免责声明
  • 关于我们
  • 加入我们

广告及服务

  • 寻求报道
  • 广告合作
  • 联系我们
  • 友情链接

关注我们

  • 官方微信
  • 新浪微博
  • 腾讯微博
  • Twitter

赞助商

Copyright © 2013 WWW.FREEBUF.COM All Rights Reserved 沪ICP备13033796号

css.php

正在加载中...

0daybank

标签: 暂无
最后更新:2017年5月23日

小助手

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

COPYRIGHT © 2024 www.pdr.cn CVE漏洞中文网. ALL RIGHTS RESERVED.

鲁ICP备2022031030号

联系邮箱:wpbgssyubnmsxxxkkk@proton.me