logo
 
 

 

logo TANet report 190x50p

已移往新網站 請重新登入 https://noc.tanet.edu.tw

 

網路管理資訊

使用Honeypot及Snort來誘捕駭客及蠕蟲的攻擊

 

資料來源:麟瑞科技 www.ringline.com 

前言
Honeypot(蜜罐)通常是指一種誘捕系統可以對未經授權或非法的存取進行偵測、誘捕或反制。Honeypot可以是任何的資訊系統資源,諸如伺服器、檔案、工作站、印表機及路由器或其他網路設備等,一般來說使用Honeypot的目的有以下幾類:

  1. 減少誤判(False-positives) – Honeypot上並不存在駭客有興趣的有價值資訊, 並且通常只有honeypot的系統管理員會使用其上的資源,所以任何除了管理員所認知的資源存取外都有可能是入侵的徵兆。
  2. 早期預警 – 因為可以減少誤判,所以Honeypot可以有效的對攻擊事件做出反應。早在西元2003年,Honeypot是當時最早偵測出SQL Slammer蠕蟲的方法之一。
  3. 偵測新型威脅 – Honeypot的早期預警功能使得它在過去曾經最快找到兩個零時差(zero-day)攻擊,像Honeycomb(一種研究型的Honeypot)就可以被用來發展IDS的signatures。
  4. 了解敵人攻擊手法 – Honeypot可以記錄所有的存取行為(包含輸入的指令、 封包及上傳的檔案等)所以管理者可以使用這些資訊了解駭客攻擊的手法。
  5. 深層防禦 – 第二代的Honeypot甚至可搭配IDS、Firewall或弱點掃瞄軟體,在偵測到攻擊時通知IDS或Firewall進行阻擋或藉以拖延駭客攻擊成 功的時間;Honeypot也可以被設計成無法被利用來當跳板去攻擊別人。例如LaBrea是專門被用來對付Code Red worm,而Jackpot是用來對付Mail Relay。Jackpot會監聽SMTP埠但不真正傳送郵件而是將所有Mail Relay要求的IP記錄下來。
  6. 電腦犯罪取證 – Honeypot可收集資源存取證據以供訴訟使用。


Honeypot的種類及層級
Honeypot的交互層級(Interactive Level)可以上從Application Layer到下層的MAC Layer,而一般較低層級的交互方式可以僅僅用Port Listener模擬即可達成。Netcat即是一個有名的Port Listener,這行指令nc –vv –l –p 21 > ftp.log可以達成簡單的FTP連線記錄。Application Layer層級的Honeypot可以是模擬FTP或SMTP等的應用程式藉以引起駭客興趣而收到更詳細的資訊,但必須提供如真實應用程式般的交互內容做 誘捕。一般來說Honeypot分成兩類:真實Honeypot及虛擬honeypot。真實Honeypot使用與Product環境一樣的作業系統, 所有回應都跟Product環境的系統一樣。因為系統會假設所獲取的資料都是有害的所以不管駭客使用甚麼駭客技巧進行攻擊,所有操作都可被系統獲取;而且 真實Honeypot較不會為駭客所起疑以為他們進入了一個誘捕陷阱。但通常真實Honeypot被攻陷後必須重新安裝作業系統或使用虛擬機器將備份倒回 去,所以在系統的恢復上較耗時耗功。相對的,虛擬Honeypot可只模擬Protocol Stack或應用層等,而且這些模擬大都在記憶體裏發生所以重開機即可將所有參數起始化。虛擬Honeypot通常可以模擬數以百計的IP地址、服務及 埠,但就是因為它的彈性跟方便性會比較容易被駭客發覺,例如它受限的模擬功能、特定pattern的記憶體fingerprint、特定的I/O行為等。 在後面的章節我將以一個Open Source的虛擬型誘捕系統Honeyd為例再詳加說明Honeypot的用法及如何使用它來誘捕駭客。


在此我先以不同交互層級的Honeypots說明這幾種Honeypots的特點,有興趣的讀者可以自行安裝與研究。


