發新話題

[分享] 入侵檢測系統IDS實戰 全面問題解答分析

入侵檢測系統IDS實戰 全面問題解答分析

【編者按】
  在網路安全領域,隨著駭客應用技術的不斷“傻瓜化”,入侵檢測系統IDS的地位正在逐漸增加。一個網路中,只有有效實施了IDS,才能敏銳地察覺攻擊者的侵犯行為,才能防患於未然!本文對IDS的概念、行為及策略等方面內容以問答形式進行全面介紹,期望幫助管理者更快和更好地使用IDS。

  在網路安全領域,隨著駭客應用技術的不斷“傻瓜化”,入侵檢測系統IDS的地位正在逐漸增加。一個網路中,只有有效實施了IDS,才能敏銳地察覺攻擊者的侵犯行為,才能防患於未然!本文對IDS的概念、行為及策略等方面內容以問答形式進行全面介紹,期望幫助管理者更快和更好地使用IDS。

  問:都有哪些重要的IDS系統?

  根據監測對象不同,IDS系統分為很多種,以下是幾種很重要的IDS系統:

  1、NIDS

  NIDS是network intrusion detection system的縮寫,即網路入侵檢測系統,主要用於檢測hacker或cracker通過網路進行的入侵行為。

  NIDS的運行方式有兩種,一種是在目標主機上運行以監測其本身的通訊資訊,另一種是在一台單獨的機器上運行以監測所有網路設備的通訊資訊,比如hub、路由器。

  2、SIV

  SIV是system integrity verifiers的縮寫,即系統完整性檢測,主要用於監視系統文件或者Windows 註冊表等重要資訊是否被修改,以堵上攻擊者日後來訪的後門。SIV更多的是以工具軟體的形式出現,比如“Tripwire”,它可以檢測到重要系統組件的變換情況,但並不產生實時的報警資訊。

  3、LFM

  LFM是log file monitors的縮寫,即日誌文件監測器,主要用於監測網路服務所產生的日誌文件。LFM通過檢測日誌文件內容並與關鍵字進行匹配的方式判斷入侵行為,例如對於HTTP伺服器的日誌文件,只要搜索“swatch”關鍵字,就可以判斷出是否有“phf”攻擊。

  4、Honeypots

  蜜罐系統,也就是誘騙系統,它是一個包含漏洞的系統,通過模擬一個或多個易受攻擊的主機,給駭客提供一個容易攻擊的目標。由於蜜罐沒有其他任務需要完成,因此所有連接的嘗試都應被視為是可疑的。蜜罐的另一個用途是拖延攻擊者對其真正目標的攻擊,讓攻擊者在蜜罐上浪費時間。與此同時,最初的攻擊目標受到了保護,真正有價值的內容將不受侵犯。蜜罐最初的目的之一是為起訴惡意駭客蒐集證據,這看起來有“誘捕”的感覺。

  問:誰是入侵者?

  通常我們將入侵者稱為hacker,但實際上這是不準確的。可以這麼說:hacker是發現系統漏洞並修補漏洞的,cracker才是利用漏洞佔山頭搞破壞的入侵者。為了不混淆視聽,在此乾脆統一叫作入侵者吧。一般來說,入侵者分為兩類:內部和外部。內部入侵者通常利用社會工程學盜用非授權帳戶進行非法活動,比如使用其他人的機器、冒充是處長或局長;外部入侵者則要借助一定的攻擊技術對攻擊目標進行監測、查漏,然後採取破壞活動。

  有一點請牢記:統計表明,入侵行為有80%來自內部。

  問:入侵者如何進入系統?

  主要有三種方式:

  1、物理入侵

  指入侵者以物理方式訪問一個機器進行破壞活動,例如趁人不備遛進機房重地趕緊敲打兩下鍵盤試圖闖入作業系統、拿著鉗子改錐卸掉機器外殼“借”走硬盤裝在另一台機器上進行深入研究。

  2、系統入侵

  指入侵者在擁有系統的一個低級賬號許可權下進行的破壞活動。通常,如果系統沒有及時“打”最近的補丁程式,那麼擁有低級許可權的用戶就可能利用系統漏洞獲取更高的管理特權。

  3、遠程入侵

  指入侵者通過網路滲透到一個系統中。這種情況下,入侵者通常不具備任何特殊許可權,他們要通過漏洞掃描或端口掃描等技術發現攻擊目標,再利用相關技術執行破壞活動。NIDS主要針對的就是這種入侵。

  問:入侵者為何能闖入系統?

  蒼蠅不盯無縫的蛋,入侵者只要找到複雜的電腦網路中的一個縫,就能輕而易舉地闖入系統。所以,了解這些縫都有可能在哪,對於修補它們至關重要。通常,裂縫主要表現在軟體編寫存在bug、系統配置不當、口令失竊、明文通訊資訊被監聽以及初始設計存在缺陷等方面。

  1、軟體編寫存在bug

  無論是伺服器程式、客戶端軟體還是作業系統,只要是用代碼編寫的東西,都會存在不同程度的bug。Bug主要分為以下幾類:

  緩衝區溢出:指入侵者在程式的有關輸入項目中了輸入了超過規定長度的字符串,超過的部分通常就是入侵者想要執行的攻擊代碼,而程式編寫者又沒有進行輸入長度的檢查,最終導致多出的攻擊代碼佔據了輸入緩衝區後的記憶體而執行。別以為為登錄用戶名留出了200個字符就夠了而不再做長度檢查,所謂防小人不防君子,入侵者會想盡一切辦法嘗試攻擊的途徑的。

  意料外的聯合使用問題:一個程式經常由功能不同的多層代碼組成,甚至會涉及到最底層的作業系統級別。入侵者通常會利用這個特點為不同的層輸入不同的內容,以達到竊取資訊的目的。例如:對於由Perl編寫的程式,入侵者可以在程式的輸入項目中輸入類似“  mail < /etc/passwd”的字符串,從而使perl讓作業系統調用郵件程式,併發送出重要的口令文件給入侵者。借刀殺人、借Mail送“信”,實在是高!

  不對輸入內容進行預期檢查:有些編程人員怕麻煩,對輸入內容不進行預期的匹配檢查,使入侵者輸送炸彈的工作輕鬆簡單。

  Race conditions:多任務多線程的程式越來越多,在提高運行效率的同時,也要注意Race conditions的問題。比如說:程式A和程式B都按照“讀/改/寫”的順序操作一個文件,當A進行完讀和改的工作時,B啟動立即執行完“讀/改/寫”的全部工作,這時A繼續執行寫工作,結果是A的操作沒有了表現!入侵者就可能利用這個處理順序上的漏洞改寫某些重要文件從而達到闖入系統的目的,所以,編程人員要注意文件操作的順序以及鎖定等問題。

  2、系統配置不當

  默認配置的不足:許多系統安裝後都有默認的安全配置資訊,通常被稱為easy to use。但遺憾的是,easy to use還意味著easy to break in。所以,一定對默認配置進行揚棄的工作。

  管理員懶散:懶散的表現之一就是系統安裝後保持管理員口令的空值,而且隨後不進行修改。要知道,入侵者首先要做的事情就是搜索網絡上是否有這樣的管理員為空口令的機器。

  臨時端口:有時候為了測試之用,管理員會在機器上打開一個臨時端口,但測試完後卻忘記了禁止它,這樣就會給入侵者有洞可尋、有漏可鑽。通常的解決策略是:除非一個端口是必須使用的,否則禁止它!一般情況下,安全審計數據包可用於發現這樣的端口並通知管理者。

  信任關係:網路間的系統經常建立信任關係以方便資源共用,但這也給入侵者帶來借牛打力、間接攻擊的可能,例如,只要攻破信任群中的一個機器,就有可能進一步攻擊其他的機器。所以,要對信任關係嚴格審核、確保真正的安全聯盟。

  3、口令失竊

  弱不禁破的口令:就是說雖然設置了口令,但卻簡單得再簡單不過,狡猾的入侵者只需吹灰之力就可破解。

  字典攻擊:就是指入侵者使用一個程式,該程式借助一個包含用戶名和口令的字典數據庫,不斷地嘗試登錄系統,直到成功進入。毋庸置疑,這種方式的關鍵在於有一個好的字典。

  暴力攻擊:與字典攻擊類似,但這個字典卻是動態的,就是說,字典包含了所有可能的字符組合。例如,一個包含大小寫的4字符口令大約有50萬個組合,1個包含大小寫且標點符號的7字符口令大約有10萬億組合。對於後者,一般的電腦要花費大約幾個月的時間才能試驗一遍。看到了長口令的好處了吧,真正是一兩撥千斤啊!

  4、嗅探未加密通訊數據

  共用介質:傳統的乙太網結構很便於入侵者在網路上放置一個嗅探器就可以查看該網段上的通訊數據,但是如果採用交換型乙太網結構,嗅探行為將變得非常困難。

  伺服器嗅探:交換型網路也有一個明顯的不足,入侵者可以在伺服器上特別是充當路由功能的伺服器上安裝一個嗅探器軟體,然後就可以通過它收集到的資訊闖進客戶端機器以及信任的機器。例如,雖然不知道用戶的口令,但當用戶使用Telnet軟體登錄時就可以嗅探到他輸入的口令了。

  遠程嗅探:許多設備都具有RMON(Remote monitor,遠程監控)功能以便管理者使用公共體字符串(public community strings)進行遠程調試。隨著寬帶的不斷普及,入侵者對這個後門越來越感興趣了。

  5、TCP/IP初始設計存在缺陷

  即使軟體編寫不出現bug,程式執行時也按照正確的步驟進行,但初始設計存在缺陷仍會導致入侵者的攻擊。TCP/IP協議現在已經廣為應用、大行其道了,但是它卻是在入侵者倡狂肆虐的今天之很早以前設計出來的。因此,存在許多不足造成安全漏洞在所難免,例如smurf攻擊、ICMP Unreachable數據包斷開、IP地址欺騙以及SYN湮沒。然而,最大的問題在於IP協議是非常容易“輕信”的,就是說入侵者可以隨意地偽造及修改IP數據包而不被發現。幸好,大救星Ipsec協議已經開發出來以克服這個不足。


  問:入侵者如何獲取口令?

  1、監聽明文口令資訊

  大量的通訊協議比如Telnet、Ftp、基本HTTP都使用明文口令,這意味著它們在網路上是赤裸裸地以未加密格式傳輸於伺服器端和客戶端,而入侵者只需使用協議分析器就能查看到這些資訊,從而進一步分析出口令,成為真用戶的克隆。

  2、監聽加密口令資訊

  當然,更多的通訊協議是使用加密資訊傳輸口令的。這時,入侵者就需要借助字典或者採用暴力攻擊法來解密了。注意,我們並不能察覺到入侵者的監聽行為,因為他在暗處,是完全被動的,沒有發送任何資訊到網路上,入侵者的機器僅被用於分析這些口令資訊。

  3、重放攻擊(Replay attack)

  這又是一種間接的攻擊方式,就是說:入侵者不必對口令進行解密,需要的是重新編寫客戶端軟體以使用加密口令實現系統登錄。

  4、竊取口令文件

  口令文件通常都保存在一個單獨的文件中,例如UNIX系統的口令文件是/etc/passwd(也可能是那個文件的鏡像),WinNT系統的口令文件是/winnt/system32/config/sam。入侵者一旦獲取了口令文件,就可以使用破解程式發現其中的弱口令資訊。
  
  5、觀察

  用戶可能由於設置的口令複雜難記而將它寫在一張紙上壓在鍵盤下隨時查看,或者在輸入口令的時候不管身後有沒有站著一位“看客”。入侵者的搜索力與記憶力都非常好,這些操作習慣對他們來說簡直就是輕鬆練兵。所以,別忽視入侵者的眼睛!

  6、社會工程

  前面提到過這個問題,社會工程就是指採用非隱蔽方法盜用非授權帳戶進行的非法活動,比如使用其他人的機器、冒充是處長或局長騙取管理員信任得到口令等等。記住:如果有人想要你的口令,無論他說是為了什麼,請記住他,一旦發生了關於口令的案件,那個人就是頭號嫌疑犯!

  問:典型的入侵場景有哪些?

  所謂入侵場景,就是指入侵者都會從哪些方面採取哪些步驟嘗試攻擊系統。典型的入侵畫面是這樣一幕幕展開的:

  1、外部調研

  知己知彼,百戰不殆。入侵者攻擊的第一步就是盡一切可能對攻擊目標進行調研以獲取充足的資料。採取的方法包括:使用whois工具獲取網路註冊資訊;使用nslookup或dig工具搜索DNS表以確定機器名稱;搜索關於公司的公開新聞。這一步對於被攻擊者是完全不知的。

  2、內部分析

  確定了攻擊目標的基本屬性(站點地址、主機名稱),入侵者將對它們進行深入剖析。方法有:遍歷每個Web頁面搜索是否存在CGI漏洞;使用ping工具一一探尋“活”著的機器;對目標機器執行UDP/TCP掃描以發現是否有可用服務。這些行為都屬於正常的網路操作,還不能算作入侵行為,但是NIDS系統將能夠告訴管理者“有人正在撼動門把手……”

  3、漏洞利用

  現在到了開始動手的時候了!破壞花樣實在繁多,在此擇優列舉如下:通過在輸入項目中寫入殼命令字符串(shell command)來考驗CGI腳本的安全性;通過發送大量數據以確定是否存在臭名昭著的緩衝區溢出漏洞;嘗試使用簡單口令破解登錄障礙。當然,混合使用多種方式是攻佔成功的不二法門。

  4、站穩腳跟

  對於入侵者而言,一旦成功地入侵了網路中的一台機器,就可以說是站穩腳跟了。入侵者現在要做的就是隱藏入侵痕跡並製造日後再攻的後門,這就需要對日誌文件或其他系統文件進行改造,或者安裝上木馬程式、或者替換系統文件為後門程式。這時,SIV(系統完整性檢測)系統會注意到這些文件的變化。由於內部網路中的安全措施通常都比較少,進一步地,入侵者將以這第一台機器作為跳板,攻擊網路中的其他機器,尋找下一個安身之家。

  5、享受成果

  到此,入侵者可以說是完成了攻擊任務,剩下的就是享受成果了:或者對竊取的秘密文件肆意使用、或者濫用系統資源、或者篡改Web頁面內容,甚至將你的機器作為跳板攻擊其他機器。

  以上討論是的有目的入侵者的通常行為。還有一種入侵場景通常被稱為“birthday attack”,我想其含義是模擬生日時接收到許多熟人或者未知朋友的禮物吧,不過用在這裡還要在禮物前加上“攻擊”兩字了。Birthday attack的一般步驟是:隨機搜索一個Internet地址;搜索其上是否有指定的漏洞;如果有,根據已知的漏洞利用方法進行攻擊。

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。