翻轉電子書系列:資訊與網路安全概論  

翻轉工作室:粘添壽

第十一章 入侵偵測與網路病毒

『明槍易躲、暗箭難防』『保密防諜、人人有責』;攻擊者總是表現出最善良的一面,讓您失去戒心;目的是破壞、盜取,步驟是入侵,方法是病毒散播。

11-1 入侵偵測系統簡介

就私有網路安全觀點而言,『防火牆』較偏重於防護的功能,它限制封包進出私有網路,功能好像警衛管制人員進出一樣。儘管如此,攻擊者總是可以透過偽裝或防護漏洞,入侵私有網路從事盜取或破壞的工作。『入侵偵測』(Intrusion Detection主要的工作是檢視是否有入侵者進入私有網路內,從事未經授權允許的行為。它收集主機系統內或網路流通訊息,再進行分析比對,從中發現是否有違反安全政策的行為或破壞的軌跡,而此專屬設備(硬體或軟體)就稱之為『入侵偵測系統』(Intrusion Detection System, IDS[10, 15, 17, 52, 53, 112]。由此可見,IDS 與防火牆似乎是相輔相成的,缺一便無法建立一個完整的安全網路系統,所以眾多防火牆設備都具有 IDS 功能,然如此果真就是一個完美無缺的理想組合?其實有待商榷,但不管怎麼說,它在網路安全方面扮演的角色仍不容忽視。本章除了探討 IDS 應具有的功能外,更進一步會討論到如何架設 IDS

如果從入侵的觀點來看,入侵者最終目的還是希望能進入主機內,從事盜取或破壞的工作,但整個過程中又可區分為兩個階段:第一階段是入侵者僅於窺視網路,但還未真正進入主機系統,第二階段入侵者才成功進入主機內。若從另一角度來看,既然無法完全阻擋入侵者,何不乾脆製作一個陷阱讓入侵者進入再將其逮捕,因此,IDS 系統在製作方面可區分為下列三大類:

11-2 入侵偵測與防火牆架設

11-1 為上述三種 IDS DMZ 防火牆之間的配置方法,它們之間所扮演的角色如下:一般外部路由器大多扮演封包過濾的功能,我們將『防火牆 IDS配置於該路由器上,偵測是否有駭客入侵,此為 IDS 第一道防護功能;萬一駭客封包通過防火牆進入 DMZ 網路,『網路型 IDS則負責監視 DMZ 網路上的封包,搜尋出可疑的訊息傳輸。駭客入侵系統之後,首要的目標是要進入防禦主機,如果安全操縱防禦主機便能順利阻擋入侵內部網路,因此,可在防禦主機上安裝『主機型 IDS檢視是否有入侵軌跡。另一方面,駭客入侵後,也可能直接攻擊內部路由器,因此,需安裝『防火牆 IDS』於內部路由器來檢視是否被入侵;假使駭客還是通過內部路由器,或是內部人員越權存取系統資源,當然在主機系統上安裝『主機型 IDS是不可或缺的。為了更安全起見,可以在內部網路配置『網路型 IDS監視封包的流量。雖然架設『誘捕系統』可以捕捉駭客,但仍需防止駭客將計就計攻擊系統,因此,還是將它安置於 DMZ 網路上來得安全。

11-1 入侵偵測與防火牆

並非所有防火牆與 IDS 設備都像圖 11-1 那麼完善,至於需要何種程度的安全措施,完全看私有網路所從事的工作而定。我們將圖 11-1 以安全性考量重繪成圖 11-2,可能比較容易理解,其中第一層的防禦設施為防火牆,駭客滲透第一道防護措施後,需經過第二道的防火牆入侵偵測、第三道的網路型入侵偵測、再迴避過第四道的主機型入侵偵測,最後才算真正擊破系統。當然,只要擊破任何一道防護措施都會造成相當的損害,因此,防禦系統必須儘速將其偵測出來使損失降至最低。

11-2 私有網路的防護能力

11-3 駭客身份

回顧我們介紹密碼學時強調的一個重要觀念,即『再複雜的密碼演算法都有被破解的可能,破解因素只不過是計算上的成本多寡而已』,也就是說,沒有價值的訊息,可能不會引起攻擊者興趣。但這種觀念完全不適用網路安全,千萬不要認為自己的電腦並不從事機密的工作而疏於防範,攻擊者永遠試著去尋找最不起眼的電腦做為跳板,一旦進入一個不被重視的電腦之後,再由此電腦進入次要電腦,一層一層推進,最後就有可能入侵至最重要的主機系統。另一方面,大部份的私有網路都僅防範外來攻擊者,完全忽略內部的工作人員;其實家賊才是難防,豈可不正視。

一般將入侵者稱為『駭客』(Hacker,意指不受歡迎或未經允許便進入系統者稱之,我們簡單歸納如下:

11-4 入侵步驟與技巧

瞭解『駭客』身份之後,還是需要『知彼知己』方能『百戰百勝』,認識到底有那些入侵技巧。我們先來了解一些典型入侵技巧的種類:

11-5 入侵技巧

11-5-1 竊聽與窺視

所謂竊聽與窺視,即是由公眾網路上蒐集攻擊目標所傳送或接收訊息,再由這些訊息之中找出所期望的資訊。一般來講,入侵者都會嘗試下列的攻擊行為:

雖然許多網路監視軟體(如 sniffer)可以竊聽或窺視他人網路狀態,但除非找出可窺視位址,才可能蒐集到目標主機的訊息,尤其目標與攻擊者之間的地理位置太遠的話,除非在目標主機附近埋入蒐集設備(或入侵軟體),否則還是很困難達成目的。

11-5-2 阻斷服務

『阻斷服務』(Denial of Service, DoS即是攻擊者不進入目標,僅讓攻擊目標癱瘓而無法正常工作。值得注意的是,除非攻擊者是惡作劇,否則 DoS 攻擊絕非是駭客真正目的。入侵者癱瘓某一部主機一定有它的特殊目的存在,譬如說,當它癱瘓某 DNS 系統主機時,一定會將原主機上的訊務轉移到它所設立的另一部偽裝主機上。再說,網路設備大多是自動化的,一旦該部主機無法服務時,必定會尋找其他主機要求服務,如此一來,攻擊者便可以進入第二階段的入侵行為。因此,當系統某一部主機被無形之中癱瘓掉之後,此時除了加強該主機的防護功能之外,仍必須透過其他路徑去尋找有相關損害。一般『阻斷服務』攻擊法有下列技巧:

11-5-3 取代服務

取代服務表示攻擊者偽裝一部與目標系統相同的服務設備,取而代之它的服務,從中騙取之間的交換訊息。首先攻擊者利用路由重導、DNS Cache 污染或癱瘓目標主機,將原來與目標主機通訊的連線重新導至偽裝主機(或服務)上。一般取代服務攻擊有下列技巧:

11-5-4 中間人扮演

如果攻擊者成功地讓客戶端導向(如路由導向或 DNS Cache 污染),將客戶端連線轉向到入侵系統上,入侵系統扮演著客戶端與目標主機之間的中間人。當客戶端向伺服主機要求連線時,入侵系統取得通往伺服主機的信任訊息(如密碼),則可取得主機的信任;又當主機回應給客戶端時,入侵系統也攫取了這份訊息,再偽裝成主機回應訊息給客戶端。如此一來,客戶端與主機之間確認了雙方的身份,卻不知道入侵系統從中扮演著中間人的角色,接著它們之間所傳送的機密訊息也都被入侵系統擷取了。

由此可見,中間人扮演是一種非常可怕的攻擊技巧,本書前面所介紹幾種認證技巧,都是在研議何種方法可以避免中間人攻擊。

11-6 入侵偵測系統

11-6-1 入侵偵測系統功能

『入侵』(Intrusion的概念而言,不僅包括攻擊者取得超出合法的系統控制權範圍,還包含收集系統漏洞,避免造成阻斷服務(DoS)等可能造成危害電腦系統的行為。『入侵偵測』(Intrusion Detection即表示對入侵行為的發覺;它透過網路或主機系統中得到若干關鍵點收集資料,並進行比對及分析,從中發現系統中是否有違反安全策略的行為,從中找出被攻擊的軌跡。進行入侵偵測的專屬設備(含硬體與軟體),一般稱之為『入侵偵測系統』(Intrusion Detection System, IDS。基本上,其入侵偵測系統主要的功能有:

11-6-2 入侵偵測系統 - 元件

11-3 為入侵偵測系統的典型模型,其中包含四個主要元件:事件產生器(Event Generators事件分析器(Event Analysis事件資料庫(Event Database反應元件(Response Units等。以下分別敘述這四個元件之功能。

11-3 入侵偵測系統的典型模型

【(A)事件產生器】

我們將 IDS 所欲分析的資訊稱為『事件』(Event,它可能來自使用者存取系統的動作程序,或是系統資料被存取的記錄,也可能擷取自網路之間的訊務內容,甚至來自與電腦系統無關的社交行為、電話錄音等等。事件產生器儘可能收集有關入侵行為,或被入侵後所留下的軌跡,並將這些訊息格式化,以標準資料型態表現出來。也就是說,事件產生器是所有入侵偵測資料的來源,針對不同型態的 IDS,有不同事件收集方法,如主機型 IDS 較偏重被入侵後所留下的軌跡,而網路型 IDS 的事件產生則較著重於傳輸訊務的內容。

【(B)事件分析器】

如何從多個事件之中找出可疑的入侵對象,是事件分析器的主要工作,基本上,分析的方法分『特徵型』(Signature-based『異常型』(Anomaly-based兩種(容後介紹)。

【(C)事件資料庫】

將可疑或已確定的入侵事件儲存於『事件資料庫』之中,日後如果有相同事件發生時,便可直接判斷入侵已發生。這種做法非常類似目前的防毒系統,隨著各種病毒的出現,病毒防範公司通常製造許多病毒的特徵,隨時下載到用戶電腦上;用戶每次收到訊息時,再由病毒資料庫中比對是否有相同的資料,如果有則隔離該資料(視同病毒)進入系統。目前許多入侵軟體皆可自由下載取

11-6-3 入侵偵測系統事件

入侵偵測的第一步是事件資訊的收集,內容包括系統、網路、資料、以及用戶活動的狀態與行為。也就是說,IDS 是否可以精準的找出入侵者,多半取決於事件收集的正確性與完整性,尤其訊息收集地點也會直接影響到它的有效性。基本上,事件訊息的收集有下列五種方法:

【(A)系統和網路日誌】

『系統日誌』(System Log)是記錄所有存取系統資源的行為;『網路日誌』(Network Log)則記錄主機上網路通訊的行為。充分利用系統與網路日誌資料是偵測入侵的必要條件,日誌檔案包含網路與系統發生不尋常的活動記錄,由這些記錄中可以瞭解是否有人試圖入侵或已入侵成功,並可以即時啟動相對應的防護措施。日誌檔案記錄各種行為的類型,每個類型包含不同資訊,如『用戶活動』類型的日誌,就包含登入、用戶變更密碼、用戶存取那些文件、用戶授權與認證資訊等等。一般來講,系統日誌會將所有系統的運作做記錄,如此一來,日誌檔案勢必非常的大,尤其在高流通量的網路系統裡,IDS 要找出可疑的事件發生可不容易,因此,利用『稽核』(Audit)可能較容易達成。

【(B)目錄及檔案稽核】

駭客入侵系統最主要的目是要盜取或破壞內部的資料,如果記錄了所有資料或目錄被存取的過程,則該日誌檔案勢必變得非常大,甚至許多 IDS 來不及處理日誌檔案便將一些記錄拋棄掉,如此一來大大減低 IDS 的偵測能力。因此,我們可以將某些較關鍵性的檔案設定『稽核』(Audit)條件,譬如,某一檔案被讀取時,便會記錄讀取者的用戶識別名稱及時間,並且累計該目錄或檔案被讀取的次數。IDS 週期性檢視稽核檔案,從中發現是否有異常的存取行為,再評估是否為駭客入侵行為。譬如說,如果發現某一個不起眼的檔案連續多次被存取的話,也許該檔案就是有心人士故意建立的,接著再追查存取該檔案的用戶,並追查存取該檔案的意圖如何。另外,當用戶發生異常登入失敗、逾時登入、登入期間過長、或存取超出權限的資料時,都是安全稽核的記錄要項。

【(C)程式執行稽核】

網路系統上所執行的程式,如作業系統、網路服務、用戶啟動程式、以及應用程式等等,每一個程式多半由多個程序(Process)共同來完成,並且每一個程序都應該在他被允許的環境中運作,此環境控制程序可以存取那些資源、程式或資料檔案。當某個程序有異常的存取行為發生時,這就意味可能是駭客已入侵該系統,因此,可由程式執行的稽核記錄中,追查出發出該程序的用戶,並找出入侵對象。

【(D)訊務收集】

『訊務收集』(Traffic Collection)表示收集網路上所流通的封包,從中搜尋出可疑的入侵訊息。一般網路是以 IP 封包為傳輸單位,所以可利用網路監視器收集可疑的 IP 封包,再分析找出入侵對象。

【(D)反應元件】

當事件分析系統找出入侵的可疑對象之後,必須立即通知系統管理員做適當的回應。反應單元有兩種做法,一者為通知系統管理員,另一者為自動處理入侵事件。目前 IDS 最大的困擾是誤報情況過多,讓許多管理人員不堪負荷;另外,當入侵事件發生時,如管理人員怠慢處理,則可能會遭受嚴重損失。比較折衷的辦法是,IDS 如能肯定某一訊息確是入侵事件的話(如比對事件資料庫),則直接切斷該入侵連線,並做適當的補救措施(如關閉某些服務),若僅是懷疑某一連線為入侵事件,再通知管理人員處理。

【(E)實體網路架構】

駭客欲透過網路入侵目標系統,無論從何觀點來看都是不容易的事,再說許多防火牆也都著重於網路攻擊。於是乎,何不乾脆找一部電腦偷偷地安裝在目標網路內,雖然有點過分,但利用實體網路入侵並非不可能,尤其針對無線網路則更容易不過。一般私有網路對於網路的連線,多半不會特別注意每個細節,駭客只要安裝一部電腦作為內應,如此一來,再嚴謹的安全政策也是枉然。因此,IDS 除了監視外部訊息之外,還必須監視內部是否有非管轄內的電腦出現,所以系統管理員必須擁有整體網路的實體配置圖,方便定期檢查是否有盜接網路,或不明電腦出現。

11-7 入侵偵測技術

11-7-1 入侵偵測技術簡介

無論所蒐集到的『系統日誌』『網路日誌』『網路訊務』、以及『安全稽核』資料,還是必須經過分析才可以分辨出那些資料是屬於駭客入侵。目前 IDS 系統上有『誤用偵測』(Misuse Detection『異常偵測』(Anomaly Detection兩種主要辨識技術。在未介紹這兩種技術之前,首先需釐清『入侵行為』的概念?應如何由許多正當的資料之中分辨出來?我們可由兩個方面來思考:

上述兩種偵測技術需要一套完善的『資料引擎』(Data Engine來實現,以下分別介紹之。

11-7-2 入侵偵測技術特徵型

『誤用偵測』(Misuse Detection又稱為『特徵型偵測』(Signature-based Detection或『知識基礎入侵偵測』(Knowledge-based Intrusion Detection),其實是用已知攻擊手法及系統漏洞的資訊為基礎,將網路攻擊或試圖利用系統安全漏洞入侵的過程中,將所可能產生的『特徵』集合成一個知識庫。IDS 將所有實際發生的事件(無論是否為攻擊事件)都與此知識庫進行特徵比對,作為評估是否為攻擊或可疑事件的依據。由此可見,『誤用』的邏輯思考為:除非攻擊動作具應有的特徵之外,所有動作都將會被視為合理正常的。

由此可見,誤用偵測與一般所熟悉的病毒掃描一樣,必須有足夠完整的『攻擊特徵』(Attack Signature知識庫,才能偵測出所有已知攻擊手法,並且必須定期下載最新的攻擊特徵,使可偵測出最新的攻擊手法。就現況而言,可供下載的攻擊特徵已超過 2000 個以上,相信還會不斷的成長;比對攻擊特徵遠比掃描病毒來得複雜許多,對於高速流量的網路設備而言,已漸漸會感覺到處理速度的不足。

11-7-3 入侵偵測技術異常型

傳統的『異常偵測』(Anomaly Detection採取異常行為偵測(Behavioral Anomaly Detection)的策略,此策略是假設每一個人行為模式都有固定的軌跡可尋,並認為經過一段時間的學習及觀察之後,理論上可以分析出使用者的『正常』與『合法』活動。當一些偏離這些平常活動的事件發生時,即意味著可能有資源被盜用或是潛在攻擊事件的可能。因此,所有和過去學習得來的行為模式資訊不符時,皆會被認定為潛在的可能入侵意圖。

由於網路間溝通,基本上是以通訊協定為基礎,理論上所有活動都必須依循通訊協定的要求進行,因此只要出現某些活動未依照規範進行時,即代表可能隱藏可疑的攻擊行為,這種做法被稱為『協定異常偵測』(Protocol Anomaly Detection

協定異常偵測可能會引發另一個疑問:既然所有網路活動都必須依循協定規範而為,違反協定規範的行為理應被接收端拒絕才對,如此又何必去偵測它呢?當然,理論上可能是如此,但實際上卻完全不是這麼一回事。由於許多網路服務或用戶端軟體的程式設計也有類似的想法,在撰寫程式時往往會假設或預期通訊的另一端『應該』會依照協定規範來進行通訊,因此就忽略了對方所傳送過來的資料是否依照協定規範來檢查,或是對預期之外的對話進行異常處理。此時,當接收到非標準規範的對話時,可能就會出現不可預期的結果,輕則程式停止運作,重則導致資料毀壞或執行不應該執行的程式,這些不可預期的結果往往就是攻擊者利用的目標。

事實上,許多安全弱點都是由使用者不正常操作狀況下,看到不正常反應之後發現的。惡意攻擊者多半利用這種手法,尋找系統的安全漏洞。譬如,攻擊者常利用特殊字元、過長參數、不正常路徑、或異常封包等方式,作為測試程式是否可以被利用進行攻擊的途徑。尤其目前『緩衝器溢位』(Buffer Overflow攻擊法就是在這種情況下被發揮的淋漓盡致,此種方法是攻擊者盡其可能嘗試每一個可以輸入參數的地方,並餵給可能超過長度的參數,再觀察該程式是否會因為預留的變數長度不足而產生緩衝器溢位的問題。由此可見,偵測異常協定也有相當好的偵測效果,尤其對某些具有清楚的狀態(State)的協定而言,透過協定異常偵測不僅可以偵測到可疑的異常事件,還可以偵測出攻擊者是否成功入侵。

譬如,駭客經常利用連接 POP3 伺服器時,使用過長的使用者名稱來測試系統的的弱點;一般 POP3 伺服器多半預留 100 Byte 作為儲存使用者名稱的空間,但當輸入名稱過長時,便會發生緩衝器溢位的問題。此時,POP3 伺服器的服務連線會中斷,而回到 Shell Script,結果駭客可不經由登入程序便進入系統。

當然協定異常偵測並不針對過長的參數而造成緩衝器溢位而已,許多其他異常現象也可以當作協定異常的判斷指標,譬如:

上述僅列出較常出現的範例,攻擊者多半會再研究出更多奇奇怪怪的非典型封包格式,來攻擊主目標系統。

11-7-4 入侵偵測技術 - 資料引擎

有了上述兩種檢測技術之後,接著必須探討如何將所蒐集的資料,利用這兩種技術分析找出入侵跡象。簡單的說,某一個資料處理設備具有異常偵測或誤用偵測處理能力,並可由一大筆的資料中,找出所期望的入侵訊息,一般將此設備稱之為『資料引擎』(Data Engine),常用技術如下:

以上僅列出較常見的資料引擎方法,並沒有詳述其相關技術;讀者對這方面有興趣的話,請自行參考其他相關文獻,本書限於篇幅無法一一介紹。

11-8 主機型入侵偵測系統

『主機型入侵偵測』(Host-based Intrusion Detection表示偵測點在主機本身,至於主機可能是網路設備(如防禦主機)或應用系統(如 Win2k 伺服器)。

11-8-1 HIDS 系統:防火牆

無論防禦主機或封包過濾器皆是駭客最主要的攻擊目標,雖然在兩設備上設定有嚴密的封包過濾原則,但是攻擊者還是會想盡各種方法入侵系統。最常見的入侵方法是『開後門』(Trap Backdoor與網路阻斷攻擊,以下分別介紹之。

【(A)後門偵測】

駭客可能採取『誤用攻擊法』掃描各個傳輸埠口的弱點,再依此路徑進入系統之內,接著再開啟其他較少用的埠口讓其他駭客進入。由此可見,預防被入侵的方法,除了必須找出系統弱點之外,還必須隨時掃描是否有不明埠口,無緣無故被開取。目前網路上許多埠口掃描程式(如 PortScan),可供下載使用。讀者可試著利用 Java 寫一個掃描程式,範例如下:(僅掃描 0 ~ 1023 埠口)

import java.net.*;

import java.io.*;

 

public class lookForPorts {

    public static void main(String[] args) {

        Socket theSocket;

        String host = "localhost";

        if (args.length >0)

            host = args[0];

        for (int i=0; i<1024; i++) {

            try {

               theSocket = new Socket(host, i);

               System.out.println("There is a server on port "+i+" of " + host);

            }

            catch (UnknownHostException e ) {

                System.err.println(e);

                break;

            }

            catch (IOException e) {

            }

        }

    }

}

【(B)網路阻斷偵測】

網路阻斷攻擊表示攻擊者不讓合法使用者使用網路,亦即攻擊者試圖佔滿整個網路資源,讓其他人無法使用該網路通訊,一般網路阻斷攻擊法有下列三種:

偵測與防範阻斷攻擊的方法,唯有不停的檢測系統是否有異常的現象發生,然而這些動作大多是正常的程式運作,欲檢測出來實在不容易。一般會配合網路型入侵偵測,利用封包檢視器(如 Sniffer)過濾一些可疑的封包,再利用『特徵』比對或其他統計方法,找出攻擊者並攔截使其無法進入系統。

11-8-2 HIDS 系統 - 伺服主機

『伺服主機入侵偵測』可以說是網路安全最後一道防線,當入侵者已成功進入系統,並且開始盜取或破壞系統時,應該採取何種方法才可將這些『壞份子』揪出來。駭客入侵系統除了做了一些破壞的工作之外,最終目的是要盜取內部資料,如何在最後階段將其偵測出來,就是主機入侵偵測最主要的工作。但話說回來,依照過去使用的經驗,駭客欲入侵主機實在不容易,必須經過防火牆、網路入侵偵測等防護措施。其實最常見的入侵者通常發生在內部管理,亦即是內部合法員工盜取資訊,也可能是駭客堂堂進入辦公室操作電腦。因此,防止主機入侵的首要工作是要做好內部人員的管理,可以從『安全稽核』(Security Audit『系統日誌』(System Log兩方面著手,以下分別介紹之。

【(A)系統日誌】

一般系統(如 Unix)會將某些使用者登入、操作命令、異常登入、或者某些資源被存取的情況,都記錄在日誌檔案(Log File)內,入侵偵測系統只要將這些檔案內的資料轉換成資料庫格式型態,再從中搜尋出駭客的蛛絲馬跡;雖然這種操作看起來非常笨拙,卻是最徹底的偵測方法。一般系統通常非常忙碌,所產生的日誌檔案也非常的大,如何由這些資料中找出可疑的對象,的確不是一件容易的事。目前許多入侵系統都採用『資料探勘』(Data Miming)技術,由大筆的資料當中找出所需要的資訊。

到底系統日誌記錄了那些東西,相信這是讀者最期望知道的答案。基本上,系統日誌記錄的資料,視該部主機執行的應用程式(或網路伺服器)而定,更重要的是,必須系統管理者啟動它,才會真正記錄日誌。我們以 Linux 7.x 版為例,日誌檔案位於 /var/log 目錄下,包含有下列日誌檔案:

以上皆是較基本的日誌檔案,管理者可依照需求更改其記錄型態;譬如,由 syslog.conf 檔案去規劃 syslogd 檔案內的記錄訊息,並且可以利用 syslog 函數呼叫,來存取 syslogd 檔案內的資料。

【(B)安全稽核】

雖然從日誌檔案中搜尋入侵者的軌跡最為徹底,但礙於檔案過於龐大實在不容易達成。以 Unix/Linux 為例,當使用者由登入系統再執行一次 ls 命令之後,各種日誌檔案所記錄的資料大約有 30 筆訊息,由此可見,搜尋日誌檔案多半在處理一些無關緊要的資料。何不反過來思考,我們將一些敏感較高的資源設定有事件警告,任何人存取這些資源,或者有人越權試著想變更這些資源再將其記錄起來,只要由這些記錄中即可搜尋出可疑份子,這就是『安全稽核』的基本理念。

一般多人使用環境裡,針對每一使用者都有其權限的限制,另一方面,針對目錄檔案也會規劃那些使用者可以存取,以及存取權限如何。有了上述兩種規劃之後,就可以在某些檔案上設定稽核處理,作為記錄該檔案被存取的事實。當使用者越權,或者有異常狀態發生時,便會將這些事實登錄於安全稽核檔案內。我們以 Windows 為例來說明安全稽核的記錄型態;Windows 系統內定規劃有『應用程式記錄』、『安全性記錄』與『系統記錄』等三種檔案,每一種記錄檔的格式如圖 11-6 所示。它以格式化的資料型態記錄各個事件,每個事件記錄依功能分成三部份:表頭、事件描述與一個選擇性的額外資料,然而安全稽核是由前面兩個欄位所構成。

11-6 Windows 事件記錄

安全稽核的表頭包含下列欄位:

三個事件記錄檔中,系統日誌記錄本身作業系統所發生的事件;應用程式日誌檔記錄應用程式所發生的事件;安全日誌則登錄安全性相關事件。管理者除了透過瀏覽該檔案發覺發生事件的原因外,也可以編寫入侵偵測軟體,搜尋可疑的駭客入侵的軌跡。

【(C)主機阻斷偵測】

主機阻斷是一種獨佔共享資源的攻擊,利用佔據大部分的共享資源,致使他人無法使用資源。主機阻斷攻擊危及資源的可用性,這些資源包含行程、磁碟空間、CPU 使用率、數據機、以及讓管理者無暇應付的寶貴時間。一旦遭受此類型攻擊,輕者降低服務品質,重者癱瘓系統運作,基本上,有下列兩種攻擊方法:

11-9 網路型入侵偵測系統

隨著防火牆設備(防禦主機或封包過濾器)或伺服主機的『主機型入侵偵測系統』(Host-based IDS, HIDS),多半與該設備上的作業系統有所關聯,不同系統之間很少可以交互使用,所以一般廠商所販賣的入侵偵測系統大多屬於網路型。『網路型入侵系統』(Network-based IDSNIDS)可隨需要安裝在任何地方,包含外部網路、DMZ 網路或內部網路,基本上,它是一個獨立系統,與運作環境系統無關。

11-9-1 NIDS 系統 - 系統缺陷

NIDS 系統的偵測技術可以是誤用偵測或異常偵測,甚至將兩種技術整合而成的『混合型偵測系統』(Hybrid IDS),其運作原理是儘可能由網路蒐集所有流通的 IP 封包,再利用偵測技術去尋找出可疑的流通訊息。然而,問題在於 HIDS 在蒐集可能的封包時,可能會發生的問題有:

解決第一個問題,可由兩方面來思考,一者提高 HIDS 的處理速度,即使用較快的 CPU 或較大的記憶體空間;另一者是加強『資料引擎』的處理能力,一般來講誤用偵測技術會比異常偵測來得快,這是一般 HIDS 多半採用誤用偵測技術的主要原因。

解決第二個問題的關鍵,在於不要讓 HIDS 設備安裝於交換器上即可。由圖 11-7 連接方式可以看出,唯有通往 HIDS 設備的封包才會被轉送到該連接埠口上,如此一來,HIDS 將無法蒐集到其他電腦之間的流通封包。另一個解決方案是在某些交換器都預留一個通訊埠口,由此埠口上可以蒐集到所有該交換器的訊務,但也侷限於所連接的交換器而已,再說並非所有交換器都有此通訊埠口。

11-7 HIDS 無法蒐集訊務的連接方式

解決第三個問題最為棘手,IDS 會成為被入侵對象的主因是,所儲存的資料正是駭客最期望盜取或竄改的資料。譬如 HIDS 採用誤用偵測技術,則該系統內必須收集許多入侵行為的『特徵』,駭客只要修改這些資料的話,便成為入侵系統最明顯的漏洞。有一個最簡單的解決方法是,蒐集設備不要與分析軟體安裝於同一部主機內,甚至另外安裝的分析主機也必須與原網路分離,如此一來,入侵者就找不到攻擊的對象,如圖 11-8 所示。其中蒐集主機上安裝有兩片網路卡,一者連接到私有網路上,並負責蒐集流通訊務;另一片網路卡連接到分析主機上,將所蒐集的訊務透過該網路傳送給分析主機,並且蒐集主機必須取消兩片網路卡之間的路由轉送功能。

11-8 NIDS 設備的裝置

11-9-2 NIDS 系統 - 系統配置

如果可以將 NIDS 分成蒐集主機與分析主機兩者分別處理相關工作的話,則前面所述的三個問題都可以迎刃而解。第一個問題,如分析主機採用較高速的處理設備,並且不用處理蒐集訊務的工作,應該可以提高許多處理能力。第二個問題,我們不可能將所有網路設施都改成 Hub 連線,如此一來,不但網路連線範圍會受到限制,傳輸效率也會降低許多。然而,僅負責蒐集訊務的主機並不需要很昂貴的伺服主機,只要一般個人電腦層次的工作站即可。因此,我們可以將多部蒐集主機分別裝設於各個通訊節點,再將所蒐集的訊務集中傳送給分析主機即可。圖 11-9 即是由上述概念所建構的 IDS 配置。

11-9 安全性 HIDS 配置

11-9 並沒有繪出 Hub 連線配置,這方面請讀者於實務架設時必須特別留意。另存在一個困難點,目前 HIDS 多半採用『誤用偵測技術』,而入侵行為的特徵大多由 IDS 廠商提供,並且隨時下載到客戶端的資料引擎上(與防毒措施類似)。如果採用圖 11-9 網路配置的話,則廠商將無法直接由網路下載最新發現的入侵特徵,需由人工下載來解決這個問題。

11-10 誘捕型防禦系統

『誘捕系統』(Deception System即是製作一部偽裝設備讓駭客攻擊,不但可以從中逮捕入侵者,也可由它的攻擊行為瞭解其攻擊技倆,依此研議出更嚴密的安全防範技術。既然駭客入侵方法是無孔不入,僅利用防火牆阻擋進入是不夠的,還是需要配合入侵偵測系統,找出入侵者的蛛絲馬跡,若是還無法阻擋入侵,乾脆製作一個偽裝系統,引君入甕再將其逮捕。換句話說,我們可以製作一個防護能力較低的偽裝系統,使其成為攻擊目標,不但可以延長攻擊者進入主系統的時間,同時它也提供防禦者足夠的資訊來了解攻擊者;藉由欺騙攻擊者,防衛者提供錯誤資訊,迫使對方浪費時間作無益的進攻,以減弱後續的攻擊力量。而此偽裝系統則稱為『蜜蜂罐』(Honeypot)。

誘捕系統並非新的觀念,許多安全人員與專家試著用各種蜜蜂罐,作為轉移攻擊者的目標,使用蜜蜂罐可達到下列功能:

同樣的,蜜蜂罐也有被識破的可能;攻擊者可能將計就計,入侵蜜蜂罐之後,將它視為跳板,再入侵其他真實系統。由此可見,建立蜜蜂罐的誘捕系統並非想像中那麼容易,必須隨時變更蜜蜂罐的組態,以減少被識破的可能。基本上,蜜蜂罐的防禦措施有下列四種型態。(資料來自 IIS 網站)

誘捕系統最能表現出爾虞我詐的攻擊與防禦行為,使諜對諜戰鬥觀念在網路上表現得淋漓盡致,因此成為近年來網路安全專家最為熱門的研究課題。

11-11 網路病毒

相信網路病毒是目前網路公認最困擾的問題,幾乎每一部上網的電腦都有防毒措施,這是網路發展的障礙之一,然而,病毒似乎與網路入侵之間有緊密性的關聯,許多入侵行為都是藉由病毒散播作為攻擊的先頭部隊。說實在的,經由防火牆、網路入侵偵測等等的安全防護,駭客如想要以非法路徑入侵系統,是極不容易的事,唯有藉由合法路徑來散播病毒,較容易入侵系統。譬如,攻擊者可藉由發送郵件給內部工作人員,員工讀信之後無形之中已將病毒載入系統之中,此病毒在某一特定時間內會開啟系統一些較不惹眼的埠口,外部攻擊程式再經由該埠口堂堂進入系統,從事破壞的工作。類似這種攻擊法不勝枚舉,我們也可發現偵測入侵攻擊是離不開網路病毒的偵測。

11-11-1 病毒 ? 惡意的程式

電腦是一組硬體與軟體所組合而成的機械,不會受到天氣變化而感冒,也不會受到 SARS 侵襲,何來『病毒』(Virus)感染之有?其實『病毒』是一種惡意程式,只不過這些程式會自行複製給其他電腦,如果惡意程式有意破壞系統的話,它所複製的程式同樣也具有這些功能;然而,它是無形之中散播或自行複製給其他人,當然也必須有接觸到才會受它感染,其動作就像『細菌』傳播一樣。我們將網路上常出現之惡意程式的型態歸納如下:

上述各種病毒類型並非各自獨立,相互之間也有連帶性關係;譬如,某一巨集病毒可能也具有網路蠕蟲或特洛伊木馬病毒的功能。

11-11-2 病毒的生命週期與類型

簡單的說,病毒也是一種程式,它必須經過執行之後才會有破壞力,一般由病毒的產生到結束的生命週期可區分為下列四個階段:

由此可見,防治病毒必須在它的執行期之前找出來,一般來講,病毒由入侵進入潛伏期到執行期之間尚有一段時間,掃描病毒就是期望在這段時間內將病毒揪出。

11-10-3 病毒的類型

既然病毒也是一種程式,但這程式如何被執行?如果不去執行它可能會被破壞嗎?其實有些病毒是自我執行程式,它會自行啟動並進入 CPU 工作排序內。另有些病毒則必須附加在其他程式內,當該程式被執行時,病毒也隨著被執行,如此就不會牽涉到 CPU 排序的問題。我們將病毒的類型歸類如下:

11-10-4 防毒的技巧

早期防毒的口號是『不要複製來路不明的檔案』,後來是『不要開啟來路不明的信件或檔案』,但目前這兩個口號似乎已不靈光。現在是唯有不上網才可能避開病毒的感染,變化無窮的病毒也並非簡單的掃描程式足以防範。一般掃描病毒皆是以『偵測』、『辨認』與『清除』三個步驟來達成,其中『辨識』多半以病毒的特徵作為比對。一般使用者並無能力隨時隨地蒐集可能出現病毒的『特徵』,這方面大多仰賴廠商提供,也就是說,病毒掃描軟體廠商隨時隨地蒐集可能出現的病毒,並尋找出病毒可以比對的特徵,再自動下載給客戶端,存入於客戶端的資料引擊內,客戶端開啟檔案或收取信件時,可經由資料引擊比對該檔案或信件是否含有病毒。基本上,防毒軟體有下列四種層次的防禦功能:

病毒防範是一門非常專業的技術,然而許多組織單位多半忽略它,尤其從事於網路安全工作者,應需特別研習有關病毒入侵的伎倆。