1.Back Officer Friendly – BOF是一個在Windows平台上的低交互層級的Honeypot,它安裝設定簡單,模擬的是比較針對Port。也算是比較入門等級的虛擬 Honeypot。介面如圖一所示,BOF可以模擬FTP、Telnet、SMTP、HTTP、POP3、IMAP2甚至是有名的後門程式Back Orifice(Listen 在Port 31337)等服務的Port Listeners及回應。圖二顯示了當我用netstat來觀察BOF實際的確在Listen上述的埠號。圖三則顯示出當我實際發出連線時,BOF的確 會接受連線要求並回應。
 
 

2.Specter – 跟BOF一樣是低交互層級的Windows版Honeypot,但比BOF多了可模擬作業系統(但僅支援Windows平台)、警報及Log的能力,但受限於其低交互等級所以可以收集到的資訊相較高交互等級的Honeupot會少多。
 

圖一



3.Honeyd - 低交互層級的Honeypot,可模擬數以百計的作業系統平台(包含不同Service Pack版本)、IP Stack及服務,以及超過6萬個可用來與駭客交談的虛擬IP地址等,它主要是被使用在模擬production環境。Honeyd也有一個獨特的黑洞 (Blackhole)監控功能,可以對整個網路系統與Internet的交互活動做長期的趨勢分析。
 

4.Homemade – 中交互層級的Honeypot,比較針對單一需求架設Honeypot為目的,不管是Productuon型或研究型的Honeypot都適用。
 

圖二

5.ManTrap – 中高交互層級的商用Honeypot,可以模擬多個與Production完全一樣的作業系統與服務交互能力,本身的資料控制及擷取能力可以獲取詳細的未經授權存取及攻擊手法。
 

6.Honeynets – 屬於高交互層級的Honeypot,除了可模擬多個與Production完全一樣的作業系統與服務交互能力外,還可模擬出多個Honeypots,不過因為其複雜性,一般鮮少用在production的環境而多用在研究的環境。
 

圖三

 

Honeypot部署原則
部署一個安全的Honeypot及分析Honeypot的記錄是很花時間的工作,而且必須要有一定的攻擊防禦知識來進行管理否則一旦弄 巧成拙,不但無法收集駭客攻擊行為,Honeypot反而被攻陷轉而當跳板去攻擊網路上其他目標就得不嘗失了。並且請記住,Honeypot並不是用來取 代防火牆或入侵偵測系統等設備,而是與這些資安設備互相合作達成所謂的資安聯防。Honeypot的部署設計原則有以下幾點要注意: Honeypot的Log必須要遠端存放以防止當你的Honeypot被攻陷後它所辛苦收集到的資訊也付之一炬;其次要能夠隱藏你的Monitoring 裝置(以筆者經驗,使用Switch的Port mirror是不錯的選擇),例如sniffer等,否則若被駭客發現Monitor裝置的存在駭客就可能將其破壞或甚至讓駭客以為其身處誘捕系統而逃之 夭夭;再來你的Honeypot必須儘可能的模擬真實的Production系統以將駭客攻擊引導到Honeypot;最後必須要確保Honeypot的 資料控制安全無虞(可以加固Honeypot所在的作業系統或在Honeypot與Production主機間安裝防火牆),即使被入侵也不會被當跳板攻 擊他人。


在Honeypot部署初期階段還必須要確定你使用Honeypot的目的,是要監控內部威脅還是外部威脅?要使用Honeypot監控哪些服務及其應用 程式?模擬的服飾及應用程式的會話層級要做到甚麼等級?使用哪一種作業系統及使用哪種Honeypot?Honeypot模擬的作業系統是要做部份弱點修 補就好還是要全部修補完畢(若要保護production主機則建議最好要跟production相同等級的Patch,但若是要捕獲入侵或蠕蟲行為資訊 則建議只做部份Patch,特別是可以只針對某攻擊的弱點不做Patch外其餘全上Patch以模擬真實入侵或蠕蟲感染情境)?是要針對駭客或蠕蟲行為研 究亦或是針對Production的環境來獲取入侵資訊?確定這些問題後您就可以開始進行部署了。
 

