• 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驱动和数据源
    详细说明见如下链接: ­us/library/ee388579(v=vs.85).aspx

    用法如图


    值得注意的是odbcconf包含一个注册dll的功能,我在之前的文章《Code Execution of Regsvr32.exe》中具体介绍过如何开发可被regsvr32调用的dll,编写一个测试dll进行测试 (此处略,不再重复介绍)。


    cmd下运行:

    odbcconf.exe /a {regsvr c:	estodbcconf.dll}
    

    如图,成功调用dll,弹出对话框


    站在防御者的角度,为了防止利用regsvr32调用dll的方法被滥用,常常会选择监控命令行的 输入(如通过EMET创建规则),只要发现命令行中包括regsvr的字符就会对其拦截


    当然,上述操作包含了字符regsvr,将会被拦截

    使用Process Explorer查看odbcconf进程的命令行,包含字符 regsvr


    但是,使用odbcconf的另一个功能却可以绕过,那就是/F参数

    用法:

    odbcconf.exe /f my.rsp
    

    my.rsp为响应文件,里面包含执行的操作:

    REGSVR c:	estodbcconf.dll
    

    注: 这里需要填入dll的绝对路径

    如图,成功调用dll,弹出对话框


    使用Process Explorer再次查看命令行,不包含字符regsvr


    NickTyrer根据这个方法分享了他的代码,实现了在dll中运行powershell命令,地址如下:

    编译工程之前,需要如下设置:

    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:Windowssystem32dimsjob.dll -ExportsToCpp
    C:	estexport.txt
    

    运行后如图,显示导出函数信息


    同时生成可供使用的c++代码并保存在C: estexport.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的一些学习资料: ­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的后续文章

  • 相关阅读:
    Swing程序最佳架构设计—以业务对象为中心的MVC模式(转)
    股市投资策略总结(转)
    php学习笔记--高级教程--读取文件、创建文件、写入文件
    史上最简单的Hibernate入门简单介绍
    Java中StringBuilder的清空方法比較
    DHCP Option 60 的理解
    ICMP报文分析
    软件測试自学指南---从入门到精通
    Qt多线程学习:创建多线程
    Bulk Insert命令具体
  • 原文地址:https://www.cnblogs.com/backlion/p/6408299.html
Copyright © 2020-2023  润新知