2017年11月21日 星期二

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

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

沙盒模組

沙盒模組應該各位都不陌生,大家都玩過虛擬機,那沙盒的定義就是虛擬機的意思。

把程式關進沙盒讓他執行。

市面上有名的VMware與VirtualBox,兩者都是能把作業系統關在內部讓他執行,本機電腦不受任何影響。

防毒的最後防線就是沙盒模組。

把逆向分析後的檔案,做最後一次的分析,丟入沙盒裡面執行,如果檔案企圖竄改作業系統的某些功能,或是收集個人資料,利用後門的連結,把資料往外傳送,那這時候防毒軟體就立刻執行殺毒。

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

沙盒模組開始執行之前,會調用作業系統所有的API接口,讓檔案能夠去執行

經過完全分析完成執行檔所有內容之後,當防毒判斷為無害檔案,即會放行檔案正常執行。

有些是可以無檔案來繞過沙盒,利用網址當參數來傳遞指令,再用指令下載一些惡意的檔案,這些檔案看起來都是無害的,但是這都是繞過沙盒的辦法。

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

無檔案的惡意程序已經能夠開始量化,更讓分析師頭大。要解決可能要花很長的時間。



沙盒模組寫起來很困難,但是理解這個原理非常容易。


下一篇會說明網路模組,很簡單。


請各位多加關注~~



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








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

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

逆向分析模組

此模組可能具備了兩種及各家公司的獨門分析多種模式。

因此這個模組不只兩種模式。

1.動態分析

各位皆知,人工分析使用的就是ollydbg 或是x64dbg以及其他像是immunity debugger
這都是動態分析軟體,需要人工操作。

2.靜態分析

以不干擾原執行檔為前提進行反組譯逆向分析,像是IDA pro這種軟體,也是需要人為判斷
這樣就不會因為誤觸F9而讓他執行。比較安全的分析方式。

兩大分析模式,同樣都有一個共通點。

這個共通點核心就是,亂碼轉16進位(機械碼),機械碼再轉組合語言。

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

動態分析

把檔案用Ollydbg開啟,OD會載入執行檔內部的所有資料

Ollydbg的使用者介面
左上角的大視窗組合語言區塊是主程序Module的區塊,使用一般的記事本開啟,就是不可讀的亂碼。
右上角的區塊,就是運算暫存器的區塊,這邊是負責搬運位址和數值與傳遞訊號的地方。
左下角的是,他能觀察到目前程序在運作裡面的所有資訊以及他的相關的dump資訊。
右下角的是堆疊,能在分析時候立刻看到他的資料位址與資料狀態,這區塊能夠與右上角相互觀察程序動向。有新的改變時候,右上角能夠看出全部的資料流動狀態。

當然,可以這麼說,左下角與右下角的區塊是互相吻合的。
只是右下角直接縮減龐大的16進位,並整合了資料dump資訊與組合語言暫存器資訊流動的目前狀態。

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

靜態分析

IDA靜態分析工具,舉世皆知,他也是運用相同方式去做處理,他的module觀察方式跟OD不太相同,當然這個工具功能也比OD來得更強大。
具備了圖形化的分析方式,也具備了高級還原程式碼的工具,但不可能真的還原回原始碼。

更多的靜態分析,請各位自行上網搜尋。

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

病毒分析師的工作

很多人都看過分析師的桌上有兩台到三台的桌上型電腦,他主要就是需要一邊觀察程式碼,一邊觀察所有資訊與對外網路的連線狀態。
再來就是觀察完病毒的反應後,開始進行反病毒的程式碼撰寫,這個過程,就是常常嘴上說的"一鍵修復"。
一般的分析師一天可以撰寫"大約100個左右"反病毒定義檔,所以一間防毒公司不只有少數幾個擔任分析師。因為外界的病毒太多太多了。

當然,要有一定程度的分析能力,才可以自行的去解決在遭受病毒侵害後的還原操作過程。

當然,做這行業的薪水肯定是非常高的。

再寫完之後,會把提取出來的特徵碼丟到伺服器進行客戶端更新。

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

******總而言之,逆向模組就是那間公司的分析師的技術精華。******

逆向模組困難的原因其實是在分析的正確和技術,不僅要快速,耗能也要極小,技術也要夠高端。


這個逆向技術不是每間公司都一樣,再次強調~  有好有壞,這是公司技術不同導致。



下一篇會繼續說明稍難的沙盒模組



請各位多加關注



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






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

防毒軟體整體架構與免殺繞過 (二)

掃描模組

偵測在電腦內部的所有槽數,進行讀取

各種各樣的檔案都會被掃描到,隱藏的檔案也一樣,包含捷徑檔

壓縮檔的掃描方式我認為滿有趣的。

掃描壓縮檔  前提-----------------------------------------
想當然各位都知道winrar與其他解壓縮軟體

一般的壓縮軟體可以把檔案解壓與加壓

