最近不知怎么搞的,一夜就冒出許多捆綁機,害得我等菜鳥苦不堪言。今天就各種捆綁器的原理和檢測方法做個簡單的總結,以幫助各位識別帶毒程序。
一、傳統的捆綁器 這種原理很簡單,也是目前用的最多的一種。就是將B.exe附加到A.exe的末尾。這樣當A.exe被執行的時候,B.exe也跟著執行了。這種捆綁器的代碼是滿網都是。我最早是從jingtao的一篇關于流的文章中得知的。就目前來說,已經沒什么技術含量了。
檢測方法:稍微懂一點PE知識的人都應該知道。一個完整有效的PE/EXE文件,他的里面都包含了幾個絕對固定的特點(不管是否加殼)。一是文件以MZ開頭,跟著DOS頭后面的PE頭以PE\0\0開頭。有了這兩個特點,檢測就變得很簡單了。只需利用UltraEdit一類工具打開目標文件搜索關鍵字MZ或者PE。如果找到兩個或者兩個以上。則說明這個文件一定是被捆綁了。不過值得注意的是,一些生成器也是利用了這個原理,將木馬附加到生成器末尾,用戶選擇生成的時候讀出來。另外網上流行的多款“捆綁文件檢測工具”都是文件讀出來,然后檢索關鍵字MZ或者PE。
說到這里,相信大家有了一個大概的了解。那就是所謂的“捆綁文件檢測工具”是完全靠不住的一樣東西。
二、資源包裹捆綁器 就這原理也很簡單。大部分檢測器是檢測不出來的,但灰鴿子木馬輔助查找可以檢測出捆綁后未經加殼處理的EXE文件。但一般人都會加殼,所以也十分不可靠。這個學過編程或者了解PE結構的人都應該知道。資源是EXE中的一個特殊的區段。可以用來包含EXE需要/不需要用到的任何一切東西。利用這個原理進行100%免殺捆綁已經讓人做成了動畫。大家可以去下載看看。那捆綁器是如何利用這一點的呢?這只需要用到BeginUpdateResource、UpdateResource和EndUpdateResource這三個API函數就可以搞定。這三個API函數是用來做資源更新/替換用的。作者只需先寫一個包裹捆綁文件的頭文件Header.exe.頭文件中只需一段釋放資源的代碼。而捆綁器用的時候先將頭文件釋放出來,然后用上面說的三個API函數將待捆綁的文件更新到這個頭文件中即完成了捆綁。類似原理被廣泛運用到木馬生成器上。
檢測方法:一般這種很難檢測。如果你不怕麻煩,可以先將目標文件進行脫殼。然后用“灰鴿子木馬輔助查找”或“ResTorator”一類工具將資源讀出來進行分析。但這種方法畢竟不通用。所以還是推薦有條件的朋友使用虛擬機。
三、編譯器捆綁法 暫時不知用什么名字來形容,所以只能用這個來代替。這種方法相當的陰險。是將要捆綁的文件轉換成16進制保存到一個數組中。像這樣
|
然后用時再用API函數CreateFile和WriteFile便可將文件還原到硬盤。這里稍稍學過編程的都知道。代碼中的數組經過編譯器、連接器這么一搞。連影都沒了。哪還能有什么文件是吧?所以就這種方法而言,目前還沒有可以查殺的方法。這種方法可以利用編程輔助工具jingtao的DcuAnyWhere或Anskya的AnyWhereFileToPas來實現。
四、最最毒辣的一種 因為暫時用的人較少,且危害性及查殺難度太大,所以就不公布了。此法查殺方法通用性極差。如果流行,估計大家連動畫都不敢下著看了。
補充:可以利用一些第三方工具將硬盤和注冊表監視起來以后再運行那些你不確定是否被捆綁的程序。這樣,一旦硬盤出現變化,或有文件新建,或有文件改變都會被記錄在案。就算是查找起來也方便一點。