久艹视频免费看,亚洲成av人综合在线观看,51久久夜色精品国产水果派解说,gogo全球大胆高清人体444

知識學(xué)堂
  • ·聯(lián)系電話:+86.023-75585550
  • ·聯(lián)系傳真:+86.023-75585550
  • ·24小時(shí)手機(jī):13896886023
  • ·QQ 咨 詢:361652718 513960520
當(dāng)前位置 > 首頁 > 知識學(xué)堂 > 程序相關(guān)知識
病毒逆向分析之我見
更新時(shí)間:2011-11-21 | 發(fā)布人:本站 | 點(diǎn)擊率:826

這兩天逛了幾個(gè)國內(nèi)知名的反病毒的論壇或是版塊,不知道是各位同行沒有興趣討論還是為什么。
病毒分析報(bào)告看到了不少,可是難道我們真正需要的只是一個(gè)答案?一份報(bào)告嗎?或許我們更需要的是如何提高自身的分析能力。我們都想有更高的收入,但對于一個(gè)公司來說,付出更高的回報(bào)也許不是問題,前提是員工能創(chuàng)造更大的價(jià)值,怎樣才能讓自己的逆向能力合法的轉(zhuǎn)化為更高的回報(bào)呢?也許這個(gè)帖子能有些幫助

先聲明一下,都是些個(gè)人看法,歡迎有興趣的朋友討論,權(quán)當(dāng)拋磚引玉了

通常情況下,病毒分析需求可以歸為以下3類:

1. 練手
2. 快速響應(yīng)
3. 深度分析

針對不同的緣由,我們分析的入手點(diǎn)及側(cè)重點(diǎn)又會有所不同

先從練手開始。為什么要練手?純愛好的不在此文討論范圍呢。如果是工作需要,或是為將來的工作做準(zhǔn)備,第一個(gè)該考慮的問題是“選材”。
不是每個(gè)樣本都適合用來練手的,如果要我來推薦,我會選以下幾種樣本。

下載器類的木馬(Downloader),原因很簡單,普及。這類型的木馬會在日常工作重復(fù)出現(xiàn),雖然大多數(shù)情況下都不需要做完整的白盒分析,但這會是一個(gè)好的開始。
機(jī)器人類的后臺木馬(Bot),這類型的木馬通常都是受利益驅(qū)動(dòng)的,會有越來越多的專業(yè)開發(fā)者加入此類木馬的開發(fā),所以有可能是最復(fù)雜也是最不能回避的一類威脅。
信息收集類的木馬(Infostealer),這類型的木馬同樣可能是受利益驅(qū)動(dòng)的,但相對而言,前者可能造成的后續(xù)危害更大,不過此類威脅也不能忽視,例如盜竊銀行網(wǎng)游帳號的,或自動(dòng)轉(zhuǎn)賬等等。
網(wǎng)絡(luò)蠕蟲(Worm),worm可能有很多種傳播方式,郵件,im, p2p,文件共享,usb等等,單純從練手的角度考慮,每種類型的最好都接觸一次。
文件感染型病毒(File infector virus),同上,病毒感染和傳播也可能有多種途徑,但是。。。。個(gè)人以為最多拿一個(gè)樣本熟悉一下就夠了。為什么?因?yàn)橄∩伲斜匾獮椴坏?%的潛在問題花費(fèi)大量時(shí)間去準(zhǔn)備嗎?個(gè)人認(rèn)為是不值得的,做好其他99%的工作,剩下那1%完全可以在工作中積累和彌補(bǔ)
還有一類非常重要,但至少在練手初期不推薦的木馬,rootkit。。。沒必要在剛開始的時(shí)候折騰自己,至于對于其他諸如MBR,BIOS,各種算法等等的作為愛好研究一下還好,但如果浪費(fèi)很多精力用來練手。。。不劃算

個(gè)人以為接下來該考慮的問題是“怎么練”。
對于以工作為目的的病毒分析而言,最重要的是什么?答案很簡單,快
你需要快速的識別提交的樣本是否是病毒,是哪一類病毒,應(yīng)該做什么類型的檢測或是修復(fù)等等
所以對于“怎么練”這個(gè)問題,要做的第一件事是快速識別,而對于快速識別來說,沒有什么比在虛擬機(jī)或是專用的病毒測試機(jī)器上運(yùn)行它更快了,當(dāng)然運(yùn)行+監(jiān)視結(jié)果不是個(gè)100%準(zhǔn)確的辦法,可能有的威脅需要條件觸發(fā)等等。魚和熊掌不可得兼,重要的是在最短的時(shí)間內(nèi)盡可能多的作出響應(yīng)。除此之外也還有一些可以考慮的手段,例如觀察字符串,調(diào)用的API等等?焖僮R別雖然看起來并不是什么技術(shù)含量很高的步驟,但必不可少。

接下來這步不是這里能多做討論的,怎么加,加什么類型的檢測與修復(fù)代碼,這一步不同公司有不同的引擎,有針對有選擇的練習(xí)可以事半功倍

