伴隨著放開二胎政策的實施,在16年到來之際又一條重磅消息隨之而來,國家將取消晚婚假。消息一出就一直備受大家的關注,新聞、政府文件也成為了大家獲取第一手消息的主要途徑。最近發(fā)現(xiàn),有一類感染型病毒正借此機會大肆傳播。
詳細分析:
下圖展示了病毒的整個執(zhí)行過程:
首先病毒偽裝成文檔的圖標,命名為晚婚假取消最新解讀,誘騙用戶點擊。
當用戶點擊后,彈出了一個關于晚婚假被取消的文章,用戶認為這就是一個普通文檔。
但隨即也運行了病毒程序,修改了IE,隨即感染了系統(tǒng)文件。我們上傳到哈勃,可以看到詳細的分析。
在哈勃的分析結果中,得知病毒釋放了可執(zhí)行文件。
通過WriteFile的參數(shù),看一下寫入的內容。看到創(chuàng)建的文件是一個可執(zhí)行文件。
創(chuàng)建文件完成后,程序執(zhí)行到0×450741。此時ebx的值為E043A159.
查看[ebx+20016835]處存放的內容,恰好是CreateProcess加載到內存中后的地址0x7C80236B.
再看一下第二個參數(shù)的內容,位于地址0×00450795處。
這樣就將whjmgr.exe運行起來了。此時也看到桌面多出了一個新的文件。
whjmgr.exe程序主要任務是將惡意代碼注入到IE進程,借IE來運行惡意代碼,避免查殺。但所用手法并不是常見的注入手段。下面進行詳細的分析。
whjmgr.exe運行后首先會查找IEXPLORE.EXE文件所在的位置,執(zhí)行到0x0040127E時,由下圖看到ebp的值是0012F7E4。[ebp+8]處指向的內容0041C70C,而此處存放的正是iexplore.exe文件的路徑,這樣就調用CreateProcess創(chuàng)建了IE進程。
此時,病毒已經(jīng)將ZwWriteVirtualMemory進行了hook,所以當CreateProcess函數(shù)內部調用到此函數(shù)時,會跳轉到用戶空間的代碼處0x00402C31,也是hook函數(shù)的起始地址。
在hook函數(shù)中調用多次WriteProcessMemory,將惡意代碼寫入到IE進程中,第一次寫入的是一個dll,寫在了IE進程中內存地址為0×020010000處。
后面幾次WriteProcessMemory寫入的內容是跳轉指令,最終會跳轉到DllEntrypoint。最后一次WriteProcessMemory是修改IE進程的EntryPoint處的代碼,這樣IE運行后,就可以來到惡意程序的入口處執(zhí)行代碼。
修改以后,IE入口處的代碼變?yōu)?/p>
注入IE進程也就完成了。
從整個過程來看,病毒利用hookZwWriteVirtualMemory函數(shù),在CreateProcess過程中,順帶也把IE進程的內存進行了修改,修改結束后,系統(tǒng)自動執(zhí)行了IE進程。并不是通常用掛起方式創(chuàng)建進程,修改內存后,再自己調用ResumeThread。所以注入方式比較新穎。
IE運行后,經(jīng)過幾次跳轉,會執(zhí)行到之前寫入dll的入口處DllEntryPoint,代碼會訪問2001AEACh和2001AEB0h兩個地方,如果是感染IE跳轉來的,那么這兩個值在之前會被寫入數(shù)據(jù),如果是通過加載器加載的dll,執(zhí)行到這里就會失敗。也算是一種對抗逆向的手段。
隨后,惡意代碼會遍歷系統(tǒng)文件夾下的文件,并對文件類型進行判斷。
此時edi指向的PE文件頭,+98h處是PE數(shù)據(jù)目錄成員的第五個元素SecurityTable,所指向的是文件簽名信息的附加數(shù)據(jù)。所以如果是簽名的文件,病毒也會放棄感染。
緊接著,會修改PE文件頭,設置了VirtualAddress,PointerToRawData,VirtualSize,SizeOfData等,并命名為.text。
調用WriteFile將附加數(shù)據(jù)寫到文件尾部,再調用CheckSumMappedFile函數(shù),重新計算映像校驗和,并修改。
最后設置EntryPoint,0×14000正是新增區(qū)塊的VirtualAddress。
完成了整個感染的過程。被感染的文件成為了新的母體。
病毒樣本采用了多種對抗調試的手法,除了上文中提到的,還包括檢查關鍵API開頭字節(jié)是否為Int3指令,如果是則會修改,以防下斷點進行調試。