天天看點

各種網絡環境滲透測試簡述

滲透測試 (penetration test)并沒有一個标準的定義,國外一些安全組織達成共識的通用說法是:滲透測試是通過模拟惡意黑客的攻擊方法,來評估計算機網絡系統安全的一種評估方法。這個過程包括對系統的任何弱點、技術缺陷或漏洞的主動分析,這個分析是從一個攻擊者可能存在的位置來進行的,并且從這個位置有條件主動利用安全漏洞。

滲透測試還具有的兩個顯著特點是:

  滲透測試是一個漸進的并且逐漸深入的過程。

  滲透測試是選擇不影響業務系統正常運作的攻擊方法進行的測試。

  滲透測試完全模拟黑客可能使用的攻擊技術和漏洞發現技術,對目标系統的安全做深入的探測,發現系統最脆弱的環節,能直覺的讓管理者知道自己網絡所面臨的問題。是以滲透測試是安全評估的方法之一。

  TIPS:安全評估通常包括工具評估、人工評估、顧問訪談、問卷調查、應用評估、管理評估、網絡架構評估、滲透測試等。

  滲透測試與其他評估方法的差別:

  通常評估方法是根據已知資訊資産或其他被評估對象,去發現所有相關的安全問題。滲透測試是根據已知可利用的安全漏洞,去發現是否存在相應的資訊資産,通常評估方法對評估結果更具有全面性,滲透測試則更注重安全漏洞的嚴重性。

  滲透測試一方面可以從攻擊者的角度,檢驗業務系統的安全防護措施是否有效,各項安全政策是否得到貫徹落實;另一方面可以将潛在的安全風險以真實事件的方式凸現出來,進而有助于提高相關人員對安全問題的認識水準。滲透測試結束後,立即進行安全加強,解決測試發現的安全問題,進而有效地防止真實安全事件的發生。

二、滲透測試分類

根據滲透方法和視角分類,滲透測試可以分為——

A、黑箱測試“zero-knowledge testing”/(黑盒子Black Box)

  滲透者完全處于對系統一無所知的狀态。除了被測試目标的已知公開資訊外,不提供任何其他資訊。一般隻從組織的外部進行滲透測試。

  通常,這種類型的測試,最初的資訊擷取來自DNS、Web、Email及各種公開對外的伺服器。

B、白盒測試

  測試者可以通過正常管道向被測機關取得各種資料,包括網絡拓撲、員工資料甚至網站或其他程式的代碼片段,也能與機關其他員工進行面對面的溝通。通常包括從組織外部和從組織内部兩種地點進行滲透測試。這類測試的目的是模拟企業内部雇員的越權操作。

C、灰盒子(Gray Box)

  介于以上兩者之間

  較為隐秘的進行測試。通常,接受滲透測試的機關網絡管理部門會收到通知:在某些時間段進行測試。是以能夠檢測網絡中出現的變化。

  但在隐秘測試中,被測機關也僅有極少數人知曉測試的存在,是以能夠有效地檢驗機關中的資訊安全事件監控、響應、恢複做得是否到位。

根據滲透目标分類,滲透測試又可以分為——

1)主機作業系統滲透

  windows、solaris、aix、linux、sco、sgi

2)資料庫系統滲透

  mssql、oracle、mysql、informix、sybase

3)應用系統滲透

  滲透目标提供的各種應用,如asp、cgi、jsp、php等組成的www應用

4)網絡裝置滲透

  各種防火牆、入侵檢測系統、網絡裝置

三、滲透測試過程

  資訊收集、分析→制訂滲透方案并實施→前段資訊彙總、分析→提升權限、内部滲透→滲透結果總結→輸出滲透測試報告→提出安全解決建議

TIPS:

時間選擇

  為減輕滲透測試對網絡和主機的影響,滲透測試時間盡量安排在業務量不大的時段和晚上

政策選擇

  為防止滲透測試造成網絡和主機的業務中斷,在滲透測試中不使用含有拒絕服務的測試政策

  對于不能接受任何可能風險的主機系統,如銀行票據核查系統、電力排程系統等,可選擇如下保守政策:

  複制一份目标環境,包括硬體平台、作業系統、資料庫管理系統、應用軟體等。對目标的副本進行滲透測試

