• <strike id="fdgpu"><input id="fdgpu"></input></strike>
    <label id="fdgpu"></label>
    <s id="fdgpu"><code id="fdgpu"></code></s>

  • <label id="fdgpu"></label>
  • <span id="fdgpu"><u id="fdgpu"></u></span>

    <s id="fdgpu"><sub id="fdgpu"></sub></s>

    攻防:黑客技術(shù)與Fuzz測試

    2015-01-27 14:28:45   作者:   來(lái)源:CTI論壇   評論:0  點(diǎn)擊:


      對于信息安全領(lǐng)域,2014年無(wú)疑是動(dòng)蕩不安的一年,Heartbeat、Shellshock、貴賓犬、沙蟲(chóng)等漏洞接二連三的發(fā)生。對于普通大眾和相當一部分技術(shù)人員來(lái)說(shuō)黑客技術(shù)總是帶著(zhù)一些神秘的色彩,但是任何人在仔細研究之后都會(huì )發(fā)現,黑客技術(shù)并沒(méi)有那么神秘,它和我們寫(xiě)的每一行代碼、設計的每一個(gè)測試用例一樣,都遵循最基本的原理。

      一、 黑客技術(shù)

      黑客技術(shù)是很多技術(shù)的集合,涵蓋計算機技術(shù)的多個(gè)方面從硬件、系統、應用到WEB等,由于涉及的知識較多,很少有研究者能夠在各個(gè)方面都做到精通,因此把握其本質(zhì)和主線(xiàn)就顯得尤為重要。

      1. 漏洞與黑客技術(shù)

      在了解黑客技術(shù)之前我們有必要先了解一些黑客技術(shù)的對立面—信息安全方面的一些知識。如圖 1所示,信息安全的核心在于權限管理,保密性、完整性、可用性、不可抵賴(lài)性等要素都是圍繞著(zhù)權限展開(kāi)的;認證、防火墻、入侵檢測等技術(shù)本質(zhì)上都是為了確保信息被擁有權限的主體使用。

      而黑客技術(shù)和信息安全正好相反,黑客技術(shù)則是為了獲得非法權限(如圖 2所示)。現實(shí)中任何系統在設計的時(shí)候都會(huì )做一些權限的限制,但由于種種原因,這些限制并非牢不可破,其中往往存在各種各樣的漏洞,或者是操作人員的失誤、或者軟件設計的漏洞,正是因為這些漏洞的存在,黑客技術(shù)才得以成為現實(shí)。因此黑客技術(shù)的核心在于獲取非法權限,其實(shí)現方式是挖掘和利用漏洞。

      由前面的分析可知漏洞是理解黑客技術(shù)的主線(xiàn)與核心,所以漏洞挖掘技術(shù)和利用技術(shù)是黑客的兩大核心技能。對于任何一個(gè)軟件系統或IT系統,其安全性或攻擊難度取決于漏洞的多少和漏洞的利用難度。傳統的安防產(chǎn)品的思路是提高漏洞的利用難度,而減少漏洞的數量則是軟件或設備提供商考慮的事情,但也有一些新興的安全公司例如Codenomicon提供專(zhuān)業(yè)漏洞挖掘的產(chǎn)品。

      圖 1 信息安全3要素

      圖 2 黑客技術(shù)的核心

      2. 安全漏洞的分類(lèi)

      由于信息技術(shù)的高速發(fā)展,現在的軟件系統異常復雜。最初的軟件產(chǎn)品只分為硬件和軟件兩個(gè)組成部分,相對而言,漏洞的種類(lèi)比較有限;現在的軟件產(chǎn)品軟件層面多,可分為驅動(dòng)、操作系統、應用程序、腳本、WEB等層面,而且軟件產(chǎn)品的種類(lèi)也非常多,因此為漏洞的分類(lèi)提出了巨大的挑戰。

      目前對于漏洞分類(lèi)最權威的是由美國網(wǎng)絡(luò )安全與通信辦公室、美國國土安共同推出的CWE(Common Weakness Enumeration,通用漏洞枚舉),CWE收錄了上千種漏洞類(lèi)型,當然包括熟悉的緩沖區溢出、DDoS、SQL注入、跨站腳本等,這些資料對于研究安全漏洞是非常重要的,不過(guò)對于了解黑客技術(shù)來(lái)講顯得過(guò)于細節化了。為了便于了解我們可以簡(jiǎn)單得將漏洞分為如下幾個(gè)層面:

      表1 漏洞的簡(jiǎn)單分類(lèi)

      在現實(shí)的滲透測試中,部署應用和運作管理漏洞是最常見(jiàn)的,Rapid 7 首席信息安全官表示:“使用默認密碼可以訪(fǎng)問(wèn)幾乎一半的互聯(lián)網(wǎng)。”很多人對于黑客技術(shù)的誤解就在于此,任何單個(gè)的技術(shù)看起來(lái)都是簡(jiǎn)單的,但各種技術(shù)組合起來(lái),效果可能會(huì )相當驚人。但對于網(wǎng)絡(luò )設備廠(chǎng)商,軟件編碼漏洞和軟件設計漏洞才是最值得關(guān)注的。

      二、 Fuzz測試

      1. 什么是Fuzz測試?

      漏洞挖掘有三種方法:白盒代碼審計、灰盒逆向工程、黑盒測試。其中黑盒的Fuzz測試是效率最高的一種,能夠快速驗證大量潛在的安全威脅。

      Fuzz測試,也叫做“模糊測試”,是一種挖掘軟件安全漏洞、檢測軟件健壯性的黑盒測試,它通過(guò)向軟件輸入非法的字段,觀(guān)測被測試軟件是否異常而實(shí)現。Fuzz測試的概念非常容易理解,如果我們構造非法的報文并且通過(guò)測試工具打入被測設備,那么這就是一個(gè)Fuzz測試的測試例執行,大多數測試工程師肯定都嘗試過(guò)這種測試手段。

      對于網(wǎng)絡(luò )協(xié)議漏洞挖掘來(lái)說(shuō),Fuzz測試也就意味著(zhù)打入各種異常報文,然后觀(guān)察設備是否有異常。

      2. 針對FTP sever的Fuzz測試

      在本節我們將設計一個(gè)簡(jiǎn)單的針對FTP server的Fuzz測試腳本。從原理上設計Fuzz測試用例是比較簡(jiǎn)單的,無(wú)非是閱讀RFC,根據報文設計異常字段,但在實(shí)際實(shí)施過(guò)程中將會(huì )遇到以下幾個(gè)問(wèn)題。

      m 網(wǎng)絡(luò )協(xié)議是有狀態(tài)的,最常見(jiàn)的一種情況就是,我們需要在協(xié)議狀態(tài)機進(jìn)行到某種狀態(tài)的時(shí)候發(fā)送某種報文,比如FTP協(xié)議,如果我們想對put命令的參數進(jìn)行變異、發(fā)送異常報文,則我們需要先通過(guò)FTP認證;因此要想實(shí)現協(xié)議的fuzz測試,則只能手工編寫(xiě)腳本,現有的工具和測試儀都無(wú)法實(shí)現這些復雜邏輯。

      m 另外如何構造異常,這是一個(gè)和經(jīng)驗相關(guān)性比較大的問(wèn)題,需要長(cháng)期積累,以及對安全漏洞有較深入的研究。

      m 如何檢測被測設備是否異常,這也是一個(gè)非常棘手的問(wèn)題,比如內存泄露,可能只是泄露幾個(gè)字節的內存,這時(shí)候被測設備外部表現正常。

      在本節中介紹的FTP server的Fuzz測試中,僅構造比較簡(jiǎn)單的異常—--超長(cháng)的報文;設備異常通過(guò)檢查FTP連接的狀態(tài)來(lái)判斷。被測設備選擇MSR36設備和日常工作中常用的3CDaemon FTP server2.0。具體測試步驟分為如下。

    • 輸入超長(cháng)的FTP用戶(hù)名,被測設備應該表現正常;
    • 正常登陸FTP后,對于FTP命令“mdelete、cd、mkdir、cwd、mdir、mput、rename”輸入超長(cháng)參數, 被測設備應該表現正常。

      根據測試用例設計相應的測試腳本,測試腳本使用python語(yǔ)言編寫(xiě)。腳本主要由三個(gè)函數組成。

      m get_fuzz_str()函數,用于生成Fuzz str,即異常報文的關(guān)鍵部分;在本例中用于生成超長(cháng)的字符串“aaaaaa…”(如圖3所示)。

      圖3 get_fuzz_str代碼

      m fuzz_FTP_usr()函數,用于發(fā)送超長(cháng)的用戶(hù)名,關(guān)鍵代碼如圖4所示,將超長(cháng)的字符串4串拼接在一起,作為user的參數發(fā)送給服務(wù)器。

      圖4 fuzz_FTP_user()函數關(guān)鍵代碼

      m fuzz_FTP_cmd()函數,用于發(fā)送超長(cháng)的命令,關(guān)鍵代碼如圖5所示,對每一個(gè)命令構造異常的參數,然后發(fā)送給服務(wù)器。

      圖5 fuzz_FTP_cmd()函數關(guān)鍵代碼

      之后,執行測試用例,設定被測設備為MSR36設備,MSR36設備表現正常,未發(fā)現任何問(wèn)題(如圖6所示)。

      圖6 MSR36測試結果

      將被測設備設定為3CDaemon FTP server,測試結果如圖7所示,看起來(lái)腳本找到了一個(gè)安全漏洞;為了驗證我們用windbg調試FTP server看一看,如圖8所示可以看到3CDaemon FTP server已經(jīng)被溢出了,EIP寄存器被我們的字符串“aaaa”覆蓋,從而導致程序崩潰,而且從調試器看到這是一個(gè)棧溢出漏洞,這些信息會(huì )為進(jìn)一步的漏洞利用提供線(xiàn)索。

      圖7 3CDaemon FTP server測試結果

      圖8 3CDaemon FTP server調試結果

      通過(guò)這個(gè)簡(jiǎn)單的Fuzz測試腳本成功找到了一個(gè)緩沖區溢出漏洞。

      三、 結束語(yǔ)

      如果將漏洞作為理解黑客技術(shù)的核心,黑客技術(shù)本身已經(jīng)不再神秘,在日常測試中,經(jīng)過(guò)簡(jiǎn)單設計的測試用例即可完成漏洞挖掘的工作。但是應該看到的是隨著(zhù)安全技術(shù)的發(fā)展,挖掘漏洞和利用漏洞必定更為復雜。實(shí)際上針對協(xié)議設計Fuzz測試腳本并不是一件簡(jiǎn)單的事情,其復雜程度往往超過(guò)實(shí)現協(xié)議本身,在實(shí)際的測試中往往需要借助專(zhuān)業(yè)的測試框架、測試套件,或者根據實(shí)際情況設計比較有針對性的測試用例進(jìn)行測試。

    分享到: 收藏

    專(zhuān)題

    亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 武威市| 无锡市| 九江市| 溧水县| 湖南省| 壤塘县| 昭平县| 虎林市| 行唐县| 惠水县| 石楼县| 安仁县| 景泰县| 乐安县| 芦山县| 东丽区| 瑞昌市| 微山县| 南岸区| 瓮安县| 阳东县| 惠水县| 江油市| 葵青区| 化隆| 桦南县| 宁武县| 邯郸县| 偏关县| 云南省| 扬中市| 天祝| 宿州市| 卢湾区| 綦江县| 平遥县| 怀安县| 湖口县| 紫金县| 都安| 慈溪市| http://444 http://444 http://444 http://444 http://444 http://444