https://www.informationsecurity.com.tw/Seminar/2024_PaloAlto/
https://www.informationsecurity.com.tw/Seminar/2024_PaloAlto/

觀點

滲透測試流程剖析 時間不足是最大問題

2012 / 11 / 21
吳肯尼
滲透測試流程剖析  時間不足是最大問題

資訊安全就像空氣一樣,平常呼吸時沒什麼感覺,但沒空氣時才會發現他的重要性,而滲透測試(Penetration Test)就像是模擬試圖抽掉空氣的過程。

 

滲透測試應該是秘密進行的,由受測單位內部人員扮演惡意攻擊的駭客,進而測試系統安全性,因最終目的是滲透,所以這種攻擊比較不會發出警訊,且完全保密(當然需要高層的授權)。如果是外包給資安廠商做滲透測試,應與廠商溝通與設計好模擬情境,如:模擬外部攻擊、內部攻擊、技術性攻擊、非技術性攻擊(像是攻擊者可以利用社交工程的方式騙取資訊)。

 

長久以來,滲透測試並沒有標準定義,國外一些安全組織共同的說法是:通過模擬惡意駭客的攻擊方法,來評估網路系統安全的一種方法,另一個角度來說就是模擬網路上真實駭客所做的攻擊行為,嘗試達到成功入侵提權,竊取有效資料等相關任務。

 

由於網路普及,越來越多主機及服務24小時與網路相連,相對也給予駭客有較充裕的時間去刺探這些長時間暴露在網際網路上的主機,另外再加上存在於電腦中所提供及安裝的服務、軟體、硬體、韌體中的弱點,以及駭客針對目標的攻擊手法不停翻新,使得駭客在攻擊上更容易得逞,尤其企業單位、政府機關對外公開的服務系統,更是駭客喜歡的目標,這也使滲透測試變得更為重要。

 

滲透測試可以評估資訊系統不同層面的安全考量,當執行風險評鑑程序時,滲透測試可以評估資訊系統針對蓄意攻擊的防禦能力,進而作出風險評斷。簡單來說,執行滲透測試的效益如下:

1.      確保新開發的系統、軟體等安全品質;

2.      提供受測單位資安風險管控之參考依據;

3.      協助降低個別系統的脆弱性;

4.   從人性思考面找尋弱點並進行攻擊驗證,補足使用掃描工具之誤判情形。

滲透測試三大階段:攻擊前、進行攻擊、攻擊後

長期以來滲透測試被人們披上一層神祕的面紗,究其原因來說是因為在執行的過程中很多時候都是秘密進行的。滲透測試人員不僅能熟練地操作各種駭客工具,或是自行撰寫Script攻擊,往往還能使用不同獨到的角度,運用些「說破了就不值半毛錢」的方法,突破網路系統防禦的限制。

 

以下簡單介紹滲透測試的各個階段,以及可能會用到的一些工具,雖然,每個廠商或測試人員都有些屬於自己的做法,各個受測單位所需求的重點也不會相同,但是大致上來說,滲透測試不外乎三個階段:攻擊前、進行攻擊、攻擊後,各階段的任務皆不同。


【階段一】攻擊前  資訊蒐集最重要

在執行滲透攻擊前,最重要的是與客戶(即受測單位)面談,確認滲透攻擊的目標範圍,如此才能往下進行蒐集情報、找出漏洞弱點等動作。

 

1、情報蒐集:

在此階段需要採用各種可能的方法來蒐集被攻擊目標的所有訊息,包含所使用的社交網站、Google hacking技術、目標系統列舉踩點(亦即獲取目標主機相關安全狀態訊息,如同小偷在蒐集房子地址、逃跑路線、房門或窗戶位置等相關訊息)等相關技術。滲透測試人員很重要的一項技能就是對目標系統的探查能力,包括獲取行為模式、程序機制,透過逐步的深入探測,確定目標系統中實施了哪些安全防禦機制。舉例來說,對外開放的網路設置上常設置連線過濾機制,只允許封包接收發往特定的port,做網路流量安全管理,而一旦在白名單之外,對限定的port做連線訪問動作時,將會被加入黑名單並進行阻擋,所以對於這種機制的探測方式,通常會先由其他非白名單的IP來源做假性攻擊。

 

