1.內(nèi)存攻擊
內(nèi)存攻擊的根本原因是圖靈計(jì)算機(jī)沒(méi)能嚴(yán)格區(qū)分內(nèi)存中的數(shù)據(jù)和指令而導(dǎo)致的。
A:緩沖區(qū)溢出漏洞是因?yàn)槌绦蛉狈?duì)緩沖區(qū)的邊界進(jìn)行條件檢查而引起的一種異常行為。
緩沖區(qū)溢出又分為棧溢出與堆溢出兩種類型。
棧溢出
棧溢出的基本原理在于程序使用棧這種數(shù)據(jù)結(jié)構(gòu)來(lái)控制程序運(yùn)行流程,程序先將函數(shù)返回地址壓入棧中,然后執(zhí)行結(jié)束以后再?gòu)臈V腥』睾瘮?shù)返回地址,繼續(xù)執(zhí)行指令。問(wèn)題是出現(xiàn)在當(dāng)我們向棧中的地址寫入數(shù)據(jù)時(shí),當(dāng)寫入的數(shù)據(jù)長(zhǎng)度超過(guò)棧分配的緩沖區(qū)地址空間時(shí),就會(huì)造成棧溢出。
棧溢出一般有三種利用方式:
A1.覆蓋緩沖區(qū)附近的程序變量
主要是改變程序的執(zhí)行流程和結(jié)果,從而達(dá)到攻擊者的目的。
A2.覆蓋棧中保存的函數(shù)返回地址
這種是最常用的,程序執(zhí)行完以后直接執(zhí)行惡意攻擊者的代碼去了
A3.覆蓋某個(gè)程序指針或程序異常處理結(jié)構(gòu)
只要溢出以后異常處理結(jié)構(gòu)被執(zhí)行,同樣可以讓程序流轉(zhuǎn)到任意地址。這種處理方式可以繞過(guò)操作系統(tǒng)的棧保護(hù)機(jī)制,而且異常處理結(jié)構(gòu)更接近棧底,所以從緩沖區(qū)頭部到異常處理結(jié)構(gòu)的內(nèi)存空間更大,處理起來(lái)可能更加方便。
這里順路科普一下那個(gè)現(xiàn)代操作系統(tǒng)的緩沖區(qū)溢出的安全保護(hù)機(jī)制,稱為ASLR(Address space layout random),通過(guò)對(duì)堆(heap),棧(stack)等共享地址空間的布局隨機(jī)化,從而增加攻擊者預(yù)測(cè)地址空間的難度,防止攻擊者直接定位攻擊代碼地址。
堆溢出
堆溢出的概念

堆溢出的原理

緩沖區(qū)溢出利用的思路:
主要有三步,第一步是考慮緩沖區(qū)溢出的緩沖區(qū)空間大小,第二步是通過(guò)逆向分析或者源碼分析來(lái)理解程序邏輯,最后是考慮壞字符,空字符,可能需要考慮編碼的情況等來(lái)構(gòu)造shellcode。
這里科普一些端口知識(shí):
Netbios(Network basic input output system)運(yùn)行在137,138,139端口上

SMB(Server Message Block)運(yùn)行在445端口上,也可通過(guò)139端口來(lái)接收數(shù)據(jù)
MSRPC(Microsoft remote procedure call)主要是135端口。

2.MS08-067內(nèi)存攻擊實(shí)戰(zhàn)技術(shù)
A漏洞原理:攻擊者通過(guò)msrpc over smb通道來(lái)調(diào)用server服務(wù)程序中的Netpathcanonicalize函數(shù),該函數(shù)在遠(yuǎn)程訪問(wèn)其他主機(jī)時(shí)候,會(huì)調(diào)用Netpwcanonicalize函數(shù),該函數(shù)會(huì)對(duì)遠(yuǎn)程訪問(wèn)主機(jī)的路徑進(jìn)行規(guī)范化,而該函數(shù)存在緩沖區(qū)溢出漏洞,從而導(dǎo)致遠(yuǎn)程代碼執(zhí)行。
B漏洞利用:



就這樣日進(jìn)去了。。。。
C:漏洞源碼分析

查看metasploit下面的ruby文件,可以一步步查看漏洞利用源碼。
例如描述這一部分,主要介紹了該漏洞出現(xiàn)在NetAPI32.dll中的canonicalization路徑處理函數(shù)中,該模塊主要能夠繞過(guò)一些NX(No execute,win下面是DEP技術(shù))機(jī)制,然后2003的系統(tǒng)有大概率會(huì)崩潰或者掛起。

默認(rèn)設(shè)置這個(gè)是規(guī)定了會(huì)話退出采用了退出線程的方式。

payload這里主要是規(guī)定了可用空間大小,壞字符,自定義選項(xiàng)等。

下面規(guī)定了可針對(duì)的target,包括一些各種平臺(tái),一些初始化可能不一樣。
D:08-067漏洞原理機(jī)制分析
首先用ollydbg打開(kāi)了所謂的netapi32.dll,然后我們尋找netpwpathcanonicalize函數(shù),如下:

然后,就是留個(gè)坑。。。二進(jìn)制安全的知識(shí)好多看不懂,匯編也看不懂,以后滲透學(xué)深了以后再來(lái)補(bǔ)補(bǔ)。。。。