作者:嘶吼吼
链接: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/en­us/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控制面板选择TOOLS­Library Package Manager­Package Manager Console,输入:
Install­Package UnmanagedExports
Install­Package System.Management.Automation

02 Use powershell to get dll exports

简介

在《Study­Notes­Weekly­No.1(Monitor­WMI­ExportsToC++­Use­DiskCleanup­bypass­ UAC)》介绍过一款批量输出dll 导出函数的工具——ExportsToC++ ,运行的前提是需要.NET Framework 2.0和安装 Microsoft Visual Studio

b33f@FuzzySecurity对此作了改进,开源了powershell下的Get­Exports,特点是不再需要 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/etw­central/

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. Install­Package Microsoft.Diagnostics.Tracing.TraceEvent
5. USB 2.0的键盘

管理员权限运行exe,记录测试如图

POC最大的不足:

1.记录存在延迟
2.不稳定,常常报错[!] ignoring non­usb keyboard device: 0xFFFFFFFF8CFF6070

从POC到工具还有很长的的一段路要走,但这个思路值得学习,ETW的利用方法值得总结, 期待CyberPoint SRT的后续文章

Monitor WMIExportsToC++Use DiskCleanup bypass UAC的更多相关文章

  1. Windows Bypass UAC

    Windows 10 sdclt UAC bypass @echo off reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\A ...

  2. 通过调用Windows本地RPC服务器bypass UAC

    备战一个月比赛,导致近期都没啥时间更新博客,正好今天看到一篇通过调用本地RPC服务的文章,觉得非常有意思,就拿来充充博客. 在1.0版本的APPINFO.DLL中的RPC服务调用接口ID为:201ef ...

  3. UAC 实现原理及绕过方法-打洞专用

    首页 新随笔 订阅 管理 随笔 - 7  文章 - 0  评论 - 0 UAC 实现原理及绕过方法   目录 0x01 UAC 实现方法(用户登陆过程)0x02 UAC 架构0x03 触发UAC0x0 ...

  4. UAC 实现原理及绕过方法

    目录 0x00 UAC 工作流程 0x01 UAC 实现方法(用户登陆过程) 0x02 UAC 架构 0x03 触发UAC 0x04 UAC 虚拟化 0x05 UAC 逆向分析 1x00 UAC By ...

  5. Kali Linux additional tools setup

    The steps are pretty straight forward. The only tool that might cause some confusion is SMBexec. Thi ...

  6. Metasploit 笔记

    目录一.名词解释···································································· 3二.msf基础··············· ...

  7. metasploit 常用命令备忘

    metasploit 常用命令备忘    MSFconsole Commands-------------------------------------24show exploits 查看所有exp ...

  8. metasploit渗透测试指南概要整理

    一.名词解释 exploit 测试者利用它来攻击一个系统,程序,或服务,以获得开发者意料之外的结果.常见的 有内存溢出,网站程序漏洞利用,配置错误exploit. payload 我们想让被攻击系统执 ...

  9. Kali-linux破解LM Hashes密码

    LM(LAN Manager)Hash是Windows操作系统最早使用的密码哈希算法之一.在Windows 2000.XP.Vista和Windows 7中使用了更先进的NTLMv2之前,这是唯一可用 ...

随机推荐

  1. tomcat启动项目的时候不报错而且启动的很快

    最后发现是tomcat部署项目的时候,并没有将一部分文件复制到tomcat的目录下 方法 将没有添加的目录 Finish

  2. window搭建私有云,只要几分钟

    本文介绍如何在window搭建私有云网盘. 工具/原料:一台window系统电脑或者window服务器(vps),Xampp 安装包,可道云kodexplorer安装包 第一步,xampp安装 1.官 ...

  3. [转载]java面试中经常会被问到的一些算法的问题

    Java面试中经常会被问到的一些算法的问题,而大部分算法的理论及思想,我们曾经都能倒背如流,并且也能用开发语言来实现过, 可是很多由于可能在项目开发中应用的比较少,久而久之就很容易被忘记了,在此我分享 ...

  4. spring-boot+swagger实现WebApi文档

    1.引用依赖包 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-s ...

  5. vi/vim命令详解

    基础命令学习目录首页 原文链接:https://www.cnblogs.com/mondol/p/vi-examples.html 进入vi vi filename # 打开或新建文件,并将光标置于第 ...

  6. 网页调起App之应用实践

    声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场.举报 新春佳节即将到来,北京的上地&西二旗.望京&国贸.五道口&中关村地区等程序员 ...

  7. 20162327WJH第一次实验——线性结构

    20162327WJH第一次实验--线性结构 实 验 报 告 实 验 报 告 课程:程序设计与数据结构 班级: 1623 姓名: 王旌含 学号:20162327 成绩: 2分 指导教师:娄嘉鹏 王志强 ...

  8. C++:构造函数3——浅拷贝和深拷贝

    一.默认拷贝构造函数 拷贝构造函数是一种特殊的构造函数(详情见:http://www.cnblogs.com/duwenxing/p/7429777.html),如果用户在定义类时没有显式地编写拷贝构 ...

  9. bata1

    目录 组员情况 组员1(组长):胡绪佩 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示组内最新成果 团 ...

  10. struts2.3.16.1+hibernate4.3.4+spring4.0.2

    把之前的老项目用新的改了 发现新的有点很方便啊 Struts2+Hibernate+Spring整合     用的是      struts2.3.16.1      hibernate4.3.4   ...