另外,google search也是很實用的情報蒐集方式,正所謂「成也google、敗也google」,只要下對語法用對方法,經常能找出很多意想不到的相關資訊,對於情報收集非常有用。整體來說,滲透測試人員蒐集訊息的方式有:

(1) 基本網路訊息

l  Ping目標網路獲取IPTTL等相關資訊;

l  Traceroute主機間各節點分析的相關結果;

l  Whois查詢網域名稱與IP位址的結果;

l  Netcraft獲取目標可能存在的Domain NameWeb、伺服器等相關訊息;

l  Curl取得web的基本資訊;

l  Nmap對目標進行port掃描並判斷系統類型;

l  使用網路搜尋引擎搜尋任何與攻擊目標相關的資訊;

l  使用FWtesterhping3等相關工具進行防火牆規則探測。

(2) 利用商業及免費的漏洞掃描軟體進行檢測

l  NessusFoundScan進行基本的弱點掃描;

l  WebInspectAppScanNiktoAcunetix等進行Web漏洞常見漏洞掃描。

(3) Web程序與資料庫應用分析

l  Paros proxyTamper DataFiddlerBurp SuiteWebscarabSpike Proxy

   等程序分析;

l  OscannerPangolin等資料庫列舉、注入、密碼测试;

l  手工檢測SQL Injection和常見漏洞。

 

2、標示威脅模組

這個階段主要任務是,使用上述情報蒐集過程所獲取的訊息,標示出目標系統上可能存在的安全漏洞與弱點。當然在此階段就要確定有效的攻擊方法,將客戶當作敵人般的看待,然後以攻擊者的視野、角度和思維來利用目標系統的弱點。


【階段二】進行滲透攻擊

 

一旦確定了可行的攻擊方法後,接下來要考慮的就是如何取得系統控制權限,所以此階段將綜合前面幾個環節中所獲取到的訊息,並從中分析哪些途徑比較可行。在整個滲透測試過程中,滲透攻擊階段是最具有魅力的環節,然而在實際過程當中常常沒有所預想的那麼「一帆風順」,常見的狀況都是「曲徑通幽」。舉例來說,受測單位前端若部屬了很多防護設備,只使用所謂的工具根本無法探勘出目標弱點,甚至連攻擊語法都會被過濾掉,若能手工測試出設備本身沒有被寫入的阻擋規則,進而閃避或繞過這些防護機制,就是所謂在曲徑通幽後的一帆風順。

 

以下簡單介紹說明在此階段的細項工作:

(1) 利用公開的或是私下查找到的漏洞進行攻擊,例如:http://www.exploit-db.com上就有非常多的攻擊程式碼以及手法可供參考;
(2) 使用Metasploit工具可以直接進行攻擊、自由獲取開發框架,這個環境為滲透測試、 shell code編寫和漏洞研究提供一個可靠平台,Metasploit集合了各平台上常見的溢位漏洞和流行的shell code,作為在滲透過成功不可忽視的一款工具軟體。
(3) 當然也有資安廠商專門在寫相關的滲透測試軟體公開出售,如MetasploitCORE IMPACT…等,它們可以使用在正常的安全漏洞掃描過程中所發現的安全漏洞大量進行持續性攻擊,這是常見並非常有效的攻擊手法,攻擊者可利用這種手法突破系統、進行系統內的各種injection注入等攻擊動作,或取得非經授權的指令進行權限使用,甚至於提權動作。當然這些有商業性質的滲透測試相關軟體,在價格上也並不便宜。
(4)在滲透攻擊當中經常要試著去破解密碼,就實務上經驗來說,遇到懶人密碼、弱密碼的狀態其實不少,滲透測試人員稍加猜測就能順利破解,或者也可以使用工具進行字典攻擊、暴力攻擊、混合攻擊等破解方式,常見的工具有John the Ripper、Pwdump、L0phtcrack、Nutcracker、Boson GetPass、wwwcrack…等。