授權滲透測試的監測手段

  在評估過程中,由于滲透測試的特殊性,使用者可以要求對整體測試流程進行監控

  測試方自控:由滲透測試方對本次滲透測試過程中的三方面資料進行完整記錄:操作、響應、分析,最終形成完整有效的滲透測試報告送出給使用者

  使用者監控:用于監控有4種形式

  全程監控:采用類似ethereal的嗅探軟體進行全程抓包嗅探

  擇要監控:對掃描過程不進行錄制,僅僅在安全工程師分析資料後,準備發起滲透前才開啟軟體進行嗅探

  主機監控:僅監控受測主機的存活狀态,避免意外情況發生

  指定攻擊源:使用者指定由特定攻擊源位址進行攻擊,該源位址的主機由使用者進行程序、網絡連接配接、資料傳輸等多方監控

制定實施方案

  實施方案應當由測試方與客戶之間進行溝通協商。一開始測試方提供一份簡單的問卷調查了解客戶對測試的基本接收情況。内容包括但不限于如下:

  目标系統介紹、重點保護對象及特性。

  是否允許資料破壞?

  是否允許阻斷業務正常運作?

  測試之前是否應當知會相關部門接口人?

  接入方式?外網和内網?

  測試是發現問題就算成功,還是盡可能的發現多的問題?

  滲透過程是否需要考慮社會工程?

  在得到客戶回報後,由測試方書寫實施方案初稿并送出給客戶,由客戶進行稽核。在稽核完成後,客戶應當對測試方進行書面委托授權。這裡,兩部分文檔分别應當包含實施方案部分和書面委托授權部分:

下面串聯講一講各知識點——

1)不同網段/vlan之間的滲透

  從某内/外部網段,嘗試對另一網段/vlan進行滲透。

  通常可能用到的技術包括:對網絡裝置的遠端攻擊;對防火牆的遠端攻擊或規則探測、規避嘗試。

  資訊的收集和分析伴随着每一個滲透測試步驟,每一個步驟又有三個組成部分:操作、響應和結果分析。

2)端口掃描

  通過對目标位址的tcp/udp端口掃描,确定其所開放的服務的數量和類型,這是所有滲透測試的基礎。

  通過端口掃描,可以基本确定一個系統的基本資訊,結合安全工程師的經驗可以确定其可能存在,以及被利用的安全弱點,為進行深層次的滲透提供依據。

3)遠端溢出

  這是目前出現的頻率最高、威脅最嚴重,同時又是最容易實作的一種滲透方法,一個具有一般網絡知識的入侵者就可以在很短的時間内利用現成的工具實作遠端溢出攻擊。

  對于防火牆内的系統同樣存在這樣的風險,隻要對跨接防火牆内外的一台主機攻擊成功,那麼通過這台主機對防火牆内的主機進行攻擊就易如反掌。

4)密碼猜測

  密碼猜測也是一種出現機率很高的風險,幾乎不需要任何攻擊工具,利用一個簡單的暴力攻擊程式和一個比較完善的字典,就可以猜測密碼。

  對一個系統賬号的猜測通常包括兩個方面:首先是對使用者名的猜測,其次是對密碼的猜測。

5)本地溢出

  指在擁有了一個普通使用者的賬号之後,通過一段特殊的指令代碼獲得管理者權限的方法。

  前提:首先要獲得一個普通使用者密碼。也就是說由于導緻本地溢出的一個關鍵條件是設定不當的密碼政策。多年的實踐證明,在經過前期的密碼猜測階段擷取的普通賬号登入系統之後,對系統實施本地溢出攻擊,就能擷取不進行主動安全防禦的系統的控制管理權限。

6)腳本及應用測試

  專門針對web及資料庫伺服器進行。據最新技術統計,腳本安全弱點為目前web系統,尤其是存在動态内容的web系統比較嚴重的 安全弱點之一。

  利用腳本相關弱點輕則可以擷取系統其他目錄的通路權限,重則将有可能取得系統的控制權限。是以對于含有動态頁面的web、資料庫等系統,web腳本及應用測試将是必不可少的一個環節。

  在web腳本及應用測試中,可能需要檢查的部份包括:

  ◆檢查應用系統架構,防止使用者繞過系統直接修改資料庫;

  ◆檢查身份認證子產品,用以防止非法使用者繞過身份認證;

  ◆檢查資料庫接口子產品,用以防止使用者擷取系統權限;

  ◆檢查檔案接口子產品,防止使用者擷取系統檔案;

  ◆檢查其他安全威脅;

