滲透測試(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攻擊和滲透測試團隊的任務描述中提到,他們內部有一支滲透測試團隊,日常的工作流程如下:
時間選擇
為減輕滲透測試對網絡和主機的影響,滲透測試時間盡量安排在業務量不大的時段或晚上。
策略選擇
為防止滲透測試造成網絡和主機的業務中斷,在滲透測試中不使用含有拒絕服務的測試策略。
授權滲透測試的監測手段
在評估過程中,由于滲透測試的非凡性,用戶可以要求對整體測試流程進行監控(可能提高滲透測試的成本)。
測試方自控
由滲透測試方對本次測透測試過程中的三方面數據進行完整記錄:操作、響應、分析,最終形成完整有效的滲透測試報告提交給用戶。
用戶監控
用戶監控有四種形式,其一全程監控:采用類似ethereal的嗅探軟件進行全程抓包嗅探;其二擇要監控:對掃描過程不進行錄制,僅僅在安全工程師分析數據后,預備發起滲透前才開啟軟件進行嗅探;其三主機監控:僅監控受測主機的存活狀態,避免意外情況發生;其四指定攻擊源:用戶指定由特定攻擊源地址進行攻擊,該源地址的主機由用戶進行進程、網絡連接、數據傳輸等多方監控。



備注:網絡信息搜集
使用ping sweep、dns sweep、snmp sweep、tracert等手段對主機存活情況、dns名、網絡鏈路等進行信息收集。可以對目標的網絡情況、拓撲情況、應用情況有一個大致的了解,為更深層次的滲透測試提供資料。
保守策略選擇
對于不能接受任何可能風險的主機系統,如銀行票據核查系統,電力調度系統等,可選擇如下保守策略:
1)復制一份目標環境,包括硬件平臺,操作系統,數據庫治理系統,應用軟件等。
2)對目標的副本進行滲透測試。
新聞熱點
疑難解答