作者:嘶吼吼
链接: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. Hadoop初步简介

    Hadoop产生背景: 传统方式,我们使用数据库来对数据进行管理.可是随着数据量的增加,我们要对这个数据库中的海量数据进行处理, 从中提取出有效的信息,这时候面临的问题随之而来: 1.海量数据读取,采 ...

  2. eclipse检出SVN代码的详细流程

    1.添加SVN资源库位置(未安装SVN,请先安装SVN) 2.因为该项目不是maven项目 所以还需要加入jar包(将项目lib里面的jar都Buile Path) 3.我这个项目需要修改编码格式 右 ...

  3. IEEE1588 verision 2 报文介绍

    PTP 报文 PTP verision 2 报文是由 报头 / header,主体 / body 和 报尾 / suffix 组成,报尾长度可能为 0 ; PTP verision 2 报文在 ver ...

  4. Windows下LimeSDR Mini使用说明

    本文内容.开发板及配件仅限用于学校或科研院所开展科研实验! 淘宝店铺名称:开源SDR实验室 LimeSDR链接:https://item.taobao.com/item.htm?spm=a230r.1 ...

  5. Streamr助你掌控自己的数据(3)——教你在Streamr市场上发布数据

    博客说明 所有刊发内容均可转载但是需要注明出处. 教你在Streamr市场上发布数据 本系列文档主要介绍怎么通过Streamr管理自己的DATA,整个系列包括三篇教程文档,分别是:教你5分钟上传数据至 ...

  6. 查看、生成 SSH 密钥用于安全登陆

    SSH 可以用来登陆服务器,远程执行命令,并用强加密算法编码保护通信安全,目前广泛应用于远程命令控制.文件加密传输等方面.SSH 登陆服务器的方法一般有两种:密码登陆和密钥登陆. 在受信任的设备上使用 ...

  7. ubuntu下修改nginx的进程数

    1. 进入nginx配置文件:vim /etc/nginx/nginx.conf2. 将events下的worker_processes 修改为 你希望的数字,保存文件并退出3. 重启nginx: s ...

  8. 利用原生Javascript实现计算器(未完待续)

    这里,将记录我升级四则运算v1.2的整个过程. 环境检测,杨说检测环境也是可以高兴到手舞足蹈的一件事. 为了实现自动化,Testing,查阅相关资料,我这里使用了node(这里为了npm).yoema ...

  9. 必应词典手机版(IOS版)与有道词典(IOS版)之问卷分析

    我们制定了一个调查问卷: 1.年龄分布: 2.地域分布: 3.是否用过必应词典? 对于必应词典还是没用过的人数更多. 4.是否用过有道词典? 有道词典的使用率更高一点. 5.对于必应的基本功能给几分? ...

  10. web05-CounterServlet

    电影网站:www.aikan66.com 项目网站:www.aikan66.com 游戏网站:www.aikan66.com 图片网站:www.aikan66.com 书籍网站:www.aikan66 ...