滲透測試:確保計劃成功的10個秘訣
原創【51CTO.COM 獨家翻譯】為什么你要進行滲透測試?無論是借助內部團隊、外部專家還是結合兩者,你是單單滿足監管要求或審計要求?還是其實希望增強企業安全?
我們請教了滲透測試方面的幾位專家,指導你如何改進計劃,以便付出去的時間、金錢和努力取得最大成效。如果你求助于外部專家,他們給出的建議會讓你明白對顧問應該有怎樣的期望和要求。下面這10個秘訣表明你需要明白滲透測試的目的和重點,制定高效的測試策略,有效地利用你的人員,以及最有效地利用滲透測試的結果,以便補救問題、改進流程以及不斷改善企業的安全狀況。
第1個秘訣:確定目的。
滲透測試(其實所有信息安全活動)的目的是保護企業。說白了就是,你充當攻擊者的角色,查找安全漏洞,并且鉆漏洞的空子,從而查明企業面臨的風險,并且根據測試結果,給出相應建議,以增強安全。攻擊者在試圖竊取你的數據——他們采用的技術只是達到目的的手段。滲透測試也是如此:目的倒不是說你利用很酷的技術活來鉆漏洞的空子,而是發現企業在哪個環節面臨最大的風險。
InGuardians公司的創始人兼高級安全顧問Ed Skoudis說:“要是你無法從我公司的角度來進行表述,那你無法給我帶來價值。不要告訴我你鉆了某個漏洞的空子,獲得了某個硬件設備的外殼程序,卻不告訴我這對我公司來說意味著什么。”
如果明白了這個道理,那么從更加戰術性的角度來看,滲透測試是個好方法,可以確定你的安全政策、控制措施和技術的實際效果有多好。貴公司把許多錢投入到安全產品上,給系統打補丁,以及確保端點安全等方面。作為滲透測試人員,你是在模仿攻擊者,試圖繞過或突破安全控制。
Core Security公司的創始人兼安全咨詢服務主管Alberto Solino說:“你是想對公司好好評估一番,看看錢有沒有花在刀口上。”
目的不應該是僅僅為滲透測試弄一份復選框,羅列相關內容,以滿足合規要求,比如支付卡行業的數據安全標準(PCI DSS)。滲透測試的目的應該不僅僅是查找漏洞(漏洞掃描應該是滲透測試計劃的一部分,但代替不了滲透測試)。除非滲透測試是發現、利用和糾正安全漏洞的一項可持續計劃的一部分,否則就算你投入了財力和精力,換來的充其量還是表示通過的那個勾號;最糟糕的情況是,通不過目光敏銳的評估人員的審計。
第2個秘訣:關注數據。
無論你在進行內部測試,聘請外部顧問,還是結合兩者,企業用于滲透測試的預算和資源都很有限。你做不到針對包括成百上千個設備的IT基礎設施進行滲透測試,不過滲透測試人員常常會被要求試著攻擊一大段IP地址上的眾多設備。結果進行的很可能是最草率的測試方法,幾乎沒有什么作用。你別指望能在合理的時間段里,以合理的成本,對數量非常多的設備進行漏洞掃描、補救漏洞。
Verizon安全解決方案公司的全球產品經理Omar Khawaja說:“在許多情況下,客戶有成千上萬個IP地址,希望我們對這么多地址進行滲透測試。我們可以運行漏洞測試,看看什么部分最脆弱,可是這對貴企業來說可能不是最重要的。”
退一步問一問:“我要保護的是什么?”哪些關鍵數據面臨風險:是信用卡數據、病人信息、客戶的個人身份信息、商業計劃還是知識產權?這些信息在什么地方?你甚至知道含有敏感數據的每個數據庫、每個文件存儲庫和每個日志存儲區嗎?你也許不知道,但攻擊者很可能找得到。
所以,第一個關鍵的步驟是縮小滲透測試的范圍,重點關注數據發現:確定哪些敏感數據面臨風險,它們在哪里。接下來的任務是,扮演攻擊者的角色,搞清楚如何找出漏洞。
Core Security公司的Solino說:“目的是模仿真正的攻擊者在一定時間段內會對客戶搞什么破壞,而不是找出所有可能存在的問題。”#p#
第3個秘訣:與業務負責人交流。
要與業務部門的人合作。他們知道什么面臨危險,知道哪些數據很關鍵、哪些應用程序在創建和聯系這些數據。他們至少知道數據放在哪些比較明顯的地方。他們還會告訴你哪些應用程序必須保持正常運行。
只有這樣,你才會基本上了解與某些應用程序有關的威脅級別,以及風險等式中很重要的數據和資產具有的價值。
這個過程的一個重要方面是,與懂得應用程序業務邏輯的人合作。知道應用程序本該做什么、本該如何運行,可以幫你找到應用程序的漏洞,并鉆空子。
InGuardians公司的Skoudis說:“先確定范圍,包括關鍵的信息資產和業務交易處理。然后與滲透測試團隊和管理人員開頭腦風暴會。”
Skoudis還建議要求管理人員提出最壞情況的場景,“要是有人闖入了企業,可能發生的最糟糕事情是什么?”這種演練有助于查明“真正的寶貴數據”在哪里,從而確定項目范圍。
第4個秘訣:根據風險高低,進行測試。
進行哪種類型的測試,應取決于數據/應用程序的價值。對于低風險資產,定期的漏洞掃描無異于經濟高效地利用資源。中等風險的資產可能需要結合漏洞掃描和手動的漏洞檢查。至于高風險資產,應進行滲透測試,尋找可利用的漏洞。
比如說,一所大型大學的安全主管說,他們已開始進行滲透測試,以滿足PCI DSS的要求。一旦這項計劃落實到位,就成了用于測試潛在攻擊者潛入大學系統的能力的典范。該大學將數據分為公共數據、內部數據、敏感數據和高度敏感數據這幾類。
他說:“對于高度敏感的信息,我們進行了滲透測試,遵守幾乎與PCI一樣的準則。我們在此基礎上深入了一步,根據一些具體的標準和一些主觀判斷,看看要對系統進行哪種級別的滲透測試——如果需要滲透測試的話。”
比如說,對于風險比較低的信息,該大學將測試隨機抽選的系統及/或應用程序,具體要看時間和預算的緊張程度。由于校園網絡上有幾千個設備,即便對它們都進行低級掃描也是行不通的。
這名安全主管說:“你可以測試有明確所有者和系統管理員的業務系統。但是如果你有3000臺Wii連接到網絡上,你不應該掃描那些設備、弄清楚它們分別屬于誰。”#p#
第5個秘訣:了解攻擊者的概況。
你的滲透測試人員在想法和行為上都要與真正的攻擊者無異。但攻擊者不屬于好人這一類。要了解潛在攻擊者的概況。
外部攻擊者對貴公司可能所知甚少,可能就知道一些IP地址。但他們可能是前任員工,或者效力于貴公司的合作伙伴或服務提供商,所以對你網絡的內部情況相當了解。內部攻擊者可能是擁有訪問和授權特權的系統管理員或數據庫管理員,知道關鍵數據在什么地方。
了解攻擊者概況時要考慮的一個因素是動機。攻擊者覬覦的是可以變成現金的信用卡號碼和個人身份信息?還是可以賣給競爭對手或獲得商業優勢的知識產權?攻擊者想破壞你的Web應用程序,可能出于政治目的或競爭目的。他可能是怒氣沖沖的前任員工,想“對貴公司進行報復”。
應該與業務負責人合作,幫助了解這些概況,打探哪些類型的潛在攻擊者是他們感到最擔心的。
概況可以縮小滲透測試的關注范圍;測試內容會不一樣,具體取決于每一種攻擊者概況。
Core Security公司的Solino說:“我們基本了解了某個攻擊者會對目標搞什么破壞,對此我們分得很清楚。針對每一種概況,我們獲得滲透測試的結果,然后再了解另一種概況。”
第6個秘訣:掌握的信息越多越好。
無論是實際攻擊,還是滲透測試,收集信息都是整個過程的一個部分,旨在查找諸設備、操作系統、應用程序和數據庫等。你對某個目標及與它連接的系統了解越多,潛入進去的可能性就越大。
每一步都可能會得到有價值的信息,以便你攻擊另一個資產,直到最終進入你瞄準的數據庫和文件共享區等目標。獲得的信息讓你可以縮小搜索可利用漏洞的范圍。通常可以使用自動化的掃描和繪圖工具,來進行這種偵察;但你也可以使用社會工程學方法,比如在電話一頭冒充技術支持人員或承包商,收集有價值的信息。
Verizon公司的Khawaja說:“我們越來越多地開始采用社會工程學方法。這實際上是一種偵察手段(在客戶許可的情況下進行),讓我們得以在環境中找到可以幫助我們潛入進去的每個薄弱環節。”
多階段的滲透測試通常是重復進行偵察、評估漏洞和利用漏洞,每一步都為你提供更深入地滲透到網絡的信息。#p#
第7個秘訣:考慮所有攻擊途徑。
攻擊者能利用而且會利用IT基礎設施不同方面的漏洞,或單槍匹馬,或合伙行動(后者更常見),以便獲得他們尋找的數據。
全面深入的滲透測試會根據攻擊者的最終目的,而不是根據每個攻擊途徑的脆弱性,逐一測試所有這些潛在的攻擊途徑。
Solino說:“要是幾年前,我們會進行網絡滲透測試、應用滲透測試和無線滲透測試;后來我們退一步說‘這么做毫無意義’。壞人才不說‘我只能通過網絡闖入到系統’。”
成功的滲透測試與真實的攻擊一樣,可能會用到許多途徑,涉及好多步驟,直到發現有空子可鉆的目標。一臺打印服務器似乎不是特別值得關注,但它可能使用與含有信用卡資料的數據庫同樣的管理員登錄信息。
InGuardians公司的Skoudis說:“滲透測試人員找到漏洞后鉆空子,然后從這臺機器跳轉到另一臺機器,再跳轉到下一臺機器。”
對Web應用程序發動攻擊后可能鉆不了空子,但得到的信息有助于利用網絡上其他資產的漏洞。或者,攻擊者可能會獲得沒有很高權限,但可以訪問內部網絡的員工方面的信息,然后以此作為跳板。
所以,某個關鍵資源也許無法直接下手,但可能會因其他系統來受到危及。
Khawaja表示,比如說,Verizon公司的滲透測試人員無法直接闖入可以訪問敏感數據庫的Web服務器。如果測試人員的目光局限于測試這臺服務器上的Web應用程序,那么得出的結論會是:數據是安全的。但如果站在以數據為中心的角度,他們會發現與這臺Web服務器連接的第二臺Web服務器有一個重大漏洞,攻擊者可以利用該漏洞來訪問第一臺Web服務器,進而訪問那個敏感數據庫。
他說:“只要與我們在攻擊的網段沒有隔離開來的系統,我們都關注。有沒有任何網絡控制措施來防止攻擊者從一個易受攻擊的低價值系統跳轉到一個比較關鍵的系統?”
話雖如此,還是有必要針對特定的攻擊途徑進行測試。比如說,一家公司可能特別擔心無線安全,因為它知道之前自己在這方面有些松懈,或者可能最近安裝或升級了無線局域網基礎設施。但是就算你確信某一個途徑很安全——比如說,如果無線網絡與信用卡數據庫隔離開來,也不要太肯定。因為,攻擊途徑可能錯綜復雜。
第8個秘訣:確定交戰規則。
滲透測試模擬攻擊行為,但它不是一種攻擊。無論你在內部進行測試,還是交由外部顧問測試,都需要制定規則,確定什么可以做,什么不可以做,什么時候做,誰需要知道內情。
后者取決于你在進行白盒測試(white box testing),還是黑盒測試(black box testing。若是前一種情況,可能要承認這一點:公司(或者某個部門或業務單位)的安全計劃需要大量工作,而且滲透測試是各有關方都知道的公開過程。
另一方面,黑盒測試顯得比較秘密,測試起來更像是真正的攻擊——只有參與測試的人知道內情,外人完全不知道。你要確定公司的員工多稱職、流程及其支持系統的效果有多好。
Verizon公司的Khawaja說:“無論是運營中心、調查響應團隊還是保安人員,每個人都要裝作滲透測試的那天是辦公室的平常一天。”
許多公司通常會先進行白盒測試,了解要解決的安全問題。隨后,黑盒測試將有助于確定最初發現的漏洞是不是得到了有效補救。比如說,有時首席安全官不但需要知道關鍵系統有多脆弱,還需要了解下屬在檢測和響應攻擊方面的能力有多強。
不管怎樣,要把情況告知某些關鍵的人,避免出現可能影響業務或破壞測試的問題。InGuardians公司的Skoudis表示,目標環境中負責變更控制流程的人當中至少一人要了解內情。比如說,按照交戰規則(rules of engagement),公司可以允許滲透測試人員將軟件安裝到目標設備上,進行更深入的跳轉測試,但至少要告知那個人,確保測試人員不會因為從路由器的訪問控制列表(ACL)刪掉IP地址,或運用防火墻規則而遭到阻止。
在白盒測試和黑盒測試這兩種場景下,Skoudis建議每天與測試的相關人員開簡會,讓他們知道測試人員在做什么。比如說,交戰規則可能允許滲透測試人員利用漏洞,但開簡會能起到提醒作用,好讓大家心里有數。
他說:“開簡會起到了溝通作用。它表明滲透測試人員不是外面‘來抓我’的一幫壞人。目的就是做到透明、公開。”
交戰規則還可能限定哪些系統的漏洞可以利用、哪些不可以,比如客戶機;或者限定哪些攻擊手法可以用、哪些不可以用,比如社會工程學。#p#
第9個秘訣:報告測試結果,并衡量進度。
滲透測試的目的是為了改善安全狀況,所以如果你在進行內部測試,測試報告應該會提供實用而具體的信息,以便你付諸實際行動。
InGuardians公司的Skoudis說:“目的是有助于增強安全性,以便管理人員做決定來改進業務,并且幫助運營團隊增強安全性。”
你應該出示一份測試摘要,不過報告重點應包括詳細描述這些方面的內容:發現的漏洞,如何利用這些漏洞,以及萬一真的發生攻擊,哪些資產面臨風險。詳細介紹用來滲透的每個步驟、被利用的每個漏洞,最重要的可能是所有攻擊途徑。
Core Security公司的Solino說:“找出攻擊途徑的意義在于,可以通過破壞途徑來解決具體問題。”
建議措施一定要非常具體。如果需要改變架構,還要附上圖表。解釋如何證實解決方法已落實到位(可以用工具來衡量)。在涉及多個系統的情況下,還要解釋如何批量部署解決方法,盡可能使用組策略對象(GPO)。
確保每個建議的補救措施都附有注意事項:先全面深入地測試解決方法,之后才可落實到生產環境中。因為企業的IT基礎設施可能非常復雜。
Skoudis說:“這是個大問題。因為你不知道所有細微之處;你不應該破壞正常生產。”
滲透測試不應該是一次性的演練,應該對比連續幾次測試的結果。如果你在進行內部測試,就要把變化部分放在一起,評估你的人員在如何解決問題。要是最近一兩次測試發現的問題依然沒有得到解決,這表明貴企業可能有問題。也許是軟件補丁計劃沒有起到應有的效果,也許是開發人員沒有經過編寫安全代碼方面的相應培訓。
上面提到的那位大學安全主管說:“我們尋找的是趨勢。就像你對待審計報告那樣。要是測試發現的是同樣一些漏洞,這表明可能存在比較嚴重的問題。”
第10個秘訣:決定誰是滲透測試人員。
決定要不要由內部的工作人員進行滲透測試,這得看貴公司的規模、竭力保護的信息具有的價值,以及想把內部資源投入到哪些方面。有些公司在安全部門下面可能還設有專門的滲透測試團隊或小組。內部團隊更有條件進行定期測試。要是貴公司規模龐大,組織結構分散,應制定相應機制,倡導可以共享信息的環境。
Verizon公司的Khawaja說:“如果你的內部團隊能夠共享信息,就要確保他們有一個強大的知識庫,并依托成熟的知識管理系統。你要確保你在比利時的部門遭到的攻擊不會出現在巴西的部門。”
即使你進行一些內部測試,也有充足的理由需要聘請顧問進行至少一部分測試。有些法規要求必須由外部公司進行滲透測試;還要考慮到這點:內部人員可能非常了解目標系統,而且測試結果關系到他們的切身利益。所以,除合規要求之外,定期從外面請顧問來測試是個好想法。
出于同樣的原因,如果你真從外面聘請測試顧問,要記得不時更換廠商,就像每過幾年要更換審計人員那樣。
那位大學安全主管說:“如果從外面請人來,測試結果就更讓人放心了。因為不存在什么利益沖突。”
至于你的內部團隊,要找既知識面廣、又有好奇心的員工。
Core Security公司的Solino表示,有望成為滲透測試人員的優秀培訓對象要深入了解各種網絡和應用協議,這是基礎。他通常注重好奇心和黑客的心理素質。
“既要有IT知識,還要具備不相信系統是安全的態度,主張‘大膽試一試!’’。”
Skoudis說:“滲透測試是門藝術。雖說有一些工具和方法,但你在尋找目標系統和應用程序存在的問題時一定要有創意、有想法。”
來源:http://www.csoonline.com/article/636040/penetration-tests-10-tips-for-a-successful-program
【51CTO.com獨家譯稿,非經授權謝絕轉載!合作媒體轉載請注明原文出處及出處!】
【編輯推薦】