當前位置:首頁 » 文件管理 » 免殺壓縮器

免殺壓縮器

發布時間: 2024-08-09 01:14:46

A. (滿意追加)免殺方法或者免殺教程,學慣用,非常感謝

首先來簡單了解一下殺毒軟體查殺病毒的原理,當前殺毒軟體對病毒的查殺主要有特徵代碼法和行為監測法。其中前一個比較方法古老,又分為文件查殺和內存查殺,殺毒軟體公司拿到病毒的樣本以後,定義一段病毒特徵碼到病毒庫中,然後與掃描的文件比對,如果一致則認為是病毒,內存查殺則是載入內存後再比對,第二個比較新,它利用的原理是某些特定的病毒會有某些特定的行為,來監測病毒。
免殺常用的工具:
Ollydbg 調試器簡稱OD,動態追蹤工具 peid 查殼工具 PEditor PE文件頭編輯工具
CCL,伯樂,MYCCL 特徵碼定位器 oc 地址轉換器 reloc 修改EP段地址工具 zeroadd 加區工具 Uedit32 十六進制編輯器

免殺方法

一.文件免殺
1.加花
2.修改文件特徵碼
3.加殼
4.修改加殼後的文件

二.內存免殺
修改特徵碼

三.行為免殺
加花
加花是文件免 殺的常用手段,加花原理就是通過添加花指令(一些垃圾指令,類似加1減1之類廢話)讓殺毒軟體檢測不到特徵碼。加花可以分為加區加花和去頭加花。一般加花 工具使用加區加花,當然也是可以手工加的,就是先用zeroadd添加一個區段,然後在新加區段里寫入花指令,然後跳轉到原入口;去頭加花,是先NOP (匯編里的空操作)掉程序的入口幾行,然後找到下方0000區,寫入NOP掉的代碼和一些花指令,再通過JMP(匯編里的無條件跳轉)跳到原入口。
加花以後一些殺毒軟體就認不出了,但有些比較強悍的殺毒,比如司機大叔(卡巴斯基)可能還是能查出來,這時就要定位特徵碼然後修改了,要修改首先必須知道特徵碼在哪裡,所以需要先定位特徵碼,這是個難點,特別是復合特徵碼的定位。

特徵碼定位
特徵碼定位主要有兩種方法:第一 直接替換法;第二 二叉數法;
直接替換法是最早開始出現的一種特徵碼定位方法,按一定的位元組數逐個替換原代碼並保存,比如木馬總共100位元組,可以先把0-10個位元組用0替換,保存, 然後用殺毒軟體掃描,不被查殺說明特徵碼已經被覆蓋掉了,如果還被查殺則替換10-20位元組,再保存,掃描……直到找出特徵碼。替換法的優點是容易理解, 速度快(對文件特徵碼而言),特徵碼定位工具伯樂以及CCL的手動方式就是利用的替換法原理,文件特徵碼定位經常使用的就是這種方法。但是對於內存特徵碼的定位這種方法就不太實用了,每次替換以後都要載入內存再掃描,如果木馬較大,替換生成的文件會 非常多,每個都要載入內存花費太多時間,除此之外它還有一個非常大的局限性,就是只能確定只有一處特徵碼的情況(某種特定情況下的多特徵碼也是適用的,下 面的第3種情況將有講述),殺毒軟體還有別的定位特徵碼的機制,比如有的殺毒的定義了a,b兩處特徵碼(三處或者更多原理是一樣的,為了講解方便,以下均 以兩處為例),只要a,b有一個存在便報毒,只有加大替換范圍直到兩處同時被替換才不報毒,如果兩處距離比較遠,定義出的范圍將非常粗糙,很明顯直接替換 法將不再合適,這時第二種方法就有用武之地了。

二叉數法使用的原理是一半一半定位,CCL的自動方式就是運用的這個原理。將待檢測段一分為二,分別替換並生成兩個文件A和B,其中A是原文件後半部分被0替換後生成的,B是前半部分被0替換的,殺毒開始查殺生成文件(如果是內存特徵碼定位則先載入內存再掃描內存),有4種情況
(1)A存在,B被刪:這種情況說明A文件中特徵碼已經被替換掉,因此將A的被替換部分一分為二,起始偏移為A的偏移,再進行檢測;
(2)A被刪,B存在:這種情況說明B文件中特徵碼已經被替換掉,因此將B的被替換部分一分為二,起始偏移為B的偏移,再進行檢測;
(3)A存在,B存在:這種情況說明沒法定位A和B中有沒有特徵碼,因此分別對A和B再一分為二進行檢測;
(4)A被刪,B被刪:這種情況說明兩個區段都存在特徵碼,因此分別對A和B再一分為二進行檢測。
對A再分時會將原來的B區段填充為0,相當於去除B區段的影響,只考慮A;同理對B再分時會將原來的A區段內容填0,相當於去除A區段的影響,只考慮B。

