防毒軟體整體架構分析與免殺繞過 (一)
各位都知道有防毒軟體這種東西
有些人有安裝 有些人沒有
有些人認為防毒是灌心安的...
這些都看在我眼裡
為何會出現防毒???有沒有人想過?
思考更深點的人 會說 到底有沒有電腦病毒???
我在大概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進位變成特徵碼,最後再寫入更新伺服器,把最新版本釋出
分析出惡意程序,抓到惡意組合語言功能,該功能轉16進位變成特徵碼,最後再寫入更新伺服器,把最新版本釋出
然後各位的防毒軟體接收到有更新檔,即可開始更新
==============================================================
防毒的主程式檔案每間公司都不同
1.掃描功能模組
2.逆向分析模組
3.沙盒模組
4.網路模組
5.設定模組
#####以上這些模組都是各家防毒公司大致上都有的東西 但內容都完全不同!!!
***如果要學會逆向分析,請先學會"組合語言"和"機械碼"以及"C\C++"***
下一篇會講解其他不同的功能
沒有留言:
張貼留言