滲透測試(penetration test)是完全模擬駭客可能使用的攻擊技術和漏洞發現技術,對目標系統的安全做深入的探測,發現系統最脆弱的環節。滲透測試能夠直觀的讓管理人員知道自己網路所面臨的問題。
實際上滲透測試並沒有嚴格的分類方式,即使在軟體發展生命週期中,也包含了滲透測試的環節:
但根據實際應用,普遍認同的幾種分類方法如下:
根據滲透方法分類
黑箱測試
黑箱測試又被稱為所謂的“zero-knowledge testing”,滲透者完全處於對系統一無所知的狀態,通常這類型測試,最初的資訊獲取來自於dns、web、email及各種公開對外的伺服器。
白盒測試
白盒測試與黑箱測試恰恰相反,測試者可以通過正常管道向被測單位取得各種資料,包括網路拓撲、員工資料甚至網站或其它程式的代碼片斷,也能夠與單位的其它員工(銷售、程式師、管理者……)進行面對面的溝通。這類測試的目的是類比企業內部雇員的越權操作。
隱秘測試
隱秘測試是對被測單位而言的,通常情況下,接受滲透測試的單位網路管理部門會收到通知:在某些時段進行測試。因此能夠監測網路中出現的變化。但隱秘測試則被測單位也僅有極少數人知曉測試的存在,因此能夠有效地檢驗單位中的資訊安全事件監控、回應、恢復的反應機制。
根據滲透目標分類
主機作業系統滲透
對windows、solaris、aix、linux、sco、sgi等作業系統本身進行滲透測試。
資料庫系統滲透
對ms-sql、oracle、mysql、informix、sybase、db2等資料庫應用系統進行滲透測試。
應用系統滲透
對滲透目標提供的各種應用,如asp、cgi、jsp、php等組成的www應用進行滲透測試。
網路設備滲透
對各種防火牆、入侵偵測系統、網路設備進行滲透測試。
從攻方視角看滲透
攻方既包括了潛在的駭客、入侵者,也可能是經過企業授權的安全專家。在很多駭客的視角中,世界上永遠沒有不可能滲透的目標,差別僅在時間和耐性上。
目前我們僅僅從授權滲透的角度來討論滲透測試的攻擊路徑及可能採用的技術手段。
測試目標不同,涉及需要採用的技術也會有一定差異,因此下面簡單說明在不同位置可能採用的技術。
內網測試
內網測試指的是滲透測試人員由內部網路發起測試,這類測試能夠模擬企業內部違規操作者的行為。最主要的“優勢”是繞過了防火牆的保護。內部主要可能採用 的滲透方式:遠端緩衝區溢位,口令猜測,以及b/s或c/s應用程式測試(如果涉及c/s程式測試,需要提前準備相關用戶端軟體供測試使用)。
外網測試
外網測試指的是滲透測試人員完全處於外部網路(例如撥號、adsl或外部光纖),類比對內部狀態一無所知的外部攻擊者的行為。包括對網路設備的遠端攻擊,口令管理安全性測試,防火牆規則試探、規避,web及其它開放應用服務的安全性測試。
不同網段/vlan之間的滲透
這種滲透方式是從某內/外部網段,嘗試對另一網段/vlan進行滲透。這類測試通常可能用到的技術包括:對網路設備的遠端攻擊;對防火牆的遠端攻擊或規則探測、規避嘗試。滲透測試的流程圖如圖2所示。
資訊的收集和分析伴隨著每一個滲透測試步驟,每一個步驟又有三個組成部分:操作、回應和結果分析。
埠掃描
通過對目標位址的tcp/udp埠掃描,確定其所開放的服務的數量和類型,這是所有滲透測試的基礎。通過埠掃描,可以基本確定一個系統的基本資訊,結合安全工程師的經驗可以確定其可能存在,以及被利用的安全弱點,為進行深層次的滲透提供依據。
遠程溢出
這是當前出現的頻率最高、威脅最嚴重,同時又是最容易實現的一種滲透方法,一個具有一般網路知識的入侵者就可以在很短的時間內利用現成的工具實現遠端溢出攻擊。
對於防火牆內的系統同樣存在這樣的風險,只要對跨接防火牆內外的一台主機攻擊成功,那麼通過這台主機對防火牆內的主機進行攻擊就易如反掌。
口令猜測
口令猜測也是一種出現概率很高的風險,幾乎不需要任何攻擊工具,利用一個簡單的暴力攻擊程式和一個比較完善的字典,就可以猜測口令。
對一個系統帳號的猜測通常包括兩個方面:首先是對用戶名的猜測,其次是對密碼的猜測。
本地溢出
所謂本地溢出是指在擁有了一個普通用戶的帳號之後,通過一段特殊的指令代碼獲得管理員許可權的方法。使用本地溢出的前提是首先要獲得一個普通使用者密碼。也就是說由於導致本地溢出的一個關鍵條件是設置不當的密碼策略。
多年的實踐證明,在經過前期的口令猜測階段獲取的普通帳號登錄系統之後,對系統實施本地溢出攻擊,就能獲取不進行主動安全防禦的系統的控制管理許可權。
腳本及應用測試
web腳本及應用測試專門針對web及資料庫伺服器進行。根據最新的技術統計,腳本安全弱點為當前web系統,尤其是存在動態內容的web系統比較嚴重 的安全弱點之一。利用腳本相關弱點輕則可以獲取系統其他目錄的存取權限,重則將有可能取得系統的控制許可權。因此對於含有動態頁面的web、資料庫等系統, web腳本及應用測試將是必不可少的一個環節。在web腳本及應用測試中,可能需要檢查的部份包括:
◆檢查應用系統架構,防止使用者繞過系統直接修改資料庫;
◆檢查身份認證模組,用以防止非法使用者繞過身份認證;
◆檢查資料庫介面模組,用以防止使用者獲取系統許可權;
◆檢查檔介面模組,防止使用者獲取系統檔;
◆檢查其他安全威脅;
無線測試
中國的無線網路還處於建設時期,但是由於無線網路的部署簡易,在一些大城市的普及率已經很高了。北京和上海的商務區至少80%的地方都可以找到接入點。
通過對無線網路的測試,可以判斷企業局域網安全性,已經成為越來越重要的滲透測試環節。
除了上述的測試手段外,還有一些可能會在滲透測試過程中使用的技術,包括:社交工程學、拒絕服務攻擊,以及中間人攻擊。
從守方視角看滲透
當具備滲透測試攻擊經驗的人們站到系統管理員的角度,要保障一個大網的安全時,我們會發現,需要關注的問題是完全不同的:從攻方的視角看,是“攻其一 點,不及其餘”,只要找到一點漏洞,就有可能撕開整條戰線;但從守方的視角看,卻發現往往“千里之堤,毀於蟻穴”。因此,需要有好的理論指引,從技術到管 理都注重安全,才能使網路固若金湯。
滲透測試的必要性
滲透測試利用網路安全掃描器、專用安全測試工具和富有經驗的安全工程師的人工經驗對網路中的核心伺服器及重要的網路設備,包括伺服器、網路設備、防火牆等進行非破壞性質的類比駭客攻擊,目的是侵入系統並獲取機密資訊並將入侵的過程和細節產生報告給用戶。
滲透測試和工具掃描可以很好的互相補充。工具掃描具有很好的效率和速度,但是存在一定的誤報率和漏報率,並且不能發現高層次、複雜、並且相互關聯的安全 問題;滲透測試需要投入的人力資源較大、對測試者的專業技能要求很高(滲透測試報告的價值直接依賴於測試者的專業技能),但是非常準確,可以發現邏輯性更 強、更深層次的弱點。
微軟在其it攻擊和滲透測試團隊的任務描述中提到,他們內部有一支滲透測試團隊,日常的工作流程如下:
時間選擇
為減輕滲透測試對網路和主機的影響,滲透測試時間儘量安排在業務量不大的時段或晚上。
策略選擇
為防止滲透測試造成網路和主機的業務中斷,在滲透測試中不使用含有拒絕服務的測試策略。
授權滲透測試的監測手段
在評估過程中,由於滲透測試的特殊性,用戶可以要求對整體測試流程進行監控(可能提高滲透測試的成本)。
測試方自控
由滲透測試方對本次測透測試過程中的三方面資料進行完整記錄:操作、回應、分析,最終形成完整有效的滲透測試報告提交給用戶。
保守策略選擇
對於不能接受任何可能風險的主機系統,如銀行票據核查系統,電力調度系統等,可選擇如下保守策略:
1)複製一份目標環境,包括硬體平臺,作業系統,資料庫管理系統,應用軟體等。
2)對目標的副本進行滲透測試。