免殺學習-基礎學習
女孩可以在社會上遇到比在學校更優秀的男生,而男生在社會上或許再也遇不到比學校裡更優秀的女生了。。。
---- 網易雲熱評
一、名詞解釋
單從漢語“免殺”的字面意思來理解,可以將其看為一種能使病毒木馬避免被防毒軟體查殺的技術。但是不得不客觀地說,免殺技術的涉獵面非常廣,您可以由此輕鬆轉型為反彙編、逆向工程甚至系統漏洞的發掘等其他頂級黑客技術,由此可見免殺並不簡單。免殺,也就是反病毒(AntiVirus)與反間諜(AntiSpyware)的對立面,英文為Anti-AntiVirus(簡寫VirusAV),逐字翻譯為“反-反病毒”,翻譯為“反防毒技術”。
二、shellcode
用於執行某個動作的機器碼。機器碼:計算機直接使用的程式碼,是能夠直接執行計算機執行某個工作的機器指令碼
三、技術分類
1.分離免殺:使用載入器來載入shellcode。
2.混淆免殺:指在有病毒、木馬或shellcode原始碼的前提下,通過修改原始碼進行免殺。
四、掃描技術
1、掃描壓縮包技術:即是對壓縮包案和封裝檔案作分析檢查的技術。
2、程式竄改防護:即是避免惡意程式藉由刪除防毒偵測程式而大肆破壞電腦。
3、修復技術:即是對惡意程式所損壞的檔案進行還原
4、急救盤防毒:利用空白U盤製作急救啟動盤,來檢測電腦病毒。
5、智慧掃描:掃描最常用的磁碟,系統關鍵位置,耗時較短。
6、全盤掃描:掃描電腦全部磁碟,耗時較長。
7、勒索軟體防護:保護電腦中的檔案不被黑客惡意加密。
8、開機掃描:當電腦開機時自動進行掃描,可以掃描壓縮文件和可能不需要的程式
五、監控技術
1、記憶體監控:當發現記憶體中存在病毒的時候,就會主動報警;監控所有程式;監控讀取到記憶體中的檔案;監控讀取到記憶體的網路資料。
2、檔案監控:當發現寫到磁碟上的檔案中存在病毒,或者是被病毒感染,就會主動報警。
3、郵件監控:當發現電子郵件的附件存在病毒時進行攔截。
4、網頁防護:阻止網路攻擊和不安全下載。
5、行為防護:提醒使用者可疑的應用程式行為。
六、特徵碼掃描
機制:將掃描資訊與病毒資料庫(即所謂的“病毒特徵庫”)進行對照,如果資訊與其中的任何一個病毒特徵符合,防毒軟體就會判斷此檔案被病毒感染。防毒軟體在進行查殺的時候,會挑選檔案內部的一段或者幾段程式碼來作為他識別病毒的方式,這種程式碼就叫做病毒的特徵碼;在病毒樣本中,抽取特徵程式碼;抽取的程式碼比較特殊,不大可能與普通正常程式程式碼吻合;抽取的程式碼要有適當長度,一方面維持特徵程式碼的唯一性,另一方面保證病毒掃描時候不要有太大的空間與時間的開銷。
七、特徵碼類別:
1.檔案特徵碼:對付病毒在檔案中的存在方式:單一檔案特徵碼、複合檔案特徵碼(通過多處特徵進行判斷);
2.記憶體特徵碼:對付病毒在記憶體中的存在方式:單一記憶體特徵碼、複合記憶體特徵碼
優點:速度快,配備高效能的掃描引擎;準確率相對比較高,誤殺操作相對較少;很少需要使用者參與。
缺點:採用病毒特徵程式碼法的檢測工具,面對不斷出現的新病毒,必須不斷更新病毒庫的版本,否則檢測工具便會老化,逐漸失去實用價值;病毒特徵程式碼法對從未見過的新病毒,無法知道其特徵程式碼,因而無法去檢測新病毒;病毒特徵碼如果沒有經過充分的檢驗,可能會出現誤報,資料誤刪,系統破壞,給使用者帶來麻煩。
八、檔案校驗和法
對檔案進行掃描後,可以將正常檔案的內容,計算其校驗和,將該校驗和寫入檔案中或寫入別的檔案中儲存;在檔案使用過程中,定期地或每次使用檔案前,檢查檔案現在內容算出的校驗和與原來儲存的校驗和是否一致,因而可以發現檔案是否感染病毒。
九、程式行為監測法(沙盒模式)
機制:通過對病毒多年的觀察、研究,有一些行為是病毒的共同行為,而且比較特殊,在正常程式中,這些行為比較罕見。當程式執行時,監視其程式的各種行為,如果發現了病毒行為,立即報警。
優缺點:
1.優點:可發現未知病毒、可相當準確地預報未知的多數病毒;
2.缺點:可能誤報警、不能識別病毒名稱、有一定實現難度、需要更多的使用者參與判斷;
十、主動防禦技術
主動防禦並不需要病毒特徵碼支援,只要防毒軟體能分析並掃描到目標程式的行為,並根據預先設定的規則,判定是否應該進行清除操作 主動防禦本來想領先於病毒,讓防毒軟體自己變成安全工程師來分析病毒,從而達到以不變應萬變的境界。但是,計算機的智慧總是在一系列的規則下誕生,而普通使用者的技術水平達不到專業分析病毒的水平,兩者之間的博弈將主動防禦推上一個尷尬境地。
十一、機器學習識別技術
機器學習識別技術既可以做靜態樣本的二進位制分析,又可以運用在沙箱動態行為分析當中,是為內容/行為+演算法模式。伴隨著深度學習的急速發展,各家廠商也開始嘗試運用深度學習技術來識別病毒特徵,如瀚思科技的基於深度學習的二進位制惡意樣本檢測
十二、常見的免殺技術
1.修改特徵碼
免殺的最基本思想就是破壞特徵,這個特徵有可能是特徵碼,有可能是行為特徵,只要破壞了病毒與木馬所固有的特徵,並保證其原有功能沒有改變,一次免殺就能完成了。
特徵碼:能識別一個程式是一個病毒的一段不大於64位元組的特徵串就目前的反病毒技術來講,更改特徵碼從而達到免殺的效果事
實上包含著兩種方式。
一種是改特徵碼,這也是免殺的最初方法。
例如一個檔案在某一個地址內有“灰鴿子上線成功!”這麼一句話,表明它就是木馬,只要將相應地址內的那句話改成別的就可以了,如果是無關痛癢的,直接將其刪掉也未嘗不可。
第二種是針對目前推出的校驗和查殺技術提出的免殺思想,它的原理雖然仍是特徵碼,但是已經脫離純粹意義上特徵碼的概念,不過萬變不離其宗。
其實校驗和也是根據病毒檔案中與眾不同的區塊計算出來的,如果一個檔案某個特定區域的校驗和符合病毒庫中的特徵,那麼反病毒軟體就會報警。所以如果想阻止反病毒軟體報警,只要對病毒的特定區域進行一定的更改,就會使這一區域的校驗和改變,從而達到欺騙反病毒軟體的目的。
修改特徵碼最重要的是定位特徵碼,但是定位了特徵碼修改後並不代表程式就能正常執行,費時費力,由於各個殺軟廠商由於各個殺軟廠商的特徵庫不同,所以一般也只能對一類的殺軟起效果。雖然效果不好,但有時候在沒有原始碼的情況下可以一用。
2.花指令免殺
花指令其實就是一段毫無意義的指令,也可以稱之為垃圾指令。花指令是否存在對程式的執行結果沒有影響,所以它存在的唯一目的就是阻止反彙編程式,或對反彙編設定障礙。
大多數反病毒軟體是靠特徵碼來判斷檔案是否有毒的,而為了提高精度,現在的特徵碼都是在一定偏移量限制之內的,否則會對反病毒軟體的效率產生嚴重的影響!而在黑客們為一個程式新增一段花指令之後,程式的部分偏移會受到影響,如果反病毒軟體不能識別這段花指令,那麼它檢測特徵碼的偏移量會整體位移一段位置,自然也就無法正常檢測木馬了。
3.加殼免殺
說起軟體加殼,簡單地說,軟體加殼其實也可以稱為軟體加密(或軟體壓縮),只是加密(或壓縮)的方式與目的不一樣罷了。殼就是軟體所增加的保護,並不會破壞裡面的程式結構,當我們執行這個加殼的程式時,系統首先會執行程式裡的殼,然後由殼將加密的程式逐步還原到記憶體中,最後執行程式。
當我們執行這個加殼的程式時,系統首先會執行程式的“殼”,然後由殼將加密的程式逐步還原到記憶體中,最後執行程式。這樣一來,在我們看來,似乎加殼之後的程式並沒有什麼變化,然而它卻達到了加密的目的,這就是殼的作用。
加殼雖然對於特徵碼繞過有非常好的效果,加密殼基本上可以把特徵碼全部掩蓋,但是缺點也非常的明顯,因為殼自己也有特徵。在某些比較流氓的國產殺軟的檢測方式下,主流的殼如VMP, Themida等,一旦被檢測到加殼直接彈框告訴你這玩意兒有問題,雖然很直接,但是還是挺有效的。有些情況下,有的常見版本的殼會被直接脫掉分析。
面對這種情況可以考慮用一切冷門的加密殼,有時間精力的可以基於開源的壓縮殼改一些原始碼,效果可能會很不錯。
總得來說,加殼的方式來免殺還是比較實用的,特別是對於不開源的PE檔案,通過加殼可以繞過很多特徵碼識別。
4.記憶體免殺
CPU不可能是為某一款加殼軟體而特別設計的,因此某個軟體被加殼後的可執行程式碼CPU是讀不懂的。這就要求在執行外殼程式碼時,要先將原軟體解密,並放到記憶體裡,然後再通知CPU執行。
因為防毒軟體的記憶體掃描原理與硬碟上的檔案掃描原理都是一樣的,都是通過特徵碼比對的,只不過為了製造迷惑性,大多數反病毒公司的記憶體掃描與檔案掃描採用的不是同一套特徵碼,這就導致了一個病毒木馬同時擁有兩套特徵碼,必須要將它們全部破壞掉才能躲過反病毒軟體的查殺。
因此,除了加殼外,黑客們對抗反病毒軟體的基本思路沒變。而對於加殼,只要加一個會混淆程式原有程式碼的“猛”殼,其實還是能躲過防毒軟體的查殺的。
5.二次編譯
metasploit的msfvenom提供了多種格式的payload和encoder,生成的shellcode也為二次加工提供了方便,但是也被各大廠商盯得死死的。
而shikata_ga_nai是msf中唯一excellent的編碼器,這種多型編碼技術使得每次生成的攻擊載荷檔案是不一樣的,編碼和解碼也都是不一樣。還可以利用管道進行多重編碼進行免殺。
目前msfvenom的encoder特徵基本都進入了殺軟的漏洞庫,很難實現單一encoder編碼而繞過殺軟,所以對shellcode進行進一步修改編譯成了msf免殺的主流。網際網路上有很多借助於C、C#、python等語言對shellcode進行二次編碼從而達到免殺的效果。
6.分離免殺
侯亮大神和傾旋大神都分別提到過payload分離免殺和webshell分離免殺,採用分離法,即將ShellCode和載入器分離。網上各種載入器程式碼也有很多,各種語言實現的都很容易找到,雖然看起來比較簡單,但效果卻是不錯的。比但效果卻是不錯的。比如侯亮大神提到的shellcode_launcher,載入c程式碼,基本沒有能查殺的AV。
7.資源修改
有些殺軟會設定有掃描白名單,比如之前把程式圖示替換為360安全衛士圖示就能過360的查殺。
加資源
使用ResHacker對檔案進行資源操作,找來多個正常軟體,將它們的資源加入到自己軟體,如圖片,版本資訊,對話方塊等。
替換資源
使用ResHacker替換無用的資源(Version等)。
加簽名
使用簽名偽造工具,將正常軟體的簽名資訊加入到自己軟體中。
禁止非法,後果自負
歡迎關注公眾號:web安全工具庫
相關文章
- go免殺學習記錄Go
- python基礎學習Python
- Redis 基礎學習Redis
- Linux基礎學習Linux
- Docker 基礎學習Docker
- Flume基礎學習
- 【Vue學習】基礎Vue
- jQuery基礎學習jQuery
- Scala基礎學習
- kafka基礎學習Kafka
- Zookeeper 基礎學習
- 深度學習基礎深度學習
- 學習linux基礎Linux
- Pandas基礎學習
- Linux基礎學習-Docker學習筆記LinuxDocker筆記
- 機器學習基礎——整合學習1機器學習
- 【機器學習基礎】神經網路/深度學習基礎機器學習神經網路深度學習
- 資源 | Intel釋出AI免費系列課程3部曲:機器學習基礎、深度學習基礎以及TensorFlow基礎IntelAI機器學習深度學習
- Python基礎學習篇Python
- Zookeeper學習——基礎框架框架
- python基礎學習1Python
- linux基礎命令學習Linux
- python基礎學習2Python
- 深度學習--RNN基礎深度學習RNN
- redis學習——基礎指令Redis
- YII-基礎學習
- python基礎學習五Python
- opencv學習之基礎OpenCV
- Spring Boot 學習-基礎Spring Boot
- [pwn基礎]Pwntools學習
- 遙感基礎學習
- SQL學習___01:基礎SQL
- Linux基礎學習——檔案基礎Linux
- 0基礎新手該如何學習Python?學習技巧!Python
- 強化學習-學習筆記1 | 基礎概念強化學習筆記
- 0基礎學怎麼學習python?Python
- 0基礎新手該如何學習Python?分享學習技巧!Python
- JAVA基礎學習-數字與字串學習總結Java字串