Windows 2000 系统资源管理器的一个漏洞

VSole2023-08-16 09:55:39

这似乎又是一个0 day漏洞,这个漏洞与pif文件有关,是我在研究pif文件的时候发现的。

实验环境

Microsoft Windows 2000 5.00.2195 Service Pack 4

用到的软件工具

010Editor

ollydbg

IDA pro

一
漏洞简述

首先,win 2000系统里存在一个文件_default.pif,它的结构如下:

我在这个文件的基础上添加了一个名为WINDOWS VMM 4.0的块,如下图:

把这个文件放在U盘根目录下,插入win 2000系统后,浏览U盘时,资源管理器崩溃闪退。

二
对崩溃的逆向跟踪,找到溢出点


我们可以确定的是,崩溃的出现是由于我们构造的pif文件里新的内容,而且应该出现在对文件内容的处理的过程中。

而根据pif文件的格式:

可以看到每个数据块都有一个名字,猜测在对这些数据块处理的代码里可能包含这些名字的字符串常量,也许可以由此定位到数据块处理相关代码。

于是在explorer.exe和其调用的动态链接库中搜索这些字符串,最终发现只有系统shell32.dll中存在这些字符串:

然后在ollydbg里追踪崩溃。

由于windows系统只允许存在一个explorer.exe进程实例,我们用ollydbg打开新的explorer.exe进程进行动态调试时,系统会自动关闭该进程,从而阻止了调试的继续进行。所以需要通过File ->Attach菜单项将系统当前的explorer.exe进程附加ollydbg中的方式进行调试。

在调用这些字符串常量的函数里下大量断点,通过函数执行后崩溃是否发生判断溢出点的大致位置:

最后跟踪到这个函数:

也就是函数sub_7909062B

整个跟踪过程如下:

动态分析函数sub_7909062B(上图中蓝色笔的部分),观察堆栈,发现在某次执行lstrcpyA后,堆栈里的返回地址和其它数据被覆盖。

执行lstrcpyA前后堆栈里的变化:

三
不太成功的漏洞利用


函数的返回地址被覆盖,在Windows 2000系统上的漏洞利用应该是毫无难度的简单劳动,但是这回的不太一样。

在sub_79057E1D函数开始的地方将this指针保存在堆栈里:

在堆栈被覆盖后的代码里又使用到this指针。

造成程序没有执行到函数返回指令的机会,所以按照常规方法通过返回地址得到程序执行权的方法在这里不适用。

但是this指针被覆盖也为我们提供了获得执行的机会,我们在溢出this指针的数据处设置为堆栈地址硬编码,在溢出数据中构造出索引虚函数地址的数据,可以概率性的实现计算器的启动。下面是我构造的pif文件:

程序执行到this指针索引到的虚函数调用时,数据区里包含了我们的shellcode,启动的程序路径,和用来索引虚函数的链表结构。如下图:

其中包含了我写的shellcode:

最终效果如下:

概率性成功的原因是,exploere.exe进程每次启动的其栈地址都是动态变化的,溢出发生时真实的堆栈可能没在我们提前设定的地址处。我这里测试平均每5次会有一次成功启动计算器,最终的频次体验应该和电脑有关。

进一步研究,发现程序运行到调用虚函数地址时的寄存器EAX,EBX,ESI的值是溢出数据的某个位置的地址,所以理想的做法应该是寻找一个与JMP EAX,JMP EBX,JMP ESI类似的指令,假如这个指令的地址为A,设this的值为x,[ ]表示在进程地址空间里寻址后取值;我们可以将被覆盖的this指针设定为满足下面的公式的值:

[[(x+4)]+0x1c] = A

显然,找到满足上式的x是不容易的,我做了尝试,但失败了。不知道有没有更好的技巧来利用这种漏洞。

四
Windows XP及其他版本系统里存在该漏洞吗

进一步的,我对Windows XP的shell32.dll进行了逆向分析,发现同样的位置与windows 2000的代码极为相似,但是它用安全的_StringCopyWorker函数代替了lstrcpy,如下图:

所以有理由相信,在后续的windows系统中微软已经发现了这个漏洞,并修补了它。

漏洞堆栈
本作品采用《CC 协议》,转载必须注明作者和本文链接
研究人员发现了14个影响专有NicheStack(又名 InterNiche)TCP/IP堆栈的新漏洞
微软在 ncurses(new curses 的缩写)编程库中发现了一组内存损坏漏洞,威胁者可利用这些漏洞在易受攻击的 Linux 和 macOS 系统上运行恶意代码。
其中三个漏洞是可能导致远程代码执行的堆栈溢出漏洞,其余两个漏洞是可能导致拒绝服务的越界读取漏洞和缓冲区溢出漏洞
未来的勒索软件攻击是什么样的?企业如何实现自身安全防护? 在过去十年左右的时间里,勒索软件已经逐渐发展成熟——从最初相对简单的病毒,到现在有能力削弱全球医疗保健系统、干扰燃料供应链或破坏交通基础设施。它对恶意行为者的巨大吸引力在于其简单易操作。勒索软件攻击无需特别复杂的操作即可实现大规模破坏,同时为犯罪分子赚取丰厚的赎金。出于这个原因,此类攻击的数量未来仍将加速增长。
国家级APT(Advanced Persistent Threat,高级持续性威胁)组织是有国家背景支持的顶尖黑客团伙,专注于针对特定目标进行长期的持续性网络攻击。 奇安信旗下的高级威胁研究团队红雨滴(RedDrip Team)每年会发布全球APT年报【1】、中报,对当年各大APT团伙的活动进行分析总结。
一、发展动向热讯 1、中央解密《党委(党组)网络安全工作责任制实施办法》 8月4日,《人民日报》头版发布《中国共产党党内法规体系》一文。与此同时,《中国共产党党内法规汇编》由法律出版社公开出版发行,该书正式解密公开了《党委(党组)网络安全工作责任制实施办法》(以下简称“《实施办法》”)。《实施办法》作为《中国共产党党内法规体系》唯一收录的网络安全领域的党内法规,它的公开发布将对厘清网络安全责任
360漏洞云监测到Annke N48PBB Network Video Recorder存在远程代码执行漏洞(CVE-2021-32941)。
2021年9月20日-2021年9月26日本周漏洞态势研判情况本周信息安全漏洞威胁整体评价级别为中。
17日,据外媒报道,网络安全公司ERPScan发现Oracle存在依赖于Jolt协议的五个产品漏洞,并将他们命名为JoltandBleed,因其与与2014年在OpenSSL中发现的Heartbleed漏洞极为相似。攻击者可以利用JOLTandBLEED获得对ERP系统中存储的所有数据的完全访问权限,受影响的产品包括OraclePeopleSoft校园解决方案、甲骨文PeopleSoft人力资
当 Akamai 发出重定向时,它会忽略请求的 Content-Length 标头,并将任何消息正文留在 TCP/TLS 套接字上。第一个问题是初始重定向响应。第二个复杂的问题是所谓的“堆栈响应问题”。浏览器有一种机制,如果接收到的响应数据多于预期,则删除连接。为了使这种攻击起作用,攻击者的网站需要在同一端点上同时提供重定向和恶意 JS。
VSole
网络安全专家