Monitor WMIExportsToC++Use DiskCleanup bypass UAC
链接:https://zhuanlan.zhihu.com/p/23473665
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
About:
Use odbcconf to load dll
Use powershell to get dll exports
Use Event Tracing for Windows to log keystrokes from USB keyboards
目录:
1. 介绍为什么通过odbcconf加载dll可以绕过在命令行下对regsvr32的拦截
2. 比ExportsToC++更方便的批量输出dll导出函数的工具——ExportsToC++
3. 通过ETW实现对USB键盘的键盘记录,记录测试心得
01 Use odbcconf to load dll
简介
如图,Casey Smith在twitter分享的一个技巧,如果将执行regsvr32加载dll的代码写在.rsp文件中,再通过odbcconf.exe去调用,这样可以绕过在命令行下对regsvr32的拦截。本文将要 介绍为什么可以绕过在命令行下对regsvr32的拦截。
odbcconf:
用于配置ODBC驱动和数据源
详细说明见如下链接: https://msdn.microsoft.com/enus/library/ee388579(v=vs.85).aspx
用法如图
值得注意的是odbcconf包含一个注册dll的功能,我在之前的文章《Code Execution of Regsvr32.exe》中具体介绍过如何开发可被regsvr32调用的dll,编写一个测试dll进行测试 (此处略,不再重复介绍)。
cmd下运行:
odbcconf.exe /a {regsvr c:\test\odbcconf.dll}
如图,成功调用dll,弹出对话框
站在防御者的角度,为了防止利用regsvr32调用dll的方法被滥用,常常会选择监控命令行的 输入(如通过EMET创建规则),只要发现命令行中包括regsvr的字符就会对其拦截
当然,上述操作包含了字符regsvr,将会被拦截
使用Process Explorer查看odbcconf进程的命令行,包含字符 regsvr
但是,使用odbcconf的另一个功能却可以绕过,那就是/F参数
用法:
odbcconf.exe /f my.rsp
my.rsp为响应文件,里面包含执行的操作:
REGSVR c:\test\odbcconf.dll
注: 这里需要填入dll的绝对路径
如图,成功调用dll,弹出对话框
使用Process Explorer再次查看命令行,不包含字符regsvr
NickTyrer根据这个方法分享了他的代码,实现了在dll中运行powershell命令,地址如下:
https://gist.github.com/NickTyrer/6ef02ce3fd623483137b45f65017352b
编译工程之前,需要如下设置:
1. 设置编译平台为x86或者x64
2. 安装UnmanagedExports和System.Management.Automation
在Visual Studio控制面板选择TOOLSLibrary Package ManagerPackage Manager Console,输入:
InstallPackage UnmanagedExports
InstallPackage System.Management.Automation
02 Use powershell to get dll exports
简介
在《StudyNotesWeeklyNo.1(MonitorWMIExportsToC++UseDiskCleanupbypass UAC)》介绍过一款批量输出dll 导出函数的工具——ExportsToC++ ,运行的前提是需要.NET Framework 2.0和安装 Microsoft Visual Studio
b33f@FuzzySecurity对此作了改进,开源了powershell下的GetExports,特点是不再需要 Microsoft Visual Studio的开发环境,更简便快捷,同时支持32位和64位的dll
测试代码如下:
Get-Exports -DllPath c:\Windows\system32\dimsjob.dll -ExportsToCpp
C:\test\export.txt
运行后如图,显示导出函数信息
同时生成可供使用的c++代码并保存在C:\test\export.txt下,如图
03 Use Event Tracing for Windows to Log Keystrokes from USB Keyboards
简介
CyberPoint SRT在Ruxcon介绍了他们对ETW的新用法,实现了对USB键盘的键盘记录,并且公布了一个测试POC,本文将对其进行测试,分析测试心得。
ETW:
1. 是Event Tracing for Windows的缩写
2. 提供了一种对用户层应用程序和内核层驱动创建的事件对象的跟踪记录机制
3. 通常用于协助管理员和开发人员解决和测量系统和应用程序的性能
4. 公开资料显示尚未有利用ETW实现键盘记录的方法
介绍ETW的一些学习资料: https://randomascii.wordpress.com/2015/09/24/etwcentral/
POC下载地址: Ruxcon2016ETW/KeyloggerPOC at master · CyberPoint/Ruxcon2016ETW · GitHub
注:该POC已经被杀毒软件查杀,测试需要放行
要求:
1. Windows 7 (USB 2.0)
2. Windows 8+(USB 2.0 and USB 3.0)
3. 管理员权限运行
注: 不支持PS/2接口的键盘
测试环境:
1. Win8.1 x86
2. vs2013
3. 安装.NET Framework .net 4.5.2
4. InstallPackage Microsoft.Diagnostics.Tracing.TraceEvent
5. USB 2.0的键盘
管理员权限运行exe,记录测试如图
POC最大的不足:
1.记录存在延迟
2.不稳定,常常报错[!] ignoring nonusb keyboard device: 0xFFFFFFFF8CFF6070
从POC到工具还有很长的的一段路要走,但这个思路值得学习,ETW的利用方法值得总结, 期待CyberPoint SRT的后续文章
Monitor WMIExportsToC++Use DiskCleanup bypass UAC的更多相关文章
- Windows Bypass UAC
Windows 10 sdclt UAC bypass @echo off reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\A ...
- 通过调用Windows本地RPC服务器bypass UAC
备战一个月比赛,导致近期都没啥时间更新博客,正好今天看到一篇通过调用本地RPC服务的文章,觉得非常有意思,就拿来充充博客. 在1.0版本的APPINFO.DLL中的RPC服务调用接口ID为:201ef ...
- UAC 实现原理及绕过方法-打洞专用
首页 新随笔 订阅 管理 随笔 - 7 文章 - 0 评论 - 0 UAC 实现原理及绕过方法 目录 0x01 UAC 实现方法(用户登陆过程)0x02 UAC 架构0x03 触发UAC0x0 ...
- UAC 实现原理及绕过方法
目录 0x00 UAC 工作流程 0x01 UAC 实现方法(用户登陆过程) 0x02 UAC 架构 0x03 触发UAC 0x04 UAC 虚拟化 0x05 UAC 逆向分析 1x00 UAC By ...
- Kali Linux additional tools setup
The steps are pretty straight forward. The only tool that might cause some confusion is SMBexec. Thi ...
- Metasploit 笔记
目录一.名词解释···································································· 3二.msf基础··············· ...
- metasploit 常用命令备忘
metasploit 常用命令备忘 MSFconsole Commands-------------------------------------24show exploits 查看所有exp ...
- metasploit渗透测试指南概要整理
一.名词解释 exploit 测试者利用它来攻击一个系统,程序,或服务,以获得开发者意料之外的结果.常见的 有内存溢出,网站程序漏洞利用,配置错误exploit. payload 我们想让被攻击系统执 ...
- Kali-linux破解LM Hashes密码
LM(LAN Manager)Hash是Windows操作系统最早使用的密码哈希算法之一.在Windows 2000.XP.Vista和Windows 7中使用了更先进的NTLMv2之前,这是唯一可用 ...
随机推荐
- Netty源码分析第1章(Netty启动流程)---->第4节: 注册多路复用
Netty源码分析第一章:Netty启动流程 第四节:注册多路复用 回顾下以上的小节, 我们知道了channel的的创建和初始化过程, 那么channel是如何注册到selector中的呢?我们继 ...
- github在版本库中删除某个文件的所有历史记录
github的目的就是版本控制,记录每一个版本的变动.然而有的时候我们往往希望从版本库中彻底删除某个文件,不再显示在历史记录中.例如不小心上传了一堆错误的文件,或者不小心上传了帐号.密码,那么这个时候 ...
- 从零开始的Python学习Episode 21——socket基础
socket基础 网络通信要素: A:IP地址 (1) 用来标识网络上一台独立的主机 (2) IP地址 = 网络地址 + 主机地址(网络号:用于识别主机所在的网络/网段.主机号:用于识别该网络中的 ...
- MySQL基础练习(三)
经过之前两次的学习,这次用MySQL进行略微复杂的操作练习 各部门工资最高的员工 首先创建表employee和表department.如下 我们需要查询每个部门工资最高的员工 select a.Nam ...
- nodejs 中 module.exports 和 exports 的区别
1. module应该是require方法中,上下文中的对象 2. exports对象应该是上下文中引用module.exports的新对象 3. exports.a = xxx 会将修改更新到mod ...
- webpack入门指南-step02
webpack 安装 1)安装前的准备:webpack是基于node环境的项目,所以使用前必须先安装node和npm. 在安装 Webpack 前,你本地环境需要支持 node.js.如果电脑没有装过 ...
- 【欢迎来怼】 Beta发布事后诸葛亮会议
队名:欢迎来怼 项目名称:博客园Android端APP 小组成员队长:田继平成员:李圆圆,葛美义,王伟东,姜珊,邵朔,阚博文 ————————————————————————————————————— ...
- Daily Scrumming* 2015.10.30(Day 11)
一.总体情况总结 今日项目总结: 1.前后端同一了API设计以及API权限认证.用户状态保存的开发方案 2.API以及后端模型已经开始开发,前端UEditor开始学习,本周任务有良好的起步 3.前后端 ...
- “吃神么,买神么”的第一个Sprint计划(第二天)
“吃神么,买神么”项目Sprint计划 ——5.22(第二天)立会内容与进度 团队组员各自任务: 冯美欣:logo的设计.搜索框的制作,"登陆/注册"的文字链接: 吴舒婷:导航条. ...
- python learning2.py
L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] # 取前3个元素的笨方法 r = [] n = 3 for i in range(n): r.appe ...