• UAC绕过初探


    本文作者:sssvvf,来自FreeBuf.COM

    笔者最近在学习UAC绕过的技术,通过对其他师傅的文章进行总结,成功利用DLL劫持绕过了UAC,并且可以以High Mandatory Level来启动进程。在此记录下学习过程,笔者也是初次接触,若各位师傅发现文章中的错误,望各位师傅斧正。

    一、基础知识简述

    UAC:

    用户帐户控制(User Account Control,简写作UA C)是微软公司在其Windows Vista及更高版本操作系统中采用的一种控制机制,保护系统进行不必要的更改,提升操作系统的稳定性和安全性。

    管理员一般以较小的权限去运行管理员任务,低权限的管理员被称为被保护的管理员,这些管理员在执行管理员任务时,可以通过用户交互界面来提升权限去执行任务。

    普通用户执行管理员任务时会被要求提升到管理员权限,再去执行任务

    DLL文件:动态链接库文件,多数可执行文件并不是一个完整的文件,它被分为多个DLL文件,大多数EXE程序执行的时候均会调用DLL文件。

    当程序运行时调用DLL文件的过程:

    1.程序所在目录

    2.系统目录即 SYSTEM32 目录

    3.16位系统目录即 SYSTEM 目录

    4.Windows目录

    5.加载 DLL 时所在的当前目录

    6.PATH环境变量中列出的目录

    可执行程序在调用DLL文件的过程中会在高优先级目录中查找(首先查找程序所在目录),当无法找到时会依次在较低优先级的目录中查找,当程序在高优先级的目录中找到所需的DLL文件后,则不会在低优先级的目录中查找。

    可执行程序的提权执行:

    一些可执行文件在执行时会自动提权运行,而且不会触发UAC机制。这些应用程序清单中都有<autoElevate>元素。

    如何查看可执行文件清单中是否有<autoElevate>元素:

    1、findstr/C:”<autoElevate>true” xxx.exe

    2、使用sigcheck(微软数字签名工具)

    附上工具链接:

    https://docs.microsoft.com/zh-cn/sysinternals/downloads/sigcheck

    这里使用一种可自动提权运行的可执行文件,且其调用dll的目录可以被写入恶意的dll文件,从而进行dll劫持:

    C:WindowsSysWOW64SystemPropertiesAdvanced.exe

    二、通过DLL劫持成功绕过UAC机制

    这里使用的是C:WindowsSysWOW64SystemPropertiesAdvanced.exe文件,进行dll劫持从而绕过UAC机制

    1、首先查看文件清单是否有<autoElevate>元素,可以默认提权执行

    2、通过process monitor工具来查看SystemPropertiesAdvanced.exe执行时调用dll文件的过程

    添加过滤器方便查找dll的调用过程:

    Windowsapps目录是win10应用商店的缓存/下载应用程序的目录,允许用户对其进行写操作,可以通过构造恶意的DLL文件并将其放入,进行DLL劫持并绕过UAC机制

    3、通过msfvenom构造payloads,将构造好的srrstr.dll放入到windowssapps目录下,通过构造的CMD.exe来绕过UAC

    4、再次运行SystemPropertiesAdvanced.exe,查看DLL劫持效果,发现成功绕过UAC机制(备注:这里在运行时没有进行二次调用,无法正常运行原来的程序,可能会影响被劫持程序的稳定性,这里的恶意DLL仅仅弹出CMD,就算被劫持的程序崩掉,CMD已经成功弹出,对实验结果影响不大),新的CMD不会触发UAC提示可以用regedit命令进行测试:

    可以看到,此时的cmd.exe具有高完整性级别:

    除此以外还可以通过同样的方式由DLL劫持来创建会话,效果如下:

    参考资料链接:

    https://egre55.github.io/system-properties-uac-bypass/

    https://blog.csdn.net/vlily/article/details/47338327

    https://payloads.online/archivers/2018-06-09/1#0×02-%E5%AF%BB%E6%89%BE%E8%BF%87%E7%A8%8B

    https://docs.microsoft.com/zh-cn/windows/win32/uxguide/winenv-uac

  • 相关阅读:
    【译】用 Rust 实现 csv 解析-part3
    【译】用 Rust 实现 csv 解析-part2
    【译】用 Rust 实现 csv 解析-part1
    【译】Rust 中的 char 和 Go 中的 rune 有什么区别?
    【译】TCP/IP 网络编程基础系列-数值编码
    【译】我最喜欢的 Rust 函数签名
    Rust 学习之运算符重载
    java.util.ConcurrentModificationException: null 问题分析解决
    2020年
    科目三夜间灯光模拟
  • 原文地址:https://www.cnblogs.com/0daybug/p/11719541.html
Copyright © 2020-2023  润新知