入侵檢測系統FAQ(全)
入侵者如何進入系統?
-入侵者為什麼要侵入系統?
-入侵者如何獲得口令?
-典型的入侵過程?
-一般的侵入類型有哪些?
-什麼是漏洞(exploits)?
-什麼是偵察(reconnaisance)[譯註:原文如此,疑為reconnaissance?]
-什麼是拒絕服務(DoS)?
-現在的攻擊有多危險?
-哪裡可以找到現在攻擊行為的統計?
2.架構
-入侵如何被檢測?
-NIDS如何分辨流入數據?
-檢測到被攻擊后NIDS作些什麼?
-除了NIDS還有什麼類似的措施?
-我應該在網路的什麼地方安裝NIDS?
-如何讓IDS適合安全架構的其他部分?
-如何檢測是否運行了IDS?
3.對策
-如何提高WinNT下的入侵檢測和預防?
-如何提高Win95/98下的入侵檢測和預防?
-如何提高Unix下的入侵檢測和預防?
-如何提高Macintosh下的入侵檢測和預防?
-如何提高企業的入侵檢測和預防?
-怎樣在企業內實現入侵檢測?
-被攻擊后我應該作什麼?
-有人說他們從我這裡被攻擊,我應怎麼作?
-如何收集足夠多的關於入侵者的證據?
4.產品
-有哪些自由軟體(freeware)或者共享軟體(shareware)的入侵檢測系統?
-有哪些商業的入侵檢測系統?
-什麼是"網路查找"(network grep)系統?
-入侵者使用什麼工具進入我的系統?
-我應該關心的其他的入侵檢測系統?
6.資源
-哪裡可以發現新的系統漏洞的更新?
-其他的有關安全和入侵檢測的資源?
-有哪些值得注意的站點?
7.IDS和防火牆(firewall)
-為什麼有了防火牆還需要IDS?
-有了入侵檢測,還需要防火牆么?
-IDS從哪裡取得信息?防火牆么?
8.實現指南
-我應該問IDS提供商哪些問題?
-我如何在持續(on-going)的基礎上維護系統?
-我如何制止不適當的網路瀏覽?
-我如何建立我自己的IDS(寫代碼)?
-NIDS合法么(既然這是一種竊聽)?
-如何保護日誌文件不被篡改證據?
9.NIDS的局限
-交換網路(固有的局限)
-資源局限
-NIDS攻擊
-簡單原因
-複雜原因
-工具
10.雜項
-哪些標準/互操作的努力
11.蜜罐和欺騙系統
-什麼是蜜罐?
-蜜罐有哪些優點?
-蜜罐有哪些不利?
-如何設置我自己的蜜罐?
-蜜罐有哪些類型?
-建立一個可被攻擊的系統的正反作用?
-有人們使用蜜罐的例子么?
-有哪些蜜罐的產品?
-什麼是欺騙對策?
<正文>;
1.介紹
1.1 什麼是網路侵入檢測系統(NIDS)?
入侵是指一些人(稱為'黑客', '駭客')試圖進入或者濫用你的系統。詞語
'濫用'的範圍是很廣泛的,可以包括從嚴厲的偷竊機密數據到一些次要的
事情,比如濫用你的電子郵件系統發垃圾郵件(雖然對我們中許多人呢,
這個是主要的)。
侵入檢測系統(IDS)是用來檢測這些入侵的系統。根據這個FAQ的打算,IDS
可以有如下的分類:
網路侵入檢測系統(NIDS) 監視網線的數據包並試圖是否有黑客/駭客試圖
進入系統(或者進行拒絕服務攻擊DoS)。一個典型的例子是一個系統觀察
到一個目標主機的很多不同埠的大量TCP連接請求(SYN),來發現是否有人
正在進行TCP的埠掃描。一個NIDS可以運行在目標主機上觀察他自己的
流量(通常集成在協議棧或服務本身),也可以運行在獨立主機上觀察整個
網路的流量(集線器, 路由器, 探測器[probe])。注意一個"網路"IDS監視
很多主機,然而其他的只是監視一個主機(他們所安裝的)。
系統完整檢驗(SIV) 監視系統文件試圖發現是否有侵入者更改了文件(可能
留個後門)。這樣系統最著名的就是Tripwire。一個SIV也應該能監視其他
的組件,比如Windows的註冊表和chron的配置, 目的是發現知名的跡象。
他也應該能檢測到一個一般用戶偶然獲得root/Administrator級別許可權。
這個領域更多的產品應該被認為是工具而不是一個系統:比如Tripwire
類似的工具檢測臨界系統組件的更改,卻不能產生實時的告警。
日誌文件監視器(LFM) 監視網路設備產生的日誌文件。同NIDS類似,這些
系統通過對日誌文件的模式匹配提出是否有入侵者攻擊的建議。一個典型的
例子就是分析HTTP日誌文件來發現入侵者試圖一些知名漏洞(比如phf攻擊)
實例有swatch。
誘騙系統(包括decoys,lures,fly-traps,honeypots) 還有一些偽服務,目
的是模擬一些知名 洞來誘陷黑客。參見 掌? 統工具包中的例子:
http://www.all.net/dtk/。也可以簡單的通過重新命名NT的系統管理員
帳號,然後建立一個無許可權的虛帳號進行廣泛的審計。在此文檔後面有關於
誘騙系統的更多描述。同時參見
http://www.enteract.com/~lspitz/honeypot.html
其他
更多信息參見: http://www.icsa.net/idswhite/.
1.2 誰在濫用(misusing)系統?
有兩個詞來描述攻擊者: 黑客和駭客。黑客是一個一般術語:喜歡進入東西
的人。良性的黑客是那些喜歡進入他/她自己的計算機發現如何工作的人。
惡意的黑客是那些喜歡進入其他人系統的人。良性黑客希望媒體能停止對
所有黑客的苛刻批評,使用駭客來做替代。很不幸,這個想法沒有被接受
無論如何,在這個FAQ使用的詞語是'入侵者',來一般表示那些想要進入其
他人系統的人。
侵入者可以被分為兩類:
外部的: 你網路外面的侵入者,或者可能攻擊你的外部存在(亂改的web
伺服器,通過e-mail伺服器轉來的垃圾郵件)。外部的侵入者可能來自
Internet, 撥號線, 物理介入, 或者從同你網路連接的夥伴網路(賣主,
客戶, 中間商等)。
內部的: 合法使用你的互連網路的侵入者。包括濫用權力的人(比如社會
安全僱員因為不喜歡某人就將其標誌為死亡)和模仿更改權力的人(比如使用
別人的終端)。一個常被引用的統計就是80%的安全問題同內部人有關。
有幾種類型的侵入者: '快樂騎士'(Joy riders)因能而黑;'文化破壞者'
(Vandals)意於毀壞或更改Web頁面; 奸商 (Profiteers)意於利益,如控制
系統勒索或者竊取數據得利。
1.3 入侵者如何進入系統?
入侵者進入系統的主要途徑:
物理侵入: 如果一個侵入者對主機有物理進入許可權。(比如他們能使用鍵盤
或者參與系統),應該可以進入。方法包括控制台特權一直到物理參與系統
並且移走磁碟(在另外的機器讀/寫)。甚至BIOS保護也很容易穿過的: 事實
上所有的BIOS都有後門口令。
系統侵入: 這類侵入表現為侵入者已經擁有在系統用戶的較低許可權。如果系
統沒有打最新的漏洞補丁,就會給侵入者提供一個利用知名漏洞獲得系統
管理員許可權的機會。
遠程侵入: 這類入侵指入侵者通過網路遠程進入系統。侵入者從無特權開始
這種侵入方式包括多種形式。比如如果在他/她和受害主機之間有防火牆存在
侵入者就複雜得多。
應該注意網路侵入檢測系統主要關心遠程侵入。
1.4 入侵者為什麼能侵入系統?
軟體總是存在bug。系統管理員和開發人員永遠無法發現和解決所有的可能
漏洞。侵入者只要發現一個漏洞就可以入侵系統。
1.4.1 軟體bug
軟體bug存在於伺服器後台程序(Daemons), 客戶程序, 操作系統, 網路
協議棧。軟體bug可以分為如下幾種:
緩衝區溢出: 我們讀來的幾乎所有的安全漏洞歸於這一類。一個典型的
例子是一個開發人員設定了一個256字元長的緩衝區來存儲用戶名。
開發人員想當然的認為沒有人的名字比這個長。但是黑客想,如果我
輸入一個錯誤的很長的用戶名會發生什麼呢? 附加的字元會去哪裡?
如果黑客恰巧做對了, 他們發送300個字元, 包括了被伺服器執行的
代碼,並且,他們進入了系統。黑客們通過幾個方法發現這些bug。
首先,很多服務的源代碼在網路上是公開的。黑客們經常讀這些代碼
尋找有緩衝區溢出問題的程序。第二,黑客們可以讀程序本身來看是否
有問題存在,雖然讀彙編代碼輸出真的很難。第三,黑客們會檢查程序
所有的輸入並且試圖利用隨機數據來溢出。如果程序崩潰了,就會存在
讓黑客認真構造輸入並且允許進入的機會。應該注意這個問題在C/C++
編寫的程序中普遍存在,卻很少出現在Java的程序當中。
意外結合: 程序通常被組合成很多層代碼,包括了潛在的作為最下面
的操作系統層。侵入者常可以發送一些對於一層無意義的輸入, 卻對
其他層有意義。Web上最常見的控制用戶輸入的語言就是Perl。Perl寫
的程序往往發送這些輸入到其他的程序來進一步的處理。一個常見的
黑客技術就是輸入字元串"|mail < /etc/passwd"。這個命令得以執行
是因為操作系統為這個輸入啟動一個附加的程序。然而操作系統解釋
管道符"|"並且按語義啟動"mail"程序,結果是將password文件寄給
侵入者。
未處理的輸入: 很多程序寫成處理有效的輸入,很多程序員不知道
當一些人的輸入不符合規格的後果。
競爭(Race)條件: 現在的許多系統是多任務/多線程的。這就意味著他
們可以同時運行多個程序。如果兩個程序同時訪問同一個數據就會發生
危險。想象A和B的兩個程序,需要修改同一個文件。為了修改,每個
程序將文件讀入內存,在內存中改變內容,然後將內存複製到文件。
當程序A將文件讀入內存並且進行修改的時候,產生了一個競爭條件。
在A寫文件前,程序B執行並且獲得讀寫許可權。現在程序A將內存複製到
文件中。因為程序A 在B修改前開始,所有B的修改丟失了。因為你必須
獲得正確的執行順序,所以競爭條件是非常稀有的。侵入者通常不得不
試上千次,然後獲得許可權,進入系統。
1.4.2 系統配置
系統配置bug可以分為如下類別:
預設配置: 許多系統交付給客戶的時候採用的預設的易用的配置。不幸
的是,"易用"就意味著"易侵入"。幾乎所有的交付給你的Unix和WinNT
系統可以很容易的被攻擊。
懶惰的系統管理員: 驚人的數字的主機被配置成沒有系統管理員口令。
這個是因為系統管理員太懶惰了以至於懶得馬上配置一個,他們只是
希望系統最好能少麻煩的儘快啟動運行。不幸,他們再也不回來設置一
個,讓侵入者輕易的進來。侵入者最容易的事情就是先掃描所有的機器
找沒有口令的主機。
生成的漏洞: 事實上所有的程序可能被配置成一個非安全的模式。有的
時候系統管理員將不注意的在主機上打開一個漏洞。許多系統管理員
手冊都建議系統管理員關掉所有不是絕對必要的程序和服務來避免意外
漏洞。應該注意安全審計包通常可以發現這些漏洞並且提醒系統管理員
信任的關係: 侵入者常用"島跳"的方法利用信任關係攻擊網路。一個
互相信任主機的網路和他們最脆弱的連結一樣安全。
1.4.3 口令解密
這個是一個特殊的部分。
真正脆弱的口令: 很多人使用他們自己的名字,孩子的名字,配偶的名
字,寵物的名字,或者小車的型號做口令。也有的用戶使用"password"
或者簡單到什麼也沒有。這給出了侵入者可以自己鍵入的不多與30個
可能性的列表。
字典攻擊: 上述攻擊失敗后,侵入者開始試圖"字典攻擊"。這種方法,
侵入者利用程序嘗試字典中的單詞的每種可能。字典攻擊可以利用重複
的登陸或者收集加密的口令並且試圖同加密后的字典中單詞匹配。侵入
者通常利用一個英語字典或其他語言的字典。他們也使用附加的類字典
資料庫,比如名字和常用的口令。
強力攻擊(Brute force attacks): 同字典攻擊類似,侵入者可能嘗試
所有的字元組合方式。一個4個由小寫字母組成的口令可以在幾分鐘內
被破解。(大約的共有50萬個可能的組合)一個較長的由大小寫字母組成
的口令,包括數字和標點(10萬億種可能的組合)可以在一個月內破解,
如果你可以每秒試100萬種組合。(實際上,一個單機每秒可以算上幾千
次。)
1.4.4 監聽不安全的通信
共享媒體: 傳統的乙太網中, 你只要在線上啟動Sniffer就可以看到在
一個網段的所有通信。現在這個方法由於更多公司採用交換乙太網而困
難。
伺服器監聽: 然而在一個交換的網路里,如果你可以在一個伺服器(特
別是做路由器的)安裝sniffer程序,你就可以可以使用得到的信息來
攻擊客戶主機和信任主機。比如,你可能不知道某個用戶的口令,通過
在他登陸的時候監聽Telnet會話,就可以得到他的口令。
遠程監聽: 大量的主機可以RMON,帶有公共團體字元串。當帶寬非常低
的時候(你不能監聽所有的通信),則呈現有趣的可能性。
1.4.5 設計的缺點
甚至當一個軟體完全按照設計來實現的時候,仍然可能因為設計時的
bug帶來被侵入。
TCP/IP 協議缺點: TCP/IP協議在我們有很多被黑經驗前被設計。結果
有很多可能引起安全問題的設計缺點。一些例子比如smurf攻擊,ICMP
不可達的連結, IP哄騙, 和SYN floods。最大的問題是IP協議本身非常
信任: 黑客自由的偽造和更改IP數據。IPSec被設計成解決了很多的
缺點,但是沒有被廣泛的應用。
Unix 設計缺點: 有很多Unix固有的缺點使得Unix系統頻繁的被入侵。
主要問題是許可權控制系統, 只有"root"才是系統管理員許可權。結果:
1.5 入侵者如何獲得口令?
入侵者利用如下方法獲得口令:
明文監聽: 一些協議(Telnet, FTP, 基本HTTP)使用明文的口令,意味著
他們在比如客戶/伺服器傳輸過程中不進行加密。入侵者可以使用一個協議
分析儀觀察線纜上的這樣的口令。不需要更多的努力;入侵者馬上可以使用
這些口令來登陸。
密文監聽: 許多協議,使用加密的口令。這種情況下,入侵者就需要執行
字典或者強力攻擊口令來試圖解密。應該注意到你不能發現入侵者的存在,
因為他/她是完全被動並且不用向線纜傳送任何東西。口令破解在入侵者利
用自己的機器來鑒權的時候,不許要發送人和東西到線纜。
重放(Replay)攻擊: 很多情況下,入侵者不必解密口令。他們可以使用加密
的格式來代替登陸系統。這通常需要重新編碼客戶端軟體來使用加密的口令
口令文件竊取: 所有的用戶資料庫通常存儲在磁碟上的一個單個文件。UNIX
下這個文件是/etc/passwd(或者這個文件的其他鏡像),WinNT下,是SAM文件
每個方法,一旦入侵者取得了這個文件,他/她就能運行解密程序(如上面所
述)來發現文件中一些脆弱的密碼。
觀察: 一個傳統的口令安全問題是口令必須長而且難猜(使得字典和強力攻
擊不合理的困難)。然而,這樣的口令往往很難記憶,所以用戶就在某地寫
下來。入侵者常可以搜尋一個個人辦公桌來發現寫到小字條上的口令(一般
在鍵盤下面)。入侵者也可以自己訓練在用戶後面觀察口令的鍵入。
交際工程: 一個普通(且成功)的技巧是簡單的打個電話給用戶並且說 "hi,
我是MIS組的Bob, 我們正跟蹤網路上的一些問題,並且出現在你的機器里。
你用的是什麼口令呢?"許多用戶會在這種情況下放棄他們的口令。(許多公
司有政策讓用戶永遠不要給出他們的口令,甚至他們自己的MIS部門,但是
這個伎倆仍然成功。一個簡單的解決方法就是MIS組打電話給6個月的僱員
問他們口令,然後批評他們的錯誤,這樣他們就不會忘記了:-)
1.6典型的入侵過程?
一個典型的入侵過程也許如下:
步驟1.外部偵查--
入侵者會儘可能地找出實際上並不直接給予他們的資訊.
他們常通過公開資訊或偽裝成正常的使用者.
用這種方式的入侵者, 將使你實在難以察覺. 如你的
網路跟你的Domain Name 一起 註冊的(例如 foobar.com),入侵者可以
使用'whois'這種查表(lookup)來盡量找出你的網路(network)資訊.
入侵者也許經由你的DNS表(使用'nslookup','dig',或
其他的工具程序 來作 domain 的轉換)來找出你機器的名字.
入侵者會瀏覽其他的公開資訊, 例如 你的公開站點和
匿名(anonymous)FTP 站點. 入侵者也許會尋找關於你公司的
新聞文件和報刊的發行品.
步驟2.內部偵查--
入侵者使用更具侵略性的技術來對資訊掃描,但不會破壞
任何東西.他們將由你全部的網頁來找出CGI scripts(CGI
scripts 經常是容易被入侵的).他們也許會為了試探主機的存
在而使用'ping'.他們也許會用 UDP/TCP scan/strob(掃描)來
找出目標主機的可獲得服務(services).他們也許會執行一個
如同 'rpcinfo','showmount', 'snmpwalk'等等 的工具程序
, 來尋找可獲得的資訊.關於這點,入侵者只是做出"正常的"
網路行為,並且沒有作出任何被歸類為闖入(intrusion)的舉動.
針對這點,NIDS會告訴你"有人在檢查你的大門握把",但沒有人
真的去試著把門打開.
步驟3.入侵--
入侵者違越了規矩,並開始對目標主機作了可能的漏洞入侵.
入侵者嘗試 在一個輸入資料里,傳遞一個shell 指令,因而
危及CGI script.入侵者試圖以傳遞大量的資料的方式,來侵害
一個已知的緩衝區溢位(buffer-overrun)漏洞.入侵者開始檢查
有無 簡單可猜(甚至 沒有)密碼的戶帳號.一個黑客,會由
幾個階段性的入侵.例如,如果黑客可以得到一個用戶的帳號,
他將試圖作更進一步的入侵舉動來獲得 root/admin.
步驟4.立足--
在這階段中,入侵者已經由機器的入侵,成功地在你的網路中立足.
入侵者主要的目的就是藏匿入侵證據(修改稽核(audit trail)與log檔)
並確認他可以再次侵入.他們也許會安裝可讓他們執行的'toolkits'
.用他們有著後門(backdoor)密碼的木馬(Trojanhorses)置換原先的服務
,或 創造一個屬於自己的使用者帳戶.System IntegrityVerifiers
(SIVs)可以 注意到 檔案的改變 而對使用這些手段的入侵者
做出檢測.由於大部分的網路難以防禦來自內部的侵害,入侵者將利用
這個機器作為其他機器的跳島.
步驟5.利益--
入侵者利用他們的優勢偷取機密資料,濫用系統資源(階段性的由其他機器
侵擾你的機器)或破壞你的網頁.
其他的情節也許開始情況不同.不管是入侵特定的站點或者是隨機地在
網路世界中掃描特定的漏洞.例如 入侵者可能會企圖掃描有著
SendMail DEBUG漏洞機器的整個網路.他們可以輕易入侵有漏洞的機器.
他們不會直接針對你,甚至不知道你是誰.(就好像'birthdayattack'般,
列出已知的系統漏洞與IP位置,憑運氣的找到有著其中一項漏洞的機器)
1.7一般的入侵類型有哪些?
有三種攻擊方式:
偵察--包括ping掃描,DNS zone 轉換,e-mail偵察,
TCP 或 UDP 埠(port)掃描(scan),與經由公開網頁伺服
器可能的索引(indexing),來發現CGI漏洞.
漏洞--入侵者將會利用隱密的特性或缺陷(bugs)來存取系統.
拒絕服務(denial-of-service)(DOS)攻擊--入侵者試圖
破壞服務(或機器),使網路連結(link)超載,CPU超載,填滿硬碟.
入侵者不是想獲得資訊,而是僅僅以如破壞者般的
行為而不讓你使用機器.
1.8 常見漏洞有哪些?
1.8.1 CGI腳本(scripts)
CGI程式是惡名昭彰地不安全.典型的安全漏洞
包括 經由shell特殊字元(metacharacters)
的利用,直接傳遞變質的輸入 於 命令shell里.
使用隱藏的變數,指定系統里的檔案名(filename)
,或揭示更多系統的種種.最為人知的CGI缺陷就是
裝載於NCSA httptd的'phf'資料庫(library).
'phf'library 假定為允許 伺服解析(sever-parsed)HTML,
而造成 傳回任何檔案 的漏洞. 其他入侵者試圖使用的
知名CGI腳本漏洞有:TextCounter, GuestBook, EWS,
info2www, Count.cgi, handler, webdist.cgi,
php.cgi, files.pl, nph-test-cgi, nph-publish,
AnyForm, FormMail.如果你發現有人試圖存取上述
的CGI腳本(但你沒有使用他們),這便清楚顯示了一
個入侵的意圖(假設你沒有把你想使用的CGI腳本
用那個缺陷版本安裝).
1.8.2 Web 伺服器(server) 攻擊
在CGI程序執行后,Web伺服器可能有了其他的漏洞.
非常多的self-written Web伺服器(包括IIS 1.0 與 NetWare2.x)
會因為在一 檔案名
之中,能把一連串的"../"寫在路徑(path)名里,
因而跳到 系統檔案 的其他地方,得到任何檔案.
其他的一般漏洞,就是在 請求(request)域(field) ,
或 其他 HTTP數據 的 緩衝區溢出.
Web伺服器常因為與其底層的operating system
有著互動的關係 ,而產生漏洞.在Microsoft IIS
里有個古老的漏洞被使用,因檔案有兩個檔案名--
一個 長檔名與 一個短的相應8.3形式名 ,有時能
繞過允許機制 而獲得存取.NTFS (the new file system)
有一個特色,名為--"alternate data streams" 相似於
Macintosh系統的 數據與 資源 forks.你可以在通過stream
name時,添加上"::$DATA"(這是為了看他的腳本而不是執行什麼)
,來存取他的檔案.
伺服器長久以來因URLs而存在著問題.例如
"death by a thousand slashes"
問題,導致Apache產生大量的
CPU負載,因它試著在數以千計的"/" URL中處理每一個目錄.
1.8.3 Web瀏覽器 攻擊
Microsoft與Netscape的Web瀏覽器,都有安全漏洞(當然啦,雖然
最新版本的,我們還沒發現),這包括了URL, HTTP, HTML,
JavaScript, Frames, Java, 與 ActiveX 攻擊.
URL數據段,會有緩衝區溢位的情況,當它由HTTP標頭(header)
被解悉時,在屏幕上顯示時,或於某種形式被處理(如
由cache history儲存).而且,有著古老Internet
Explorer漏洞的在瀏覽器,在執行 LNK或URL命令時會伴隨著
能在內部造成影響的漏洞.
HTTP 頭可能因為傳遞給只收特定值的函數而產生漏洞
HTML常會存在漏洞,如 MIME-type 緩衝區溢位 於
Netscape Communicator的
[火星人
]
入侵檢測系統FAQ(全)已經有1001次圍觀
http://coctec.com/docs/linux/show-post-145281.html