回到大多數(shù)朋友口中的逆向或者說白盒分析來,怎么鍛煉出色的逆向病毒能力呢?

除了毅力+細(xì)心之外,我想提幾個(gè)需要注意的問題。

為什么要逆向病毒。逆向病毒和逆向其他類型的程序完全不同,你需要的是熟悉了解病毒的各種機(jī)制,然后有針對性的做修復(fù)或是給客戶提供建議如何預(yù)防。
這里首先要提出來的是“殼的問題”。
熟悉越多的殼,對你的工作會越有幫助,但如果哪位朋友為了分析病毒去學(xué)習(xí)脫殼,那就有些南轅北轍了。為什么?因?yàn)槲覀儾恍枰粋(gè)脫完殼后還可以運(yùn)行的病毒,如果能脫殼當(dāng)然好,但即便不能,我們也不是不能分析了。
1. 運(yùn)行 2.選擇合適的斷點(diǎn) 3.掛起可能存在的反調(diào)試監(jiān)控線程 4. 然后掛上去調(diào)試,或是把運(yùn)行的程序從內(nèi)存中dump出來靜態(tài)分析等等,方法可能有很多,最重要的是怎樣快,就怎樣好。另一方面,幾乎所有的高危威脅,都不會只用公開的殼,所以過于在意怎么脫殼不見得會有多少幫助

在殼之后,我想問的是“靜態(tài)”還是“動(dòng)態(tài)”?這不是一個(gè)有100%答案的問題,具體問題具體分析,但原則上來說,能靜態(tài)搞定的,沒必要?jiǎng)討B(tài)調(diào)試。靜態(tài)不容易理解的,再試著調(diào)試。

接下來的問題是一些新入行朋友常糾結(jié)的“F7的問題”。步入Step into是必需的,但看到call就Step into絕對不是個(gè)好習(xí)慣。一個(gè)出色的逆向工程師最與眾不同的是會選擇什么時(shí)候F8(Step over)什么時(shí)候F9(Run),以及在需要的時(shí)候Alt+F7(load script),有時(shí)候某個(gè)函數(shù)看起來很復(fù)雜,步入分析可能要很久,但如果學(xué)會猜測+驗(yàn)證,也許一個(gè)簡單的F8就搞定了。我們不需要知道每個(gè)函數(shù)是怎么實(shí)現(xiàn)的,我們只需要知道病毒想干什么,會干什么。這個(gè)猜測不是一天兩天能練出來的,但如果你試著堅(jiān)持下去,慢慢的會感受到它的妙處

除此之外,不要過度依賴于某個(gè)工具或是插件,常見的工具病毒作者也知道,如果有針對的做了處理,部分過度依賴工具的朋友沒準(zhǔn)就被忽悠進(jìn)去了

最后再聊兩句深度分析。深度分析通常會消耗掉非常可觀的時(shí)間,如果不是客戶需求,或是某一類非;钴S的威脅,不值得。深度分析也并不僅僅包括逆向,甚至可能會包含地下網(wǎng)絡(luò)的追蹤與調(diào)查,域名與服務(wù)器的分析,等等,有技術(shù)相關(guān)的,也有不相關(guān)的。本文不討論其他內(nèi)容,對于完整的逆向分析而言,除了上面提到過的之外,還有以下幾點(diǎn)建議:

1. 在條件允許的情況下,不妨找一些同一家族的早期變種用于參考,這些早期變種或許可以幫助你更好的理解正在分析的新變種。例如Spyeye, 近期版本Spyeye不再直接使用字符串比較,而是不可逆的校驗(yàn)碼,換句話說,如果沒有原始字符串,要理解起來還真會浪費(fèi)一些時(shí)間
2. 不是每個(gè)病毒都可以完美脫殼后再分析的。例如Zeus,Zeus解密使用到的一個(gè)密鑰是基于原始文件第三節(jié)的虛擬地址計(jì)算出來的,無論多完美的脫殼,這個(gè)值肯定會變。
3. 對于復(fù)雜的惡意代碼,如果靜態(tài)分析或完整的動(dòng)態(tài)調(diào)試都不太容易的話,試著Ctrl+N單調(diào)某一個(gè)函數(shù)未嘗不是個(gè)辦法。
4. 有時(shí)間的話,用常見的編譯器(例如VC,Delphi,VB等)編譯一些程序逆來玩,這樣可以熟悉一些常見的編譯器函數(shù),例如strlen。
5. 有時(shí)間的話,熟悉熟悉各類加密解密,壓縮算法, 撞上的時(shí)候會省不少時(shí)間。
6. 善用google和baidu,參考別人的分析報(bào)告并不是什么壞事,但不要依賴,最后的報(bào)告必須是基于自己的分析。
7. Olly確實(shí)比其他調(diào)試器強(qiáng)大,但是如果你的IDA能搞定呢?別忘了IDA隨時(shí)可以添加備注,一個(gè)好的IDB對于以后的工作或許也有幫助,所以在允許的時(shí)候,我更推薦IDA

就先到這里吧,希望對各位熱愛反病毒的朋友能有所幫助,也歡迎大家討論或提出更多的問題和建議,:)