文/yangshulei
2003年夏天,對於運行著Microsoft Windows的成千上萬台主機來說簡直就是場噩夢!也給廣大網民留下了悲傷的回憶,這一些都歸結於沖擊波蠕蟲的全世界范圍的傳播。這種事件也以不是第一次了,以往的Slammer, Code Red,Nimda 蠕蟲同樣也有著類似的破壞效果。
這種蠕蟲會在被感染的機器上自己復制,以其達到通過蔓布因特網感染其他的機器的目的。導致了人們對網絡安全問題的重視。
人們總是習慣於相同類型的系統與程序。這同達爾文的某個理論相似,單作的這使許多網絡安全專家畏懼連到因特網,而遭到一種新的惡意的蠕蟲的攻擊,如果最近的沖擊波能格式Windows 的機器的硬盤會是什麼下場?雖然它沒這種效果,但它可以輕易的達到那種效果,隨著新的網絡攻擊的水平不斷提高,提出一個新的解決方案必須的。
這篇文章是說用Honeypots 同Internet 蠕蟲作斗爭的方法,第一部分介紹討論關於傳播廣泛的蠕蟲的背景知識,然後,討論Honeypots 的一些實用的功能。最後,我們將搭建一個Honeypots來同Internet 蠕蟲作斗爭和反擊。最後,我們將展望一下未來的觀點。
1、關於蠕蟲
簡單點說,蠕蟲就是有著危害的代碼來攻擊網上的受害主機,並在受害主機上自我復制,再攻擊其他的受害主機的令人畏懼的實體。
大多數時間, 蠕蟲程序都是計算機黑客,網絡安全研究人員和病毒作者寫的。病毒傳染基於迷惑人脆弱的部分,通過社會工程學來傳播。比如,迷惑一個用戶敲擊一個電子郵件附件,以其達到目的。
蠕蟲主要有三種主要特性:
感染: 通過利用脆弱感染一個目標。
潛伏:感染當地目標遠程主機。
傳播:影響的目標,再感染其他的主機。
2、關於 honeypots
Honeypots是一個哄騙進攻者的計算機。在一個網絡上,惡意的攻擊者將會攻擊偽造的系統,他們使盡一些方法得到的只是一些無關的信息。
當一個honeypot作為偽造的主機,常常哄騙進攻者時,這就意味著所有的請求到honeypot都是可懷疑的,
honeypots 經常認為用於被動分析時,他們也能起交互式作用來處理蠕蟲,兩種honeypots 經常被使用。
高級應用:一種真正的主機通常幾乎犧牲(叫做傀儡主機),在一個網絡在等待任何進攻者攻擊。
低級應用:服務器和/或主機是模擬的(例如Honeyd by Niels Provos)
3、蜜罐同蠕蟲的對抗
這章的目標將是證明交互式honeypots 同蠕蟲作斗爭的優勢,我們將明白怎麼使用新的蜜罐技術來防御不同的階段期間的蠕蟲,
3.1 蠕蟲與蠕蟲的感染
蠕蟲感染的階段就是它在受害主機上自我復制攻擊其他的主機。
在這個階段期間 ,作為防守者的蜜罐會檢測非法入侵者的行為。比如,監視網絡,這項技術通常被稱為太公釣魚,願者上鉤。防守者的蜜罐是一個建在網關上的,扮演著一個防火牆,或者入侵檢測系統(IDS),或者是入侵防御系統(IPS)。它過濾了通過網絡的流量,分析數據包的內容。然後,如果網絡的地址同那些知名的攻擊的指紋是否相同,在檢驗之後,網關將標記一定時期內的危害的源地址。因此,危害的數據包將被重定向到蜜罐中,而不是主網絡中。
對於最近的沖擊波蠕蟲,如果網關機器對來自外部的TCP數據包請求本地135端口,被IDS進行標記。他將被重定向到蜜罐中。我們將在第3.3章中討論蜜罐未來的新功能。
我們也發現了這門技術的缺點:
1,標記總是晚於新的未知的攻擊,
2,這一概念是可靠的嗎?如果因為錯誤的配置而系統出錯,將合法的數據包發到蜜罐中該怎麼辦?
3,網絡速度因為網關的巨量的分析而被減慢。
3.2 蜜罐與蠕蟲的潛伏
蜜罐技術對於對付是非常有用的,特別是撲獲和分析它們。為了撲獲到一個蠕蟲,你可以讓一台主機感染上,至少讓蠕蟲認為已感染上了,在前一章了,我們看到我們能用蜜罐來轉向這些攻擊的流量。
蜜罐也被稱為“傀儡主機”(一個正常的沒有打最新補丁的漏洞主機,有被入侵的可能性)。或者模擬一個服務,注意要讓她們在你的控制下不能在反彈感染其他的主機。如想獲得更多的信息,請參考Honeynet Project.的建議。
3.2.1 受害主機
使用一個受害主機,安裝著原始的操作系統和一些適當的服務,也可以通過VMWare來安裝許多個操作系統,來迷惑蠕蟲的攻擊.
為了撲獲蠕蟲,受害主機等待被感染,以至於監視網絡上的流量並發現蠕蟲.
3.2.2 虛擬的主機和服務
模擬這個虛擬的主機和服務,honeypot 通過偽造的服務能讓遠程的蠕蟲進行接觸。完成這種的程序叫做蜜罐
為了描述這個方法,這裡有一種方法來欺騙沖擊波蠕蟲的,它會欺騙沖擊波蠕蟲認為對方的Windows 主機開放著135端口,並運行著RPC DCOM 服務。
這個簡單的配置通常能成功地發現在因特網上的沖擊波蠕蟲。
create default set default personality "Windows XP Pro"
add default tcp port 135 open
add default tcp port 4444 "/bin/sh scripts/WormCatcher.sh $ipsrc $ipdst"
set default tcp action block
set default udp action block
這裡有一個在Honeyd 發布的對每一個請求4444端口腳本程序。
!#/bin/sh
# Creation of a directory for every contaminated host
# attacking the honeypot, in order to archive different binaries
mkdir /tmp/$1-$2
# Download of the worm through TFTP in this directory
# (specific behaviour for MSBlast)
cd /tmp/$1-$2/
tftp $1 <
get msblast.exe
quit
EOF
通過這種簡單的配置,我們能在沒有操作系統中發現沖擊波蠕蟲的攻擊。這項技術所以很實用。
3.3 蜜罐與蠕蟲的傳播
3.3.1 對蠕蟲請求的回應
當一個蠕蟲想傳播是,會隨機攻擊一些IP.在這些目標列表中,一些IP可能沒有被用.但其他的IP就會遭到蠕蟲的攻擊,如果一些IP對蠕蟲的攻擊沒有相應的話,它們就會跳過這些IP攻擊其他的IP.
當一個蠕蟲攻擊一個不存在的主機時,蜜罐就會偽裝信息讓蠕蟲攻擊它.
比如,沖擊波會隨機選擇攻擊開了135端口的主機.對沒有用的IP,我們可以設置蜜罐來誘撲沖擊波蠕蟲.要用到叫做arpd的demon.具體配置如下:
create default
set default personality "Windows XP Pro"
add default tcp port 135 open
set default tcp action block
set default udp action block
有了這個配置,沖擊波蠕蟲就會對不存在運行著蜜罐的IP進行攻擊,蠕蟲會以為對方開著135端口的漏洞主機.通過這門技術,沖擊波蠕蟲就會被偽造的信息欺騙,達到拖延時間,進而通知管理員,采取措施,對進程中的程序進行清理.避免遭到沖擊波的控制.
如果一個新的蠕蟲設計過於復雜,這個蜜罐就不是那麼好配置了.
3.3.2 對蜜罐的緩慢的回應
繼續前一章的,蜜罐能監視所進來得請求的數據,使在網絡層的對蠕蟲的回應減慢,這項技術以被使用,所用到的工具叫做Labrea。這個Unix daemon 能對未存在的IP作出回應。為了模擬對攻擊者的TCP session。它使用合法的RFC的文檔,來最大化的拖延TCP session的時間。為了避免蠕蟲的攻擊,TCP window size 始終保持為0。
通常下蠕蟲都是以一個進程在受害主機上的。在內核中使用classic network calls來到處傳播,在用戶的領域使用classic API。蠕蟲不知道網絡為什麼運行這麼慢,它會減慢並阻塞偽造的目標。
作為實驗,Labrea已成功地戰勝了紅色代碼蠕蟲,它也可能對付其他的蠕蟲攻擊。在未來的Honeyd 系統中將添加這樣的功能。
盡管這種防守體系有很多缺點,比如多線程的蠕蟲或未意識到的蠕蟲會同時攻擊一些目標,而不會阻塞我們偽造的目標。
3.3.3 我們應采取什麼反擊措施
一些已發布的反擊措施
*孤立一些主機
*關閉蠕蟲敏感的遠程的服務
*對遠程設備(路由器,防火牆等等)制定合適的流量監控
3.4 Launching a counter offensive
這裡有一個通過Honeyd配置的例子,
create default
set default personality "Windows XP Pro"
add default tcp port 135 open
add default tcp port 4444 "/bin/sh scripts/strikeback.sh $ipsrc"
set default tcp action block
set default udp action block
蜜罐的TCP 135端口開著,並接受沖擊波蠕蟲的攻擊,幸運的是,蠕蟲沒有檢查RPC 回應的完整。因此,蜜罐經過三次握手的過程,來檢測非法的數據包。
然後,我們添加一個4444端口服務,它可以讓沖擊波獲得遠程的SHELL,包括通過TFTP來執行下載代碼。這個偽造的SHELL將通過一個叫做strikeback.sh來欺騙蠕蟲。
以下是運行在Windows XP Pro系統下的strikeback.sh程序,
!#/bin/sh
# Launches a DCOM exploit toward the infected attacking host
# and then run cleaning commands in the remote DOS shell obtained
./dcom_exploit -d $1 << EOF
REM E