第一篇:病毒查殺分析報告
東營市醫藥公司和扣分公司
病毒查殺分析報告
2013年度本企業計算機網絡系統未發生重大病毒感染情況,計算機系統運行正常。
信息科
2014年1月6日
第二篇:典型病毒分析報告
典型病毒的分析
班級: 姓名: 學號:
一、計算機病毒
1.1、簡介
計算機病毒是一個程序,一段可執行碼。就像生物病毒一樣,計算機病毒有獨特的復制能力。計算機病毒可以很快地蔓延,又常常難以根除。它們能把自身附著在各種類型的文件上。當文件被復制或從一個用戶傳送到另一個用戶時,它們就隨同文件一起蔓延開來。
除復制能力外,某些計算機病毒還有其他一些共同特性:一個被污染的程序能夠傳送病毒載體。當你看到病毒載體似乎僅僅表現在文字和圖像上時,它們可能也已毀壞了文件、再格式化了你的硬盤驅動或引發了其他類型的災害。若是病毒并不寄生于一個污染程序,它仍然能通過占據存儲空間給你帶來麻煩,并降低你的計算機的全部性能。
可以從不同角度給出計算機病毒的定義。一種定義是通過磁盤、磁帶和網絡等作為媒介傳播擴散,能“傳染”其他程序的程序。另一種是能夠實現自身復制且借助一定的載體存在的具有潛伏性、傳染性和破壞性的程序。還有的定義是一種人為制造的程序,它通過不同的途徑潛伏或寄生在存儲媒體(如磁盤、內存)或程序里。當某種條件或時機成熟時,它會自生復制并傳播,使計算機的資源受到不同程序的破壞等。這些說法在某種意義上借用了生物學病毒的概念,計算機病毒同生物病毒所相似之處是能夠侵入計算機系統和網絡,危害正常工作的“病原體”。它能夠對計算機系統進行各種破壞,同時能夠自我復制,具有傳染性。
所以,計算機病毒就是能夠通過某種途徑潛伏在計算機存儲介質(或程序)里,當達到某種條件時即被激活的具有對計算機資源進行破壞作用的一組程序或指令集合。
1.2、計算機病毒的引導過程
一般包括以下三方面。
(1)駐留內存病毒若要發揮其破壞作用,一般要駐留內存。為此就必須開辟所用內存空間或覆蓋系統占用的部分內存空間。有的病毒不駐留內存。
(2)竊取系統控制權在病毒程序駐留內存后,必須使有關部分取代或擴充系統的原有功能,并竊取系統的控制權。此后病毒程序依據其設計思想,隱蔽自己,等待時機,在條件成熟時,再進行傳染和破壞。
(3)恢復系統功能病毒為隱蔽自己,駐留內存后還要恢復系統,使系統不會死機,只有這樣才能等待時機成熟后,進行感染和破壞的目的。
有的病毒在加載之前進行動態反跟蹤和病毒體解密。對于寄生在磁盤引導扇區的病毒來說,病毒引導程序占有了原系統引導程序的位置,并把原系統引導程序搬移到一個特定的地方。這樣系統一啟動,病毒引導模塊就會自動地裝入內存并獲得執行權,然后該引導程序負責將病毒程序的傳染模塊和發作模塊裝入內存的適當位置,并采取常駐內存技術以保證這兩個模塊不會被覆蓋,接著對該兩個模塊設定某種激活方式,使之在適當的時候獲得執行權。處理完這些工作后,病毒引導模塊將系統引導模塊裝入內存,使系統在帶毒狀態下運行。對于寄生在可執行文件中的病毒來說,病毒程序一般通過修改原有可執行文件,使該文件一執行首先轉入病毒程序引導模塊,該引導模塊也完成把病毒程序的其他兩個模塊駐留內存及初始化的工作,然后把執行權交給執行文件,使系統及執行文件在帶毒的狀態下運行。
1.3、常見病毒發作癥狀
(1)屏幕異常滾動,和行同步無關。(2)系統文件長度發生變化。(3)出現異常信息、異常圖形。
(4)運行速度減慢,系統引導、打印速度變慢。(5)存儲容量異常減少。(6)系統不能由硬盤引導。(7)系統出現異常死機。(8)數據丟失。(9)執行異常操作。
(10)綁架安全軟件,殺毒軟件、系統管理工具、反間諜軟件不能正常啟動。
二、典型病毒分析(包括特征、原理及清除辦法)
2.1、特洛伊木馬——NetBus NetBus是一個和著名網絡攻擊程序Back Orifice類似的網絡特洛伊木馬程序。它會在被駐留的系統中開一個“后門”,使所有連接到Internet上的人都能神不知鬼不覺地訪問到被駐留機器,然后控制者可以惡作劇地隨意控制你的鼠標,在你機器上播放聲音文件,或者打開你的光驅等,更危險的當然是刪除你的文件,讓你的機器徹底崩潰。
NetBus由兩部分組成:客戶端程序(netbus.exe)和服務器端程序(通常文件名為:patch.exe)。要想“控制”遠程機器,必須先將服務器端程序安裝到遠程機器上(如:通過遠程機器的主人無意中運行了帶有NetBus的所謂特洛伊木馬程序)。
特別是NetBus 1.70,它在以前的版本上增加了許多“新功能”,從而使它更具危險性,如NetBus 1.60只能使用固定的服務器端TCP/UDP端口:12345,而在1.70版本中則允許任意改變端口號,從而減少了被發現的可能性;重定向功能(Redirection)更使攻擊者可以通過被控制機控制其網絡中的第三臺機器,從而偽裝成內部客戶機。這樣,即使路由器拒絕外部地址,只允許內部地址相互通信,攻擊者也依然可以占領其中一臺客戶機并對網中其他機器進行控制。
通常,NetBus服務器端程序是放在Windows的系統目錄中,它會在Windows啟動時自動啟動。該程序的文件名是patch.exe,如果該程序通過一個名為whackamole.exe的游戲安裝潛伏的話,文件名應為explore.exe或game.exe。可以檢查Windows系統注冊表,NetBus會在下面的路徑中加入自身啟動項項: “HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun” NetBus通過該注冊項實現Windows啟動時的自動啟動。但如果你按Ctrl+Alt+Del組合鍵,在任務列表中是看不到它的存在的。
有些木馬程序在種木馬的同時,感染系統文件,所以即使用以上方法去除了木馬,系統文件被運行后,會重新種植木馬。即使是防病毒軟件,也不一定能徹底清除。
上述木馬病毒正確的去除方法見下圖:
2.2、震蕩波病毒(1)病毒描述
Sasser病毒,中文名為“震蕩波”病毒,也有人稱之為“殺手”病毒,這是一種蠕蟲病毒。它利用微軟WindowsNT內核平臺上的LSASS漏洞,隨機的掃描其他網絡中計算機的IP端口,然后進行傳播。
中毒電腦出現機器CPU資源被消耗殆盡、系統反復重啟等癥狀。震蕩波病毒的具體破壞方式是:在本地開辟后門,監聽TCP 5554端口,作為FTP服務器等待遠程控制命令。病毒以FTP的形式提供文件傳送,黑客可以通過這個端口偷竊用戶機器的文件和其他信息。病毒開辟128個掃描線程,以本地IP地址為基礎,取隨機IP地址,瘋狂的試探連接445端口,試圖利用windows的LSASS中存在一個緩沖區溢出漏洞進行攻擊。一旦攻擊成功會導致對方機器感染此病毒并進行下一輪的傳播,攻擊失敗也會造成對方機器的緩沖區溢出,導致對方機器程序非法操作以及系統異常等。
(2)病毒清除
第一步:http://www.tmdps.cn/china/technet/security/bulletin/ms04-011.mspx下載相應的漏洞補丁程序,斷網安裝。第二步:清除內存中“avserve.exe”的進程。
第三步:清除在系統安裝目錄(默認為C:WINNT)下avserve.exe的病毒文件和系統目錄下(默認為C:WINNTSystem32)_UP.exe的病毒文件。
第四步:刪除注冊表:HKEY_LOCAL_MACHINESoftwareMicrosoft WindowsCurrentversionRun項中名為“avserve.exe”的病毒鍵值。第五步:重新啟動計算機。
2.3、求職信病毒
(1)特征及原理:Worm.Klez.L是一種蠕蟲病毒,病毒體內包含大量加密字符串。由于此病毒能提升自身的運行級別,使得一般程序無法結束或訪問它的進程,包括Windows自帶的任務管理器。因此無法手工清除此病毒。
病毒在得到運行后,首先提升自身的運行級別,然后將自己復制到Windows系統目錄下,文件名總以Wink開頭,同時還會放出一個小病毒體(Win32.Foroux.exe),最后分別運行它們并退出。當病毒被自己再次運行時,它會發現自身已處于系統目錄下,此時病毒運行線路發生改變,它不再復制自身,而是創建7個病毒線程,并以系統服務的形式駐留內存。
Worm.Klez.L的最大特點在于其抑制殺毒軟件的能力大為提高,甚至包括一些著名病毒(它的早期版本),只要是阻礙Worm.Klez.L傳播的軟件它都不放過。它通過注冊表和內存兩方面破壞這些軟件。
而Worm.Klez.L還把此進程所對應的程序文件也給刪除了。由于殺毒軟件和某些工具的代碼塊或數據塊中常包含此類字符串。并且病毒每次輪詢的間隔只有64毫秒(加上搜索的時間也不過幾秒)。在它之后啟動的殺毒軟件在單擊殺毒按鈕前就已被干掉,以至于無法帶毒殺毒。
(2)清除辦法:
在WINDOWS 95/98/ME系統下的清除:先運行在WINDOWS 95/98/ME系統下的安全模式
下,使用注冊表編輯工具regedit將網絡蠕蟲增加的鍵值刪除:HKEY_LOCAL_MACHINESof twareMicrosoftWindowsCurrent VersionRun 和HKEY_LOCAL_MACHINESystemCurrentControlSetServices 要刪除的注冊表項目是wink——?.exe的鍵值。
同時還必須相應的將WINDOWS的SYSTEM目錄下的該隨機文件Wink——?.exe刪除,注意 還必須將回收站清空。刪除了相應的病毒文件后,可以重新啟動計算機,然后,在KVW3 000的安裝目錄下執行KVD3000.EXE來清除該病毒。注意一些全部是網絡蠕蟲的程序或者
文件是需要按照提示完全刪除的。在Windows 2000/XP系統下的清除: 清除方法基本和Windows 95/98/ME系統下的清除方法相同:先以安全模式啟動計算 機,運行注冊表編輯工具,同樣刪除該網絡蠕蟲增加的鍵值:HKEY_LOCAL_MACHINESystemCurrentControlSetServices,要刪除病毒增加的表項是: wink開頭的隨機的表項。當然你必須記住該項目的具體名稱(雖然是隨機的),然后在 系統目錄下將該文件刪除。注意該文件是隱含的,必須打開顯示所有文件的選擇項目 才能查看該病毒文件。同樣的注冊表項還有HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun 2.4、灰鴿子木馬病毒
(1)病毒簡介、特征及原理
灰鴿子是國內一款著名后門,其豐富而強大的功能、靈活多變的操作、良好的隱藏性使其他后門都相形見絀?!盎银澴印弊?001年誕生之后,2004年、2005年、2006年連續三年被國內殺毒軟件廠商列入10大病毒,甚至有些位居“毒王”。它的真正可怕之處是擁有“合法”的外衣,可以在網絡上買到,客戶端簡易便捷的操作使剛入門的初學者都能充當黑客。
黑客可以通過此后門遠程控制被感染的電腦,在用戶毫無察覺的情況下,任意操控用戶的電腦,盜取網絡游戲密碼、銀行賬號、個人隱私郵件、甚至機密文件等。入侵者在滿足自身目的之后,可自行刪除灰鴿子文件,受害者根本無法察覺。
灰鴿子遠程監控軟件分兩部分:客戶端和服務端。黑客操縱著客戶端,利用客戶端配置生成出一個服務端程序,名字默認為G_Server.exe。G_Server.exe運行后將自己拷貝到Windows目錄下(系統盤的windows目錄),然后再從體內釋放G_Server.dll和G_Server_Hook.dll到windows目錄下。G_Server.exe、G_Server.dll和G_Server_Hook.dll三個文件相互配合組成了灰鴿子服務端,有些灰鴿子會多釋放出一個名為G_ServerKey.dll的文件用來記錄鍵盤操作。(G_Server.exe這個名稱并不固定,它是可以定制的。)
Windows目錄下的G_Server.exe文件將自己注冊成服務,每次開機都能自動運行,運行后啟動G_Server.dll和G_Server_Hook.dll并自動退出。G_Server.dll文件實現后門功能,與控制端客戶端進行通信;G_Server_Hook.dll則通過攔截API調用來隱藏病毒,因此中毒后查看不到病毒文件及病毒注冊的服務項。隨著灰鴿子服務端文件的設置不同,G_Server_Hook.dll有時候附在Explorer.exe的進程空間中,有時候則是附在所有進程中。
(2)病毒的清除
清除灰鴿子的服務。
打開 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices注冊表項,查找“game.exe”,可以找到灰鴿子的服務項如Game_Server,刪除整個Game_Server項。
刪除灰鴿子程序文件。
在安全模式下刪除Windows目錄下的Game.exe、Game.dll、Game_Hook.dll以及Gamekey.dll文件,然后重新啟動計算機。
2.5宏病毒(1)特征及原理:
Word宏病毒是一些制作病毒的專業人員利用MicrosoftWord的開放性即Word中提供的WordBASIC編程接口,專門制作的一個或多個具有病毒特點的宏的集合,這種病毒宏的集合影響到計算機使用,并能通過.DOC文檔及.DOT模板進行自我復制及傳播。宏病毒與以往的計算機病毒不同,它是感染微軟Word文檔文件.DOC和模板文件.DOT等的一種專向病毒。宏病毒與以往攻擊DOS和Windows文件的病毒機理完全不一樣,它以VB(WORDBASIC)高級語言的方式直接混雜在文件中,并加以傳播,不感染程序文件,只感染文檔文件。也許有人會問:MicrosoftWordforWindows所生成的.DOC文件難道不是數據文件嗎?回答既是肯定的又是否定的。.DOC文件是一個代碼和數據的綜合體。雖然這些代碼不能直接運行在x86的CPU上,但是可以由Word解釋執行操作,因此他們的結果是一樣的。宏病毒是針對微軟公司的字處理軟件Word編寫的一種病毒。微軟公司的字處理軟件是最為流行的編輯軟件,并且跨越了多種系統平臺,宏病毒充分利用了這一點得到恣意傳播。Word的文件建立是通過模板來創建的,模板是為了形成最終文檔而提供的特殊文檔,模板可以包括以下幾個元素:菜單、宏、格式(如備忘錄等)。模板是文本、圖形和格式編排的藍圖,對于某一類型的所有文檔來說,文本、圖像和格式編排都是類似的。
Word提供了幾種常見文檔類型的模板,如備忘錄、報告和商務信件。您可以直接使用模板來創建新文檔,或者加
以修改,也可以創建自己的模板。一般情況下,Word自動將新文檔基于缺省的公用模板(Normal.dot)??梢钥闯觯0逶诮⒄麄€文檔中所起的作用,作為基類,文檔繼承模板的屬性,包括宏、菜單、格式等。WORD處理文檔需要同時進行各種不同的動作,如打開文件、關閉文件、讀取數據資料以及儲存和打印等等。每一種動作其實都對應著特定的宏命令,如存文件與FileSave相對應、改名存文件對應著FileSaveAS、打印則對應著Fil_ePrint等。WORD打開文件時,它首先要檢查是否有AutoOpen宏存在,假如有這樣的宏,WORD就啟動它,除非在此之前系統已經被“取消宏(DisableAutoMacros)”命令設置成宏無效。當然,如果Auto Close宏存在,則系統在關閉一個文件時,會自動執行它。
(2)清除方法:
①手工:以Word為例,選取“工具”菜單中“宏”一項,進入“管理器”,選取標題為“宏”的一頁,在“宏 有效范圍”下拉列表框中打開要檢查的文檔。這時在上面的列表框中就會出現該文檔模板中所含的宏,將不明來源的自動執行宏刪除即可。
②使用專業殺毒軟件:目前殺毒軟件公司都具備清除宏病毒的能力,當然也只能對已知的宏病毒進行檢查和清除, 對于新出現的病毒或病毒的變種則可能不能正常地清除,或者將會破壞文件的完整性,此時還是手工清理為妙。
2.6蠕蟲病毒(1)特征及原理:
蠕蟲病毒不需要將其自身附著到宿主程序,它是一種獨立智能程序。有兩種類型的蠕蟲:主機蠕蟲與網絡蠕蟲。主計算機蠕蟲完全包含(侵占)在它們運行的計算機中,并且使用網絡的連接僅將自身拷貝到其他的計算機中,主計算機蠕蟲在將其自身的拷貝加入到另外的主機后,就會終止它自身(因此在任意給定的時刻,只有一個蠕蟲的拷貝運行),這種蠕蟲有時也叫“野兔”,蠕蟲病毒一般是通過1434端口漏洞傳播。蠕蟲利用的端口是UDP/1434,該端口是SQL Server Resolution服務。Microsoft SQL Server 2000支持在單個物理主機上伺服多個SQL服務器的實例,每個實例操作需要通過單獨的服務,不過多個實例不能全部使用標準SQL服務會話會話端口(TCP 1433),所以SQL Server Resolution服務操作監聽在UDP 1434端口,提供一種使客戶端查詢適當的網絡末端用于特殊的SQL服務實例的途徑。
當SQL Server Resolution服務在UDP 1434端口接收到第一個字節設置為0x04的UDP包時,SQL監視線程會獲取UDP包中的數據并使用此用戶提供的信息來嘗試打開注冊表中的某一鍵值,如發送x04x41x41x41x41類似的UDP包,SQL服務程序就會打開如下注冊表鍵:HKLMSoftwareMicrosoftMicrosoft SQL ServerAAAAMSSQLServerCurrentVersion攻擊者可以通過在這個UDP包后追加大量字符串數據,當嘗試打開這個字符串相對應的鍵值時,會發生基于棧的緩沖區溢出,通過包含“jmp esp”或者“call esp”指令的地址覆蓋棧中保存的返回地址,可導致以SQL Server進程的權限在系統中執行任意指令。
蠕蟲溢出成功取得系統控制權后,就開始向隨機IP地址發送自身,由于這是一個死循環的過程,發包密度僅和機器性能和網絡帶寬有關,所以發送的數據量非常大。在綠盟科技安全小組的測試中,和被感染機器在同一網段的每一臺分析機每秒鐘都收到了近千個數據包。
該蠕蟲對被感染機器本身并沒有進行任何惡意破壞行為,也沒有向硬盤上寫文件。對于感染的系統,重新啟動后就可以清除蠕蟲,但是仍然會重復感染。由于發送數據包占用了大量系統資源和網絡帶寬,形成Udp Flood,感染了該蠕蟲的網絡性能會極度下降。一個百兆網絡內只要有一兩臺機器感染該蠕蟲就會導致整個網絡訪問阻塞。
(2)清除方法
修補漏洞,安裝最新補丁。(請務必安裝補丁,避免二次中毒)手動清除方法:
第一步,用任務管理器結束avserve進程
第二步,刪除windows目錄(WINNT、WINDOWS等)下的avserve.exe;查找是否在系統目錄(SYSTEM32、SYSTEM)下存在<隨機字符>_UP.EXE的文件,如果有則刪除
第三步,刪除注冊表中的鍵值
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun“avserve.exe ”=“%WINDOWS%avserve.exe ”
三、結束語
目前計算機病毒種類繁多,而且新的病毒不斷出現,本文僅介紹幾種常見典型病毒的特征、原理及其清除方法,對于絕大多數病毒我們應嚴加警惕,實時更新自己的殺毒軟件和防病毒工具,只有做到時時預防,時時警惕,才能保證我們的電腦不被攻擊。
第三篇:MS08-067病毒分析
MS08-067病毒剖析
【染毒現象】
感染上Worm.Win32.MS08-067.c病毒的機器,其典型的染毒特征是:
1.不斷的向外發送垃圾數據包,并以此手段對全網進行傳播。
2.在本機的“任務計劃”中添加大量以“AT”開頭的任務計劃,并且啟動的時候大都是整
點,如11:00、13:00等。
3.如是域環境,并且設置了域賬戶登錄策略(登錄密碼輸入錯誤幾次之后鎖定賬戶),會
造成域賬戶經常被鎖,因為該病毒會不斷的猜測域賬戶密碼。
4.造成無法正常訪問瑞星官網和微軟官方網站,以及其它部分安全網站。停止或是重啟
“DNS Client”服務之后,可以打開上述網站,但重啟電腦后又無法打開。
【傳播方式】
Worm.Win32.MS08-067.c是一個利用微軟系統MS08-067漏洞為主要傳播手段的的蠕蟲病毒。
另外該病毒亦可通過U盤以自動加載運行的方式進行傳播、并且由于病毒自身帶一個弱密碼表,會猜解網絡中計算機的登錄密碼,如局域網中存在可讀寫的共享,也會造成該病毒通過局域網共享進行傳播。
【病毒分析】
首先病毒會判斷系統版本是否是 Win2000或WinXP 以上系統,如果是病毒才繼續執行,并且為病毒進程添加 SeDebugPrivilege 權限,對本機計算機名稱進行 CRC32 計算,通過得到的 CRC32 值創建病毒互斥量,判斷自己是否是 rundll32.exe 程序啟動的。如果不是就判斷是否能找到“svchost.exe-k netsvcs” 或者explorer.exe 進程,然后將自己的代碼加載到這兩個進程中的其中一個進程上,最后修改注冊表,讓系統不顯示隱藏文件,從而使病毒可以被系統加載。
該病毒會在%windir%system32目錄下釋放一個動態庫文件,名字隨機生成,如XXXXXXX.DLL ;并且會以獨占內存的方式存在,需要多次重啟才能刪除。
針對services.exe、“svchost.exe-k netsvcs”、“svchost.exe-k NetworkService”、進程進行DNS查詢以及TCP傳輸過程攔截,針對殺毒軟件關鍵字進行過濾,其中包含 rising、avast、nod32、mcafee 等等。使當前中毒計算機無法訪問安全廠商的網站。
停止 wscsvc、wuauserv、BITS、WinDefend、Windows Defender、ERSvc、WerSvc服務,并且改為手動,避免系統更新以及系統安全檢查程序。
枚舉網絡計算機的用戶名和自帶的密碼表,利用 IPC$ ADMIN$ 共享復制病毒到遠程計算機然后通過Rundll32遠程啟動,枚舉驅動器 創建自身到 RECYCLER、System32文件夾下面,嘗試訪問 http://、http://等等網站得到當前月數。再通過時間經過內置算法計算病毒的升級鏈接,方便病毒作者更新。
【處理辦法】
一、使用專殺處理方式:(推薦)
①首先將瑞星軟件升級到最新版本并使用抓包工具確定病毒發包源,染毒機器一般都會通過139、445端口發送大量數據包,特別是在整點時段。
② 確定發包源后,將發包機器斷網,進入安全模式之后清空多余的“任務計劃”并使用專殺工具查殺,無論是否查出病毒都需重啟,進入正常模式后將系統補丁全部打上,尤其是MS08-067補丁,該漏洞在微軟上的補丁名稱為:KB958644。
③ 確認MS08-067補丁正確打上:打上該補丁之后,在%windir%system32目錄下會有一個netapi32.dll文件,并且需要確定該文件的版本是否正確,版本正確才證明正確打上該補丁了,否則需要通過控制面板卸載重裝:
? windows2000 sp4系統下,此文件的版本應該為:5.0.2195.7203
? windows xp sp2/sp3系統下,此文件的版本為:5.1.2600.3462/5694
? windows 2003 SP1/SP2系統下,此文件版本為:5.2.3790.3229/4392
? windows 2008 vista系統下,此文件版本為:6.0.6000.16764;
6.0.6000.20937;6.0.6001.18157;6.0.6001.22288
④ 使用cmd命令進入命令行模式,使用“net share”命令查看本機共享,至少需要關閉所有讀寫共享,只讀共享可以保留。
⑤ 定期修改系統密碼,并需要設置十位以上強密碼。盡量不使用域管理員賬號在其它非域控機器上登錄。
⑥ 最后使用已經升級到最新版的瑞星殺毒軟件全盤殺毒,確定本機無病毒之后,再接入網內。
⑦ 所有發包源機器都處理完成之后,再執行全網同時殺毒,確保讓病毒無處隱藏。如果有條件的,可以通過防火墻或交換機將135、139和445這三個常見的病毒利用端口屏蔽。
二、手動處理方式:
① 首先通過“文件夾選項”顯示出所有隱藏文件,包括受保護的操作系統文件。② 打開%windir%system32目錄,將文件按詳細信息排列,顯示文件屬性和創建日期。讓文件按照屬性排列,查看是否有可疑的DLL文件,并且為隱藏屬性,注意創建的時間是否是染毒時間,確認之后在刪除的時候提示無法刪除。
③ 打開注冊表編輯器,定位到HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionSvcHost,雙擊右側的netsvcs,查看neisvcs的數值數據,查找其中的可疑項(此操作需要對net svcs的服務熟悉才行,一般可疑項會在wmdmpmsp之后)。
④ 記下此服務名,定位到
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceswscServer,嘗試刪除此項,提示無法刪除,查看此項權限,僅有system,且沒有讀取權限,可以增加權限,點擊“高級”,勾選從父項繼承和替換到子對象兩個勾,提示都點擊是和確定即可。操作后,即可刪除wscserver項鍵值;
⑤ 重啟計算機,刪除一開始在%windir%system32目錄下發現的可疑文件,刪除HKEY_LOCAL_MACHINESYSTEMControlSet001和
HKEY_LOCAL_MACHINESYSTEMControlSet002下的wscServer鍵值(避免恢復到上一次正確的配置后再次恢復此鍵值)即可。
第四篇:個人分享木馬病毒查殺總結
一、前言
《病毒木馬查殺》系列以真實的病毒木馬(或統稱為惡意程序)為研究對象,通過現有的技術手段對其分析,總結出它的惡意行為,進而制定出相應的應對方法(如編寫專殺工具),對其徹底查殺。當然,本系列更多地是討論如何應對某一個特定的病毒,而不涉及廣義的殺毒軟件的編寫。因為如今殺軟的原理非常復雜,并不是一個人就能夠完成的,加之我個人水平有限,因此不會涉及殺軟編寫的問題。不過,我會在以后的文章中在理論層面對此進行分析。
在本系列的文章中,對于某一個病毒或木馬,我可能會從以下三個方面進行查殺:手動查殺、監測惡意行為編寫專殺工具或通過逆向分析其反匯編代碼進行徹底查殺。這幾種方式通過對病毒的不斷深入分析,從而更有效地對抗惡意程序。需要說明的是,手動查殺病毒是比較粗淺的,難以徹底清除病毒,但是有些時候卻是快速而有效的。而通過行為對惡意程序進行監測,雖說比手動查殺的效果要好很多,但是有些時候往往也會有些遺漏。所以其實最好的還是通過逆向分析來了解惡意程序,只是這樣往往耗時較多。希望本系列的文章能夠起到科普作用,讓大家打消對病毒木馬的恐懼感,使得每一位讀者都能成為反病毒的專家。
二、病毒分析方法
一般來說,除非是感染型病毒,否則是不需要對病毒進行逆向分析的,只需要對病毒進行行為分析就可以編寫專殺工具。而如果是感染型病毒,由于需要修復被病毒感染的文件,那么就不能僅僅簡單地分析病毒的行為,而必須對病毒進行逆向分析,從而修復被病毒所感染的文件。因此,實際中的分析方法有以下兩種:
1、行為分析。惡意程序為了達到目的,都有自己的一些特殊的行為,這些特殊的行為是正常的應用程序所沒有的。比如把自己復制到系統目錄下,或把自己添加進啟動項,或把自己的某個DLL文件注入到其它進程中去……這些行為都不是正常的行為。我們拿到一個病毒樣本后,通常就是將病毒復制到虛擬機中,然后打開監控工具,比如Process Monitor。將各種準備工作做好以后,在虛擬機中把病毒運行起來,看病毒對注冊表、對文件進行了哪些操作,連接了哪個IP地址、創建了哪些進程等。通過觀察這一系列的操作,就可以寫一個程序。只要把它創建的進程結束掉,把它寫入注冊表的內容刪除掉,把新建的文件刪除掉,就等于把這個病毒殺掉了。這也是手動查殺病毒所慣用的方法。當然,這整個過程不會像說起來那么容易。
2、逆向分析。當惡意程序感染了可執行文件之后,所感染的內容是無法通過行為監控工具發現的。而病毒對可執行文件的感染,有可能是通過PE文件結構中的節與節之間的縫隙來存放病毒代碼,也可能是添加一個新節來存放病毒代碼。無論是哪種方式,都需要通過逆向的手段進行分析。常用的逆向分析工具有OllyDbg、IDA Pro以及WinDBG。
三、病毒查殺方法
病毒的查殺方法有很多種,在網絡安全知識日益普及的今天,在各大殺軟公司大力宣傳的今天,想必大部分網絡安全愛好者對于病毒查殺技術都有一定的了解。當今常見的主流病毒查殺技術有特征碼查殺、啟發式查殺、虛擬機查殺和主動防御等。
1、特征碼查殺。特征碼查殺是殺軟廠商查殺病毒的一種較為原始的方法。它是通過從病毒體內提取病毒特征碼,從而識別病毒。但是這種方法只能查殺已知病毒,對于未知病毒則無能為力。
2、啟發式查殺。靜態地通過一系列“帶權規則組合”對文件進行判定,如果計算出的值高于某個界限則被認為是病毒,否則不認為是病毒。啟發式查殺可以相對有效地識別出病毒,但是往往也會出現誤報的情況。
3、虛擬機查殺。在內存中虛擬一個運行環境用于病毒的運行,根據其行為或釋放出的已知病毒特征碼,來判斷其是否為病毒程序。這個技術用來應對加殼和加密的病毒比較有效,因為這兩類病毒在執行時最終還是要自身脫殼和解密的,這樣,殺軟可以在其現出原形之后進行查殺。
4、主動防御?;诔绦蛐袨樽灾鞣治雠袛嗟膶崟r防護技術,不以病毒的特征碼作為判斷病毒的依據,而是從最原始的病毒定義出發,直接將程序的行為作為判斷病毒的依據。主動防御是用軟件自動實現了反病毒工程師分析判斷病毒的過程,解決了傳統安全軟件無法防御未知惡意軟件的弊端,從技術上實現了對木馬和病毒的主動防御。
四、環境的配置
我們所有的病毒分析工作都會在虛擬機中進行,因此安裝虛擬機是一個必須的步驟。虛擬機也是一個軟件,用于模擬計算機的硬件系統,在虛擬機中可以安裝操作系統,之后可以安裝各種各樣的應用程序,這與真實的計算機是沒有區別的。在虛擬機中的操作完全不會對我們真實的系統產生影響。但是這里要特別說明的是,某些特別強的病毒能夠繞出虛擬機,進而感染我們真實的系統。這種情況可能是因為我們的虛擬機中存在漏洞,而病毒正好利用了這個漏洞。因此一定要選擇最新版本的虛擬機軟件。除了對病毒進行分析需要使用虛擬機外,在進行雙機調試系統內核時(比如使用WinDBG),往往也是要借助于虛擬機的。常用的虛擬機有VMware和Oracle公司的VM VirtualBox。我個人最喜歡使用VMware,因為它的功能非常強大,而且基本上所有的教程都會以這款軟件作為講解對象。但是Vmware在我的系統中總是會出現莫名的問題,所以在我的實驗環境中,我選擇使用開源且免費的VirtualBox。我的VirtualBox采用的是4.3.12版,虛擬機中安裝的操作系統為Windows XP Professional SP3,為其虛擬1個處理器,1GB內存、10GB硬盤空間與128M顯存。而我的真實系統采用的是Windows 8.1(64位),使用Intel Core i5-3230M 2.60GHz的CPU,4GB內存。如無特別說明,本系列所有的實驗都會在這個配置中完成。這里還需要說一下系統的備份,因為在分析病毒程序時,我們的虛擬系統或多或少地會被病毒所破壞,而備份功能則可以將系統很好地恢復到被破壞前的狀態。在VirtualBox中,可以在“控制”菜單下選擇“生成備份”,輸入備份名稱后保存。這樣,以后如果想還原系統,可以選擇“恢復備份”,至此,我們的實驗環境基本配置完畢。
一、前言
作為本系列研究的開始,我選擇“熊貓燒香”這個病毒為研究對象。之所以選擇這一款病毒,主要是因為它具有一定的代表性。一方面它當時造成了極大的影響,使得無論是不是計算機從業人員,都對其有所耳聞;另一方面是因為這款病毒并沒有多高深的技術,即便是在當時來講,其所采用的技術手段也是很一般的,利用我們目前掌握的知識,足夠將其剖析。因此,我相信從這個病毒入手,會讓從前沒有接觸過病毒研究的讀者打消對病毒的恐懼心理,在整個學習的過程中開個好頭。
本篇文章先研究如何對“熊貓燒香”進行手動查殺。這里所說的手動查殺,主要是指不通過編寫代碼的方式對病毒進行查殺。說白了,基本上就是通過鼠標的指指點點,有時再利用幾條DOS命令就能夠實現殺毒的工作。但是不可否認的是,采用這種方法是非常粗淺的,往往不能夠將病毒徹底查殺干凈,但是從學習手動查殺病毒起步,有助于我們更好地理解反病毒的工作,從而為以后更加深入的討論打下基礎。需要說明的是,手動查殺病毒并不代表在什么軟件都不使用的前提下對病毒進行查殺,其實利用一些專業的分析軟件對于我們的查殺病毒的還是很有幫助的,這些工具我會在對不同的病毒的研究中進行講解。另外,出于安全考慮,我的所有研究文章,都不會給大家提供病毒樣本,請大家自行上網尋找,我只會給出我所使用的病毒樣本的基本信息。
二、手動查殺病毒流程
手動查殺病毒木馬有一套“固定”的流程,總結如下:
1、排查可疑進程。因為病毒往往會創建出來一個或者多個進程,因此我們需要分辨出哪些進程是由病毒所創建,然后刪除可疑進程。
2、檢查啟動項。病毒為了實現自啟動,會采用一些方法將自己添加到啟動項中,從而實現自啟動,所以我們需要把啟動項中的病毒清除。
3、刪除病毒。在*步的檢查啟動項中,我們就能夠確定病毒主體的位置,這樣就可以順藤摸瓜,從根本上刪除病毒文件。
4、修復被病毒破壞的文件。這一步一般來說無法直接通過純手工完成,需利用相應的軟件,不是我們討論的重點。
三、查殺病毒
我這里研究的“熊貓燒香”病毒樣本的基本信息如下: MD5碼:87551e33d517442424e586d25a9f8522,Sha-1碼:cbbab396803685d5de593259c9b2fe4b0d967bc7 文件大?。?9KB 大家在網上搜索到的病毒樣本可能與我的不同,但是基本上都是大同小異的,查殺的核心思想還是一樣的。
這里我將病毒樣本拷貝到之前配置好的虛擬機中(注意要備份),首先打開“任務管理器”查看一下當前進程:因為我的虛擬機系統中沒有安裝任何軟件,是很純凈的,所以一共有18個進程(包含任務管理器進程),可以認為這18個進程是系統所必須的。有時我們就需要這樣的一個純凈系統,來與疑似中毒的系統進行進程的對比操作。然后我們運行病毒,再次嘗試打開“任務管理器”,發現它剛打開就立刻被關閉了,說明病毒已經對我們的系統產生了影響,而這第一個影響就是使得“任務管理器”無法打開。不過沒關系,我們可以在cmd中利用“tasklist”命令進行查看:通過對比可見這里多出了一個名為spoclsv.exe的進程,那么我們可以通過命令“taskkill /f /im 1820”(強制刪除PID值為1820的文件映像),從而將這個進程結束掉:這時就可以發現“任務管理器”可以被打開了,說明我們工作的第一步是成功的。然后需要對啟動項進行排查,可以在“運行”中輸入“msconfig”:
這里很快就能夠鎖定“spoclsv.exe”這一項,我們首先需要記下其文件位置: C:WINDOWSsystem32driversspoclsv.exe 然后是注冊表位置:
HKCUSOFTWAREMicrosoftWindowsCurrentVersionRun 然后將這個啟動項前面的對勾取消,來到注冊表相應的位置,將Run中的“spoclsv.exe”刪除,并且刪除病毒文件本體:
以上工作完畢后,重啟系統,再次打開“任務管理器”,可以被正常打開,說明我們的工作是成功的。然后打開“我的電腦”,用鼠標右鍵點擊一下各個盤符(我的系統只有C盤):我們在手動查殺病毒的時候,就應該養成一個習慣,那就是使用右鍵來打開盤符,而不是通過雙擊左鍵的方式。在這里我們可以看到,鼠標右鍵菜單中多出來了一個“Auto”項,那么很明顯C盤中存在autorun.inf的文件。可以在cmd中查看一下:因為我已經確定C盤中存在autorun.inf文件,而使用dir命令卻沒有看到,說明它應該是被隱藏了,所以這里要使用“dir /ah”(查看屬性為隱藏的文件和文件夾)命令。而我們也確實發現了autorun.inf與setup.exe這兩個可疑文件(因為正常文件是不需要隱藏的,特別是EXE文件更加不需要隱藏自己,所以這個setup.exe屬于可疑文件)。因為這兩個可疑程序的屬性是隱藏的,所以這里可以先去掉其隱藏屬性,然后再進行刪除:
重啟系統后,所有手動查殺病毒的工作完畢,我們的系統就又恢復正常了。
四、小結
事實上,“熊貓燒香”對于我們的電腦的危害遠不止于此,只是說在不使用任何輔助工具的前提下,我們能做的基本上就是這些了。對于“熊貓燒香”病毒的手動查殺部分就到這里,在以后對于別的病毒的研究中,由于它們比“熊貓”要強大,我們不得不使用一些專業工具作為輔助。也希望大家能夠親自去嘗試,勤動手,由這里開始,不再懼怕病毒。
一、前言
為了分析“熊貓燒香”病毒的行為,我這里使用的是Process Monitor v3.10版。
行為分析的目的,是為了編寫出病毒的專殺程序。當然,由于現實環境的種種限制,可能無法發現病毒的所有行為,這些我都會在文章中進行說明。
二、對“熊貓燒香.exe”進程樹的監控分析
這里我將病毒和Process Monitor v3.10復制到之前配置好的虛擬機中,并做好備份。然后先打開Process Monitor,在篩選條件中將“熊貓燒香.exe”加入到篩選器的“Process Name”中,然后運行病毒,首先可以查看一下進程樹: 圖①
在進程樹中可以發現,“熊貓燒香.exe”衍生出了“spoclsv.exe”。衍生出的進程又打開了兩次“cmd.exe”。第一次運行的命令是“cmd.exe /c net share C$ /del /y”,它的意思是在命令行模式下刪除C盤的網絡共享,執行完后關閉cmd.exe。因為我的系統只有一個C盤,因此有理由相信,這個病毒應該是會關閉系統中所有的盤的網絡共享。第二次運行的命令是“cmd.exe /c net share admin$ /del /y”,這里取消的是系統根目錄的共享。那么由此就可以總結出病毒的兩點行為:
病毒行為1:病毒本身創建了名為“spoclsv.exe”的進程,該進程文件的路徑為“C:WINDOWSsystem32driversspoclsv.exe”。
病毒行為2:在命令行模式下使用net share命令來取消系統中的共享。
三、對“熊貓燒香.exe”注冊表監控分析
對于注冊表的監控,我們發現只有一項需要注意: 注冊表的這個位置主要用于隨機數種子的生成,僅僅依靠這條信息是無法推測病毒的行為的,所以可以認為“熊貓燒香.exe”對于注冊表沒有什么實質的影響。
四、對“熊貓燒香.exe”文件監控分析
對于文件的監控,也只有一條需要注意:創建文件
可見,“熊貓燒香.exe”在“C:WINDOWSsystem32drivers”中創建了“spoclsv.exe”,其它再無可疑操作,那么可以認為,這個病毒真正的破壞部分是由“spoclsv.exe”實現的,那么接下來的工作就是專門監控這個進程。
五、對“spoclsv.exe”注冊表監控分析 這里需要將進程名為“spoclsv.exe”的進程加入篩選器進行分析。一般來說,病毒所產生的操作會比較多,所以我這里為了便于討論,我每次只會列出幾項操作進行顯示,其它的操作就由篩選器排除掉。首先可以查看一下“Reg*Value”這個操作:
可見病毒程序將當時幾乎所有的安全類工具的自啟動項給刪除了,就有: 病毒行為3:刪除安全類軟件在注冊表中的啟動項。然后只保留“Reg*Key”與“RegSetValue”
可見,病毒程序為自身創建了自啟動項,使得每次啟動計算機就會執行自身,則有:
病毒行為4:在注冊表“HKCUSoftwareMicrosoftWindowsCurrentVersionRun”中創建“svcshare”,用于在開機時啟動位于“C:WINDOWSsystem32driversspoclsv.exe”的病毒程序。對注冊表的這個位置進行設置,能夠實現文件的隱藏。此處進行設置后,即便在“文件夾選項”中選擇“顯示所有文件和文件夾”,也無法顯示隱藏文件,則有:
病毒行為5:修改注冊表,使得隱藏文件無法通過普通的設置進行顯示,該位置為:HKLMSOFTWAREMicrosoftWindowsCurrentVersionExplorerAdvancedFolderHiddenSHOWALL,病毒將CheckedValue的鍵值設置為了0。至此,注冊表部分就基本分析完畢了。
六、對“spoclsv.exe”文件監控分析
文件的監控,主要看的是病毒是否將自己復制到其他目錄,或者創建刪除了哪些文件等,監控如下所示:
圖二在圖中可以看到,病毒文件在“C:WINDOWSsystem32drivers”中創建了“spoclsv.exe”這個文件,在C盤根目錄下創建了“setup.exe”與“autorun.inf”,并且在一些目錄中創建了“Desktop_.ini”這個文件。由于創建這些文件之后就對注冊表的SHOWALL項進行了設置,使得隱藏文件無法顯示,那么有理由相信,所創建出來的這些文件的屬性都是“隱藏”的,于是有:
病毒行為6:將自身拷貝到根目錄,并命名為“setup.exe”,同時創建“autorun.inf”用于病毒的啟動,這兩個文件的屬性都是“隱藏”。
病毒行為7:在一些目錄中創建名為“Desktop_.ini”的隱藏文件。
七、對“spoclsv.exe”網絡監控分析
現在只進行網絡監控,來查看病毒是否有聯網動作:從監控結果可以看到,病毒會向“124.16.31.148”發送并接收信息,并不斷嘗試連接“10.0.2.X”即局域網中的其它計算機,于是有:
病毒行為8:向外發包,連接局域網中其他機器。
八、小結
至此,我們已總結出病毒的8點行為,在分析的過程中,我基本上是一語帶過,主要是因為病毒比較簡單,加上它在Process Monitor面前也是無所遁形。但是請大家注意,以上8點不代表就是病毒的所有行為,因為更加詳細的結論是要通過逆向分析才能得出的。而通過上述的分析結果,我們就可以著手專殺工具的編寫了,這將會在*文章中詳述。
一、前言
為了分析“熊貓燒香”病毒的行為,我這里使用的是Process Monitor v3.10版。
行為分析的目的,是為了編寫出病毒的專殺程序。當然,由于現實環境的種種限制,可能無法發現病毒的所有行為,這些我都會在文章中進行說明。
二、對“熊貓燒香.exe”進程樹的監控分析
這里我將病毒和Process Monitor v3.10復制到之前配置好的虛擬機中,并做好備份。然后先打開Process Monitor,在篩選條件中將“熊貓燒香.exe”加入到篩選器的“Process Name”中,然后運行病毒,在進程樹中可以發現,“熊貓燒香.exe”衍生出了“spoclsv.exe”。衍生出的進程又打開了兩次“cmd.exe”。第一次運行的命令是“cmd.exe /c net share C$ /del /y”,它的意思是在命令行模式下刪除C盤的網絡共享,執行完后關閉cmd.exe。因為我的系統只有一個C盤,因此有理由相信,這個病毒應該是會關閉系統中所有的盤的網絡共享。第二次運行的命令是“cmd.exe /c net share admin$ /del /y”,這里取消的是系統根目錄的共享。那么由此就可以總結出病毒的兩點行為:
病毒行為1:病毒本身創建了名為“spoclsv.exe”的進程,該進程文件的路徑為“C:WINDOWSsystem32driversspoclsv.exe”。
病毒行為2:在命令行模式下使用net share命令來取消系統中的共享。
三、對“熊貓燒香.exe”注冊表監控分析
對于注冊表的監控,我們發現只有一項需要注意,對注冊表的寫入 注冊表的這個位置主要用于隨機數種子的生成,僅僅依靠這條信息是無法推測病毒的行為的,所以可以認為“熊貓燒香.exe”對于注冊表沒有什么實質的影響。
四、對“熊貓燒香.exe”文件監控分析
對于文件的監控,也只有一條需要注意: 創建文件
可見,“熊貓燒香.exe”在“C:WINDOWSsystem32drivers”中創建了“spoclsv.exe”,其它再無可疑操作,那么可以認為,這個病毒真正的破壞部分是由“spoclsv.exe”實現的,那么接下來的工作就是專門監控這個進程。
五、對“spoclsv.exe”注冊表監控分析
這里需要將進程名為“spoclsv.exe”的進程加入篩選器進行分析。一般來說,病毒所產生的操作會比較多,所以我這里為了便于討論,我每次只會列出幾項操作進行顯示,其它的操作就由篩選器排除掉。首先可以查看一下“Reg*V
可見病毒程序將當時幾乎所有的安全類工具的自啟動項給刪除了,就有: 病毒行為3:刪除安全類軟件在注冊表中的啟動項。然后只保留“Reg*Key”與“RegSetValue”進行分析:
可見,病毒程序為自身創建了自啟動項,使得每次啟動計算機就會執行自身,則有:
病毒行為4:在注冊表“HKCUSoftwareMicrosoftWindowsCurrentVersionRun”中創建“svcshare”,用于在開機時啟動位于“C:WINDOWSsystem32driversspoclsv.exe”的病毒程序。接下來還有
對注冊表的這個位置進行設置,能夠實現文件的隱藏。此處進行設置后,即便在“文件夾選項”中選擇“顯示所有文件和文件夾”,也無法顯示隱藏文件,則有:
病毒行為5:修改注冊表,使得隱藏文件無法通過普通的設置進行顯示,該位置為:HKLMSOFTWAREMicrosoftWindowsCurrentVersionExplorerAdvancedFolderHiddenSHOWALL,病毒將CheckedValue的鍵值設置為了0。至此,注冊表部分就基本分析完畢了。
六、對“spoclsv.exe”文件監控分析
文件的監控,主要看的是病毒是否將自己復制到其他目錄,或者創建刪除了哪些文件等,監控如下所示:
在圖中可以看到,病毒文件在“C:WINDOWSsystem32drivers”中創建了“spoclsv.exe”這個文件,在C盤根目錄下創建了“setup.exe”與“autorun.inf”,并且在一些目錄中創建了“Desktop_.ini”這個文件。由于創建這些文件之后就對注冊表的SHOWALL項進行了設置,使得隱藏文件無法顯示,那么有理由相信,所創建出來的這些文件的屬性都是“隱藏”的,于是有:
病毒行為6:將自身拷貝到根目錄,并命名為“setup.exe”,同時創建“autorun.inf”用于病毒的啟動,這兩個文件的屬性都是“隱藏”。
病毒行為7:在一些目錄中創建名為“Desktop_.ini”的隱藏文件。
七、對“spoclsv.exe”網絡監控分析
現在只進行網絡監控,來查看病毒是否有聯網動作:
從監控結果可以看到,病毒會向“124.16.31.148”發送并接收信息,并不斷嘗試連接“10.0.2.X”即局域網中的其它計算機,于是有:
病毒行為8:向外發包,連接局域網中其他機器。
八、小結
至此,我們已總結出病毒的8點行為,在分析的過程中,我基本上是一語帶過,主要是因為病毒比較簡單,加上它在Process Monitor面前也是無所遁形。但是請大家注意,以上8點不代表就是病毒的所有行為,因為更加詳細的結論是要通過逆向分析才能得出的。而通過上述的分析結果,我們就可以著手專殺工具的編寫了,這將會在*文章中詳述。
一、前言
對病毒進行逆向分析,可以徹底弄清楚病毒的行為,從而采取更有效的針對手段。為了節省篇幅,在這里我不打算將“熊貓燒香”進行徹底的分析,只會講解一些比較重要的部分,大家只要掌握了這些思想,那么就可以處理很多的惡意程序了。一般來說,對病毒的靜態分析,我們采用的工具是IDA Pro,動態分析則采用OllyDbg。由于后者會使病毒實際運行起來,所以為了安全起見,最好在虛擬機中操作。另外,在實際分析過程中,我們可能還需要一些輔助工具,比如偵殼或脫殼程序等。為了簡單起見,這次研究的“熊貓燒香”程序并沒有加殼,但是以后我們會討論如何應對加殼或采用了其它保護手段的病毒。
二、查殼操作
逆向分析的第一步就是用查殼工具對目標程序進行查殼操作。由Delphi所編寫的代碼與VC++所編寫的代碼有所不同,最明顯的兩點區別如下:
1、函數調用時參數的傳遞不完全用棧,而是主要用寄存器,即Delphi編譯器默認以register方式傳遞函數參數。這一點與VC編譯的程序完全不同。Delphi一般將第一個參數放入eax寄存器,第二個參數放入edx,第三個參數放入ecx寄存器,其余參數按照與VC程序類似的方式壓棧。
2、棧上給局部變量分配空間的時候,棧是向下增長的,而棧上的數組、字符串、結構體等卻是向上增長的。理解這一點可以幫助識別棧上的變量。對病毒樣本進行了簡單的偵測之后,就確定了分析的方向,那么接下來就需要使用反匯編工具進行分
三、“熊貓燒香”的初步分析 這里我使用IDA Pro載入病毒樣這里最開始的兩個*調用的都是名為sub_403C98的函數,IDA Pro已經將其中第二個*上方的字符分析出來了,是一段作者感言信息。所以有理由相信,第一個*上方應該也是一段字符串,這里可以結合OD來查看一下:可見,第一個*上方的字符串就是“***武*漢*男*生*感*染*下*載*者***”,可以理解為是病毒作者信息,那么接下來就有必要分析一下病毒程序利用這兩段字符串究竟做了什么。也就是進入*的內部,即sub_403C98去研究一下:
[mw_shl_code=asm,true]CODE:00403C98 sub_403C98 proc near;CODE XREF: sub_403ED4+8j CODE:00403C98;sub_403F18+6j...CODE:00403C98 test edx, edx;對edx 進行驗證,這里的test相當于and,不同的是test只進行比較,而不會將結果保存;在edx中。由于edx保存的是病毒作者所編寫的一段字符串,因此這里的結果一定是非0的。
CODE:00403C9A jz short loc_403CC0;由于*條語句的結果是非0的,因此這條跳轉語句并不會被執行到。CODE:00403C9C mov ecx, [edx-8];利用OD進行動態分析可知,[edx-8]是將edx-8這個地址中的值取出來,賦給ecx,那么賦值
;完以后,ecx的值為0x0FFFFFFFF。CODE:00403C9F inc ecx;ecx自增1,那么ecx的值就變為了0x0,注意這個自增的運算會使得ZF的值變為1。CODE:00403CA0 jg short loc_403CBC;這里的jg表明不大于則跳轉?;蛘吒鼫蚀_地說,其跳轉條件是SF=OF且ZF=0。由于經過*步
;的運算,ZF=1,因此本跳轉不成立。CODE:00403CA2 push eax CODE:00403CA3 push edx CODE:00403CA4 mov eax, [edx-4];經過賦值后,eax中保存的值為0x20。CODE:00403CA7 * sub_403D08;結合OD在虛擬機中進行動態分析,進入一層又一層的調用可以得知,這個*主要是調用了;LocalAlloc函數,它從堆中分配大小為0xFF8的空間,函數參數uFlags=0,即
;LMEM_FIXED,意思是分配固定內存,返回值是指向一個內存對象的指針。LocalAlloc函數;如果執行成功則返回一個指向新分配的內存對象的句柄。CODE:00403CAC mov edx, eax CODE:00403CAE pop eax CODE:00403CAF push edx CODE:00403CB0 mov ecx, [eax-4] CODE:00403CB3 * sub_402650;結合OD在虛擬機中進行動態分析,這個*的主要功能是將之前保存在edx中的字符串(病;毒信息與作者感言)拷貝到上面所分分配的堆空間中。如圖5所示。CODE:00403CB8 pop edx CODE:00403CB9 pop eax CODE:00403CBA jmp short loc_403CC0[/mw_shl_code] 至此,sub_403C98分析完畢。這個函數有兩個參數,由于采用的是Delphi編譯器,因此在反匯編中,第一個參數保存在eax中,第二個參數保存在edx中。這個函數首先完成堆空間的申請,然后將edx中保存的字符串復制到新申請的空間中。這個函數在最初賦值的時候,eax的值均為0,而在執行后,eax中保存的就是新申請的堆空間中,所復制的字符串的首地址。
這里又是兩個字符串,其中第一個是“xboy”,而第二個借助于OD可以知道是一堆亂碼 之后可以借助于OD進入sub_405360內部進行動態查看,不過這里我們無需關注所有的細節,僅僅有一處循環需要注意:
[mw_shl_code=asm,true]CODE:004053D1 loc_4053D1:;CODE XREF: sub_405360+B5 j CODE:004053D1 mov eax, [ebp+var_14] CODE:004053D4 * sub_403ECC CODE:004053D9 push eax CODE:004053DA mov eax, ebx CODE:004053DC pop edx CODE:004053DD mov ecx, edx CODE:004053DF cdq CODE:004053E0 idiv ecx CODE:004053E2 mov edi, edx CODE:004053E4 inc edi CODE:004053E5 mov eax, [ebp+var_14] CODE:004053E8 movzx eax, byte ptr [eax+edi-1];每次循環逐字節取出“xboy”中的字符進行運算,注意這里首先取出的是“b”。CODE:004053ED mov ecx, 0Ah;將ecx賦值為0x0A,作為接下來除法運算的除數。CODE:004053F2 xor edx, edx;清空edx。
CODE:004053F4 div ecx;做除法運算,商保存在eax中,余數保存在edx中。CODE:004053F6 mov eax, [ebp+var_4];這里由于給eax重新賦值,說明程序實際想使用的是edx中的余數。CODE:004053F9 movzx eax, byte ptr [eax+ebx-1];每次循環逐字節取出亂碼中的字符,賦值給eax進行接下來的運算。CODE:004053FE xor edx, eax;異或運算,結果保存在edx中,也就是通過運算最終得出的字符。CODE:00405400 lea eax, [ebp+var_18] CODE:00405403 * sub_403E2C CODE:00405408 mov edx, [ebp+var_18] CODE:0040540B lea eax, [ebp+var_10] CODE:0040540E * sub_403ED4 CODE:00405413 inc ebx CODE:00405414 dec esi CODE:00405415 jnz short loc_4053D1[/mw_shl_code] 很明顯,這是一段解密代碼,利用關鍵字“xboy”將亂碼進行還原,通過OD觀察,可以得到還原后的字符串為“***武*漢*男*生*感*染*下*載*者***”。那么就可以將函數sub_405360重命名為:DecodeSt*。繼續分析:
這里第一句反匯編代碼中的[ebp-14h]所保存的就是上面經過解密后的字符串的地址,而ds:dword_40E7D4保存的是之前所分配的堆空間中所保存的字符串地址。通過OD的動態分析,我們很容易就能夠確定sub_404018函數的用途是對字符串進行比較,那么可以將其重命名為:St*Cmp。正常來說經過比對之后,二者是一致的,所以下面“相等則跳轉”就會執行,跳到loc_40CBBC處執行:
由于之前已經進行了相應的分析,并進行了重命名的工作,所以這里的代碼功能就一目了然了。首先進行解密,然后是字符串的比對。那么接下來的條件跳轉也會成立,直接來到loc_40CBE6:
這里連續使用了3個*,限于篇幅,我會在接下來的文章中再做分析。
四、小結
本文對“熊貓燒香”病毒樣本的反匯編程序的起始部分做了初步的分析。由于反匯編代碼總會出現各種調用與跳轉,所以分析時會顯得很是凌亂,可能會打消大家的積極性。可見逆向分析工作需要各位讀者的耐心與細致。耐心,需要大家沉得住氣,不斷跟蹤每一個可疑的*;細致,需要大家時刻留意寄存器中的內容,才能夠找到我們需要的信息。當然經驗也是非常重要的。成功分析出病毒功能的喜悅是不言而喻的,它也吸引著病毒分析人員不斷探索,一口氣完成工作。也希望各位讀者能夠以此作為起點,體驗到其中的樂趣。
一、前言
*篇文章講解了“熊貓燒香”病毒樣本的反匯編代碼入口處的分析,雖然尚未研究到病毒的核心部分,但其實我們后續的分析與之前的思想是一致的。而越到核心部分,可能會遇到越來越多的API函數,結合所調用函數的參數進行分析,反而有助于我們更容易地理解病毒的行為。應當將分析出的每一個*函數,改為我們能夠理解的名字,這往往也有助于對后續程序的理解。
二、病毒功能分析
*篇文章的最后,我留下了三個*沒有分析,現在進入第一個*,即sub_408024的內部查看 程序先將0x84賦值給ecx,此即為循環次數。然后使用了兩個push 0,每個push能夠開辟8個字節(32位)空間,所以這里每次能夠獲取16個字節的空間,這樣的空間一共申請ecx次。那么本段代碼的功能在于空間的申請。接下來有:
這段代碼的最后出現了sub_40277C這個函數,我們跟進后可以看到這幾句代碼: 可見sub_40277C主要是調用GetMuduleFileNameA這個API函數,而這個函數的功能就是獲取當前進程已加載模塊的文件的完整路徑,那么就可以將sub_40277C重命名為:GetFilePathAndName。獲取成功后,結合OD,可以看到如下信息:
圖4 獲取當前進程的完整路徑 接下來有:
注意第一句代碼中的[ebp+var_3B8]保存的就是圖4中所獲取的路徑地址,這個地址值賦給了eax。然后進入sub_405684分析。這個函數中有一處循環結構,是我們重點關注的對象,利用OD動態分析:
僅僅進行靜態分析,不容易明白這個循環的作用,但是結合OD單步執行,觀察寄存器中的值,就很容易明白這段代碼的功用:它利用之前獲取的文件完整路徑,從后向前以單字節為單位,不斷循環搜索,直至遇到*碼值為0x5C或0x2F或0x3A,然后便跳出循環。而0x5C所表示的是字符“”,可以知道這段程序要么是獲取文件名,要么是獲取不包含文件名的路徑。進入最后一條語句的*分析,很快就能夠發現:
可見,程序將去除了文件名的路徑拷貝到了之前申請的空間中,于是可以將sub_405684重命名為:GetFilePath。接下來有:
這三句代碼的第一句,是將上面所獲取的不帶文件名的路徑的地址賦值給eax,然后將字符串“Desktop_.ini”的地址賦給edx。然后進入sub_403ED4進行分析:
上圖中代碼的最后一個*,在分析sub_405684(GetFilePath)時遇到過,其作用是將字符串復制到指定的位置。對于這段程序來說,就是將“Desktop_.ini”這段字符復制到之前的路徑字符后面。那么可以得知,sub_403ED4的作用是字符串的連接,那么就將其重命名為:St*Cat。繼續分析:
第一句代碼是將之前所處理完畢的路徑字符串地址賦給eax,然后調用sub_4057A4函數,進入該函數可以發現:
這里調用了FindFirstFileA這個函數,說明它是在查找當前目錄下“Desktop_.ini”文件是否存在,那么sub_4057A4函數的作用就在于檢測文件是否存在,可將其改名為:CheckFileExist。接下來有:
由于有了之前的分析并進行了重命名,那么這一段代碼的作用就很明顯了,首先根據*段代碼的查找結果進行判定,即如果當前目錄下Desktop_.ini文件存在,那么就將該文件的文件屬性調整為NORMAL,接下來有: 停止1毫秒后,將Desktop_.ini刪除。
可見這個函數用于檢測待刪除的文件路徑是否為空。那么就可以將sub_4040CC重命名為:CheckPath。當然,以上分析是建立在Desktop_.ini文件存在的前提下,如果文件不存在,那么程序就會直接跳到loc_408110處執行
這里最后一句調用了sub_4078E0函數,跟進去發現這個函數較長,并且也調用了很多其它的函數,乍一看,似乎不知這個函數究竟是做了什么。既然如此,我們可以先不管其具體的實現細節,只看看該函數執行完后,我們寄存器等位置產生了什么變化,主要關注該函數執行前后,程序使用了哪些寄存器。利用OD可以很容易發現變化: 由截圖可以發現,在獲取了當前文件的路徑后,該函數利用了很大的一片區域來寫入了大量看似無意義的字符。結合右邊分析出的*碼,發現這些可以理解為是一個暴力破解字典,病毒編寫者企圖利用暴力破解的方式,來攻破計算機中的某些驗證機制。當然截圖中僅僅展示了一小部分變化,病毒還寫入了很多其它信息,有興趣的讀者可以自行查看,這里不再贅述,這有助于我們獲取病毒的行為信息。那么這里可以將sub_4078E0函數重命名為:WriteVirusInfoToMem。接下來有
這里第一句執行完后,eax的值為ebp+var_8的地址,通過OD可以知道,這個地址中保存的是0,可以理解為沒有數據。之后有一個*,我們進入查看一下:
這里首先取出eax所保存的地址中的值,也就是0,并賦給edx,那么edx保存的也就是0值。之后的test運算,使得ZF變為1,滿足跳轉條件,那么本段函數也就結束了。如果說edx所保存的不是0值,那么接下來的語句就會把eax所保存的地址中的值設為0。這么看上去,這段函數似乎并沒有實現什么特別清晰具體的功能,那么不妨將這個操作理解為某種標志的設置,將sub_403C44重命名為:SetZeroFlags。繼
結合OD可以知道,第一句是獲取文件在內存中的首地址,然后進入sub_403ECC查看: 這里需要特別強調的是,由于本病毒程序是使用Delphi編寫的,那么字符串的首地址減去4后,所取出的4個字節的內容就是此字符串的長度。也就是說,這段代碼中的[eax-4]就是eax所指向的文件長度。于是可以將sub_403ECC重命名為:GetFileLen。在獲取文件長度后,程序會跳轉到loc_408163處執行:
在獲取了文件長度后,這段代碼首先會驗證文件長度是否為0,這里由于文件真實存在,所以接下來的跳轉不成立。接下來,eax中保存的是文件起始地址,而ebx是文件的長度,于是可以知道,倒數第二句的對比,是驗證文件的尾端數據是否為0,如果為0,則接下來的跳轉不成立。經過OD的動態分析,這里文件尾端的值為0,所以不執行跳轉,繼續向下執行。
接下來代碼的分析,留給*文章。
三、小結
經過一整篇文章的討論,我并沒有將病毒的一個完整功能塊分析完全,主要是我需要講得細致些,帶領大家弄清楚每一個*的功能。接下來的最后一篇文章也無法將整個病毒分析完全,但是我相信,只要各位讀者勤于動手,并將我所講的逆向分析的基本原理搞清楚,那么這個“熊貓燒香”就根本不在話下了。
一、前言
這次我們會接著*篇的內容繼續對病毒進行分析。分析中會遇到一些不一樣的情況,畢竟之前的代碼我們只要按照流程順序一步一步往下走,就能夠弄清楚病毒的行為,但是在接下來的代碼中,如果依舊如此,在某些分支中的重要代碼就執行不到了,所以我們需要采取一些策略,走完每個分支,徹底分析出病毒的行為。
二、病毒分析
現在程序執行到了loc_408171位置處:
程序首先進行比較操作,由于二者都為0,所以在比較過后ZF=1,那么接下來的跳轉并不執行。之后的*獲取到了病毒程序所在的路徑(包含文件名),并將完整路徑名的首地址保存在eax中,注意[ebp+var_3D8]中所保存的是一個地址數值,該地址指向文件路徑字符串。而接下來賦給edx的地址,則是病毒程序完整地址向后4個字節的位置,正好跳過了兩個大寫字母和兩個符號。接下來進入sub_40532C進行查看,可以發現:
這里的CharUpperBuff函數的作用是把緩沖區中指定數目的字符轉為大寫。于是可以將sub_40532C重命名為:ToUpper。接下來有: 這里出現了sub_4054BC函數,跟進查看可以發現
這里的GetSystemDirectory函數的作用在于獲取系統路徑,于是可以將sub_4054BC重命名為:GetSystemDir??梢娨陨线@幾個函數分析得還是比較順利的,因為病毒直接調用了API函數,讓我們對于程序的功能一目了然。接下來程序首先將剛才獲取的系統路徑字符串的首地址入棧,然后分別壓入“drivers”與“spoclsv.exe”這兩個字符串,之后利用OD對sub_403F8C進行分析,執行完后可以發現:
由此可見,sub_403F8C的作用是將兩個字符串與另一個字符串連接起來,從而組成一個長路徑,所以可以將其重命名為:TwoSt*sCat。接下來是:結合OD動態分析可知,這段程序首先將之前連接好的路徑字符串轉換為大寫字母,然后將該字符串與之前所轉換的病毒程序路徑的大寫字符串作對比操作,這里執行時,二者是不同的,所以接下來的跳轉不成立(如果想要理解這里為什么要利用比對的操作,可以結合之前文章中對于病毒的行為分析,病毒會將自身改名為“spoclsv.exe”,并復制到“drivers”目錄中,這里的對比就是要確認病毒到底有沒有被復制到該目錄下,如果沒有,即對比結果不為零,那么就執行接下來的病毒復制操作)。dword_408658中保存的是字符串“spoclsv.exe”,然后可以進入sub_4060D4中進行分析。sub_4060D4這個函數也是比較長,內部有眾多的*,一個一個*進行查看,可以發現它調用了非常多的API函數,依據這些API函數的功能可以知道,sub_4060D4的作用在于查找當前內存中的指定進程,若存在,則將其終止。由于較長,這里就不進行截圖分析了。于是可以將sub_4060D4重命名為:SearchAndTerminateProcess。接下來有:這段代碼已經有了足夠的注釋,就不再贅述。接下來還有:由最后一句的CopyFile函數可以知道,這里主要是實現文件的拷貝操作,也就是將本病毒文件改名為“spoclsv.exe”后,復制到“drivers”目錄中。這段代碼調用了Win*函數,查看它上面的eax中所保存的字符信息可以發現,當病毒本體將自身復制到“drivers”中并改名后,這里就是對改了名字的病毒程序執行運行的操作,然后主體程序就退出了。至此,如果想繼續用OD進行動態分析,要么載入“spoclsv.exe”,要么對之前的一處條件跳轉進行修改,令程序以為自己就是“spoclsv.exe”。該位置就是圖7中的0x004081E8,我們先在該位置*個斷點,然后用OD重新載入本程序,令其停在斷點處。正常來說,這里的跳轉是不成立的,為了使其成立,當然可以將jz改為jnz,但是這改變了病毒程序。最好的辦法是改變ZF標志位,將原來的0改為1就可以了。但是,經過了之前的行為分析可以知道,真正實現病毒功能的,可以說就是“spoclsv.exe”這個程序,雖說這個程序和“熊貓燒香.exe”是完全一樣的,可是畢竟其內部的執行流程是不同的。為了得到病毒完整的資料,這里我利用OD載入“spoclsv.exe”進行動態分析。那么0x004081E8處的跳轉得以執行,一段代碼出現了sub_40416C這個函數,它也是比較抽象,不太容易分析,這需要耐心與細致,在此我將過程省略。其實這個函數的功能是刪除字符串中的信息,其中eax保存的是欲操作字符串的地址,ecx保存的是欲刪除的字符的個數。那么就將sub_40416C重命名為:*St*Buff。然后程序跳轉到loc_4085D3:
在*函數之上,eax保存的是一個標記數值,這里為0x01。之后的*就是查找文件中是否包含有這個標記,如果包含有這個標記,那么就執行跳轉,否則不跳轉。由此我們可以假設,這個0x01標記應該就是病毒將程序感染后,在原本正常的程序中添加的,用于標識該程序是否被感染的標記。如果真是這樣的話,若想分析跳轉后的程序內容,要么在OD中修改標志位,要么對一個被感染的程序進行分析,這里我不再贅述,有興趣的讀者可以拿一個被感染的程序自行分析。這里可以將sub_4041B4重命名為:SearchSignPos。
由于我現在分析的是病毒程序,他自身沒有0x01標志位,因此跳轉不成立,繼續執行。一部分的代碼主要用于收尾工作,最后的*用于刪除堆棧中所保存的地址,這些地址指向的是病毒寫入的一些信息。這部分代碼返回后,那么sub_408024就執行完了??赡艽蠹乙呀洸挥浀胹ub_408024是什么了,這個就是我在本逆向分析系列的上篇的最后,所分析出的病毒三大功能的第一項功能。分析至此,可見這第一項功能主要用于病毒的初始化工作。余下的兩大功能我在此就不進行分析,有興趣的讀者可以獨立研究試試看。
三、小結 至此,熊貓燒香病毒的逆向分析系列就結束了,我用了三篇文章的篇幅來一步一步地給大家做了較為詳盡的分析。盡管只分析了病毒的一項大功能,但是我相信大家或多或少地了解到了病毒逆向分析的基本方法。在我看來,這里面并沒有多高深的技術,重要的是經驗的積累以及個人的耐心的培養。希望各位讀者能夠踏踏實實地將這個病毒親自動手分析完全,相信這會令大家的收獲巨大。
一、前言
之前用了六篇文章的篇幅,分別從手動查殺、行為分析、專殺工具的編寫以及逆向分析等方面,對“熊貓燒香”病毒的查殺方式做了討論。相信大家已經從中獲取了自己想要的知識,希望大家在閱讀完這幾篇文章后,能夠有一種“病毒也不過如此”的感覺,更希望這些文章能夠為有志于在未來參與到反病毒工作的朋友,打下堅實的理論基礎。以下就是我在這幾篇文章的分析中所總結出來的一些知識點,分為靜態分析與動態分析兩個方面進行討論,并加入了一些延伸知識,為大家查漏補缺。
二、病毒的靜態分析
靜態分析技術通常是研究惡意代碼的第一步。靜態分析指的是分析程序指令與結構來確定目標程序的功能的過程。在這個時候,病毒本身并不在運行狀態。我們一般采用以下幾種方式進行靜態分析:
1、采用反病毒引擎掃描
如果尚不確定目標程序是否為病毒程序,我們可以首先采用多個不同的反病毒軟件來掃描一下這個文件,看是否有哪個引擎能夠識別它。當然殺軟也存在著誤報的可能性,但如果說多款殺軟都認為目標程序有問題,那么這個程序十有八九就是一個惡意程序了。
2、計算哈希值
哈希是一種用來唯一標識目標程序的常用方法。目標程序通過一個哈希程序,會產生出一段唯一的用于標識這個樣本的哈希值,我們可以將這個值理解為是目標程序的指紋。常用的哈希算法有MD5、Sha-1以及CRC32等。由于僅僅采用一種算法,特別是MD5算法,有可能使得不同程序產生同樣的哈希結果,所以為了謹慎起見,一般會運用多種哈希方式進行計算,比如“火眼”(https://fireeye.ijinshan.com/)的檢測結果中就包含了計算出的哈希值
哈希運算的結果在病毒大規模爆發時可以快速響應,成為檢測病毒的一種方式。我在《病毒木馬查殺第004篇:熊貓燒香之專殺工具的編寫》那篇文章中就采用了CRC32算法來驗證目標
查找字符串
程序中的字符串就是一串可打印的字符序列,一個程序通常都會包含一些字符串,比如打印輸出信息、連接的*,或者是程序所調用的API函數等。從字符串中進行搜索是獲取程序功能提示的一種簡單方法。這里我使用微軟推出的St*s程序(http://technet.microsoft.com/en-us/sysinternals/bb897439.aspx),來搜索可執行文件中的可打印字符串。將St*s與病毒樣本都拷貝到C盤根目錄下,然后在CMD中輸入: C: >St*s setup.exe 得到的部分結果
由結果可見,并不是所有的字符串都是有意義的,但是利用這個結果,也能夠給我們的靜態分析帶來很大的便利了。比如“*DownloadToFile”這個API函數就經常被惡意程序用來執行文件的下載操作,該函數需要*MON.DLL動態鏈接庫的支持,在上述截圖中也有所體現。
4、偵殼操作
病毒木馬編寫者經常會使用加殼技術來讓他們的惡意程序難以被檢測或分析。正常的程序總是會包含很多字符串。而加了殼的惡意代碼通過分析所得到的可打印字符串就會很少。如果使用St*s程序來檢測一個程序,發現它的字符串很少時,那么這個程序就很有可能是加了殼的。此時往往就需要使用其它方法來進一步檢測它們的行為。
對于這次的研究對象“熊貓燒香”來說,使用了PEiD這一款靜態分析工具,用于檢測目標程序是否有殼以及由什么軟件編寫的。因為如果病毒樣本有殼,那么就一定要先脫殼才可以進行分析。而弄清楚了病毒是由什么軟件編寫的,我們就能夠確定其函數調用方式以及棧的分配方式等特點,從而更好地進行分析。比如我的“熊貓燒香”樣本是由Delphi編寫的,如果我們不懂Delphi編譯器的特性,依舊以C++的眼光來看待它,那么很可能會給接下來的分析工作帶來困擾。
5、偵測動態鏈接
在對病毒木馬進行分析的過程中,我們一定要關注目標程序中的動態鏈接,因為這些信息有助于我們猜測目標程序到底干了什么事情。Dependency Walker這款工具(http://www.tmdps.cn/)就是我們常用的用于偵測動態鏈接的軟件。比如我們用它來檢測“熊貓燒香”:
可見Dependency Walker很清晰地指出了“熊貓燒香”使用了*MON.DLL中的“*DownloadToFile”這個API函數。有經驗的反病毒工程師,利用這款軟件往往就能將惡意代碼的大概功能基本分析完全了。
6、PE分析
對于目標程序PE結構的分析,往往可以使我們獲取更多的信息。常用的工具有PEview和Resource Hacker等。由于PE的分析較為復雜,所以這里不再詳述。有興趣的讀者可以參考相應的PE類資料。
7、使用IDA Pro進行高級靜態分析
IDAPro這款軟件可以說是所有反病毒工程師的首選,我在對“熊貓燒香”病毒樣本進行靜態逆向分析時,使用的就是這款軟件。相信大家在之前的三篇文章中,已經深有體會。它除了能夠反匯編整個程序以外還能執行查找函數、棧分析、本地變量標識等任務。而且IDA Pro生來就是交互式的,其反匯編過程的所有屬性都可以被修改、操作、重新安排或重新定義。而我們在實際分析的過程中,也應當及時地將已分析出的內容進行重命名或進行標注。我在分析的過程中全都是在文本模式下進行分析的,其實我覺得這款軟件很好的一點是它能夠以圖形化的界面來為用戶揭示程序的整個執行流程,可見,圖形模式會給我們的分析工作帶來更加直觀化的體驗。當然這款軟件還有很多十分強大的功能,我會在未來的分析中,給大家一一展示。
三、病毒的動態分析
所謂動態分析就是在運行惡意代碼之后進行檢查的過程,它能夠讓你觀察到惡意代碼的真實功能。雖然動態分析技術非常強大,但是它們還是應該在靜態分析之后進行,并且應該在虛擬的環境中進行。一般有以下幾種方式:
1、使用沙箱
現在有很多自動化的軟件可以用來對病毒進行基本的動態分析,最常用的就是沙箱技術。沙箱是一種在安全環境里運行可疑程序的一種分析方法,從而無需擔心傷害到我們真實的系統。有些安全類企業也在線提供了這樣的服務,比如“火眼”(https://fireeye.ijinshan.com/),可見“火眼”已經較為全面地揭示了病毒樣本的行為,這對我們*步的分析很有幫助。不過,沙箱也存在著很多缺點,比如,如果我們分析的是一個后門程序,需要等待一條控制指令才會啟動特定的行為,那么在沙箱中這個后門程序就無法被徹底分析了。而且沙箱也不能記錄所有事件,因為如果惡意代碼將自己設置為等待一天甚至更長的時間才去執行自己的行為,那么沙箱往往就無能為力了。諸如此類的缺點還有很多,但不管怎樣,沙箱都是我們在反病毒工作中不可或缺的利器。
2、行為監控
Process Monitor可以說是在反病毒領域最為常用的軟件了。我在《病毒木馬查殺第003篇:熊貓燒香之行為分析》中所使用的就是它,而且在以后的分析中,還會經常使用。Process Monitor一旦開始運行,它就會監控所有能夠捕獲的系統調用,但并不是所有的數據都能捕獲。所以往往也需要多款軟件的同時使用,才能夠獲取惡意程序的完整行為。比如我們經常使用Process Explorer來查看進程,使用Regshot來比較注冊表在病毒運行前后所發生的變化,利用Netcat進行網絡監視等。每款軟件都有各自的優點,我們在實際分析中要善于利用。
3、動態調試
使用調試器對病毒進行分析在反病毒工作中扮演著十分重要的角色。調試器允許你查看任意內存地址的內容、寄存器的內容以及每個函數的參數。調試器也允許你在任意時刻改變關于程序執行的任何東西。比如你可以在任意時刻改變一個變量的值——前提是你需要獲得關于這個變量足夠的信息,包括在內存中的位置。在實際的動態調試過程中,我們最常用的是OllyDbg和WinDbg,前者是病毒分析人員使用最多的調試器,缺點是不支持內核調試,如果想調試內核,WinDbg基本上就是唯一的選擇了。雖然IDA Pro也能夠進行動態調試,但是它遠遠不如OD方便。因此在實際分析的過程中,往往是將二者結合使用的。因為如果用IDA Pro在靜態分析中遇到了十分抽象的函數,那么用OD動態地執行一下,該函數的功能往往就能一目了然了。
四、病毒分析的幾點補充
我們在病毒分析的過程中,不要過于陷入細節。大多數病毒木馬程序是龐大而復雜的,你不可能也沒有必要去了解每一個細節。真正需要關注的是惡意程序最關鍵最主要的功能。在實際分析過程中,當遇到了一些困難和復雜的代碼段后,應當在進入到細節之前有一個概要性的了解。另外,在面對不同的工作任務中,應當善于使用不同的工具和方法。不存在通吃的做法。如果在一個點上被卡住了,不要花太長的時間在這個問題上,嘗試轉移到其他問題,嘗試從不同的角度進行分析。最后,病毒的分析工作就如同貓捉老鼠的游戲,正所謂道高一尺魔高一丈,惡意代碼分析技術與惡意代碼編寫技術是對立統一的,二者都在不斷地相互促進并發展著。所以我們應當能夠認識、理解和戰勝這些不斷涌現的新技術,并能夠快速適應這個領域中的新的變化。也就只有這樣,才能夠在這個領域有所成就。
第五篇:登革熱病毒的分析和相關舉措
成績 |
青島農業大學課程論文
(2020-2021學年第一學期)
論文題目: 登革熱病毒的分析和相關舉措
課程名稱: 致命的人類病毒
任課教師: 于永樂
班 級: 公管1903
學 號: 20190201295
姓 名: 梁國慶
2020年 12月4日
登革熱病毒的分析和相關舉措
登革熱,又稱斷骨熱,是由登革病毒引起的、經伊蚊傳播的急性傳染病?!?】在拉丁美洲和東南亞的許多國家,登革熱爆發較為常見。非洲、中東部分地區、西太平洋地區、波多黎各等熱帶和亞熱帶地區,也存在登革熱的流行。我國廣東、云南、福建、浙江、海南等南方省份可發生登革熱流行,主要發生在夏秋季。
一、病原學
【2】登革熱病毒屬B組蟲媒病毒,現在歸入披蓋病毒科黃熱病毒屬。病毒顆粒呈啞鈴狀(700×20——40nm)、棒狀或球形(直徑為20——50nm)。髓核為單股線狀核糖核酸(RNA)。病毒顆粒與乙型腦炎病毒相似,最外層為兩種糖蛋白組成的包膜,包膜含有型和群特異性抗原,用中和試驗可鑒定其型別。登革病毒可分為4個血清型,與其他B組蟲媒病毒如乙型腦炎病毒可交叉免疫反應。
登革病毒在1~3日齡新生小白鼠腦、猴腎細胞株、伊蚊胸肌及C6/36細胞株內生長良好,并產生恒定的細胞病變。但接種猴子、猩猩和其他實驗動物,不產生癥狀。
登革病毒對寒冷的低抗力強,在人血清中貯存于普通冰箱可保持傳染性數周,-70℃可存活8年之久;但不耐熱,50℃、30min或100℃、2min皆能使之滅活;不耐酸、不耐醚。用乙醚、紫外線或0.05%福爾馬林可以滅活。
二、臨床癥狀
【4】患者被攜帶病毒的蚊蟲叮咬后,通常經過 4~7 天開始出現癥狀。多數患者病情較輕,尤其是兒童和青少年患者,通常 1~2 周內癥狀好轉,也不會留下后遺癥。少數情況下,患者病情嚴重,發展為登革出血熱,引起嚴重出血和血壓降低,進而導致休克或死亡。登革熱的癥狀可輕可重。輕癥患者的常見癥狀有:突發高熱,可達 40 ℃ 以上;劇烈頭痛;眼睛疼痛;肌肉和關節疼痛(故該病又稱“斷骨熱”);皮疹;惡心、嘔吐和食欲減退;輕度淋巴結腫大。發熱通常持續一周,也可能間斷出現。首次發熱后,少數患者可能出現更嚴重的癥狀,即登革出血熱。出血體征,如皮膚淤青或小紅點、口鼻和牙齦出血、嘔血、黑色柏油樣便;劇烈腹痛;休克跡象,如皮膚濕冷、呼吸急促、脈搏虛弱、意識不清等。
既往罹患過登革熱的患者,再次患病時更容易發生登革出血熱。
突然起病,迅速發熱,24 小時內體溫可達 40℃,可伴有怕冷、較劇烈的頭痛、眼眶痛、肌肉、關節和骨骼痛及疲乏、惡心、嘔吐等癥狀;發熱一般持續 2-7 天,在病程第 3-6 日出現充血性皮疹或針尖樣出血點,分布于四肢軀干或頭面部,多有癢感,持續 3-5 天。
在早期的時候,與感冒、流感等相似,容易誤診。少數患者會在發病的 3-5 天突然加重,可能出現劇烈頭痛、嘔吐、狂躁、昏迷、抽搐、大量出汗、血壓驟降、頸強直、瞳孔縮小等重癥癥狀。
三、診斷方法
【3】登革熱病癥的診斷方式有尿常規可有少量蛋白、紅細胞、白細胞,有時有管型。病毒分離,取早期患者血液,接種于白紋伊蚊細胞株(C6/36)、分離病毒后須經特異性中和試驗或血凝抑制試驗加以鑒定。血清免疫學檢查,檢測患者血清中登革病毒RNA,其敏感性高于病毒分離,可用于早期快速診斷,還有登革熱病毒核酸檢測。
四、預防和控制措施
登革熱病毒的傳播主要通過伊蚊(埃及伊蚊和白紋伊蚊)叮咬傳播,不會通過人傳人傳播。目前還沒有疫苗用于預防登革熱,因此最佳預防措施是滅蚊和防蚊,也就是杜絕蚊蟲孳生和做好個人防護。
滅蚊措施:清理家中水缸、盆、罐壇等積水容器,翻盆倒罐清除積水,水養植物 3-5 天要換水或者改為土培,水缸要加蓋,垃圾桶要加蓋,地漏、下水道等處防止積水,并時常噴點殺蟲劑,讓伊蚊找不到產卵地點。
防蚊措施:居室內安裝紗窗、紗門,和蚊帳。外出涂抹驅蚊液以及驅蚊花露水,正規商場超市里售賣的驅蚊液和驅蚊花露水的有效成分大多為避蚊胺和驅蚊酯,驅蚊的效果都很好。
五、個人體會及感悟
登革熱﹝俗稱“斷骨熱”﹞是一種由登革熱病毒引起的急性發熱傳染病,由蚊子傳播給人類。病原體為登革熱病毒。登革熱通過帶有登革熱病毒的雌性伊蚊叮咬而傳染給人類。主要傳播媒介為埃及伊蚊、白紋伊蚊。其中白紋伊蚊(俗稱“花斑蚊”)在我省分布廣泛,主要在清水容器中孳生,大多數在屋外或野外陰暗處流連,但亦會在戶內活動。雌蚊嗜吸人血,吸血高峰在日落前兩小時(約為下午五、六時),及早上八、九時。感染登革熱病毒后,經過3至15天的潛伏期(通常為5至8日),患者多以突然發熱為首發癥狀,持續發熱3~5天,嚴重頭痛,四肢酸痛、關節痛、肌肉痛、背痛、后眼窩痛。發病后3、4日出現紅疹,惡心、。嘔吐,輕微的流牙血和流鼻血。病后有可能出現極度疲倦及抑郁癥狀,極少數病者會惡化至出血性登革熱,并進一步出血、休克,嚴重時可引致死亡。
雖然我們地處北方,對于登革熱病毒離得比較遠,但對于登革熱病毒的危害,我們是深有感觸的,而且現代醫學到目前為止并沒有一種有效疫苗來預防登革熱。預防登革熱只能是通過清除積水,防止伊蚊孳生,以避免給蚊子叮咬,有關預防蚊咬的措施如下:到登革熱流行區旅游或生活,應穿著長袖衣服及長褲,并于外露的皮膚及衣服上涂上蚊蟲驅避藥物。如房間沒有空調設備,應裝置蚊帳或防蚊網。使用家用殺蟲劑殺滅成蚊,并遵照包裝指示使用適當的份量。切勿向運作中的電器用品或火焰直接噴射殺蟲劑,以免發生爆炸。避免在“花斑蚊”出沒頻繁時段在樹蔭、草叢、涼亭等戶外陰暗處逗留。防止積水,清除伊蚊孳生地:盡量避免用清水養殖植物。對于花瓶等容器,每星期至少清洗、換水一次,勿讓花盆底盤留有積水。把所有用過的罐子及瓶子放進有蓋的垃圾桶內。將貯水容器、水井及貯水池加蓋。所有渠道要保持暢通。將地面凹陷的地方全部填平,以防積水。到東南亞旅游后半個月內如出現發熱,應盡早就醫治療,并向醫生說明旅行史。
雖然直到如今登革熱的疫苗仍然沒有研制出來,但只要我們做到這些措施,切斷登革熱的傳播途徑。我相信,總有一天,登革熱這一道險關一定會的被攻克的!
參考文獻:
【1】Science:全球聯盟重新繪制登革熱病毒圖譜,解釋二次感染危及生命等問題。Derek Smith 2015年9月期
【2】國外醫學(微生物學分冊)1979年01期
【3】中國急救復蘇與災害醫學雜志
【4】百度百科