适合新手入门的漏洞调试与分析—CVE-2010-3333
這是第二次在tools發(fā)帖,為了響應(yīng)管理猿的號召,也為了愛好應(yīng)用程序安全新手的需要。在此,我初步研究了一下微軟3333漏洞的成因,并試著定位到了樣本中的shellcode,現(xiàn)在就對這個入門級的漏洞做個簡單的分析:
首先,我們還是用OD加載word.exe程序,按F9運行。如圖:
圖(一)
接下來,我們要具體分析3333漏洞出現(xiàn)的成因(具體的可以百度)。經(jīng)過查詢,我們知道導(dǎo)致3333漏洞的原因,是因為漏洞產(chǎn)生在MSO.DLL文件中,下文以Microsoft Office2003的MSO.DLL(版本號為:11.0.5606.0)為例。我們將樣本拖入運行的word中,如圖:
圖(二)
此時,先別急著打開!我們回到OD中,按下ALT+E,看看此時word加載了哪些模塊。
圖(三)
我們看到,mso.dll(也就是導(dǎo)致3333漏洞的文件)已經(jīng)被OD加載進(jìn)來。我們雙擊mso.dll,并同時按下ctrl+A,讓OD對mso.dll進(jìn)行分析。等OD分析完成后,如圖:
圖(四)
根據(jù)我們百度的結(jié)果(鏈接:http://wenku.baidu.com/link?url=8SkPKM5C5lGsrkjd4-uckMFg4YvuTlWN0kAdQSQKMXRgSRL8FiuxjwZ1aOE92QDwCbt855VWEEsOjGkc9ecQ54daMWivTpjMpcY1kS9rI87)可知,函數(shù)在處理pFragments屬性的值時,未嚴(yán)格檢查屬性值所占用的空間大小,導(dǎo)致memcpy函數(shù)在復(fù)制屬性值時溢出堆棧。
在此,我們選用“mov bx , 5000000”這句指令,來定位處理pFragments屬性值的函數(shù)(當(dāng)然這種定位方式,是在已知漏洞位置的情況下。在調(diào)試0day時,因為我們不知道具體的漏洞點,此種方法便顯得無能為力。在這種情況下我們可以通過定位WINEXEC函數(shù)的來定位shellcode,從而調(diào)試、定位出具體漏洞點…其實分析0day是個很復(fù)雜過程,這個話題我們以后在討論)。如圖:
圖(五)
我們在“mov bx , 5000000”下好斷點后,就可以點擊剛才word彈出的是否打開對話框(圖二中對話框),選擇“打開”。如圖:
圖(六)
此時我們看到EIP寄存器斷在了“mov bx , 5000000”指令處。通過之前百度到資料,我們知道導(dǎo)致棧溢出的函數(shù)位于:30F4CC93處的 call dword ptr ds:[eax+0xlc] 函數(shù),我們單步F7跟進(jìn)來,如圖:
圖(七)
我們通過對百度結(jié)果的分析,可知:當(dāng)執(zhí)行完“rep movs dword ptr es:[edi],dword ptr ds:[esi]”棧中的數(shù)據(jù)就會產(chǎn)生溢出(此時,我還未執(zhí)行這句指令),現(xiàn)在我們看看未溢出時??臻g的情況:
圖(八)
接下來,我們執(zhí)行一下“rep movs dword ptr es:[edi],dword ptr ds:[esi]”這句指令,看看棧中的變化,如圖:
圖(九)
注意:請讀者自行比較圖(八)與圖(九)的區(qū)別。
接下來就是執(zhí)行shellcode了,至此我們將這個3333漏洞用OD分析完了。如果要想從全局了解3333漏洞的成因,全面的掌握3333漏洞的情況,還得借助IDA分析工具(可謂是反匯編的利器),至于對shellcode的分析和編寫在此就不敘述了。
最后,想跟大家分享一句心得:我們研究漏洞的目的不是為了去搞破壞,而是更好完善網(wǎng)絡(luò)安全,更好的服務(wù)他人。
有需要網(wǎng)安新手入門教材的點擊下方字體
價值11980安全學(xué)習(xí)資料包
總結(jié)
以上是生活随笔為你收集整理的适合新手入门的漏洞调试与分析—CVE-2010-3333的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 别再问Cloudflare CDN 漏洞
- 下一篇: 由PLC未授权访问引发的工程重置漏洞