滲透測試
滲透測試
滲透測試,是為了證明網路防禦按照預期計劃正常運行而提供的一種機制。不妨假設,你的公司定期更新安全策略和程序,時時給系統打補丁,並採用了漏洞掃描器等工具,以確保所有補丁都已打上。如果你早已做到了這些,為什麼還要請外方進行審查或滲透測試呢?因為,滲透測試能夠獨立地檢查你的網路策略,換句話說,就是給你的系統安了一雙眼睛。而且,進行這類測試的,都是尋找網路系統安全漏洞的專業人士。
滲透測試 (penetration test)並沒有一個標準的定義,國外一些安全組織達成共識的通用說法是:滲透測試是通過模擬惡意黑客的攻擊方法,來評估計算機網路系統安全的一種評估方法。這個過程包括對系統的任何弱點、技術缺陷或漏洞的主動分析,這個分析是從一個攻擊者可能存在的位置來進行的,並且從這個位置有條件主動利用安全漏洞。
換句話來說,滲透測試是指滲透人員在不同的位置(比如從內網、從外網等位置)利用各種手段對某個特定網路進行測試,以期發現和挖掘系統中存在的漏洞,然後輸出滲透測試報告,並提交給網路所有者。網路所有者根據滲透人員提供的滲透測試報告,可以清晰知曉系統中存在的安全隱患和問題。
我們認為滲透測試還具有的兩個顯著特點是:滲透測試是一個漸進的並且逐步深入的過程。滲透測試是選擇不影響業務系統正常運行的攻擊方法進行的測試。
作為網路安全防範的一種新技術,對於網路安全組織具有實際應用價值。但要找到一家合適的公司實施滲透測試並不容易。
滲透測試有時是作為外部審查的一部分而進行的。這種測試需要探查系統,以發現操作系統和任何網路服務,並檢查這些網路服務有無漏洞。你可以用漏洞掃描器完成這些任務,但往往專業人士用的是不同的工具,而且他們比較熟悉這類替代性工具。
滲透測試的作用一方面在於,解釋所用工具在探查過程中所得到的結果。只要手頭有漏洞掃描器,誰都可以利用這種工具探查防火牆或者是網路的某些部分。但很少有人能全面地了解漏洞掃描器得到的結果,更別提另外進行測試,並證實漏洞掃描器所得報告的準確性了。
打一個比方來解釋滲透測試的必要性。假設你要修建一座金庫,並且你按照建設規範將金庫建好了。此時是否就可以將金庫立即投入使用呢?肯定不是!因為還不清楚整個金庫系統的安全性如何,是否能夠確保存放在金庫的貴重東西萬無一失。那麼此時該如何做?可以請一些行業中安全方面的專家對這個金庫進行全面檢測和評估,比如檢查金庫門是否容易被破壞,檢查金庫的報警系統是否在異常出現的時候及時報警,檢查所有的門、窗、通道等重點易突破的部位是否牢不可破,檢查金庫的管理安全制度、視頻安防監控系統、出入口控制等等。甚至會請專人模擬入侵金庫,驗證金庫的實際安全性,期望發現存在的問題。這個過程就好比是對金庫的滲透測試。這裡金庫就像是我們的信息系統,各種測試、檢查、模擬入侵就是滲透測試。
也許你可能還是有疑問:我定期更新安全策略和程序,時時給系統打補丁,並採用了安全軟體,以確保所有補丁都已打上,還需要滲透測試嗎?需要!這些措施就好像是金庫建設時的金庫建設規範要求,你按照要求來建設並不表示可以高枕無憂。而請專業滲透測試人員(一般來自外部的專業安全服務公司)進行審查或滲透測試就好像是金庫建設后的安全檢測、評估和模擬入侵演習,來獨立地檢查你的網路安全策略和安全狀態是否達到了期望。滲透測試能夠通過識別安全問題來幫助了解當前的安全狀況。到位的滲透測試可以證明你的防禦確實有效,或者查出問題,幫助你阻擋可能潛在的攻擊。提前發現網路中的漏洞,並進行必要的修補,就像是未雨綢繆;而被其他人發現漏洞並利用漏洞攻擊系統,發生安全事故后的補救,就像是亡羊補牢。很明顯未雨綢繆勝過亡羊補牢。
滲透測試能夠通過識別安全問題來幫助一個單位理解當前的安全狀況。這使促使許多單位開發操作規劃來減少攻擊或誤用的威脅。
撰寫良好的滲透測試結果可以幫助管理人員建立可靠的商業案例,以便證明所增加的安全性預算或者將安全性問題傳達到高級管理層。
安全性不是某時刻的解決方案,而是需要嚴格評估的一個過程。安全性措施需要進行定期檢查,才能發現新的威脅。滲透測試和公正的安全性分析可以使許多單位重視他們最需要的內部安全資源。此外,獨立的安全審計也正迅速成為獲得網路安全保險的一個要求。
現在符合規範和法律要求也是執行業務的一個必要條件,滲透測試工具可以幫助許多單位滿足這些規範要求。
啟動一個企業電子化項目的核心目標之一,是實現與戰略夥伴、提供商、客戶和其他電子化相關人員的緊密協作。要實現這個目標,許多單位有時會允許合作夥伴、提供商、B2B 交易中心、客戶和其他相關人員使用可信連接方式來訪問他們的網路。一個良好執行的滲透測試和安全性審計可以幫助許多單位發現這個複雜結構中的最脆弱鏈路,並保證所有連接的實體都擁有標準的安全性基線。
當擁有安全性實踐和基礎架構,滲透測試會對商業措施之間的反饋實施重要的驗證,同時提供了一個以最小風險而成功實現的安全性框架。
有些滲透測試人員通過使用兩套掃描器進行安全評估。這些工具至少能夠使整個過程實現部分自動化,這樣,技術嫻熟的專業人員就可以專註於所發現的問題。如果探查得更深入,則需要連接到任何可疑服務,某些情況下,還要利用漏洞。
商用漏洞掃描工具在實際應用中存在一個重要的問題:如果它所做的測試未能獲得肯定答案,許多產品往往會隱藏測試結果。譬如,有一款知名掃描器就存在這樣的缺點:要是它無法進入Cisco路由器,或者無法用SNMP獲得其軟體版本號,它就不會做出這樣的警告:該路由器容易受到某些拒絕服務(DoS)攻擊。如果不知道掃描器隱藏了某些信息(譬如它無法對某種漏洞進行測試),你可能誤以為網路是安全的,而實際上,網路的安全狀況可能是危險的。
除了找到合適工具以及具備資質的組織進行滲透測試外,還應該準確確定測試範圍。攻擊者會藉助社會工程學、偷竊、賄賂或者破門而入等手法,獲得有關信息。真正的攻擊者是不會僅僅滿足於攻擊某個企業網路的。通過該網路再攻擊其它公司往往是黑客的慣用伎倆。攻擊者甚至會通過這種方法進入企業的ISP。
為了從滲透測試上獲得最大價值,應該向測試組織提供儘可能詳細的信息。這些組織同時會簽署保密協議,這樣,你就可以更放心地共享策略、程序及有關網路的其它關鍵信息。
還要確定的是,哪些系統需要測試。雖然你不想漏掉可能會受到攻擊的某個系統,但可能仍想分階段把滲透測試外包出去,以便每個階段專註於網路的不同部分。
你還應該制訂測試準則,譬如說:滲透測試人員可以探查漏洞並進行測試,但不得利用,因為這可能會危及到你想要保護的系統。
此外,你還要提供合適的測試途徑。如果你想測試在非軍事區(DMZ)裡面的系統,最好的測試地方就是在同一個網段內測試。讓滲透測試人員在防火牆外面進行測試聽起來似乎更實際,但內部測試可以大大提高發現防火牆原本隱藏的伺服器安全漏洞的可能性。因為,一旦防火牆設置出現變動,就有可能暴露這些漏洞,或者有人可能通過漏洞,利用一台DMZ伺服器攻擊其它伺服器。還記得尼姆達病毒嗎?它就是首次攻擊得逞后、利用一台Web伺服器發動其它攻擊的。
以外部需要訪問的Web或應用伺服器為例,你應該考慮與滲透測試人員共享這些應用的源代碼,如果測試涉及這些腳本或程序的話。沒有源代碼,很難測試ASP或CGI腳本,事先認定攻擊者根本不會看到源代碼是不明智的。Web伺服器軟體裡面的漏洞往往會把腳本和應用暴露在遠程攻擊者面前。如果能夠獲得應用的源代碼,則可以提高測試該應用的效率。畢竟,你出錢是為了讓滲透測試人員查找漏洞,而不是浪費他們的時間。
滲透測試旨在證明,網路防禦機制的運行與你認為的一樣良好。往往系統和網路管理員視審查人員或滲透人員為敵人,但實際上他們卻是朋友。到位的滲透測試可以證明你的防禦確實有效,或者查出問題,幫助你阻擋未來攻擊。出錢請自己知道的人來發現網路中的漏洞,總比讓自己不知道的人發現漏洞好得多。
滲透測試可以用來向第三方,譬如投資方或者你的管理人員提供網路安全狀況方面的具體證據。事實上,你知道網路中存在的漏洞可能已有一段時日,但無法說服管理人員分配必要資源以補救漏洞。光靠自己,網路或安全管理員的意見往往不會被董事會採納。如果外面的顧問贊同你的評估,或許會有奇迹出現。
有關滲透測試的合同或工作說明應該包括你從所得報告中想要獲得的各個方面。如果你請人進行有限的測試,得到的只是計算機生成的報告。而滲透測試的真正價值在於由報告所衍生出的分析。進行測試的一方會詳細介紹發現結果,並說明其重要性。在有的地方,測試人員還會提議採取何種補救方法,譬如更新伺服器、禁用網路服務、改變防火牆規則等等。
如今,大多數攻擊進行的是最基本的漏洞掃描,如果攻擊得逞,目標就岌岌可危。如果攻擊者企圖對你站點進行漏洞掃描,他就會獲得大量的防火牆日誌消息,而監控網路的任何入侵檢測系統(IDS)也會開始發送有關當前攻擊的警報。如果你還沒有試過,不妨利用漏洞掃描器結合IDS對網路來一番試驗。別忘了首先獲得對方的許可,因為,運行漏洞掃描器會使IDS引發警報。
滲透測試也許是你的網路防禦工具箱當中的重要武器之一。應該視之為各種安全審查的一部分,但要確保審查人員勝任這項工作。
實際上滲透測試並沒有嚴格的分類方式,即使在軟體開發生命周期中,也包含了滲透測試的環節,但根據實際應用,普遍認同的幾種分類方法如下:
1、黑箱測試
黑箱測試又被稱為所謂的“Zero-Knowledge Testing”,滲透者完全處於對系統一無所知的狀態,通常這類型測試,最初的信息獲取來自於DNS、Web、Email及各種公開對外的伺服器。
2、白盒測試
白盒測試與黑箱測試恰恰相反,測試者可以通過正常渠道向被測單位取得各種資料,包括網路拓撲、員工資料甚至網站或其它程序的代碼片斷,也能夠與單位的其它員工(銷售、程序員、管理者……)進行面對面的溝通。這類測試的目的是模擬企業內部僱員的越權操作。
3、隱秘測試
隱秘測試是對被測單位而言的,通常情況下,接受滲透測試的單位網路管理部門會收到通知:在某些時段進行測試。因此能夠監測網路中出現的變化。但隱秘測試則被測單位也僅有極少數人知曉測試的存在,因此能夠有效地檢驗單位中的信息安全事件監控、響應、恢復做得是否到位。
1、主機操作系統滲透
對Windows、Solaris、AIX、Linux、SCO、SGI等操作系統本身進行滲透測試。
2、資料庫系統滲透
對MS-SQL、Oracle、MySQL、Informix、Sybase、DB2、Access等資料庫應用系統進行滲透測試。
3、應用系統滲透
對滲透目標提供的各種應用,如ASP、CGI、JSP、PHP等組成的WWW應用進行滲透測試。
4、網路設備滲透
對各種防火牆、入侵檢測系統、網路設備進行滲透測試。