2017年11月20日 星期一

防毒軟體整體架構分析與免殺繞過 (一)

防毒軟體整體架構分析與免殺繞過 (一)


各位都知道有防毒軟體這種東西
有些人有安裝   有些人沒有

有些人認為防毒是灌心安的...
這些都看在我眼裡

為何會出現防毒???有沒有人想過?
思考更深點的人  會說  到底有沒有電腦病毒???

我在大概10幾來歲的時候,就已經思考很久了
***不過    我的理解可能"不完全正確"  也"不完全通透運作"
但這些思考路線都是我的經驗***

我可以說明我的經驗

-------------------------------------------------------------------------------------------------------

電腦病毒的東西  一般wikipedia都能查到相關字詞(廢話)


可是電腦病毒真的是病毒嗎?

我的經驗告訴我:   不是

那防毒的名詞豈不就自打臉?

等等!  還別這麼快~

所謂的電腦病毒   其實只是個由人類發明的程序
而這個程序是經過不斷的 "設計" "設計"  "再設計"

電腦不像人類一樣,經過風寒而感冒。
所以電腦本身沒有病毒,但可以經過一些設計過的程序導致電腦被破壞。

所以  電腦病毒其實根本不存在~~~
只是個小程序讓電腦崩潰而已。



小程序如何誕生?  這就會牽扯到一些windows裡面的一些api函式庫和定義檔。

學過c\c++的人都知道,撰寫程式碼,都會有引入標頭檔。例: windows.h.........之類的


正因為如此,一些病毒可能是先寫好自定義檔,裡面包含很多的不同的元素,api那些
struct{},裡面定義了一大堆,方便之後的函式調用

尤其是hook,可以調派一堆資源
編譯前有些特別的病毒會把原始碼加殼,甚至打散原始碼 讓病毒分析師混淆不利分析師做逆向分析

有些甚至改變編譯系統讓分析師更有挑戰性


編譯後仍然可以加殼然後借用幾個社交方式達成入侵電腦展開破壞行為


許多的病毒都有後門   為何?    當你社交範圍變廣泛之後,攻擊範圍變大,社交可能不是一兩天就能應付得來,所以這時候,就有受害端與駭客端的非正常連線

在程序內寫入後門,把程序往受害端傳去,潛伏在受害者電腦內   進行資料竊取  並且把資料回傳的駭客端
有些是有條件的發作,當然,病毒作者會考慮很多不同因素,寫入不同的惡意功能

時間到,就展開破壞,使用者甚至觸發了一些功能,讓惡意程序默默的執行。

有些則是 把文件一個一個慢慢複製、隱藏、複製、隱藏,重複著這樣的動作。
,使用者可能會感覺到電腦變慢   也不知道是什麼原因,就這樣慢慢的吃掉了運作資源,電腦就這樣當機...
像這樣的程序   也就是我們所知的蠕蟲~~~


------------------------------------------------------------------------------------------------------

防毒架構

各位所知道的就是會有掃描功能,每個防毒都是如此

流程就是

執行掃描,分辨是否惡意程序,然後殺掉

我們仔細分析一下,防毒的運作

首先是掃描檔案,把檔案全部拆解,一般的可執行檔案可以用7z或是rar打開

裡面會有一些檔案    rdata   text   data   這些,不過這都是 "不經過" 加殼的

經過加殼的,你可以打開來看,裡面會有類似   UPX0   UPX1的東西

想辦法拆解,我就不多說了,自己上網爬文都有拆解教學

用OD進行動態分析,IDA靜態分析

======================================

可執行檔內都是亂碼,這些亂碼經過ASCII或其他編碼轉換成16進位

這些16進位的英文和數字,就是CPU的執行指令,換句話說,16進位就是機械碼。

我們說,CPU只能看懂0與1沒錯,多種不同的0與1,可以變化成多種不同的功能
也就是CPU指令

我們就把這些複雜的功能,轉換成所知的組合語言程式碼,每個CPU指令都分配了各種各樣以及多彩多姿的組合語言,方便人類閱讀

再來,這些底層指令會跟編譯器相關,也能夠看到他會對應到那些API資源


防毒的工作病毒分析師的工作很相近

=============================================================
核心"工作之一"---特徵碼


防毒工作   即是利用上述所說的: 亂碼轉成16進位,這個16進位就是機械碼,機械碼變成CPU指令,再分析出組合語言。

在得知了惡意功能的組合語言後,把惡意的組合語言轉回去,變成16進位(機械碼),這個16進位(機械碼)就是特徵碼 那麼開始與特徵庫進行比對,比對到相戶符合,立刻判斷為病毒,殺掉!!!

*****附註: 這個特徵碼"不是"完全統一的!!!   每間公司都不同!!!  都各自有各自的定義形式!!!!


=============================================================
病毒分析師的工作也都是如此

可執行檔,進行逆向分析,亂碼轉16進位(機械碼)CPU指令,再轉換成組合語言
分析出惡意程序,抓到惡意組合語言功能,該功能轉16進位變成特徵碼,最後再寫入更新伺服器,把最新版本釋出


然後各位的防毒軟體接收到有更新檔,即可開始更新

==============================================================

防毒的主程式檔案每間公司都不同

1.掃描功能模組

2.逆向分析模組

3.沙盒模組

4.網路模組

5.設定模組


#####以上這些模組都是各家防毒公司大致上都有的東西   但內容都完全不同!!!



***如果要學會逆向分析,請先學會"組合語言"和"機械碼"以及"C\C++"***




下一篇會講解其他不同的功能




沒有留言:

張貼留言

Ollydbg 2.01 繁體中文版

Ollydbg 2.01 繁體中文版 Ollydbg 2.01 繁體中文版下載: Mega:   https://mega.nz/#!I2Qy1aQD!-T5zO3PaANjBHU73I4NlkY8SHMxRptbBV8TpmeFt1fo GD: h...