跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

渗透测试中的应用兼容性垫片


KaiWn

推荐的帖子

0x00 前言

应用程序兼容性是一个框架,主要用来解决应用程序在新版Windows操作系统操作系统系统上的兼容性问题。然而在渗透测试中它却有着更多的用处,本文将对公开资料进行整理,介绍在渗透测试中的具体利用技术,帮助大家更好的认识它,防御它。

0x01 简介

Shim:

相当于是在应用程序和Windows API之间的逻辑层。

当应用程序创建进程的时候,WindowsLoader首先会检查sysmain.sdb(位于%windir%\AppPatch\),如果存在已注册的sdb文件,IAT将被重定向到垫片,实现功能替换。

本文将介绍以下内容:

创建夹铁文件

实际利用方法

相关开源工具

检测和防御

0x02 创建Shim文件

1.Microsoft Application Compatibility Toolkit(ACT)

下载地址:

https://www.microsoft.com/en-us/download/details.aspx?id=7352

默认修复方式种类个数为365

0-1.png

启动时加入/x参数可获得更多修复方式,总数807

如图

0-2.png

根据提示创建后生成100 . sdb文件,需要安装使其生效

可在微软应用程序兼容性工具包中直接选择安装,如图

1-1.png

0x03 实际利用方法

1.Hiding in the Registry

选择虚拟注册表

命令行填入:

addredirect(hklm\software\microsoft\windows\currentversion\run^hklm\software\microsoft\windows\currentversion\runhidden)

安装夹铁

启动打开注册表

HKLM软件\微软\ Windows \当前版本\运行下键值无法查看,如图

0-3.png

但在煤矿管理局下执行如下命令可以查看:

注册查询HKLM软件\微软\ Windows \当前版本\运行

如图

0-4.png

2.Hiding in the File System

选择更正文件路径

命令行填入:

c:\ test \;丙:\用户

模块名填入*.exe,点击增加

安装夹铁

启动cmd.exe,无法查看c:\test下的文件

如图

0-5.png

注:

类似的还有虚拟删除文件和重定向快捷方式

3.Persistence

可供选择的固定有:

InjectDll

LoadLibraryRedirect重定向重定向

重定向快捷方式

重定向

ShimViaEAT

LoadLibraryfromCWD

劫持动态链接库

4.Disable Security Features of the OS

可供选择的固定有:

禁用(同nonexpendable)非消耗品

禁用ASLR

残疾e

防止加载动态链接库

禁用Windows操作系统资源保护

提升为管理员

禁用窗子防御程序

DisableAdvancedRPCClientHardening

注:

以上思路参考自:

http://www.irongeek.com/i.php?page=videos/derbycon 3/4206-windows-0wn3d-default-mark-bag gett

http://sdb.tools/files/paper.pdf

0x04 安装和卸载Shim

1.sdbinst.exe

用来安装和卸载100 . sdb文件

微软官方提供,默认位于c:\windows\system32下,运行需要管理员权限

usage:

-?-打印此帮助文本。

-p -允许包含修补程序的深发展.

安静模式:自动接受提示。

-你-卸载。

-g {guid} -文件的guid(仅用于卸载)。

-n '名称'-文件的内部名称(仅用于卸载)。

卸载:

sdbinst.exe-联合国"名称"

安装过程中sdbinst.exe做了如下操作:

在如下注册表位置创建键值保存夹铁信息:

HKLM软件\ Microsoft \ Windows NT \当前版本\ AppCompatFlags \ Custom

HKLM软件\微软\ Windows NT \当前版本\ AppCompatFlags \ installed sdb

将sdb文件复制到如下文件路径:

C:\Windows\AppPatch\Custom\

c:\ Windows \ app patch \ Custom \ Custom 64 \

添加到已安装的应用程序列表中

依次打开控制面板-程序-程序和功能-卸载程序,可看到安装的夹铁名称

2.sdb-explorer

下载地址:

https://github.com/evil-e/sdb-explorer

同样可用来安装100 . sdb文件,相比于sdbinst.exe多了如下特征:

源代码开源

支持内存补丁

安装过程不将sdb文件复制到C:\Windows\AppPatch\Custom\下

安装过程不在已安装的应用程序列表中显示安装的夹铁名称

usage:

打印完整的sdb树

sdb-explorer.exe-t文件名。sdb

打印补丁详细信息

sdb-explorer.exe[-I]-p文件名。深发展(补丁|补丁id |补丁引用|补丁宾)

-我.创建IDAPython脚本(可选)

打印校验和的补丁程序详细信息

sdb-explorer.exe[-I]-s文件名。sdb

创建包含泄漏内存的文件

sdb-explorer.exe-l文件名。sdb

打印匹配条目

sdb-explorer.exe-d文件名。sdb

从文件创建补丁

