近期WinRAR被爆存在扩展名缺陷0day,可被用于钓鱼等用途,小编给大家带来了漏洞详情。

本文原作者: An7i ,由习科论坛版主 Exploit 翻译。

WinRAR 是由 RARLAB 开发的一款非常强劲的压缩解压缩软件,在Windows环境为人熟知,其对文件进行压缩和解压缩的功能被人广泛称赞。RAR通常可以把文件压缩成ZIP格式或是RAR格式。

本文将为大家展示一个刚刚发布的的关于winRAR 4.20的漏洞(可能适用于其他版本),可以进行文件名欺骗。


首先我们来看下zip文件的格式规范(上图)。

通过这个文件格式的规范描述,可以很容易看出一个问题:在偏移位置30的地方是被压缩的文件的名称。

在使用WinRAR压缩文件成zip的时候也会和这个文件的格式相相似,不过WinRAR会在规范以外再加上点RAR自己的东西。

比如新建一个名为TEST1.txt的文件,在文件正文写入'AAAAA'的字符串后并将文件进行压缩。

压缩后用工具查看16进制的HEX码,如下:

 

 

在上图的压缩包中可以看到,WinRAR在创建压缩包的时候额外加了一个文件名进去。

通过多次更深层的测试得出这样一个结果:第一个文件名是真正的文件名,WinRAR将会对其进行压缩并保存。

而第二个文件名其实就是用于显示在WinRAR的GUI窗口中用的。好了,按照惯例就该出现问题了:如果当第一个和第二个文件名不一致的话会发生什么情况呢?

那么答案是,WinRAR会显示第一个被修改过的具有欺骗性的文件名。通过解压后用户才会看到真正的文件名。

大家一起设想一下,如果一个黑阔哥哥命名为“txt”类文件,比方说名字叫:ReadMe.txt,或是“病毒扫描结果.pdf”这样的pdf文件,更或是极具吸引力的类似于“千人斩茜茜.jpg”,接着你浑身一颤点开了。。。呵呵。。

 

好了,下面开始来构造一个POC吧 ╮(╯▽╰)╭

1,首先让我们给文件起个比较有诱惑性的名字aoi_sola.exe,这个exe文件的代码如下,功能是弹出"Silic"

#include <stdlib.h>
int main()
{
 System("mshta [removed]alert(\"Silic\");close();");
 return 0;
}

2,用WinRAR压缩之。。。如图

 

 

3,用WinHEX打开压缩包,仅仅修改第二个文件名,将其改成“aoi_sola.jpg”并保存为zip文件。

 

 

最后,双击之后,你就上线了~

 

 

PS:这里小编个人认为弹窗还不如弹图片更真实一些~~另外,漏洞发现者测试的是5.0以下的版本,小编实测5.0版本已经修复该漏洞。

 

 

这对于某些习惯直接在WinRAR中打开文件的人来说,这种文件名欺骗简直就是致命伤。。杀伤力很高的。

但是对于习惯先“解压到文件夹”的人来说,这个漏洞似乎跟他们没有什么关系?黑客的思想是:怎么操作才能通杀!

比如解压后,“苍井空.jpg”会变成“苍井空.exe”,机智的他们就不会打开了。

其实不用怕,有一个漏洞叫做RLO Unicoder Characters,WinRAR将这两个漏洞结合起来使用。。。

就构成了一次完美的攻击,不管咋样,你都中招了,你看你真是一脸肉鸡样呀~

 

PS:RLO Unicoder Characters的结合利用应该是这样的,将远控命名为含特殊字符的1.gpj.exe,将WinRAR的Zip压缩包中的文件名改为1.gpj.jpg,解压出来以后因为含有特殊字符的关系,1.gpj.exe在windows下会显示1.exe.jpg。RLO只是实现文件名反转,在实际利用中有成功概率,但是完美攻击有一定难度,小编注。

//silic.wiki