防毒也不例外,但是他們公司有它們自己的作法

利用開源的解壓加壓技術去深入掃描,或是利用自己獨門的解壓技術去掃描。

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

壓縮檔的掃描法(與逆向分析相關)

一個經過壓縮的檔案被防毒讀入
防毒使用自家獨門技術把檔案像解壓軟體一樣,把檔案打開
即可發現內部的檔案,在把裡面的檔案完全掃描過一次

分析過之後,發現到的惡意檔案,立即從內部強制移除

有些防毒是連根拔起,就是整個壓縮檔刪除

有些是保留其他正常無害的檔案

那麼可以保留正常的檔案這個防毒軟體,大概的做法就是
該檔案在壓縮檔內都有一定的格式,把壓縮檔用自家的類似16進位編輯程序去開啟

那當防毒判定了內部的某處16進位為某個惡意檔案,就把這段的16進位刪除,再做一些壓縮檔的屬性修改,讓使用者看起來感覺在壓縮檔裡面惡意檔案被刪除了,事實就是如此

但是一些經過加密的壓縮檔,拿給防毒掃描。防毒因為沒有加密的鑰匙,所以無法進行掃描及後續的拆解

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

掃描模組可以被分成很多個同樣的程序,進行掃描
此模組不僅可以掃描槽,也可以掃描到記憶體和啟動區

每個電腦啟動都會經過BIOS調整以及載入開機必要的執行碼
這些都是防毒程式必要的掃瞄地方。

一般使用者可能體會到掃描程序的資源占用電腦1%~5%
不要小看%數,因為這樣會讓使用者感覺電腦變得緩慢,必須要把原始碼重寫,甚至優化。

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

原始碼的優化

如果會逆向分析的人,幾乎都知道堆疊是什麼。
變數運用的必須很少,避免佔用到堆疊,堆疊量一旦變大,相對的參數必須運用的很多,同時也必須考慮到是否會有緩衝溢出。假設存在緩衝溢出,那麼將會讓駭客有機會RCE(遠端執行任意指令)

定義檔在引入之後,需要開發者手動改寫,多餘的程式碼刪除,甚至改寫。這也就是自定義檔。

優化主要的就是精簡、精簡、再精簡。

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

掃描迴圈

迴圈不能寫死!!!

一旦寫了無窮迴圈,下場很慘!
不停的重複無止盡的跑,槽數因此當機。

迴圈的原本意義在於各個資料夾的探勘,寫死的話,會無限探勘,電腦資源隨之暴漲。

之後調用的API無法中斷,迴圈內的運算數字直線往上增加,最後緩衝溢出,電腦就崩潰了。

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

光是優化就是要看開發者的頭腦了。

這就要靠底層與組合語言的交互運作來執行。



掃描模組,主要的功能就是迴圈。

掃描模組要理解其實不難,幾個觀念下手大概就知道如何運作了。



下一篇會講解比較難的逆向分析結構


其他比較難的就是只有逆向分析模組與沙盒模組。


請各位多加關注。



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





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++"***




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




2017年10月29日 星期日

奉勸那些youtube一天到晚發布mega破解的教學者

Mega已經不能再用了!!!

我奉勸那些youtube一天到晚發布mega破解的教學者,請別再自以為是了,megadownloader請別再用了,那根本不是破解器!!!

我下載了超過2G多,就根本不能下載了,很久之前用了megadownloader,我發現那根本不是破解!  只是把下載點複製貼上的功能而已,根本達不到破解的效果!!!

用megadownloader無法繼續下載超過2G的檔案,請各位別放教學了!!!

2017年10月11日 星期三

老和尚訴說前世參與造月工程

老和尚前世參與造月工程



山中的夏令營,老和尚帶我去了一處深林。

他說他在那裏曾經修行了很長時間,日以繼夜的打坐修行,吃的幾乎都很少,把時間都用在思維佛法的妙處。

曾在一個史前年代轉生過,距今大約上億年,當時的文明,遠遠超過現代文明的發達程度。
許多現代人認為根本不可能的科技,在當時都已經實現了。

空中的飛船,上億年前,人類文明曾經是非常發達的。

那個時代世界上的大都市,也是遍布各式摩天建築。漂浮於空中的飛行物,不是飛機,而是像巨型郵輪。

一樣的龐大飛行船,一次可乘載上千個乘客,這種飛行船,也不局限在地球上飛行
可在九大行星的範圍內任意旅行,當時全部的機器,都採用一種非常高密度的能源,效率很高。

現今留下的古文明遺跡,以石造建築物、石制工具為主。

很多人因此以為,史前人類只會使用石器,而沒有能力使用電力或其他能源。

其實並非如此,造月工程,由於那個時期的科學技術,相當發達。

人們甚至開始構想,要製造一顆天體送上太空,照亮地球漆黑的夜晚,這個看似不可思議的工程構想,被提出後,得到了當時社會各界的支持。

