Wednesday, June 06, 2007 - 文章

【茶包射手專欄】沒中毒不代表沒事---ARP木馬

前陣子解剖了一隻3合1木馬,結果該木馬又持續鬧了好幾天,也讓孤陋寡聞的我對病毒木馬的日新月益,再次大開眼界,讚嘆不已...

大部分人的刻板印象是,如果我的機器沒有沒有中毒、沒有中木馬、沒有惡意程式,網路上也沒有人狂送封包轟炸,我使用網路應該不致受到影響吧?? 

代誌並不像憨人所想的哈尼甘單~~~

上回話說該木馬會在你瀏覽網頁時偷偷在HTML前端加入<script src=httq://some_web/trojan.js></script>,而我一直很好奇這是怎麼做到的。

有台經過徹底掃毒、掃木馬、Windows Update也到最新的電腦,在"疫區"瀏覽網頁時還是發現網頁最前方被注入了惡意js。而悲慘的是,營運系統的網頁一向都使用VBScript作為Client-Script,當網頁最前端被加了一個JS,IE會自動判斷,把預設語言強制改回Javascript,網頁中像OnBlur="onBlurJob(Me)"的寫法就會出問題,導致網站無法使用。(Google了一下,有個Content-Script-Type Meta可以強制指定預設Script,但它是HTML 4.01的標準,測試也無法抵禦前方被Include JS Script的影響)

更有意思的事來了,當該機器換個IP移到另一個網段時,原本被偷加Script的狀況就消失了!!! 這是近朱者赤、近墨者黑嗎? (摩亞風 XD)

同事Pass給我一個URL,而我也陸續Google到幾篇不錯的說明: 1, 2

如以上文章所說,我的推論是: 當某台機器中了木馬或病毒,展開ARP Spoofing攻擊,它就有能力干擾同一個網段(LAN)裡所有Client機器的動態ARP Table,讓Default Gateway的MAC Address指向自己。接著發生什麼事? 當Client(即使是完全無毒的健康機器,甚至Linux、Mac也算在內)的瀏覽器要連上某個網站時,原本封包要送到Gateway轉送Internet,卻會因為ARP的動態MAC對應被篡改到中毒機器,而誤將封包送給中毒機器。中毒機器會將此封包經由真正的Gateway送到Internet、連上網站、取得回應,再轉手將資料送回給被蒙在鼔裡的Client。當然,中毒機器絕不是發了佛心自願當大家的免費Proxy,它的目的在於竊取傳輸內容、或在其中加料,偷偷加入惡意內容。

這樣我們就可以解釋為什麼乾淨的機器移到另一個網段後就不藥而瘉?

我實地用遠端桌面連上受影響的機器(假設為192.168.1.1)後,下了arp -a,果然發現異常:

Interface: 192.168.1.1 --- 0x10003
  Internet Address      Physical Address      Type
  192.168.1.1             00-04-5b-66-a4-a2     dynamic
  192.168.1.254         00-04-5b-66-a4-a2     dynamic

見鬼了,本機的IP MAC怎麼跟Gateway指向同一台?? 而且這個MAC跟ipconfig /all中看到的也不是同一個。
arp -d之後,我發現192.168.1.254又指向另一個MAC。當時我無從得知真正的Gateway MAC,不然用arp -s加上正確的Gateway MAC對應,應該馬上可以驗證推論,殘念。

至少,由這些觀察,可以確認疫區網段的arp運作受到干擾,我也結結實實地上了一堂木馬/病毒新知課程。

TOOLS-"Trixie": Customize Your Web Surfing

一直很羡慕FireFox上有各式各樣的外掛可以加,其中Greasemonkey是一直讓我流口水的功能之一。
(想知道Greasemonkey的神通廣大可以參考這裡 、這裡)

覺得某個網站的介面太鳥、功能太少,馬上可以自己動手改造成自己想要的樣子,這是多麼爽快的事。Greasemonkey提供了針對不同的網站/網頁時啟動專屬Javascript的功能,專屬的Javascript可以直接取存該網頁的DOM,用DHTML的技巧改變某個Element、或加上自己寫的華麗輔助UI。(換個角度想,你的網站如果都只靠Javascript來做安全管控,這下就慘了)

Trixie,就是寫給IE用的Greasemonkey!! 一部分寫給Greasemonkey的Script,甚至可以拿來直接用。關於Script的寫法,有份不錯的FAQ教學,熟悉Javascript又愛搞怪的朋友不用我講,現在已經開始動腦筋要如何應用這個強大的玩具了吧?

以下我就做個最簡單的示範。例如: 雖然我們都知道按著Shift點IE中的Link可以另開新視窗檢視,但有時連動雙手都覺得懶(例如另一手忙著拿筷子吃便當時),若直接在每個Link後方多加一個另開新視窗的Link,就可以省下按Shift的動作。如下圖,我就對Google的Search結果網頁做了手腳:

Script的寫法很簡單,安裝好Trixie,將這段Code另存成Blah.user.js到C:\program files\Bhelpuri\Trixie\Scripts預設就會被啟用。

// ==UserScript==
// @name          Google查詢結果以新視窗開啟
// @namespace     http://www.darkthread.net
// @description      為每一條Google查詢結果新增一個新視窗開啟的連結
// @include       http://www.google.com.tw/search*
// ==/UserScript==
(function()
{
    var hyperlinks = document.getElementsByTagName("a");
 
    for (var i = 0; i < hyperlinks.length; ++i)
    {
        var node = hyperlinks[i];
        if (node.className=="l") 
        {
            var newLink = document.createElement("a");
            newLink.href = node.href;
            newLink.target = "_blank";
            newLink.innerText = "【在新視窗檢視】";
            var newSpan = document.createElement("span");
            newSpan.style.fontSize = "9pt";
            newSpan.innerHTML = newLink.outerHTML;
            node.insertAdjacentElement("afterEnd", newSpan);
            newSpan.insertAdjacentText("beforeBegin", " ");
        }
    }
})();

光明面: 歡迎來到美麗新世界~~
黑暗面: 潘朵拉的盒子打開了~~~ (別再依賴Client-Script幫你做資安保全了!)

搜尋

Go

<June 2007>
SunMonTueWedThuFriSat
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567
 
RSS
【工商服務】
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


BlogLook Score and Rank

Syndication