第(1)(2)對應的是只有一處特徵碼的情況,比較容易理解;
第(3)對應的是定義了a,b兩處特徵碼的情況,但是和前面提到的那種不同,殺毒軟體為避免誤判,定義了a,b兩處特徵碼,要ab同時存在時才報毒,假設a,b分別存在於A,B中,a,b不同時存在,殺毒對A,B均不報警,接下來該如何判斷呢?舉個例子說明一下
木 馬原來是…a……b…,第一次替換以後A:…a…000000,B:000000…b…,現在ab不同時存在,A,B都不被殺,則分別對A,B再次一分為 二,…a……b000,…a…000…,000……b…,…a000…b…,再次掃描就可以找到兩處特徵碼的位置,如果還是不行,再繼續分……直到全部找 到;其實這種類型的多特徵碼直接替換也是可以定位的,甚至效果更好,按一定位數替換,然後掃描,只要替換了一個特徵碼就不再報毒,所以不報毒的便是特徵碼 被覆蓋的,不管有幾處都可以定位出,而且修改時也只要修改任意一處就可以了。

第(4)種對應的情況也是殺毒定義了多處特徵碼,就是上面提到的那種情況,只要有一處符合就認定是病毒。還是以a,b兩處特徵碼為例,第一次替換後的結果同(3),兩部分分開考慮,互不影響, 相當於分解成兩個單個特徵碼的情況,第二次替換後變成000000…b000,000000…000…,000…000000,…a000000000, 依此類推,直到精確定位出所有特徵碼,如果有N處特徵碼就相當於分解成N個單特徵碼來定位,現在N一般小於等於3,這種情況定位出的所有特徵碼必須全部修 改了才能免殺。

二叉數法是個很不錯的思路,可以解決大部分的問題,但是不是無懈可擊呢?回答是否定的!可惡的殺毒軟體還有一個殺手鐧,就是復合特徵碼,給我們定位特徵碼 帶來了很大的麻煩。復合特徵碼的定位機制是,先定義出N個特徵碼,只要裡面某些同時出現便認為是病毒。舉個簡單例子說明一下:木馬原來是…a1…b1… c1…a2…b2…c2…(a1,a2一樣,加標號只是為了後面描述方便),只要abc同時出現就認為是病毒,這該如何定位呢?原理不是很難,也是利用替 換再查殺的方法,先從後往前用0替換,替換精度假設為每次替換量增加1000位元組,開始一直顯示是病毒,直到替換到地址13140040(為敘述方便隨便 說的一個地址)時替換的位元組達到15000個,即…a1…b1…00000000,兩個c都被替換掉了,此時顯示不是病毒,由此可知,特徵碼c1就在 13140040後面1000位元組內,減小替換位元組數比如改為替換14900位元組,即精度改為每次替換減小100位元組,還是無毒則減為替換14800字 節,不斷重復……直到精確定位出c1的位置;如果改為從前往後替換,則可以定位出a2的位置;其他特徵碼的定位可以利用已經定位到的c1,a2,把其中一 個用0替換了比如c1,從後往前就可以定位出c2,直到定位出所有特徵碼,其實原理並不復雜,但是要真正手動操作起來卻是非常麻煩的,我們可以利用 MYCCL,它用的原理與之類似,具體操作可以看MYCCL的操作幫助。還有一種方法更科學,原理是一樣,但是替換的位元組數不是等量增加的,而是以2的n -1次方增加的,第一次替換1位元組,第二次2位元組,第三次4位元組……減小時也按照這種規律,這種替換方法有點類似於二叉數法,可以更快定位出特徵碼的位 置,我想這也是MYCCL在復合特徵碼定位方面應該改進的地方吧。

復合特徵碼雖好,大家也不用害怕,認為所有殺毒都來個復合特徵碼我們就要累死了,定義復合特徵碼需要單個特徵碼幾倍的病毒庫,不方便用戶的升級,所以除了特別流行的病毒,定義復合特徵碼的也不是很多。

定位特徵碼有些經驗可以告訴大家,文件特徵碼的定位一般用直接替換法,可以借用CCL的手動定位;內存特徵碼定位,一般用二叉數法,可以用CCL自動定位。對於EXE文件如果文件較小,可以兩種方法結合,先用直接替換法生成,可以用伯樂這個工具(為什麼不用CCL呢,因為伯樂生成的是EXE文件可以看出圖標的模樣),找到還能正常運行的,那些圖標都變了的說明PE頭已經損壞了,就不要試了,然後載入內存,再掃描內存,如果既能正常運行又不被殺,恭喜你!成功了!定位出了大體范圍,再用CCL自動定位,很快就可以完成。如果文件較大,用伯樂生成的文件太多,也不方便,還是用CCL定位,對於DLL文件也只能老老實實用CCL定位了。

