計算機病毒與惡意代碼 課件 3-5-2木馬的植入、自啟動和隱藏_第1頁
計算機病毒與惡意代碼 課件 3-5-2木馬的植入、自啟動和隱藏_第2頁
計算機病毒與惡意代碼 課件 3-5-2木馬的植入、自啟動和隱藏_第3頁
計算機病毒與惡意代碼 課件 3-5-2木馬的植入、自啟動和隱藏_第4頁
計算機病毒與惡意代碼 課件 3-5-2木馬的植入、自啟動和隱藏_第5頁
已閱讀5頁,還剩16頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

計算機病毒與防治重慶電子工程職業學院計算機病毒與防治課程小組教學單元3-5木馬病毒防治木馬自啟動原理木馬的植入技術木馬自啟動實現第二講木馬的植入、自啟動和隱藏計算機病毒與防治課程小組木馬隱藏手段木馬隱藏實現木馬入侵木馬的傳播途徑有很多種,其中最簡單的是直接將木馬的服務器端程序拷貝到U盤上。通過電子郵件傳播是一種最簡單有效的方法,黑客通常給用戶發電子郵件,而這個加在附件中的軟件就是木馬的服務器端程序。緩沖區溢出攻擊是植入木馬最常用的手段。據統計,通過緩沖區溢出進行的攻擊占所有系統攻擊總數的80%以上。計算機病毒與防治課程小組木馬植入技術計算機病毒與防治課程小組木馬入侵緩沖區溢出((BufferOverflow)指的是一種系統攻擊的手段,通過往程序的緩沖區寫超出其長度的內容,造成緩沖區的溢出,從而破壞程序的堆棧,使程序轉而執行其它指令,以達到攻擊的目的。造成緩沖區溢出的原因是程序中沒有仔細檢查用戶輸入的參數。例如下面程序:voidfunction(char*str){

charbuffer[16];strcpy(buffer,str);}通過緩沖區溢出植入木馬木馬入侵計算機病毒與防治課程小組

上面的strcpy()將直接吧str中的內容copy到buffer中。這樣只要str的長度大于16就會造成buffer的溢出,使程序運行出錯。存在象strcpy這樣的問題的標準函數還有strcat(),sprintf(),vsprintt(),gets(),scanf(),以及在循環內的getc(),fgetc(),getchar()等。當然,隨便往緩沖區中填東西造成它溢出一般只會出現Segmentationfault錯誤,而不能達到攻擊的目的。

如果在溢出的緩沖區中寫入我們想執行的代碼,再覆蓋函數返回地址的內容,使它指向緩沖區的開頭,就可以達到運行其它指令的目的。通過緩沖區溢出植入木馬木馬自啟動途徑計算機病毒與防治課程小組1.利用INI文件實現相關程序的自動啟動win.ini是系統保存在[Windir]目錄下的一個系統初始化文件。系統在起動時會檢索該文件中的相關項,以便對系統環境的初始設置。在該文件中的“[windows]”數據段中,有兩個數據項“load=”和“run=”。它們的作用就是在系統起動之后自動地裝入和運行相關的程序。

Win.ini:System.ini:[windows][boot]Shell=Explorer.exeload=file.exeShell=Explorer.exerun=file.exe程序自動啟動的原理計算機病毒與防治課程小組木馬自啟動途徑2.利用注冊表實現相關程序的自動啟動

系統注冊表保存著系統的軟件、硬件及其他與系統配置有關的重要信息,注冊表中的[HKEY_LOCAL_MACHINE\Software\MicrosoftWindows\CurrentVersion]項會影響系統起動過程執行程序,可以向該項添加一個子項,自動啟動程序的設置具體可以通過更改以下鍵值來實現:[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices][HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce][HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run][HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce][HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run][HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce][HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices]木馬自啟動途徑計算機病毒與防治課程小組3加入系統啟動組在啟動文件夾[Windir]\startmenu\programs\startup\中添加程序或快捷方式,也可修改冊表的位置:[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellFoldersStartup]="windows\startmenu\programs\startup"木馬自啟動途徑計算機病毒與防治課程小組4利用系統啟動配置文件[Windir]\winstartbat;看似平常,但每次重新啟動都會自動運行。[Windir]\wininit.ini:一旦運行就被windows刪除,安裝的setup程序常用,例如:[Rename]NUL=c:\windows\picture.exe將c:\windows\picture.exe設置為NUL表示刪除它,刪除動作會被完全隱蔽的執行。Autoexec.bat和Config.sys在DOS下每次啟動都會自動執行。木馬的自啟動途徑計算機病毒與防治課程小組5和其他程序捆綁執行可以使用可執行程序捆綁工具將木馬程序與系統中的合法程序合并,也可以利用合法程序的特殊配置功能實現自動執行。例如:[HKEY_CURRENT_USER\Software\Mirabilisll\CQ\Agent\Apps\test]"Path"="test.exe""Startup"="c:\\test""Enable"="Yes"還有一些系統配置修改后并不能直接實現自啟動,卻能給木馬的自啟動帶來便利,對此也應加以防范。例如:[HKEY_LOCAL_MACHINE\Software\CLASSES\ShellScrap]@="Scrapobject""NeverShowExt"=""

NeverShowExt鍵可以隱藏SHS文件的擴展名.shs。比如將一個文件改名為“abc.jpg.shs“它只會顯示”abc.jpg”。如果你的注冊表里有很多NeverShowExt鍵值,應予以刪除。程序自啟動的實現計算機病毒與防治課程小組下面我們利用VisualC++6.0編程來實現第二種方法的程序自動啟動。相應的程序代碼如下:voidCAutobootDIg::OnOKQ{CStringtemp;TCHARTempPath[MAX_PATH];//確定Windows的系統目錄進行相應的轉換,使之能與函數參數搭配計算機病毒與防治課程小組程序自動啟動的實現::GetSystemDirectory(TempPath,MAX_PATH)Temp=TempPath;temp=temp+_("\\Intranet.exe");intlen=temp.GetLength();LPBYTElpb=newBYTE[len];for(intj=0;j<len;j++){lpb[j]=temp[j];)lpb[j]=0;//把本程序拷貝到系統目錄下,并改名為Intranet.exe,這樣做的目的//是為了迷惑被控制端用戶,使之不易覺察到究竟哪個程序是控制程序程序自啟動的實現

CopyFile("autoboot.exe",temp,FALSE);HKEYhKey;

LPCTSTRdata_Set="Software\\Microsoft\\Windows\\CurrentVerslon\\Run";longret()=::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set,0,KEY_WRITE,&hKey);longret1=::RegSetValueEx(hKey,_T"remotecontrol",NULL,REGes_SZ,lpb,len);::RegCIoseKey(hKey);//設置注冊表中相關的路徑//打開注冊表中的相應項//將相關的信息寫入注冊表//關閉注冊表中的相應的項木馬進程的隱藏計算機病毒與防治課程小組如果在文件管理器中不能正確地列出木馬的可執行文件,無疑會增加木馬程序的隱蔽性??梢詫⒛抉R與其它常用的軟件捆綁,在運行該軟件的時候先啟動木馬功能再調用程序的正常功能。下面介紹使用進程動態注入技術來實現進程的隱藏。我們把在操作系統中正在運行的程序的實例叫做進程。進程包括兩個主要的組成部分:(1)內核對象:操作系統用內核對象來管理進程,同時內核對象也是系統存放關于進程的統計信息的地方;(2)地址空間:其中包含所有可執行模塊或DLL模塊的代碼和數據,還包括諸如線程堆棧和堆分配空間等用作動態內存分配的空間。木馬進程的隱藏Windows2000的進程結構示意圖計算機病毒與防治課程小組計算機病毒與防治課程小組WIN2K中“進程隱藏”的實現按照上述思路實現“進程隱藏”要將程序分為兩部分,第一部分是程序的主體部分放到DLL中,第二部分啟動代碼負責將第一部分的程序插入到目標進程中并調用之。(1)程序的主體DLL:在我們的示例中僅在DLL中彈出一對話框,顯示進程的ID

BOOLAPIENTRYDIIMa1n(HANDLEModule,DWORDul_reasones_for_call,LPVOIDiPReserved){swltch(ul_reaaon_for_call){caseDLL_PROCESS_ATTACH:

swprinft(szProcessld,TEXT("%1u"),GetCurrentProcessld());MessageBox(NULL,szProcessld,TEXT("RemoteDLL"),MB_OK);}returnTRUE;}WIN2K中“進程隱藏”的實現計算機病毒與防治課程小組HANDLEhRemoteProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwRemotProcsssid);IntICb=(t+lstr1enW((unsignedshort*)pszLlbFileName))*slzoof(WCHAR);LPVOIDpszLlbFileRemote=(PWSTR)VlrtualAllocEx(hRemoteProcesa,NULL,iCb,MEM_COMMIT,PAGE_READWRTE);//打開目標進程,dwRemoteProessid為目標進程的ID//計其DLL路徑名需要的內存空間//使用VirtualAllocEx函數在目標進程的內存地址空間分配DLL文件名級沖區WIN2K中“進程隱藏”的實現HANDLEhRemotsThread=CreateRemotoThroad(hRomoteProcess,NULL,0,pfnStartAddr,pazlbFlieRemote,0,NULL);計算機病毒與防治課程小組BOOLlRetunCode=WriteProcessMemory(hRemoteProcess,pszt_lbFlleRemote,(PVOID)pazlbFileName,ICb,NULL);PTHREAD_START_ROUTINEptnStartAddr=GetProcAddress(GetModulaHandle(TEXT("Kerne132")),"LoadLibraryW");//使用WriteProcessMemory函數將DLL路徑名復制到遠程進程的內存空間//計算LoedLibraryW的入口地址//啟動目標線程

溫馨提示

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

評論

0/150

提交評論