免殺技術

免殺技術全稱為反防毒技術Anti Anti- Virus簡稱「免殺」,它指的是一種能使病毒木馬免於被防毒軟體查殺的技術。由於免殺技術的涉獵面非常廣,其中包含反組譯逆向工程系統漏洞等駭客技術,所以難度很高,一般人不會或沒能力接觸這技術的深層內容。其內容基本上都是修改病毒、木馬的內容改變特徵碼,從而躲避了防毒軟體的查殺。[1]

分類

  • 開源免殺:指的是擁有病毒、木馬原始碼的前提下,通過修改原始碼進行免殺。
  • 手工免殺:指的是僅有病毒、木馬的可執行檔(PE檔案)的情況下進行免殺。
  • 自動免殺:指的是病毒、木馬自身能自動變異,如:千面人病毒

技術概覽

加殼脫殼與加密解密

  • 參見加殼壓縮,在免殺技術里所謂的偽裝殼其實就是壓縮與外層資料偽裝,其實是利用特殊的演算法,對可執行檔動態庫裡的資源進行壓縮與對檔案的描述、版本號、建立日期、修改軟體、系統執行需求等外層資料進行偽裝
  • 脫殼就是把已壓縮與偽裝的檔案完全或近似還原到未壓縮與偽裝的狀態。最常用的加殼軟體就是WinRAR
  • 加密是將明文資訊隱匿起來,使之在缺少特殊資訊時全部或部分資料不可讀,令防毒軟體無從下手。
  • 而解密就是令在宿主電腦中的病毒得到金鑰,從而突然發作。

加花指令與程式入口點修改

  • 加花指令就是在程式開頭加入一段計算用的組譯指令和一些入口點主記憶體位址的亂跳轉,或加上其他常用程式特有的入口指令來迷惑防毒軟體。因為計算與跳轉的最後結果是沒有實質的意義的,所以這麼做並不影響程式的正常執行。但能使一些防毒軟體無法正確辨識木馬程式,從而達到免殺的效果。
  • 程式入口點修改就是改變入口點,通常用到的方法是在入口點的位址加1或把入口點位址拆開,也有加花指令之後把原入口點修改到花指令的入口點上令電腦先處理那段沒意義的指令,再在花指令後再加跳轉代碼,跳轉到程式執行資料的入口點上,令程式正常執行。

例: (組合語言

mov ebp,esp
push ebp	;把基址指针寄存器压入堆栈
pop ebp	        ;把基址指针寄存器弹出堆栈
push eax        ;把数据寄存器压入堆栈
pop eax         ;把数据寄存器弹出堆栈
nop             ;不执行
add esp,1       ;指针寄存器加1
sub esp,1       ;指针寄存器减1
inc ecx         ;计数器加1
dec ecx         ;计数器减1
sub esp,1       ;指针寄存器加1
sub esp,-1      ;指针寄存器加-1
push 321BA      ;跳到内存入口地址321BA
retn            ;反回到入口地址
jb 456CD        ;跳到内存入口地址456CD
jnb 321BA       ;跳到内存入口地址321BA
mov eax,456CD   ;跳到内存入口地址456CD
jmp eax         ;跳到程序入口地址
jmp 321BA       ;跳到程序入口地址321BA
push 123AB      ;把入口地址123AB压入堆栈
mov eax,123AB   ;把入口地址123AB转送到数据寄存器中。
jmp 123AB       ;跳到入口地址123AB(程序执行数据的真正入口点)

主記憶體、檔案特徵碼的定位與修改

眾所周知大部分防毒軟體查殺病毒的根據就是對比特徵碼,而這個過程一般發生在主記憶體與硬碟中。對比硬碟中儲存著的檔案的特徵碼,能全面地查殺電腦中的可疑檔案;對比在主記憶體中儲存著的檔案的特徵碼,能快速地查殺正在執行的程式是否帶有病毒,另外病毒檔案一旦進入主記憶體即執行中,很可能會現出原形被防毒軟體查殺。針對防毒軟體這一特性,駭客們發明了主記憶體、檔案特徵碼修改免殺法。通常首先用特徵碼定位軟體定位檔案特徵碼的所在之處,再用UltraEdit對被定位的特徵碼段進行修改。

一般修改方法有:

  • 十六進制的特徵碼直接修改法,就是把十六進制的特徵碼加1;
  • 字串大小寫修改法,就是特徵碼所對應的內容是字串的時候,把大小字互換;
  • 等價替換法,就是當特徵碼所對應的是組譯指令時,把指令替換成功能類擬的指令;
  • 指令順序調換法,把特徵碼對應的組譯指令的順序互換;
  • 通用跳轉法,用跳轉的方法把特徵碼對應的組譯指令跳轉走,猶如加花一樣。

修改特徵碼的方法針對性很強很有用,但一次修改只能對一款防毒軟體免殺;要令另一款軟體免殺,就要重新針對該軟體修改特徵碼,因為各家防毒軟體公司使用的特徵碼基本上都不相同。

檔案植入與捆綁

免殺工具

常用工具有[2]

  • 加殼器:PEditor、MaskPE、UPX等
  • 脫殼與剖析器:PEid、ResScope、RL!dePacker、Restorator等
  • 加花器:FakeNinja
  • 特徵碼定位與修改器:CCL、OllyDbg、UltraEdit
  • 除錯器:SoftIce
  • 反組譯器:IDA、W32Dasm等
  • 十六進制編輯器:HIEW、UltraEdit等
  • 開發包:SDK與DDK
  • 編譯器:Microsoft Visual C++、Borland C++、Watcom C、GNU C以及Free Pascal等

注釋

  1. ^ >黑客炫耀“免杀”技术 专家称已有破解方法. news.xinhuanet.com. [2009-10-19]. (原始內容存檔於2015-04-25). 
  2. ^ >免杀技术之特征码修改常识. news.newhua.com. [2009-10-19]. (原始內容存檔於2012-08-08). 

外部連結