特徵碼修改
特徵碼修改可能需要一點匯編的知識,光碟里有常用的匯編語法介紹,修改主要有直接修改法和跳轉修改法。
直接修改法利用的是等效指令替換,比如
add eax,0c等效於sub eax,-0c
或者指令順序的改變不影響執行的效果,比如
add eax,0c;eax寄存器加上0c再賦給eax
add ebx,05;ebx寄存器加上05再賦給ebx
等效於
add ebx,05;ebx寄存器加上05再賦給ebx
add eax,0c;eax寄存器加上0c再賦給eax
還有一種是如果特徵碼是ASCII碼,可以直接修改大小寫,小寫字母換成大寫,大寫的換成小寫。
加殼
不用說了,用工具大家都會,加殼的原理是給原程序加上一段保護程序,有保護和加密功能,運行加殼後的文件是先運行殼再運行真實文件從而起到保護作用。我想提醒大家的是,再好的殼用的人多了,還是會被殺的,所以可以努力學好E文,自己到國外的網站找加殼工具,比較好。

修改加殼後的文件
加殼以後程序入口處會有一段特殊代碼,可以自己用OD打開不同加殼工具加過殼的文件, 可以發現不同的殼開頭那段代碼是不同的,也可以說成是殼的特徵代碼吧,對於常用的殼殺毒軟體可以脫掉殼再查殺,也就是所謂的穿殼技術,為了避免殺毒軟體認 出是加的哪種殼我們可以加雙殼,或者自己修改開頭那段代碼,從而讓殺毒看不出是什麼工具加的殼,這里我只講一種修改方法,可以參照去頭添加花指令,在空白 區域加入一段別的殼的特徵頭,然後JMP跳到原入口,這樣殺毒就會誤判加殼工具,從而達到免殺的效果,其實方法是多樣只要願意思考總能想出應對的方法。

還有一種修改殼的方法就是修改EP段的入口,用Peid查一下加過殼的木馬,可以發現EP段的地址,也就是區段入口,通過修改EP入口地址可以達到免殺的效果,利用的工具是reloc,具體使用方法自己去問google。

行為免殺
這種殺毒的代表是綠鷹PC萬能精靈。一般說來木馬在運行以後會復制到系統目錄下然後運行,原文件可能會自動刪除,現在的木馬一般是插入進程來訪問網路的,在進程里可以看到被插入的進程,設置開機啟動也是木馬必須做的可以寫入注冊表,加入服務,寫入驅動等等,這些便是木馬特有的行為。我們可以用注冊表監控,文件修改監控的工具比如木馬輔助查找器記錄修改的文件、注冊表,推測殺毒可能監控的是哪個行為從而對應修改行為來達到行為免殺。還有一個一般的方法,行為殺毒是不會查殺系統的啟動項的,我們可以把木馬的啟動項替換成非系統必須的開機自啟動項就可以成功免殺了。至於其他的方法,大家可以自己再研究。

至於網上流傳的入口加1,就是用PEditor將木馬入口地址+1,有時也是可以達到免殺的效果,好象是瑞星比較吃這個,還有個小竅門可以告訴大家,要讓 自己的免殺木馬盡量久的不被查到,最好選擇比較老的木馬來做,對新木馬,殺毒盯的緊會經常更新病毒庫,而老的呢……不用說了吧。

總結:
一般免殺步驟是先定義內存特徵碼,修改內存特徵碼,加花指令做文件免殺,如果還被某些殺毒查殺則定義文件特徵碼,修改特徵碼,接下來是行為免殺,然後加殼,再修改殼。內存免殺一般只要做瑞星的就可以了,其他的殺毒軟體沒有真正意義上的內存殺毒,比如卡巴斯基的內存掃描就是文件快速掃描,一般加入花指令(稍微學點匯編,折騰些垃圾代碼是很簡單的)以後就可以躲過金山,瑞星,江民的文件查殺,萬一有不過的就要定位特徵碼再修改,卡巴的文件查 殺是很牛的,加了殼也幾乎都能可以查出來,一般都要定位特徵碼再修改,對於諾頓這種喜歡把特徵碼定位在PE頭的只要用北斗之類工具加個殼,把PE頭改得一 塌糊塗,它就不認識了,如果還想把免殺做好點,可以把自己的服務和注冊表鍵值改成非系統必須的,要是你是不折不扣完美主義者,可以再修改一下加殼後的文件,把免殺進行到底!

熱點內容
linux下安裝jdk 發布:2025-01-15 06:03:05 瀏覽:544
伺服器拷數據到電腦 發布:2025-01-15 05:58:19 瀏覽:481
android的單例模式 發布:2025-01-15 05:50:55 瀏覽:927
aes256在線加密工具 發布:2025-01-15 05:36:25 瀏覽:222
朋友圈的緩存在哪裡 發布:2025-01-15 05:35:01 瀏覽:509
進入時間段的密碼是多少 發布:2025-01-15 05:11:07 瀏覽:384
java開發培訓那裡好 發布:2025-01-15 05:11:02 瀏覽:772
南京南京ftp 發布:2025-01-15 05:03:38 瀏覽:248
php用戶登錄狀態 發布:2025-01-15 05:03:34 瀏覽:259
c編程音樂 發布:2025-01-15 04:39:04 瀏覽:121