【階段三】攻擊後 別忘留存記錄以免爭議

當利用各種途徑、方法、漏洞成功地進入目標主機之後,就會進入維持存取階段,通常會透過合法服務作掩護,或是安裝後門木馬程式(前提是需經客戶授權),但這點須多做到閃避防毒軟體等相關機制的偵測,以便於測試者能重複進入目標系統當中,以利維持存取。

這個階段與上個階段差別在於滲透進去後能再做到那些事情,換句話說,當滲透測試人員順利攻陷客戶的一些系統或是取得某些系統的部分管理權限,也就是這個階段的開始,此階段將以特定的服務系統作為目標,識別出關鍵的基礎設施,並找出客戶最具價值和嘗試進行安全保護的訊息與資產,當然此時需要投入更多時間來確定各種不同系統的用途,以及各系統中不同的使用者角色,才能找到理想答案。

 

舉例來說,若滲透目標是間大型軟體開發商,主要業務是開發與制定一些應用程式軟體,此階段的思維就要開始設想,如果在程式原始碼當中植入藏有後門的code,最終延伸攻陷到所有使用此軟體的客戶,這樣是否能夠大大損害滲透目標的品牌信譽呢?所以滲透測試人員需要像攻擊者那般去思考,但這些經驗與智慧也都是長期的以戰養戰而來,所以滲透測試需要「人」來執行,而非自動化的掃描工具!除了找出客戶關鍵的資訊資產,滲透測試人員還有兩件事要做:保存軌跡記錄與撰寫報告。

 

1、保存軌跡記錄

儘管滲透測試人員與惡意駭客所使用的攻擊方法可能相同,但他們的目標不一樣。惡意駭客出於惡意目的攻擊網路,他們要做的事情是破壞網站、獲取敏感資料,導致網路服務失效等相關惡意行為,而滲透測試人員的目的是評估企業網路安全狀態。因此,駭客可能會對目標網站花費非常長的時間做攻擊,甚至有可能以年為單位來計算,而滲透測試作業往往限制在有限的時間之內。

 

由於滲透測試的目標與惡意駭客的目標不同,為避免日後爭議,滲透測試公司應確保對其測試行為合理的軌跡追蹤,也就是要求滲透測試人員保留詳細的操作記錄,包含工作時間、攻擊類型、測試輸出及相關的螢幕擷圖等資訊,其目的有二:(1)在內部保留攻擊測試的軌跡追蹤記錄,以便於後期的報告撰寫;(2)如果測試期間發生被其他駭客攻擊的情況,軌跡追蹤記錄能夠清楚區隔滲透測試人員的操作動作與駭客的惡意攻擊行為。

 

2、撰寫報告

整個滲透測試作業進行到最後就是撰寫報告,真實駭客是不用撰寫報告的,所以這個階段其實是許多滲透測試人員較不喜歡的階段,報告內容應該包含:整理之前各個階段的細項結果產出、各個風險弱點的整理、圖表製作、修補建議、整體資安建議等相關顧問類語言。如果測試目標範圍較小的話,這階段作業會比較輕鬆,若是遇到範圍很大且漏洞很多的案子,熬夜賣肝趕製報告是常有的事情。



選擇滲透測試廠商的5大關鍵


在決定進行滲透測試時,選擇適宜的廠商相對就很重要,當然要考慮的因素也非常多,企業可參考以下五點因素做為評估標準:

