以以以以w3af達成達成達成達成自自自自動動動動化化化化滲透測試滲透測試滲透測試滲透測試LiveDVD/LiveUSB設計與實現設計與實現設計與實現設計與實現柯鈞凱國立高雄師範大學資訊教育研究所研究生jacky10521@gmail.com楊中皇國立高雄師範大學資訊教育研究所教授chyang@computer.org摘要摘要摘要摘要由於網際網路發展日漸蓬勃,而讓許多服務都需靠著網路作為媒介,也因此網路安全的議題日漸受到重視,個人的隱私和資料的保密也需要做更多的加強保護,因此了解系統弱點、漏洞更是刻不容緩的系統防護任務,所以要能夠快速的評估網路安全,及快速的解決漏洞及弱點的補強,已是現今網路使用者最在意的議題之一。本研究是利用開放原始碼的滲透測試工具進行自動化的執行工作,不需要輸入複雜、繁複的指令,只要簡單的輸入目標之URL即可自動完成滲透測試,並製作一個LiveDVD/LiveUSB環境,不限定任何作業系統環境,使用者只須要將光碟片放入光碟機,且不需安裝於硬碟上,即可快速進行滲透測試工作,也不會更動到原有系統及設定,對於初學使用者的門檻也大大降低,減少學習摸索的時間,加速使用者對滲透測試熟悉的程度,對於資安人員也可以減少檢測的時間,更於專心分析工作,利用此環境做到快速使用安全工具來保護系統。關鍵關鍵關鍵關鍵詞詞詞詞::::網路安全、開放原始碼、滲透測試、LiveDVD/LiveUSB、安全工具壹壹壹壹﹒﹒﹒﹒前言前言前言前言在現今網際網路蓬勃發展的世代,許多的服務都需要藉著網路來幫我們達成,因此網路安全的議題也受到大家的重視。但是木馬、病毒攻擊層出不窮,而網路的發達也讓普羅大眾可以隨意的得到入侵工具,並藉由入侵工具進行網路攻擊,造成在網路上可能隨時都有被攻擊、入侵的危險[3]。另外,假網站的釣魚行為也常讓大眾落入陷阱當中,所以具備相關的網路安全知識外還需要有強烈的危機意識。在網路上沒有絕對的安全,與一切都存在限制一樣,要能夠找到一種平衡,不可能害怕遭受攻擊而不連接網路,這樣子的實用性會大大下降。此外,另一個極端的做法,不安裝防毒軟體、防火牆及安全更新,此時系統雖然具有高度的可用性,但極其脆弱,相當容易受到網路上四面八方的攻擊,在美國網站安全聯盟(WebApplicationSecurityConsortium,WASC)2008年9月指出每個網站平均有13.11個漏洞(包括8.91個嚴重漏洞)[10],因此我們可以透過滲透測試來了解系統上的弱點、漏洞,藉此對該漏洞進行修補的動作。滲透測試[6,11,16]可以作為系統上的檢測,滲透測試會以入侵者的思維方式,搭配其它安全工具,攻擊程式及技術等輔助,對目標進行檢測,測試過程,就如同網路入侵事件的實際演練,測試結果可以提出改善的方法,以及對漏洞提出對策,加強系統的安全性。市面上有許多資安公司皆有提供滲透測試之服務,但需要花費龐大金額,所以造成許多單位並無及時對系統的漏洞、弱點來做補救,而讓有心人士有機可趁,造成龐大的損失及災害。目前所使用的滲透測試工具,大多需要測試人員手動操作,不但需要花費時間,還需要記住許多繁複的指令,造成了許多的不便,也提高了使用者的學習門檻。為了解決這個不便,所以本研究針對Web的滲透測試工具自動化,只須要輸入目標之URL,並藉著LiveDVD/LiveUSB的方式即可馬上使用滲透測試工具來做偵測,並且不限平台,可以在任何環境中快速使用,且不需要安裝在硬碟上,可以省去安裝的步驟,藉著LiveDVD/LiveUSB即可讓一台電腦變成自動化滲透測試裝置,可以馬上進行滲透測試工作[12,14]。貳貳貳貳﹒﹒﹒﹒文獻探討文獻探討文獻探討文獻探討一一一一、、、、滲透測試滲透測試滲透測試滲透測試在完整的滲透測試過程中,通常測試人員會盡可能的收集資料來得知目標系統的相關資料,測試者首先可以利用像Nmap、Nessus等掃描工具,先對目標主機進行掃描來得知目標主機的相關資訊,之後,在進一步針對這些資訊來做進一步的偵測,藉由於此,可以找到在弱點評估階段為檢測出的漏洞[4]。滲透測試人員能夠進行以下類型的測試[9,12]:(一)黑箱測試(Black-boxtest):受測單位不用告知任何資訊給滲透測試人員,也不需要將內部機密資料透露給測試人員,所有的資訊皆由滲透測試人員自行探索,探索過程就像遭受外部駭客攻擊,因此在測試過程當中更加真實,而黑箱測試的結果即可反映出受測單位的潛在漏洞。(二)白箱測試(White-boxtest):相對於黑箱測試來說,白箱測試則會將資訊分享給滲透測試人員,所以測試人員已得知內部網路完整的知識,而讓滲透測試人員大幅縮短探測的時間,可以集中火力針對可能有潛在漏洞的地方進行測試,而不需要花費太多時間在無謂的地方,儘管這種模式並不是外部攻擊最佳的做法,但卻可以有更精確的結果,因為這已經是最壞的情況,攻擊者已經具備最完整的內部網路知識,但是,白箱測試的缺點是需要將內部的機密資訊分享給測試人員,可能會造成其他因素的風險。(三)灰箱測試(Gray-boxtest):測試人員模擬的內部雇用員工,以方便取得受測單位內部的資訊,並擁有存取內部網路的方法,灰箱測試主要是評估來自內部雇員的攻擊。依照角色的不同,滲透測試人員可分為三種類型[8]:(一)Redteam:此類的成員即是執行滲透測試的人員,此類的成員應為受測單位受信任的第三方來進行測試,以降低可能遇到的風險。(二)Blueteam:此類成員為受測單位的資訊部門或網管人員,在測試的合約當中會訂定此類人員是否需要參加滲透測試,如果測驗當中需要考驗資訊部門或網管人員的反應力,則測試過程的相關細節和時間皆不能告知此類人員,以達到最真實的效果。(三)Whiteteam:此類成員為在執行滲透測試期間擔任諮詢的角色,在滲透測試期間測試人員可能有所需要的相關協助,此時諮詢人員即可提供所需的相關協助,以便於測試人員順利解決問題。滲透測試主要劃分為五個階段[3]:(一)偵查:在偵查階段,滲透測試人員必須使用各種方式,主動去探測所需要的相關資訊。比如,利用NSLookup/Whois查詢去得到與Web網站相關的URL位址資訊,在滲透測試過程中,利用DNS查詢也可以得出主機用途的相關資訊,及SamSpade、VisualRoute這樣的工具探測目標網路,一一搜尋出所需資料,最後再拼湊出完整的資料表。(二)掃描:在掃描階段,測試人員可以使用埠號掃描工具,對於目標主機做掃描可得知開放的port,在進一步掃描還可以得知目標主機所使用的作業系統,以確定攻擊的方向是對的,在這階段主要要是確定目標主機上所執行的服務,以便於尋找弱點攻擊。(三)獲取存取:在弱點掃描的階段,掃瞄結果可做為幫助測試人員獲取主機存取的方法。(四)維持存取:在測試人員做完目標主機掃描動作後,測試人員可以利用這些漏洞,維持對目標系統做存取的動作,可能利用後門安裝木馬軟體,以便於測試人員能夠重複的進入目標系統中,已達成維持存取的效果。(五)清除證據:在滲透測試後,測試人員會將在目標主機上的活動日誌檔案給清除掉。二二二二、、、、w3afWeb應用程式攻擊與評估框架應用程式攻擊與評估框架應用程式攻擊與評估框架應用程式攻擊與評估框架w3af是WebApplicationAttackandAuditFramework的縮寫,提供了滲透測試和稽核的平台,主要是針對Web的服務做檢測,w3af是一款非常強大的開放原始碼安全漏洞檢測工具,並可提供一系列的Web檢測模組。由於w3af是免費的工具,因此安全工作人員常用w3af工具來檢測系統的安全性。該w3af核心和它的plugin都完全用Python寫的。所以此架構可以在所有有安裝Python的作業系統平台下運行,w3af該項目已超過130個plugin,包括檢查SQLInjection,跨站點腳本(XSS)。基本上,w3af的套件主要分為三大類,分別為探測(discovery)、稽核(audit)、攻擊(attack)[17]。(一)探測套件功能是找出URL網址、表單及其它注入點(injectionpoints),典型的探測套件是WebSpider,這個套件可以利用URL當作輸入,並且可以回傳一或多個注入點。當A套件找出新的URL網址後,w3af核心將把這個網址傳送給B套件以試圖搜尋出其它注入點,若B套件找出新的注入點,w3af核心會再把網址傳送給A套件,這過程將會一直持續,直到套件找出所有的注入點。(二)稽核套件可以藉由上述的探測套件找出注入點,並且藉由利用特殊的測試資料來找出漏洞,搜尋SQLinjection是典型稽核套件的功能之一。(三)攻擊套件則是利用稽核套件來取得弱點,攻擊套件從遠端伺服器傳送shell,或自遠端資料庫利用SQLinjection來取得資料庫的內容。完整的w3af套件可以更細分成:(一)Discovery:找出注入點(pointofinjection)。(二)Audit:找出弱點。(三)Grep:分析網頁內容以找出漏洞。(四)Exploit:在稽核階段可以找出漏洞,並傳回使用者所需資訊,如remoteshell,SQLtabledump,proxy…等。(五)Output:為framework和plugin與使用者之間溝通的方式,資料可以儲存為純文字或HTML格式。(六)Mangle:經由正規表示式變更為request與response。(七)Bruteforce:暴力登入,這是探測階段的一部分。(八)Evasion:可以逃避簡單的入侵偵測規則。在分類模組中,底下還細分了不同功能的模組,比如,在Discovery模組中可選用pykto模組或WebSpider模組,在pykto模組中是利用Python語言去改寫著名的弱點評估工具nikto,而WebSpider則可用來蒐集網頁上所有的連結內容。而在Audit模組中的sqli子模組會針對WebSpider所收集到的頁面進行sqlinjection測試,對於頁面內容是否有潛在的漏洞進行檢測。w3af提供了文字介面和圖形化介面兩種不同的操作方式,使用者可以依據自己的習慣選擇適合的介面操作,文字介面提供了完整的命令補全和批次模式以供使用者使用,而利用圖形介面操作不需要輸入複雜的參數,且對於使用者也比較容易上手。三三三三、、、、LiveCD介紹介紹介紹介紹LiveCD是一種不需要安裝在硬碟上,利用光碟即可馬上啟動作業系統的一種方式,因此也不會影響到硬碟中原有的系統,可免去一切安裝作業系統的複雜程序,由於LiveCD的作業程序皆是由光碟機開機,所以並不怕網路上病毒的攻擊,除了作業系統本身項目以外,還可以安裝其他的應用程式,讓使用者可以在自己熟悉的環境當中來作業,而不會有在陌生地方使用陌生作業系統之困擾,目前最廣泛使用的LiveCD是Knoppix[1,2,4]。Knoppix是由德國程式設計師KlausKnopper所設計的,因此就將他的姓Knopper和Linux結合在一起稱為「Knoppix」,Knoppix是由自由軟體Debian作為主要的基礎而發展,且不必安裝,免用硬碟,已成為這套作業系統最大的特色,過去許多人總認為Linux不好安裝,覺得麻煩,所以對於Linux覺得不易上手,因此有著排斥的印象,所以Knopper特地將KDE版的Linux改寫過,省去過去需要麻煩安裝的步驟,也不必擔心與Windows不相容的問題,此外Knoppix不僅可以可以做為桌上型工作站使用,也可以作為網路伺服器使用,相當便利[2,4,15]。四四四四、SecurityLiveCD介紹介紹介紹介紹在現今網路安全越來越被重視的情況下,網路上已經有SecurityLiveCD的概念被提出,而SecurityLiveCD是將眾多的安全工具分門別類的整合在一塊LiveCD上,讓使用者可以用一片光碟進行作業,即可不限平台也不會更動到使用者電腦上的系統及設定,在2006年網路對於此SecurityLiveCD進行了排名,共列出了十大資安LiveCD套件,以下介紹為知名的SecurityLiveCD套件