sdb-explorer.exe-C配置。dat[-o文件名。sdb]

注册sdb文件

sdb-explorer.exe-r文件名。application.exe

显示方式

sdb-explorer.exeh

演示如图

1-2.png

执行以下命令注册sdb文件:

SD b-explorer . exe-r C:\ Users \ a \ Desktop \ test1。SD B- a putty.exe

注:

[构成动植物的古名或拉丁化的现代名]的参数指定程序的名称,不能填入程序的绝对路径

通过sdb-explorer.exe注册的sdb文件无法通过sdbinst.exe来删除,会显示sbd文件不存在,如图

1-3.png

卸载可通过删除注册表键值的方式实现

注:

通过sdb-explorer可以创建一个内存补丁的垫片,接着编译成sdb文件,进而安装使用,关于内存补丁的学习心得将在以后分享

In-Memory patch:

可以替换或写入内存中的某个区域的任意字节

可用来绕过应用程序白名单

0x05 查看Shim信息

1.sdb2xml

从100 . sdb文件提取出可扩展标记语言格式的数据,可用来分析sdb文件

作者:

希斯斯图尔特

下载地址:

https://个博客。msdn。微软。com/heaths/2007/11/03/shim-database-to-XML/

usage:

sdb 2 XML sdb[-out report][-base64 |-extract][-?]

要处理的夹铁数据库的sdb路径。

-base64 Base-64编码可扩展标记语言报告中的数据。

-摘录将二进制数据提取到当前或报告目录。

-出去要生成的可扩展标记语言文件的报告路径;否则,输出到控制台。

如图,使用sdb2xml查看test1.sdb文件中的数据

2-1.png

2.Compatibility Database Dumper (CDD)

作者:

亚历克斯约内斯库

usage:

cdd.exe[-s][-e][-l][-f][-p][-d内核模式数据库文件][-a用户模式数据库文件]

构成名词复数显示垫片

-e显示可执行文件

-我展示层次

-f显示标志

-p显示补丁

-d从该路径使用被阻止的驱动程序数据库

-从该路径使用应用程序兼容性数据库

参考地址:

http://www.alex-ionescu.com/?p=40

但作者亚历克斯约内斯库目前尚未将其开源

3.Shim Database Tool (sdb)

作者:

约亨卡尔姆巴赫

下载地址:

http://博客。kalmbach-软件。de/2010/02/22/the-shim-database/

注:

该工具源代码开源

Usage:

sdb . exe[-noids][-match][pathtoshimdatabase][PathToFileName]

-噪音将阻止TagIds的输出

-匹配将提供的文件与安装的数据库匹配

并显示激活的垫片

在这种情况下,需要"路径文件名"

注意:如果没有提供夹铁数据库路径,

将使用默认数据库。

从100 . sdb文件提取出可扩展标记语言格式的数据,演示如图

2-2.png

显示指定程序是否被添加垫片,如图,找到putty.exe已被添加了一个Shim,guid为8f 9 da 6e 2-5A7C-41e 1-b 89 F8 b 72d 63巴德8

2-3.png

0x06 检测和防御

禁用Shim的方法:

英文系统:

打开gpedit.msc,选择管理模板-窗户组件-应用程序兼容性-关闭应用程序兼容性引擎

中文系统:

打开gpedit.msc,选择计算机配置-管理模板-窗户组件-应用程序兼容性-关闭应用程序兼容性引擎

但不建议关闭垫片,原因如下:

导致吐剂无法使用

无法更新补丁

检测和防御:

自动运行不会检测到夹铁

夹铁的安装需要管理员权限,注意权限控制

监控特定注册表键值

HKLM软件\ Microsoft \ Windows NT \当前版本\ AppCompatFlags \ Custom

HKLM软件\微软\ Windows NT \当前版本\ AppCompatFlags \ installed sdb

注意系统中未签名的sdb文件

使用检测脚本,如https://github.com/securesean/Shim-Process-Scanner和https://github.com/securesean/Shim-Process-Scanner-Lite

0x07 小结

本文对应用兼容性垫片在渗透测试中的相关技巧做了整理,希望对大家有所帮助。对于内存补丁,值得研究的还有很多,学习心得将在以后分享。

更多关于夹铁的研究资料可访问:

http://sdb.tools/index.html

本文参考链接:

http://黑太阳黑客。club/2016/08/后开发-持续应用-shims-intro/

https://www。黑帽子。com/docs/Asia-14/materials/Erickson/Asia-14-Erickson-Persist-It-use-And-abuse-Microsoft-Fix-It-patches。可移植文档格式文件的扩展名(portable document format的缩写)

http://www.irongeek.com/i.php?page=videos/derbycon 3/4206-windows-0wn3d-default-mark-bag gett

http://sdb.io/erickson-codeblue.pdf

留下回复

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...