发现日期:2010.06.17
受影响版本:
Adobe Reader最新版本9.3.2
Adobe Reader版本9.3.0
测试平台:Windows XP
Adobe Reader最新版本9.3.2

在Adobe Reader软件的AcroRd32.dll模块中,处理JBIG2Decode的图形嵌入对象的时候,会出现缓冲区溢出,黑客在PDF文件中嵌入PE可执行文件,当用户访问黑客指定的网址后IE调用Adobe Reader核心模块AcroRd32.dll模块,该模块在处理JBIG2Decode的图形嵌入对象的时候会造成缓冲区溢出会执行黑客嵌入的SHELLCODE代码。
如果用户在IE中浏览PDF文件时,IE调用AcroRd32.dll处理JBIG2Decode的图形嵌入对象,导致缓冲区溢出执行恶意代码,恶意代码作者将PE文件加密处理嵌入到PDF文件中的stream字串后面的代码下图:

缓冲区溢出执行SHLLCODE释放解密恶意文件的过程:
漏洞被利用之后将在C盘目录下,创建一个_.exe命名的文件,先将PE MZ头4D5A9090写入到文件中,接着还原被加密的PE数据具体解密过程代码如下:
07FD01DE 8>mov ebx, dword ptr [edi+14] ; 还原被加密的PE文件
07FD01E1 3>xor byte ptr [ebx], al ; 每个字节与文件大小的低2位byte异或
07FD01E3 4>inc ebx ; 文件偏移位置+1
07FD01E4 4>dec eax ; 文件大小减1
07FD01E5 8>cmp eax, 0 ; 判断文件大小是否为0,如果是0表示异或完成
07FD01E8 ^ 7>jnz short 07FD01E1


文件的大小为5BEC注意EAX寄存器,05B428E0第一个字节与文件大小的低2位的BYTE异或FF ^FC=03 异或第二个字节的时候大小减一,文件便宜位置+1,一直异或到EAX为0为止。
解密完成之后将代码写入到文件中:

写入成功之后调用WinExec函数隐藏执行释放后的恶意代码文件:

官方还未出补丁,临时解决方案。
防御方法:
打开ADOBE READER –选择“编辑”—“首选项”—“因特网”,将在浏览器中显示PDF的勾去掉可以避免PDF在IE中自动运行。
|