7)無線測試

  中國的無線網絡還處于建設時期,但是由于無線網絡的部署簡易,在一些大城市的普及率已經很高了。北京和上海的商務區至少80%的地方都可以找到接入點。

  通過對無線網絡的測試,可以判斷企業區域網路安全性,已經成為越來越重要的滲透測試環節。

  除了上述的測試手段外,還有一些可能會在滲透測試過程中使用的技術,包括:社交工程學、拒絕服務攻擊,以及中間人攻擊。

8)資訊收集

  網絡資訊收集:在這一部還不會直接對被測目标進行掃描,應當先從網絡上搜尋一些相關資訊,包括Google Hacking, Whois查詢, DNS等資訊(如果考慮進行社會工程學的話,這裡還可以相應從郵件清單/新聞討論區中擷取目标系統中一些邊緣資訊如内部員工帳号組成,身份識别方式,郵件聯系 位址等)。

  目标系統資訊收集:通過上面一步,我們應當可以簡單的描繪出目标系統的網絡結構,如公司網絡所在區域,子公司IP位址分布,×××接入位址等。這裡特别要注意一些比較偏門的 HOST名稱位址,如一些backup開頭或者temp開關的域名很可能就是一台備份伺服器,其安全性很可能做的不夠。從擷取的位址清單中進行系統判斷,了解其組織架構及作業系統使用情況。最常用的方法的是目标所有IP網段掃描。

  端口/服務資訊收集:這一部分已經可以開始直接的掃描操作

9)漏洞掃描

  這一步主要針對具體系統目标進行。如通過第一步的資訊收集,已經得到了目标系統的IP位址分布及對應的域名,并且我們已經通過一些分析過濾出少許的幾個攻擊目标,這時,我們就可以針對它們進行有針對性的漏洞掃描。這裡有幾個方面可以進行:

  針對系統層面的工具有:ISS, Nessus, SSS, Retina, 天鏡, 極光

  針對WEB應用層面的工具有:AppScan, Acunetix Web Vulnerability Scanner, WebInspect, Nstalker

  針對資料庫的工具有:ShadowDatabaseScanner, NGSSQuirreL

  針對VOIP方面的工具有:PROTOS c07 sip(在測試中直接用這個工具轟等于找死)以及c07 h225, Sivus, sipsak等。

  事實上,每個滲透測試團隊或多或少都會有自己的測試工具包,在漏洞掃描這一塊針對具體應用的工具也比較個性化。

10)漏洞利用

  有時候,通過服務/應用掃描後,我們可以跳過漏洞掃描部分,直接到漏洞利用。因為很多情況下我們根據目标服務/應用的版本就可以到一些安全網站上擷取針對該目标系統的漏洞利用代碼,如milw0rm, securityfocus,packetstormsecurity等網站,上面都對應有搜尋子產品。實在沒有,我們也可以嘗試在GOOGLE上搜尋“應用名稱 exploit”、“應用名稱 vulnerability”等關鍵字。

  針對系統方面:metasploit

  針對資料庫方面:xoxo

  針對Web伺服器方面的工具有:xoxo,明小子

11)Web安全測試

  Information Gathering:也就是一般的資訊洩漏,包括異常情況下的路徑洩漏、檔案歸檔查找等

  Business logic testing:業務邏輯處理攻擊,很多情況下用于進行業務繞過或者欺騙等等

  Authentication Testing:有無驗證碼、有無次數限制等,總之就是看能不能暴力破解或者說容不容易通過認證,比較直接的就是“預設密碼”或者弱密碼了

  Session Management Testing:會話管理攻擊在COOKIE攜帶認證資訊時最有效

  Data Validation Testing:資料驗證最好了解了,就是SQL Injection和Cross Site Script等等

12)Web測試的工具

  目前網上能夠找到許多能夠用于進行Web測試的工具,根據不同的功能分主要有:

  1.枚舉(Enumeration): DirBuster, http-dir-enum, wget

  2.基于代理測試類工具:paros, webscarab, Burp Suite

  針對WebService測試的部分有一些尚不是很成熟的工具,如:wsbang,wschess,wsmap,wsdigger,wsfuzzer

  這一部分值得一提的是,很多滲透測試團隊都有着自己的測試工具甚至是0DAY代碼,最常見的是SQL注入工具,現網開發的注入工具(如NBSI等) 目前都是針對中小企業或者是個人站點/資料庫進行的,針對大型目标系統使用的一些相對比較偏門的資料庫系統(如INFORMIX,DB2)等,基本上還不涉及或者說還不夠深入。這時各滲透測試團隊就開發了滿足自身使用習慣的測試工具。

  針對無線環境的攻擊有:WifiZoo