Honeypot擺放位置的考量
Honeypot通常會被部署在外部網路、內部網路或DMZ區,擺放的位置也通常依據不同需求有不同考量;擺在外部網路通常可以收集到最多入侵資訊,但也 可能因為缺乏資安設備的保護而有被攻陷的可能;擺在內部網路主要是針對收集內部威脅或因VPN連線造成的威脅,例如之前的Blaster worm是以Port 135為感染管道,一旦防火牆沒有適當的設定造成Blaster worm感染,此時Honeypot就可以是一道輔助關卡來達到早期預警,但缺點是萬一Honeypot被入侵成功的話對於內部網路來說風險就會比較大。 一般來說最好的擺放位置還是在DMZ區(如圖四),比較可以兼顧前述兩種擺放位置的特點,雖然設定上會比較複雜點。 


圖四
 

Honeyd的特點及安裝需求
Honeyd(Honey Daemon)是一個功能佳又富有彈性的Open Source的虛擬Honeypot,它的第一個版本是在2002年4月由密西根大學的Niels Provos所開發及維護,它可以模擬多種作業系統的IP Stack、回應封包、並可以模擬出幾乎任意數量的IP地址,而且它還可以為真實主機的服務提供代理。Honeyd也支援Logging,包含將記錄資訊 轉到Console、儲存在檔案或由一中央的Syslog Server儲存。當Honeyd偵測到一個非使用中的IP被非法要求連線時(偵測方式是利用Blackholing或ARP Spoofing),它會模擬成一個擁有此IP跟服務的系統然後跟對方進行交談,交談的過程都會被Honeyd給記錄下來,等交談完畢後Honeyd就會 將此IP及對應的服務給卸載下來。Honeyd只會在對方有連線要求時模擬出所需的IP及服務,所以Honeyd的運作是很有效率的。順便值得一提是 Honeyd是使用NMAP的OS Fingerprint資料庫,所以可以模擬超過490種的作業系統發佈版本,所以當駭客使用NMAP來對Honeyd做OS的 fingerprint,Honeyd就可以輕易的騙過它們。如下圖所示,Honeyd模擬成Cisco Router 7206 IOS 11.1並成功的騙過NMAP的OS版本探測。


圖五
 

在安裝Win32版的Honeyd前必須要先安裝Cygwin套件、WinPcap及Snort(也可使用Ethereal或Windump),Snort是使用來監控所有攻擊Honeyd的行為及警報的功能。

 

Honeyd的設定
Honeyd中是以一堆Scripts來模擬不同平台的服務,一個Template可以模擬一個具不同Patch Level或執行套件的平台,而Honeyd的設定檔裡可以有很多Templates。接下來我針對所要模擬的平台、所要模擬的Port的狀態、所要模擬 的服務、所要模擬的系統變數及實際用來模擬的Scripts等建立一個Template如下:
 

CREATE Windows 2000 
SET Windows 2000 PERSONALITY "Windows 2000 SP2" 
BIND 10.0.0.3 Windows 2000 
#Set port behavior 
SET DEFAULT Windows 2000 TCP ACTION RESET 
SET DEFAULT Windows 2000 UDP ACTION RESET 
ADD Windows 2000 UDP PORT 135 OPEN 
ADD Windows 2000 UDP PORT 137 OPEN 
ADD Windows 2000 UDP PORT 138 OPEN 
ADD Windows 2000 UDP PORT 389 OPEN 
ADD Windows 2000 UDP PORT 445 OPEN 
ADD Windows 2000 UDP PORT 500 OPEN 
ADD Windows 2000 UDP PORT 4500 OPEN 
ADD Windows 2000 TCP PORT 80 "cscript.exe c:\Honeyd\scripts\iis5.cs" 
ADD Windows 2000 TCP PORT 88 OPEN 
ADD Windows 2000 TCP PORT 135 OPEN 
ADD Windows 2000 TCP PORT 137 OPEN 
ADD Windows 2000 TCP PORT 139 OPEN 
ADD Windows 2000 TCP PORT 3389 "sh c:\Honeyd\scripts\termserv.sh" 
#Set template system variables 
SET Windows 2000 UPTIME 311020 
SET Windows 2000 DROPRATE IN 0.0005 
SET Windows 2000 UID 21233 GID 71523

