杀毒软件原理进阶阶段
學習免殺,首先你得學會匯編把,基礎的指令要懂得一些,一般的指令修改必須會,一般的修改這里就不贅述了,接下來就是掌握一些常用的免殺技巧,這里總結一些?
??? 第一:我們學習免殺的方向:只是為了保護自己的黑軟的話!就不會學的那么累(沒必去學匯編編程)有時候簡單加下殼或者脫下殼就OK!如果是要挑戰世界的殺 毒軟件的話,畢竟每個PC用戶安裝的殺軟都不一樣!想抓雞拿服務器的朋友就要進修脫殼破解,高級匯編的內容了,這將決定你免殺技術的高低!?
??? 第二:免殺的環境:做免殺,逃不了測試這個木馬是不是修改成功!所以為了保護自己的系統,我建議學免殺要先學會使用虛擬機,很多人會說,為什么不用影子? 影子系統雖然也是可以保護的,暫用資源又少,但是有些反彈型木馬,我們運行后如果失敗(即使成功)都需要重啟來完成完全清除的工作!做過QQ盜號木馬跟黑 鷹遠控軟件免殺的朋友應該深有體會!?
??? 第三:殺軟的安裝設置:個人建議安裝卡巴,NOD32,小紅傘,瑞星,金山!(當然配置好的電腦可以再加上江民,麥咖啡)!硬盤大的朋友建議全利用虛擬機 安裝殺軟(方便以后重做系統,節省升級病毒庫的時間)殺軟的設置,可以說是很簡單的!每安裝完一個殺軟,我們都要先在殺軟設置里把監控跟自我保護的選項的 鉤去掉!然后升級病毒庫!升級完后再關閉服務跟啟動項(利用360安全衛士)這樣安裝其他的殺軟就不會起沖突了!這里注意下!瑞星升級后會自己更改自己的 服務為自動,所以瑞星建議最后裝,最后升級,再關閉它的服務!這里我想大家肯定是關心殺軟的序列號從哪來的吧!瑞星有體驗版,金山有37天試用 版,NOD32利用PPLOVE網絡電視有180天試用!卡巴等洋貨在百度上搜索均有可用的序列號!這個就是考驗大家的細心了!呵呵!卡巴不建議裝 6.0.7.0的,人家都在央視打廣告了,我們就裝2009把!(雖然卡巴的啟發比不上 NOD32的,但是它的主動可是免殺愛好者的“粉絲”)?
??? 殺軟的查殺特點:?
??? 卡巴:主動+高啟發掃描~~,效果相當厲害,卡巴的主動非常麻煩,SSDT也被封了,啟發式也極難通過,還是要取決于木馬本身的實力了,?
??? 瑞星:國內木馬的超級對手可以這么說!對國內的木馬定位的特征是洋貨的N倍(鴿子見證)主要查殺技術是內存查殺技術,但是對一些生僻的木馬,內存病毒庫里 竟然沒有,只要過了表面就可以過內存......主動主殺敏感字符串,不過2009的主動貌似改進了不少......廣告賣的倒不錯,但是只是針對流行木 馬!其他不常見木馬并沒有加大什么強度!?
??? NOD32:啟發掃描的頭領!主殺輸入表函數,針對MYCCL******做過調整!定位建議用 multiCCL這個來定位!不過這個大塊頭對生僻殼的偵殼能力不強!加些生僻殼把一些函數保護起來可以讓它無用武之地!(這類殼主要是加密型,不建議用壓縮型)?
金山:數據流查殺技術的代表!簡單來說跟瑞星內存查殺技術有點一樣!病毒庫升級,查殺病毒速度都是超級快!但是殺毒能力比較上面的幾款有點遜色!?
??? 360與金山清理專家:行為查殺的代表,金山清理專家比360查殺力度還大!但是監控能力......實在不想說!不過360的5.0版加了木馬云查殺,據說不是很好過(沒試過~~~)
??? 以上可以說是所有集合殺軟的特點:文件查殺,內存查殺,啟發查殺,數據流查殺!行為查殺!主動防御!每個殺軟都有自己的特點,一個人也不可能把全球殺軟都 安裝起來研究,但是以上4個殺軟跟一個輔助可以說全包括了病毒查殺特點!也不能說哪個不好,哪個很好!有些木馬這個殺軟殺不出來~~那個就可以殺出來!所 以對于現在網上有些朋友對個別殺毒軟件不重視,就會導致你所謂的“肉雞”插翅難飛!嘻嘻!
??? 接下來就說說技巧方面的?
??? 1.字符串上我們比如這個特征碼定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows \CurrentVersion \Run,遇到這個我想大家一定是修改大小寫吧,但是有時候修改大小寫還是被殺。這個我們可以怎么辦呢,我們可以移動位置,因為這個肯定是一個api函數 的參數,我們找到那個函數然后修改下調用地址就行了。所以有時候大家不能總用通用方法,要學會變通。?
??? 2.NOD32的疑問,前天有人來問我他說它定位NOD32,定位到了資源上,這個有一個可能是你的定位有錯誤。這個你可以通過multiccl把資源和 輸入表段保護起來,然后定位,看可以定位出其他的特征碼不能,至于MYCCL,一般的定位最好在代碼段開始定位,填充可以選擇FF,66什么的,或者反向 定位,定位的方法很多的,別人填充00,你就填充00么,現在的殺軟已經把myccl扒的一干二凈了,有反定位措施...?
?????? 3.花指令 花指令無非是一些干擾程序調試的一些手段,當然也可以作為用來迷惑殺毒軟件使殺毒軟件找不到我們的特征碼,從而達到免殺。為什么大家總是喜歡用網上的一些 什么花指令方法。其實我發現其實多調用一些子程序,多加一些跳轉,要比你們寫花指令要好的多。不過本人不推薦使用花指令免殺.?
????? 4.為什我服務端做了免殺,可是生成出來被殺。這個大家首先可以對比一下有什么不同的地方,這個我給大家一個思路,現在殺毒軟件就喜歡定位有標志型意義的 地方(通俗點講版權信息),大家在做的時候因為為了保護我們的木馬,所以就委屈下原作者,呵呵。版權信息給改了。還有一個就是比如說灰鴿子,現在殺軟會定 位到它的一些dll文件名上,你修改完dll然后找到調用dll文件的函數,然后修改下參數即可。。。。?
??? 高強度花指令--SEH
??????? SEH是WINDOWS系統中處理計算機異常行為的一種方式,這種方式的特點就是用入棧的方式把斷點保存起來,所以他的效率很高,往往能夠處理很多的異常狀態。在免殺中我們可以通過它給木馬加花,讓他“錯誤”地跳到入口點。
???? 奉上匯編代碼如下:
push 原入口點?? -OEP
mov eax,dword ptr fs:[0]
push eax
mov dword ptr fs:[0],esp
mov ebx,0
div ebx?
?????? 復制代碼
??? 這樣混淆的強度就很大了,其實還有很多這樣的方法,自己漫漫研究把。。
??? 小魚和Medusa的免殺技巧?
1. 遇到特征碼定位在jmp指令上面的 構造替換 push xxxxx ret。?
舉例: jmp xxxxx?
構造替換 push xxxxx?
ret?
2. 遇到特征碼定位在call指令上的。?
舉例:?
call xxxxx?
構造替換: push @f?
jmp xxxxx?
@@:?
;@@的標號表示的是你jmp xxxx指令后面的內存地址。 @f也就是引用@@ 的標號,所以此時@f這里填寫的就是jmp xxxxx指令后面的內存地址。。?
3. 遇到特征碼定位在ret上?
舉例: ret?
構造替換:?
jmp dword ptr [esp]?
4. 遇到特征碼定位在test eax, eax je xxxx or eax, eax, je xxxxx cmp eax, 0 jexxxxxx?
舉例: test eax, eax?
je xxxxxx?
構造替換: xchg eax, ecx?
jecxz xxxxx?
5. 遇到特征碼定位在 push [xxxxxx]上的。?
舉例:push [xxxxx]?
構造:?
在其之前通過 xchg [xxxxxx], ebx?
然后用寄存器傳參: push ebx?
最后在下面在通過xchg [xxxxxx], ebx 交換回來。?
6. 數據段動態恢復和巧用算法加密結合起來。?
前提是對匯編大家一定要有所了解,例如一些人說金山殺的是配置信息上,你完全可以將其這些配置信息所處的地址的數據進行一層加密。或者你可以將其這些偏移所處的數據 通過xchg 交換。?
dll注意下 要進行重定位?
call $+5 ;機器碼是 E8 00000000 00000000是相對地址?
@@: pop ebx?
sub ebx, @b?
下面你就可以通過[ebx+你的偏移]來進行變址尋址了。。?
test eax,eax
je xxxxxx
將test eax,eax nop掉,改je為jb
或將兩句nop掉
test eax,eax
jnz xxxxxx
將兩句nop掉
mov ebx,xxxxxx
mov ebp,eax
雙mov可以上下調換
add???? edx, dword ptr [ebp+6E]
imul esi, dword ptr [edi+ebx*2+44], 614D6C6C
imul ebp, dword ptr [esi], 0
00????????????? 00
00????????????? 00
00????????????? 00
考慮下移
and eax,80000007
改為:
or eax,7FFFFFF9
用C32asm改,80000007為-80000007,C32asm會自動變為80000007的負數7FFFFFF9
je?? 等于則跳?? 改成?? jle?? 也是等于則跳
這是瑞星的新把戲
00436008?? 09C0 xor EAX,EAX
改為
00436008?? 09C0 OR EAX,EAX
004A19BD?? 6A 00 PUSH 0
改為
004A19BD?? 6A 01 PUSH 1
0049D775?? /77 07 JA SHORT 021.0049D77E
改為
0049D775?? /7F 07 JG SHORT 021.0049D77E
特征碼定位出來用OD載入卻顯示無此地址的解決方法
dll:
也許你經常遇到特征碼定位出來用OD載入卻顯示無此地址.
我們用灰鴿子VIP2006的GETKEY.DLL做演示.
假若特征碼為
[特征] 000009DA_00000002 004015DA?? (OC導出的內存地址)
使用OC導出的地址到OD中卻不能使用.這時用lordpe打開GETKEY.dll
00013000
00400000 上下相加得00413000
OD載入入口為00883000 > 55????????????? PUSH EBP
把40換成87就是真正的特征碼.008715DA
Dll實例(黑洞1.97 瑞星dll特征):
OK=1
CharactorTotal=3
Codz1=H_0000354C_0092414C
Codz2=H_0001A4B4_0093B0B4
Codz3=H_0003C958_0095D558
先用lord_PE打開,再用OD打開
文件入口:00042948???????
?????????????? > -------> 00442948
鏡像:00400000??????????????????????
?????????????????????????????????????? >----------->相減?? 00520000
內存入口?????????????????? 00962948
零區無法定位可執行文件數據的問題
1.c32asm來解決,靜態反匯編改特征
2.加一0區段,跨區段jmp跳,然后再新區段保存"所有修改",再回到原特征碼處jmp,保存
免殺關鍵是技巧,關鍵你對這些匯編指令掌握的程度,以及你對匯編程序的熟練度。。?
接下來再說一下NOD32的高啟?
《一個釘子和一個國家滅亡的故事》大家都知道
如果有那一個釘子,不丟那個馬掌,不折那匹戰馬,不傷那位將軍…………?
有太多不確定了,只要我們破壞了其中任何一個環節啟發殺毒就會全線潰敗。?
NOD32通過PE結構尋找特征代碼 以導入表函數的修改為例 (這個簡單,其實還有更復雜的上次那個木馬就是12處關聯,但是12處關聯破壞一個就免殺了)?
首先他會從PE MZ那里開始計算PE HARD的位置 在從PE HARD處尋找數據段 計算數據段位置尋找指針的提示位置,然后通過指針的提示位置找到指針,通過指針找到導入表函數。?
啟發殺毒理解比較困難但是修改還是很簡單的,可以說比普通的特征碼更容易。我們只要破壞他以上分析的任何一個環節他就會全線潰敗。?
以前的pcshare有一個超簡單過NOD32的方法,那就是將子系統設置為未知,就直接過NOD32的高啟發,因為NOD32默認的對未知PE文件不予檢測報毒,而恰巧,我們的pcshare通過這樣更改之后仍然可以運行,達到了免殺目的,就是這么簡單?
其實卡巴為我們提供了更多修改的機會?
因為他的特征是關聯的,只要破壞他的關聯就行了?
就好像?
1+2+3+4+5+6+7+8+9=45一樣?
特征碼是45.當然會有很多選擇我們可以改"1"也可以改“2”還可以改“3”……?
改掉一個他下面的關聯就被破壞了,也就免殺了,?
解決NOD32最簡單的兩個方法
1.把文件子系統設未未知
2.修改OriginalFirstThunk 日期時間標志 ForwarderThunk 以前都是00000000 把它改成FFFFFFFF 或者別的,就這樣就可以過了輸入表查殺雖然之后lordpe提示“錯誤的指針”,但是功能,上線都是沒有損壞的
至于原理,我上面說的很清楚了,呵呵
接下來說下基因啟發?
因 啟發是通過比對文件當中的關鍵代碼,來查殺新病毒以及變種,這種方式在現階段的優勢比較明顯,查殺率高,占用內存少,但從缺點來看,這種啟發技術在現階段 已經暴露出來了一個很嚴重的問題就是誤報過于嚴重,在國外的誤報測試當中,使用這項技術的殺軟普遍誤報十分厲害,像蜘蛛,紅傘,飛塔等等。而從長遠來看, 這種技術隨著時間的增長,病毒的種類越來越多,必定造成基因庫的臃腫,隨之造成的結果就是殺軟的運行效率降低,占用資源量的提升,甚至出現不同基因代碼間 的沖突,所以這項技術雖然在現階段被看好,而且在技術上也沒什么難度。?
這個是基因啟發啟發的定義,但是NOD32這么多特征完全來自廣譜查殺jack的文章曾說過: 引用:例如,如果一段程序以如下序列開始:MOV AH ,5/INT,13h,即調用格式化盤操作的BIOS指令功能,?
那么這段程序就高度可疑值得引起警覺,尤其是假如這段指令之前不存在取得命令行關于執行的參數選項,又沒有要求?
用戶交互性輸入繼續進行的操作指令時,就可以有把握地認為這是一個病毒或惡意破壞的程序。?
例子:一個免殺卡巴的木馬加一個被殺的花卡巴會提示type win32病毒 和感染pe的病毒一樣?
卡 巴會確定他的入口點,一般程序的入口點一般不會在程序的最后一個PE節里。如果OEP在最后一個PE節里就值得卡巴懷疑。所以有的“牛人”在2007年初 提出了OEP虛擬化…………但是我不懂編程但是我們可以修改PE結構讓入口不在最后一個PE節里,比如在木馬修改(非PE感染形)用跳轉法移動頭部某些代 碼,在頭部空出廣大區域加花?;蛘呒油昊?#xff08;感染以后)在加一個空文件節。(這個適用與病毒編程)?
寫著寫著就有點跑題……………………
轉載于:https://www.cnblogs.com/microzone/p/3239303.html
總結
以上是生活随笔為你收集整理的杀毒软件原理进阶阶段的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 外地车在南京限行规定?
- 下一篇: 事故车拉到停车场多少钱一天