中國春秋時代,楚國有個自以為很聰明的人,常憑著自己的感覺做事,不太採納他人的意見。有次他坐船過江,突然一陣強風吹過,船身搖晃不定,他身上的寶劍就掉入江中,船夫很緊張的對他說:『快!跳下去撈起來!』。這個人卻不慌不忙的掏出一把小刀,在船身劍掉入水中的地方做了個記號,等到船靠岸的時候,船夫狐疑的問他是不是有什麼找寶劍的好點子,他這時笑著回答:『我剛剛在掉下去的地方做了記號,按著記號下去找,準沒錯!』。這時船夫跟岸上的人們哄然大笑:『船是會動的,前一分鐘跟後一分鐘的位置完全不同,做了記號又有什麼用呢?』
資訊安全這個領域也是如此,如果總是拿著以往的經驗來處理新的威脅、新的事件,就如同上述刻舟求劍的例子一般固執、不知變通,悶著頭蠻幹,遇到新的攻擊模式,可能就無法有效應變。
資訊業是目前變動最快的產業之一,因此每年的網路發展、系統架構、網路攻擊模式、原理,往往不一定相同,本文將會提出許多這幾年的安全事件變化,藉由這些例子讀者可以了解,唯有持續不斷地關注相關技術與趨勢,才能有效地面對新的資訊安全威脅。
蟲蟲危機
早在1988年11月,美國康乃爾大學的Robert Morris Jr,撰寫一個Unix上的程式,利用系統漏洞進行傳播。這類利用系統漏洞來傳播主體的惡意程式碼,叫做蠕蟲。在2003年和2004年期間,是微軟作業系統的惡夢,在這兩年內分別有SQL Slammer蠕蟲(利用MS02-039漏洞,通訊埠UDP 1434、1433)、疾風Blaster蠕蟲(利用MS03-026漏洞,通訊埠TCP 135)、殺手Sasser蠕蟲(利用MS04-011漏洞,通訊埠TCP 445),針對微軟Windows作業系統漏洞進行擴散。
雖然這幾隻有名的蠕蟲僅進行擴散並無明顯惡意行為,但是擴散行為也影響了頻寬及系統,而最大的關鍵在於微軟作業系統本身預設值便開啟了數個服務通訊埠,但誰也不知道何時這些服務又會出現什麼漏洞,而攻擊程式與蠕蟲往往都在漏洞公佈之後馬上出現,且時程有縮短的趨勢。微軟在經歷過這幾次的事件後,於2004年八月推出XP SP2時預設將防火牆啟動,一開機即可阻擋所有外對內連線,除非手動開啟所需要的服務與通訊埠。這樣的措施讓微軟XP系統不再門戶洞開,就算系統沒有更新,只要防火牆擋著該通訊埠,也不會受到攻擊影響。有人可能會問,那XP SP2 有防火牆功能,但是Windows2000系統呢?所以,使用Windows 2000的使用者,仍必須留意漏洞資訊,準時更新系統,否則仍可能成為蠕蟲傳播平台,像是2005年8月14日針對MS05-039(Port 139、445)漏洞的Zotob蠕蟲,剛好就是針對Windows2000系統,而這些Windows2000系統如果沒有進行更新,除了安裝額外的防火牆之外,沒有任何更好的應變措施。
根據統計與觀察,許多使用者,尤其是家庭用戶,常把家用電腦視為家電,並不進行更新與維護的行為,這樣的使用習慣很容易讓未更新的系統遭受到入侵或感染。而微軟預設開啟防火牆的這項措施,讓未更新的微軟作業系統能夠免於受害,也不至於再出現2003年至2004年這樣大規模的感染行為。
提示一個小觀念,一般在使用作業系統某些服務(像是網路芳鄰)時,該服務會有一個或數個通訊埠(像是135、139),而如果攻擊程式是針對某個服務來進行攻擊,會攻擊該服務的通訊埠(像是Blaster攻擊Dcom-RPC服務,通訊埠TCP 135),若是用防火牆阻擋這個通訊協定,攻擊行為是不會傳送到該主機上(未完成Handshake) ,所以IDS/IPS不會偵測到此攻擊Pattern。
了解上述措施以及原理,如果你是身為一個網路安全管理人員,確定你已經部署了XP SP2,如果再誤信IDS/IPS廠商,以為平安無事都是IDS/IPS的功勞,那你真該好好了解一下攻擊原理與部署策略。另外目前許多IDS/IPS廠商仍然拿著『大規模蠕蟲攻擊』來當活廣告,也值得令人好好思考。作業系統通訊埠都關了,還有什麼洞可以打?也不再有那麼多平台能夠造成全球性的影響,面對這樣的蠕蟲感染模式,微軟是不會再犯第二次錯誤的。
面對這樣的變化,利用路由器Netflow資訊來進行攻擊流量預測的策略可能要稍微修正,而且也變得較為沒有效率。以前的預警模式是,漏洞出現後,立刻設定Netflow資訊監控設備,針對漏洞通訊埠流量進行監控。但是由於能感染的作業系統數量變少,傳播規模下降,可能需要稍微修正Threshold,來增加敏感度,但同樣的,這也增加了誤判率。其實,各位可以試試看這樣的監控方式,你會發現這種應用在預測蠕蟲爆發時間的做法,已經不再那麼的有效。
道高一呎,魔高一丈。這類利用系統漏洞來進行傳播的蠕蟲,微軟藉由內建防火牆來降低威脅,但利用Email傳播的蠕蟲,仍能造成廣大的影響,突破防火牆,進入企業內網路造成危害。
你真的了解攻擊嗎?
如果你是網站管理者,可能曾發生過下列情形:你在網頁伺服器(IIS)前安裝了一台防火牆,僅允許通訊埠TCP 80進入,你也在伺服器旁邊安裝了入侵偵測系統,打開了所有Signatures,等著抓攻擊行為,結果好幾天過去了,發現什麼都沒抓到,倒是誤判一堆。
因為僅開port 80,內部那台IDS可能只抓到port 80的攻擊行為,而你再去IDS裡面檢視,裡面的特徵資料庫都是一堆IIS unicode、ida、IIS showcode的特徵碼,而這些都是幾百年前的攻擊行為的Signature,而真正會對你IIS伺服器造成影響的-「SQL injection」,你的IDS不一定抓的到。
進行SQL Injection攻擊就像是正常的網頁行為,而這種「針對Web Application攻擊」模式已經是目前最流行的手法,駭客們知道你會定期修補系統漏洞,世界上也沒那麼多IIS或是Apache伺服器的Buffer overflow或漏洞可以玩,但是利用Web應用程式的漏洞,卻仍可以讓他們取得系統控制權。
如果你仍然死守著IDS/IPS,以為IDS能幫你抓住攻擊,而不了解攻擊模式,甚至以為安裝了防火牆就沒事了;但跟一般網頁行為一樣的Web應用程式攻擊,(像是SQL Injection),Port80能擋嗎?
管理IDS的人員更應該熟悉攻擊行為,IDS絕對不像防火牆一樣買來擺著,就可以等著抓攻擊,IDS更須花大量的人力與專業技巧去維護與部署,如果如上面例子所述,放著IDS而不去了解後面伺服器的環境狀態,你要IDS怎麼幫你抓攻擊?你要怎麼進行log分析?IDS/IPS廠商也應該積極轉換策略,針對「Web 應用程式攻擊」開發更有效的偵測方式,而不是再死守在偵測「系統漏洞攻擊」這塊,畢竟現在沒人把整個系統曝露在防火牆之外了。
另外,目前有許多企業開始導入所謂的SOC監控(Security Operation Center),利用安全資訊管理系統(SIM,security information management)像是ArcSight、NetForensic等,將IDS/IPS、防火牆、路由器等設備的紀錄檔彙整來進行分析,如果連前端的IDS紀錄都存疑,更遑論拿給後端來進行分析。後端分析系統要正確的前提是,IDS/IPS、防火牆吐出的紀錄檔是正確的、能夠理解的,如此才能利用SIM的correlation rules來撰寫分析規則。
新的安全威脅:Client-side Attack
除了上述「系統漏洞」所造成的攻擊行為外,目前最紅的攻擊模型就屬防火牆無法可擋,能讓內網用戶皆受影響的『Client-side Attack』。所謂的「Client-side Attack」多利用瀏覽器或檔案總管關聯檔相關漏洞來進行影響。簡單的說,你一旦瀏覽惡意網頁或是預覽某檔案,不需開啟或是任何動作(包括按Yes或是安裝任何東西),立刻就受影響。
從2004年至今,微軟已被發現有許多可以造成這種攻擊模式的漏洞,像是MS04-040 MS-IFrame漏洞、由台灣ICST發現的MS05-036、還有才剛發生在2005年12月底的WMF漏洞(此漏洞攻擊程式出現時仍還沒有修補程式),這些漏洞皆可利用建置惡意網站令使用者瀏覽、或是利用電子郵件發送惡意圖片、檔案。只要使用者進行瀏覽或預覽行為,立刻就會執行攻擊程式所設計之行為,像是下載木馬程式並且執行(注意上述流程是不需誘騙使用者下載或執行便可達到植入木馬的動作。)。對岸也已經有許多這類相關的攻擊程式,其中這類網頁木馬被稱做是「網馬」,許多駭客們利用這些攻擊程式生成惡意網頁,並且入侵大型網站,在上面放置這些惡意網頁(掛馬)。想想看,每天有多少未修補的使用者瀏覽這些大型網站,就會有多少人成為新的肉雞。
面對這種新型態的攻擊模型,對於網頁瀏覽是由內往外之行為,管理者不可能限制由內對外port80的行為,因此不管是內網或是躲在防火牆、NAT後面,未修補的用戶端就是會受影響。
對於這種攻擊模型,可能僅能靠修補來避免用戶端受害,但是最近的這個例子WMF漏洞,卻出現沒東西可修補的窘境。在2005年12月27號metasploit釋出此一zero-day攻擊程式,而微軟直到2006年1月6號才釋出修補程式(原先還預計要1月10號釋出)。這段期間網路上已經出現大量惡意網站,除了立刻將這些惡意網站阻擋以外,用戶們也只能自求多福,往往廣大的用戶端是最不善更新系統的一群,因此造成的危害也將會是最大。
Google是駭客工具!?
2004年12月21日,有一隻名為Santy的蠕蟲,利用phpBB的漏洞,來進行傳播,而他最為特別的是,利用Google來搜尋網路上有安裝phpBB程式的站台,對這種耳目一新的傳播方式,Google隔天便採取措施,不允許Google的網站進行類似「Powered by phpBB」這樣的查詢(如上圖)。
這種利用Google找尋受害目標的手法叫做「google hacking」,原先是駭客手動來找尋受害伺服器的手法之一,許多駭客利用Google來找尋網路上特定程式、特定版本之伺服器,如今演變為蠕蟲的功能。由此可見駭客們的智慧,讓蠕蟲感染方式有更多變化。
在這個例子中,該蠕蟲攻擊網路上的phpBB伺服器,所造成的影響是該網頁伺服器被置換網頁。而瀏覽者並沒有受到影響。但是,如果說將來出現一隻會加上網馬的蠕蟲,也就是說,它會先感染網頁伺服器,然後置換成惡意網頁(進行client-side attack),那將影響大量的瀏覽用戶,這種兩段式的傳播方式,將會是突破目前作業系統內建防火牆的最好方式。
Botnet網路控制全世界
最近幾年網路上另外一個非常熱門的網路安全威脅-Botnet,有人稱做「殭屍網路」、「機器人網路」、「受控網路系統」。Botnet一般由數百台甚至數千台的被入侵主機(Zombie)構成,Botnet控制者可以統一對這些受入侵主機下指令,命令他們進行各式惡意行為,像是發動分散式阻斷攻擊、大量發送Spammail、充當投票部隊。這類攻擊模型遠比以前駭客單獨入侵一部主機的行為,來的更具威力與強大,試想想某一個攻擊者,麾下擁有數千台的受控主機,那種強大的權力有多麼令人震撼,以一般網路滲透理論而言,光數台主機被入侵之後,利用竊聽、蒐集硬碟資料、keylogger等所往外擴張取得更多主機的行為,就已經令人擔心,更遑論數千台的受控主機所往外影響的範圍了。
如上圖,駭客初期入侵數部主機,植入自行開發的Bot後門程式,這些被入侵主機便會自行到特定的IRC 伺服器報到,並且在特定的頻道(IRC channel)接收指令,而駭客並不需直接連至這些受駭主機中下指令,只需在這些頻道中下指令,Bot接收到指令後便會執行,這種間接式的控制模式,大幅降低了被追查的風險,若是駭客又經由跳板連至IRC伺服器,追查駭客來源幾乎是難上加難。接下來,駭客便利用這些開國元老,對外掃描並進行自動入侵、自動植入Bot程式,慢慢的就擴張成一個碩大的Bot網路。
目前,Botnet控制模式已經是高級駭客控制受害主機趨勢之一,利用這種控制模式才能控制數以千計的受害主機,對其下指令。而這種控制模式採用的是所謂的反向連接(reverse tunnel),就算受害主機處於內網之中,在防火牆、NAT後面,也能對外接收指令並且執行。以前後門聽取一個通訊埠,等待駭客進來下達指令的模式早已落伍許多。
別奢望裝了防毒軟體就能高枕無憂-Rootkit技術
所謂Rootkit是指駭客侵入系統後用來隱匿自我行蹤、提升權限、方便操作的工具或程式碼。很多人以為裝了防毒軟體,或是使用一些觀察系統程序的工具,便認為自己不可能被植入木馬後門程式,就能找出惡意程式。其實,許多惡意程式使用了Rootkit隱藏程序的技術,來隱藏自我,避免被檢測出。
目前已經有許多新的後門技術,像是程序互保機制、API Hooking、NativeAPI Hooking 、DLL injection、Process hidding等等,這些技術讓後門檢測與移除越來越困難,如果說連作業系統本身都看不見程序,那防毒軟體又怎麼會偵測的到?後門技術已經邁向新的里程碑,而如果偵測技術仍停留在原地,那麼中木馬而不自知,是一件非常可怕的事。
結語
「舟已行矣,而劍不行。求劍若此,不亦惑乎?」。安全趨勢和船一樣,如果不知變通,極有可能像楚人一般徒勞無功。而不管安全趨勢如何變動,防守者一定得充分了解攻擊手法,才能有效應變。除了採購安全產品之外,需了解在資訊安全領域中,「人」才是最重要的資產,最後還是得靠人來操作這些安全設備。你所面對是會動腦思考的駭客,所以也得靠人腦去思考,才能解決問題。制定資安事件SOP並不代表你就能面對未來所有威脅,也要時時留意相關訊息、分析安全趨勢,採取有效的策略。如果在防禦策略上走錯一步,不僅耗損財力、人力,更可能無法有效地面對新的威脅。唯有充分了解安全趨勢,才不致做資安白工。
本文作者現任職於中華電信數據通信分公司。