在上面的設定中我建立了一個Template並命名為Windows 2000,此Template是用來模擬Honeyd中已定義好的Windows 2000 SP2範本,除了列出來的Port Number如135、137、138、389、445、500、4500外,其餘的Port皆定義成關閉,而Port 80我要使用Honeyd的IIS 5 emulated Script來模擬,Port 3389我是使用Honeyd的termserv script來模擬Windows 2000 SP2下的終端服務。
在定義完Honeyd的config檔後我們就可以執行Honeyd來誘捕攻擊。



 

Snort的使用
在Honeyd與駭客攻擊或蠕蟲攻擊的交談過程中,我們可以使用Snort來進行攻擊行為樣本的過濾篩選,只將我們所感興趣的樣本收集 起來供警報或之後的鑑識分析之用。在Snort中是使用規則(Rules)來進行篩選,針對蠕蟲、Yahoo IM及P2P的偵測我舉幾個簡單的規則來例釋規則的使用。


alert tcp !$SMTP_SERVERS any -> !$SMTP_SERVERS 25 (msg:"Possible virus Mailing";flags:A+;classtype:policy-violation;sid:11111; rev:1;) 此規則可以針對非SMTP Server的主機所發出的寄信要求予與發出警報,msg指明了警報訊息為”Possible virus Mailing”,flag的A+表示符合的traffic flow的ACK欄位必須已被設定,攻擊被分類為policy-violation,此規則的Snort ID為11111,版本為1。


alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"Chat Yahoo IM login"; flow:from_client,established; content:"|70 61 74 83 d2 f3 b2 06 46 f6 d6 61 9e 3d 2e|"; classtype:policy-violation; sid:10570;rev:1;) 此規則針對traffic flow由內網到外網且content具有如上所列特徵的封包會被判斷為Yahoo IM的封包。


Alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"p2p Gnutella client file connection"; flow:from_client,established; content:"X-Gnutel"; classtype:policy-violation; sid:10566; rev:1;) 此規則針對Gnutella此P2P的偵測是依據 Gnutella Client在下載檔案時的content具X-Gnutel特徵來決定。


但有一些IDS逃避技術(IDS Evasion)必須要留意,第一種常用的逃避技術是利用讓IDS產生大量的警報而讓IDS無法即時的將真正的攻擊過濾出來,使用這類技術的工具有 Stick、Snot及Nmap的Decoy Scan。另一種常用的逃避技術是利用分片(fragmentation)技術讓IDS無法從特徵資料庫(Signatures)將攻擊比對出來,而使用 此類技術的工具則有fragrouter及Whiskeruse。Stick及Snot會利用rulesets來產生與Snort的rules相當類似的 Signatures,使管理者為大量的警報而迷惑,進而將真正的攻擊藏在其中蒙混過關。Nmap的Decoy Scan會產生大量的偽造來源IP地址,然後將真正的攻擊藏匿其中。

 

進一步的加強
之前提到在安裝Honeypot的機器上為了防止因為要誘捕駭客或蠕蟲,但反而被駭客或蠕蟲攻陷而成為跳板,最好是對本身的作業平台做 加固,其中除了上補丁及強化系統安全的設定外,另一個方法就是可以考慮部署主機型入侵偵測防禦系統(Host IPS)。Host IPS一般來說具有個人防火牆(Personal Firewall)功能(可以限制應用程式的存取及網路連線)、某種程度的防毒功能(特別是E-mail的附件的掃瞄)及作業系統層級的保護 (Library-level及Kernel-Level)的功能。基本上Host IPS會攔截所有與系統核心間的呼叫,一旦發現異常便可以阻擋或發出警示,如下圖所示。


