摘 要:隨著計算機網(wǎng)絡(luò)技術(shù)的高速發(fā)展,作為第四媒體的互聯(lián)網(wǎng),也正在為網(wǎng)絡(luò)犯罪提供滋長的土壤。針對這一社會問題,本文設(shè)計了一種控制木馬病毒的遠程監(jiān)控系統(tǒng),利用木馬的工作原理,通過運用隱蔽技術(shù)向目標(biāo)機植入監(jiān)控型木馬程序,同時為避免目標(biāo)機的跟蹤,采用了在目標(biāo)機不察覺的情況下收集網(wǎng)絡(luò)犯罪證據(jù)的手段。該設(shè)計對提高網(wǎng)絡(luò)信息安全,具有一定的積極作用。
關(guān)鍵詞:木馬程序;計算機網(wǎng)絡(luò);監(jiān)控系統(tǒng);隱蔽技術(shù)
中圖分類號:TP309 文獻標(biāo)志碼:A 文章編號:1671-7953(2009)02-0073-04
目前,傳統(tǒng)犯罪活動的途徑和空間已經(jīng)自然而然地向互聯(lián)網(wǎng)這個快捷、簡便、龐大的虛擬領(lǐng)域延伸。利用計算機網(wǎng)絡(luò)實施智能犯罪日益猖獗,這類新型的“計算機犯罪”不僅直接侵入、破壞、非法利用計算機信息系統(tǒng),而且嚴重威脅著互聯(lián)網(wǎng)的信息安全,已成為一個嚴重的社會問題,針對這一問題,本文介紹一種運用隱蔽技術(shù)設(shè)計網(wǎng)絡(luò)監(jiān)控的方法,對打擊網(wǎng)絡(luò)犯罪和實現(xiàn)網(wǎng)絡(luò)信息化安全,具有一定參考意義。
1 木馬的分類及特征
根據(jù)木馬程序?qū)τ嬎銠C的具體動作方式,可以把木馬程序[1-2]分為以下幾類:
1)遠程控制型:遠程控制型木馬是現(xiàn)今最廣泛的特洛伊木馬,這種木馬在控制端的控制下可以在被控主機上做任意的事情。
2)密碼發(fā)送型:密碼發(fā)送型木馬的目的是找到所有的隱藏密碼,并且在受害者不知道的情況下把它們發(fā)送到指定的信箱。
3)鍵盤記錄型:這種木馬程序隨著Windows系統(tǒng)的啟動而自動加載,并能感知受害主機在線,且記錄每一個用戶事件,然后通過郵件或其他方式發(fā)送給控制者。
4)毀壞型:大毀壞型木馬以毀壞并且刪除文件為己任,它們可以自動刪除受控主機上所有的.ini或.exe文件,甚至遠程格式化受害者硬盤,使得受控主機上的所有信息都受到破壞。
5)FTP型:FTP型木馬打開被控主機系統(tǒng)的21號端口(FTP服務(wù)所使用的默認端口),使每一個人都可以用一個FTP客戶端程序來不要密碼連接到受控制主機系統(tǒng),并且可以進行最高權(quán)限的文件上傳和下載,竊取受害系統(tǒng)中的機密文件。
雖然木馬程序使用不同的程序語言進行編制,在不同的平臺環(huán)境下運行,發(fā)揮著不同的作用,但是有著許多共同的特征[3-6]。
1)不會通過感染文件復(fù)制自己的方式傳播
經(jīng)改良過的木馬,以偽裝成DLL文件的方式,附加在其他系統(tǒng)文件上執(zhí)行。它們都不會感染其他文件,并進行自我復(fù)制傳播。
2)分為客戶端與服務(wù)器端兩部分
由于木馬需要通過網(wǎng)絡(luò)接收黑客的指令,所以為了能夠達成互動通訊,木馬需要由兩部分組成。其中服務(wù)器端安裝在被控制的計算機上,用于入侵系統(tǒng)客戶端沒有入侵或破壞系統(tǒng)的功能,只是用于連接服務(wù)器端二并且向服務(wù)器端發(fā)送命令或通過服務(wù)器獲得遠程計算機的數(shù)據(jù),客戶端通常安裝在黑客的計算機上。
3)服務(wù)器端隱藏執(zhí)行
為了不讓用戶發(fā)覺,木馬程序的服務(wù)器端安裝到遠程計算機后,在執(zhí)行時通常沒有圖形界面,也無法使用命令提示符進行調(diào)整。只能以預(yù)定的方式啟動或執(zhí)行默認的任務(wù),并且開始等候客戶端連接,或主動尋找客戶端連接。
4)打開服務(wù)
在被控制的計算機上打開遠程文件管理,屏幕監(jiān)視等功能,讓黑客可以管理并控制遠程計算。
2 網(wǎng)絡(luò)監(jiān)控系統(tǒng)功能分析
基于功能的要求,系統(tǒng)利用木馬的工作原理,通過隱蔽手段向目標(biāo)機植入監(jiān)控型木馬程序,同時,為避免目標(biāo)機的跟蹤,采用在目標(biāo)機不察覺的情況下實現(xiàn)網(wǎng)絡(luò)犯罪的證據(jù)收集。系統(tǒng)的主要功能:
1)目標(biāo)機上網(wǎng)后自動通知:當(dāng)已植入目標(biāo)監(jiān)控子系統(tǒng)(服務(wù)器端程序)的計算機上網(wǎng)后,程序自動通知信息中轉(zhuǎn)系統(tǒng),信息中轉(zhuǎn)系統(tǒng)通過短信方式通知目標(biāo)管理子系統(tǒng)(客戶端程序)的操作員。
2)獲取目標(biāo)機的硬盤資料信息:利用本系統(tǒng)可列舉被控計算機所有硬盤上的所有目錄和文件信息。
3)復(fù)制文件:可將目標(biāo)機上的指定文件復(fù)制到目標(biāo)管理系統(tǒng)機上,以便檢查文件的實際內(nèi)容,并作為證據(jù)保全。也可將目標(biāo)機上的任意文件復(fù)制到目標(biāo)機本身,以便誤導(dǎo)對方。
4)抓取當(dāng)前屏幕:通過該功能可以隨時抓取目標(biāo)機的當(dāng)前屏幕內(nèi)容。
5)鍵盤記錄:該功能可記錄目標(biāo)機鍵盤輸入的數(shù)據(jù)。通過該功能可以獲取被懷疑對象的計算機登陸賬號和密碼,或者是訪問郵件服務(wù)器、登錄某個站點的賬號和密碼,也可以了解被懷疑對象的計算機行為。
6)獲取目標(biāo)機的系統(tǒng)信息:包括計算機名、當(dāng)前用戶名、當(dāng)前運行的軟件和計算機安裝了那些軟件。
7)獲取目標(biāo)機的上網(wǎng)信息:獲取目標(biāo)機登錄過的網(wǎng)站地址或網(wǎng)頁名稱。
8)遠程更新或銷毀已植入的木馬控制程序。
3 目標(biāo)監(jiān)控系統(tǒng)的實現(xiàn)
目標(biāo)監(jiān)控系統(tǒng)能否成功完成遠程控制的任務(wù),首先取決于木馬控制程序能否成功植入受控主機系統(tǒng)中,同時也要保證目標(biāo)監(jiān)控子系統(tǒng)在成功植入后運行的隱蔽性。論文結(jié)合Windows核心編程技術(shù)設(shè)計了一種新型的植入方案,這種方案提出目標(biāo)監(jiān)控子系統(tǒng)采用DLL(動態(tài)鏈接庫)技術(shù)以DLL模塊化形式實現(xiàn)。另外,創(chuàng)建引導(dǎo)程序采用遠程線程插入技術(shù),在目標(biāo)主機中選擇特定目標(biāo)進程(如系統(tǒng)進程)插入線程,由該線程加載運行目標(biāo)監(jiān)控子系統(tǒng)的DLL,從而實現(xiàn)目標(biāo)監(jiān)控子系統(tǒng)的植入。用這種方式加載的目標(biāo)監(jiān)控子系統(tǒng)在目標(biāo)主機中不會留有獨立進程運行的痕跡,加強了程序的隱蔽性,同時能夠通過目標(biāo)進程間接訪問系統(tǒng)資源。
DLL是Windows操作系統(tǒng)的基礎(chǔ),它只是一個源代碼模塊,在DLL中通常沒有用來處理消息循環(huán)或創(chuàng)建窗口的支持代碼,這個模塊包含了應(yīng)用程序或另一個DLL將要調(diào)用的一組函數(shù)。當(dāng)所有源代碼文件編譯后,DLL就像應(yīng)用程序那樣被鏈接程序所鏈接。一旦DLL的文件映像被映射到調(diào)用進程的地址空間中,DLL的函數(shù)就可以供進程中運行的所有線程使用,對于進程中的線程來說,DLL的代碼和數(shù)據(jù)看上去就像進程地址空間中的額外代碼和數(shù)據(jù)一樣。但DLL又不同于應(yīng)用程序,因為并沒有為DLL分配獨立的進程地址空間,也就是說DLL的運行并不需要創(chuàng)建單獨的進程,所以從系統(tǒng)的進程列表里是看不見DLL的運行蹤跡的。在設(shè)計中選擇系統(tǒng)進程ExP10rer.exe作為宿主進程。
另一方面,每個進程都有它自己的私有地址空間,當(dāng)使用指針來引用內(nèi)存時,指針的值將引用進程私有地址空間中的一個內(nèi)存地址,而該進程不能創(chuàng)建一個其引用屬于另一個進程的內(nèi)存指針。可是DLL卻有其特殊的屬性,即能夠動態(tài)地將自己插入另一個進程的地址空間,從而可以共享這個進程的資源。一個DLL可以擁有單個進入點函數(shù),系統(tǒng)在不同時間調(diào)用這個進入點函數(shù):
BOOL WINAPI DllMain(
HINSTANCEhinstDll,
DWORDfdWReason,
LPVOIDlpvReserved);
參數(shù)hinstDll指明擁有該函數(shù)的DLL的句柄,fdwReason指明系統(tǒng)調(diào)用該函數(shù)的原因。當(dāng)DLL被初次映射到進程的地址空間中時,系統(tǒng)將調(diào)用該DLL的DllMain函數(shù),給它傳遞參數(shù)fdwReason的值DLL_PROCESS_ATTACH。當(dāng)函數(shù)DllMain處理DLL_PRocEss叢TTAcH時,可以對進程和線程進行一些初始化工作。
DllMain的函數(shù)原型:
B00LAPIENTRYDllMain(
HANDLEhModule,
DWORDul_reason_for_call,
LPVOIDlpReserved)
{
switeh(ulreasonforeall)
caseDLLPROCESSATTACH:
caseDLLTHREADATTACH:
caseDLLTHREADDETACH:
caseDLLPROCESSDETACH:
return true
}
參數(shù)中,hMoudle是動態(tài)庫被調(diào)用時所傳遞來的一個指向自己的句柄(實際上,它是指向一GROUP段的一個選擇符);ul_reason_for_call是一個說明動態(tài)庫被調(diào)原因的標(biāo)志,當(dāng)進程或線程裝入或卸載動態(tài)鏈接庫的時候,操作系統(tǒng)調(diào)用入口函數(shù),說明動態(tài)鏈接庫被調(diào)用的原因,它所有的可能值為:DLL_PROCESS_ATTACH為進程被調(diào)用、DLL_THREAD_ATTACH為線程被調(diào)用、DLL_PROCESS_DETACH為進程被停止、DLL_HREAD_DETACH為線程被停止、Reserved為保留參數(shù)。
當(dāng)系統(tǒng)的引導(dǎo)程序?qū)⒅鞒绦蚯度氲较到y(tǒng)進程時,主程序即開始運行,其入口函數(shù)的實現(xiàn)代碼如下:
switch(ul_reason_for_call)
//如果有一進程調(diào)用動態(tài)鏈接庫
{caseDLLPROCESSATTACH:
if(hmodDll==NULL) //hmodDll為全局變量
hmodDll=(HMODULE)hModule
DWORDhthreadid;
//啟動主線程
hthread=CreateThread(NULL,0,round,(LPVOID)l,0,hthreadid):
GetExitCodeThread(hthread,ExitCode);}
break;
//如果調(diào)用動態(tài)鏈接庫的進程釋放
{caseDLLPROCESSDETACH:
if(hmodDll==(HMODULE)hModule)
//卸載全局鉤子
HookMsg(1);
Break;
Default:
return 1
}
return true
}
主線程函數(shù)round的作用主要是啟動目標(biāo)監(jiān)控子系統(tǒng)的循環(huán)功能模塊以及安裝鍵盤鉤子,它隨著動態(tài)鏈接庫的調(diào)用而持續(xù)運行。
4 結(jié)論
近年來互聯(lián)網(wǎng)飛速發(fā)展,互聯(lián)網(wǎng)在給人們帶來方便的同時,也給犯罪分子利用計算機網(wǎng)絡(luò)從事犯罪活動提供了便利。如何有效打擊網(wǎng)絡(luò)犯罪,獲取犯罪分子的違法犯罪證據(jù),是目前網(wǎng)絡(luò)科學(xué)技術(shù)面臨的一個重點問題。本文實現(xiàn)了一種基于木馬技術(shù)的遠程監(jiān)控系統(tǒng),對系統(tǒng)的功能進行了分析,給出了目標(biāo)監(jiān)控系統(tǒng)實現(xiàn)的過程,該設(shè)計對打擊網(wǎng)絡(luò)犯罪具有一定參考意義。
參考文獻
[1] 張又生,米安然.計算機病毒與木馬程序剖析[M].北京:科海電子出版社,2003.
[2] 胡燕京,張 冰,王海義等.主流木馬技術(shù)分析及攻防研究[J].現(xiàn)代電子技術(shù),2007,13:96-100.
[3] 韓筱卿,王建鋒,鐘 瑋等.計算機病毒分析與防范大全[M].北京:電子工業(yè)出版社,2006.
[4] 康治平,向 宏.特洛伊木馬隱藏技術(shù)研究及實踐[J].計算機工程與應(yīng)用,2006,9:103-107.
[5] 朱 明,徐 騫.木馬病毒分析及其檢測方法研究[J].計算機工程與應(yīng)用,2003,28:178-179.
[6] 楊志程,舒 輝,董衛(wèi)宇.基于NDIS隱蔽通信技術(shù)的木馬病毒分析[J].計算機工程,2008,34(10):147-149.