13)權限提升

  在前面的一些工作中,你或許已經得到了一些控制權限,但是對于進一步攻擊來說卻還是不夠。例如:你可能很容易的能夠擷取Oracle資料庫的通路權 限,或者是得到了UNIX(AIX,HP-UX,SUNOS)的一個基本賬号權限,但是當你想進行進一步的滲透測試的時候問題就來了。你發現你沒有足夠的 權限打開一些密碼存儲檔案、你沒有辦法安裝一個SNIFFER、你甚至沒有權限執行一些很基本的指令。這時候你自然而然的就會想到權限提升這個途徑了。

  目前一些企業對于更新檔管理是存在很大一部分問題的,他們可能壓根就沒有想過對一些伺服器或者應用進行更新檔更新,或者是延時更新。這時候就是滲透測試人員的好機會了。經驗之談:有一般權限的Oracle賬号或者AIX賬号基本上等于root,因為這就是現實生活

14)密碼破解

  有時候,目标系統任何方面的配置都是無懈可擊的,但是并不是說就完全沒辦法進入。很多情況下,往往破壞力最大的攻擊起源于最小的弱點,例如弱密碼、目 錄清單、SQL注入繞過論證等等。是以說,對于一些專門的安全技術研究人員來說,這一塊意義不大,但是對于一個滲透測試工程師來說,這一步驟是有必要而且絕大部分情況下是必須的。

  目前網絡中有一種資源被利用的很廣泛,那就是rainbow table技術,說白了也就是一個HASH對應表,有一些網站提供了該種服務,對外宣稱存儲空間大于多少G,像rainbowcrack更是對外宣稱其資料量已經大于1.3T 囧

15)日志清除

  這裡不展開講。

進一步滲透

  攻入了DMZ區一般情況下我們也不會擷取多少用價值的資訊。為了進一步鞏固戰果,我們需要進行進一步的内網滲透。到這一步就真的算是無所不用其及。 最常用且最有效的方式就是Sniff抓包(可以加上ARP欺騙)。當然,最簡單的你可以翻翻已入侵機器上的一些檔案,很可能就包含了你需要的一些連接配接帳 号。比如說你入侵了一台Web伺服器,那麼絕大部分情況下你可以在頁面的代碼或者某個配置檔案中找到連接配接資料庫的帳号。你也可以打開一些日志檔案看一看。

  除此之外,你可以直接回到第二步漏洞掃描來進行。

四、生成報告

  生成的報告中應當包含:

  1.薄弱點清單清單(按照嚴重等級排序)

  2.薄弱點較長的描述(利用方法)

  3.解決方法建議

  4.參與人員/測試時間/内網/外網

  5、測試過程中的風險及規避

  滲透測試利用網絡安全掃描器、專用安全測試工具和富有經驗的安全工程師的人工經驗對網絡中的核心伺服器及重要的網絡裝置,包括伺服器、網絡裝置、防火牆等進行非破壞性質的模拟黑客攻擊,目的是侵入系統并擷取機密資訊并将入侵的過程和細節産生報告給使用者。

  滲透測試和工具掃描可以很好的互相補充。工具掃描具有很好的效率和速度,但是存在一定的誤報率和漏報率,并且不能發現高層次、複雜、并且互相關聯的安全 問題;滲透測試需要投入的人力資源較大、對測試者的專業技能要求很高(滲透測試報告的價值直接依賴于測試者的專業技能),但是非常準确,可以發現邏輯性更強、更深層次的弱點。

  當具備滲透測試攻擊經驗的人們站到系統管理者的角度,要保障一個大網的安全時,我們會發現,需要關注的問題是完全不同的:從攻方的視角看,是“攻其一點,不及其餘”,隻要找到一點漏洞,就有可能撕開整條戰線;但從守方的視角看,卻發現往往“千裡之堤,毀于蟻穴”。是以,需要有好的理論指引,從技術到管理都注重安全,才能使網絡固若金湯。