於是人類全體動員,進行這個巨大的工程。而他在當時是一個工程師,參與建造月亮的建築工作。

首先人們在地球上,採集大量的金屬礦物,建構月球的基礎骨架,這個骨架,就像碳60分子的結構一樣,龐大而複雜。

地球上的人們,利用神奇的機械技術,讓月球的骨架騰空飛起,由大量的巨型飛船,拖曳前往太空中的軌道,龐大的基礎骨架進入軌道後,由工程人員進行後續的建造,在地球外的太空軌道上,進行月球的組裝工程,巨型鷹架就架設於月球外部,就像現在的建築工地一樣。

數量龐大的太空飛船,往返於地球與月球之間,每艘船都承載,或拖曳著大量的建築物資,內部構造先由月球核心做起,核心內部放置了各種機密齒輪、機械、動力設備等裝置。

核心以外到月球外殼之間,除了骨架以外,沒有放置太多東西,大致是空心的,最外層是以厚金屬板,組合而成的一個保護殼,厚度達數公里,工程人員,穿著貼身而輕便的太空裝,在鷹架上忙碌的工作著,小型太空飛艇,穿梭於月球「工地」之間。

經過了幾年的日夜不停的工作,人類終於完成了建造月球的工程,當時月球正面設計為拋光面,反射太陽的光芒,照亮地球的黑夜。

為了保持照明的高效率,將正面控制為永遠面向地球,月球完工之日,全球熱烈而盛大的慶祝,這個值得紀念的日子。

從此,黑夜不再一片漆黑,多了一輪明月的光輝照亮大地,而月亮多變的形狀,也為人類增添幾分賞月的樂趣,參與造月的人,成為當時人類最尊崇的一群人。

讓人稱頌了一段很長的時間,很可惜,雖然當時人類,完成了建造月球的偉大成就,但那一時期的人類文明,卻沒有逃過毀滅的命運。

人類在科技的發展中,放縱自己的慾望,使道德下滑,而月球的建造,及文明的高度發展,也使得物資缺乏及環境破壞。

最後,人類在變異中,遭到毀滅性的打擊,地球也遭到嚴重破壞。

最後再度回歸原始時代,重新開始。

造月的故事,隨著年代的流逝,靠著人們的口耳相傳。逐漸變成一個傳說故事。最後,成了一個神話故事。

更後來的人,已經幾乎沒有人能相信,懸在天空的月亮,就是他們自己的祖先建造的,地球上各民族的傳說很多。

現在的人們,往往把他們當作虛構的神話。然而這些傳說,往往都有其歷史的真實性。反映了人類,曾經經歷過的真實歷史。

可惜的是,目前教科書上對人類歷史的看法,與真實的地球歷史相差甚遠。

參考資料: https://www.youtube.com/watch?v=BvvcGZ0p_ww


2017年9月21日 星期四

[Java 9] 原始碼模組化

java從1.8.0_144,升級到9

(其他大神,請略過)

把原始碼都全部打包變成jmod

目的在於簡化愈來愈多的原始碼造成不必要的開發困擾,使得jdk變成模組化,這也簡化了rt.jar的大小。
這並不改變jdk結構。

這個版本也讓多線程與作業系統有更好更強大的溝通效能。

這是安裝完成後的目錄,使用者會發現跟1.8.0_144很不同。
畢竟都模組化了。


我花了一些時間在研究新的模組上,發現真的跟以前很不同。

以前的原始碼是沒有jmods這個資料夾的,現在新版卻出現了。

來比較一下兩者相異之處。
這是1.8版原始碼資料夾。


這是java資料夾底下的內容,裡面放著很多可被調用的java原始碼。


這是新的java原始碼資料夾,真的很多。
83個資料夾


如果你到安裝完成的資料夾,把jmods這個資料夾打開,你會發現裡面都是jmod檔案。
還不要急著直接點開,jmod檔案他是用壓縮檔去包裹他,只要在jmod上選擇以7-zip開啟,這樣各位就能順利的打開了。


我們一般初學者調用的原始碼,都是來自java.base這個資料夾。
把java.base打開看看。
發現他有java這個資料夾,依照工程師經驗,我們直接進入。


很輕鬆的發現他跟之前的原始碼有些是一樣的,當然有些也不見了。


這時候,我們就可以從新版的原始碼其他的資料夾去看看。
如果說,其他資料夾下面,只有javax,那麼這個資料夾就與之前的版本不同一處資料夾。
那麼這樣就要繼續找。

來看一下java.rmi這個資料夾。這個資料夾裡面有java資料夾,這樣代表著,他裡面的原始碼跟上個版本是相同的。

點開看一下,可以看出來,是一樣的。


這篇只是在介紹資料夾模組的內容跟上一版的內容比較,與其他程式碼無關係。


有著作權,請勿任意轉載。若要分享,請註明本篇來源。

Ollydbg 2.01 繁體中文版

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