1.      如果不希望聽到業務或是資安銷售團隊過分地吹噓(且實務常見到的狀況是業務做出不切實際的承諾),最好的方式是直接與滲透測試人員或團隊見面,面試滲透測試人員可以了解他們的技術水準、執行過的經驗、考過哪些證照、以及基本的知識水準。

2.      詢問測試廠商使用什麼工具及方法,僅使用掃描工具?或是會採用某些測試方法,如開放源碼安全測試方法手冊(OSSTMM, Open Source Security Testing Methodology Manual)OWASP或是自己內部的方法準則等。

3.      確認滲透測試是廠商的主要業務,還是在許多產品項目中提供的一項小小服務,如果只是多項服務中的一項,雖然也不是件壞事,但應該評估廠商會投入多少的人力資源在此項服務需求當中。

4.      請求廠商提供樣本範例報告,進一步確認其服務品質,要注意這些報告的內容不應該含有真實數據,不然該廠商要如何說服不會拿你們的報告作為開發其他潛在客戶的敲門磚。

5.      如果可能及可以的話,建立一個蜜罐(honeypot)來評估該測試廠商的能力。蜜罐是一個用於引誘駭客探查和漏洞利用的不安全伺服器,它同時監控和記錄駭客活動,通常是用於收集證據和迷惑潛在的攻擊者,在此也能夠用於評估滲透測試人員的技術水準。Hoenypot並不是一個新的概念,自從有網路以來,資訊安全研究專家就使用過不同型式的honeypot,而honeypot不像其他的入侵偵測系統(IDS)IDS產品有可能會產生不同程度的誤判/誤報,這是因為攻擊封包正好符合IDS所設攻擊特徵的緣故,但honeypot就不會有這種情形,honeypot採取將攻擊者所有行動都記錄下來,例如The Deception ToolkitCyberCop Sting、以及MantrapThe Deception Toolkit是一些腳本的集合,它可以模擬出一些常見的系統漏洞;CyberCop Sting Server,具有模仿Windows NTSolaris、以及 Cisco Router 等作業環境的能力;Mantrap則是將Solaris系統進行一些設置,建立起一些所謂的牢籠主機。

PT執行之中與時間賽跑

滲透測試是一項非常有挑戰性的工作,拿著客戶所支付的費用,但卻像犯罪者那樣去思考,使用所掌握的各種「游擊戰術」,在一個高度複雜的防禦網路中找出最薄弱的環節,進而執行致命一擊。然而,這畢竟只是理想狀況,就現實層面來說卻未必如此。

 

以目前較常遇到的滲透測試專案來說,很多都被包在大型專案當中,造成的結果是資安廠商們低價搶標大型專案,而滲透測試因為被包在專案內,所以能分配到的經費非常有限,且執行時程常被壓縮,尤其專案數量多時,時間將被壓縮得更緊湊,常常執行滲透測試的時間只有一個星期,或是更短,如果受測目標範圍不大,或許還沒有問題,但偏偏受測目標範圍經常非常地大,這樣的結果往往導致PT人員為了出報告而出報告,不諱言地是出一份長官愛看的報告。執行的內容細節往往品質非常低劣,流程變得非常精簡,甚至於掃描軟體掃一掃即產出報告給受測單位,若遇到比較用心的滲透測試人員當然會熬夜賣肝的測試,除了敬業態度之外,再加上血液中存在的駭客熱血因子,使得他們願意盡最大努力,在測試期間內能做到多少算多少,但當這樣已成常態的執行,滲透測試人員往往會失去了動力,最後受傷害的還是受測廠商!這是目前筆者所遇到與深深看到的常態。

 

鼓其勇,練其力,心要決、耐、細,往你欲之地,取你望之物,所謂之滲透之道也!PT人員艱辛共勉之。

 

本文作者現任職於PT服務廠商。如有任何問題,如您對本文有任何感想,歡迎來信交流:isnews@newera.messefrankfurt.com