Host IPS對Buffer Overflow的防護效果特別卓著,Host IPS的特點有以下幾點:

  • 預防攻擊與降低攻擊的影響,例如防止程式寫入檔案。
  • 當電腦位於受保護的網路外時,Host IPS可對其進行保護。
  • 防止遭受由CD 或USB 裝置導入的本機攻擊。這些攻擊通常會致力於將使用者的權限提升為「系統管理員」,使攻擊得以蔓延至網路中的其他系統。
  • 提供最後一道防線以抵禦其他安全性工具無法防護的攻擊。
  • 防止相同網段中的裝置遭到內部攻擊或誤用。
  • 不受網路架構的限制;可保護已過時或罕見網路架構(如Token Ring 或FDDI) 上的系統。


如果說因為軟體或作業系統的嚴重漏洞終究還是無法防護,我們可以退一步來降低攻擊發生後的影響。SELinux(Security-Enhanced Linux)是由美國國家安全部(National Security Agency)所主持開發的GPL計劃,SELinux是使用一個安全性很高的所謂的強制存取控制(Mandatory Access Control)架構,其目的是在提高Linux系統的安全性且提供更穩固的系統並可防禦未知攻擊及蠕蟲,據報導其具有相當於B1 Level的軍事安全等級;但具體的使用上是相當繁瑣且不便。


在部署SELinux後,可以減輕惡意攻擊或惡意軟體帶來的危害。一般來說Linux系統安全是基於自主存取控制方法(Discretionary Access Control),只要是ACE(Access Control Entry)上所明定的存取,資源的所有者就可存取他所擁有的所有資源。在傳統的安全機制下,一些通過setuid/setgid的程式會產生嚴重的安全 隱憂,甚至連一些系統管理者錯誤的設定也會引發嚴重的漏洞從而被輕易地攻擊得逞。而SELinux則是基於強制存取控制方法(Mandatory Access Control),它透過強制性的安全政策,應用程式或使用者必須同時符合DAC及對應SELinux的MAC才能進行正常操作,否則所要求的存取都將遭 到拒絕。


其它安全性工具還有很多,像是tripwire及chkrootkit對於主機上系統層級的保護也都有很大的效果,請有興趣的讀者自行參考與發掘。

 

結論
安裝Honeyd及Snort只是部署蜜罐系統的第一步,你還必須經常的去觀察及調教系統,包括收集資料的分析、組織對於捕獲的攻擊事件的回應是甚麼及 Honeypot的更新問題以確保可以捕獲最新的攻擊及蠕蟲。警報(Alert)對於Honeypot系統來說是設計上的第一要件,有好的警報系統管理者 才得以在攻擊發生的第一時間得到通知並進一步採取行動,警報的內容也必須特別注意,顯示的資訊應該至少包括來源IP及埠號、目地IP及埠號及使用的協定 等。如圖六所示。
 

Date: Mon, 10 Dec 2001 02:44:44 GMT 
From:  Email住址會使用灌水程式保護機制。你需要啟動Javascript才能觀看它  
To:  Email住址會使用灌水程式保護機制。你需要啟動Javascript才能觀看它  
Subject: #### SCAN ALERT #### 
You have received this message because someone is potentially 
scanning your systems. The information below is the packet 
that was denied and logged by the Firewall. This is e-mail alert 
number 1, with a limit of 5 from host-216-77-214-82.fll.bellsouth.net. 
        ----- CRITICAL INFORMATION -----
        Date/Time:    01/12/10  02:02:58 
        Source:       host-216-77-214-82.fll.bellsouth.net 
        Destination:  honeypot-2 
        Protocol:     tcp 
        S_Port:       1079 
        D_Port:       smb 
        ----- ACTUAL FW-1 LOG ENTRY -----
02:02:58 accept firewall >qfe1 useralert product VPN-1 & FireWall-1 src 
host-216-77-214-82.fll.bellsouth.net s_port 1079 dst honeypot-2 service 
smb proto tcp xlatedst honeypot-2 rule 12

圖六

 


圖七

然後記得必須把這些警報都Archive起來供以後的資料採礦(Data mining)及趨勢分析(Trend Analysis)之用。圖七是使用ACID搭配MySQl及PHP的Snort圖形介面系統來分析及統計事件。


參考資料:
1.http://www.honeyd.org
2.http://www.snort.org
3.http://www.cert.org

                                                             (作者現任職於麟瑞科技)

 
 

服務信箱: noc@mail.moe.gov.tw   信箱圖示