1. 程式人生 > >20165207 Exp3 免殺原理與實踐

20165207 Exp3 免殺原理與實踐

編碼器 想要 功能 函數名 取值 generate 開始 重新 全局

Exp3 免殺原理與實踐

1、實驗內容

1.1、使用msf

1.1.1、 確定基準線

首先看kali的ip
技術分享圖片
直接msfvenom的結果,不加其他的東西:
技術分享圖片
使用VirusTotal得到的檢測這個程序得到的結果:
技術分享圖片
所以最終結果是69款軟件中有49款檢測出來了,49/69是基準線。

1.1.2、使用編碼器

輸入如下的命令使用e參數對生成的文件內容進行編碼,再使用b參數設置規避字符集來去除代表字符串結束的\x00字符(也可以理解成一直編碼直到裏面沒有了指定的字符)。
技術分享圖片
將編碼之後的結果上傳到virusTotal檢測:
技術分享圖片
這,應該可以被理解成不變了。
然後,加入i參數增加叠代次數,下面指定為50次:
技術分享圖片
可以看到叠代編碼50次的輸出結果中因為遇到編碼錯誤,叠代到了12次就終止了,因此這個5207_3.exe的實際叠代了12次。

叠代編碼次數雖然不夠但還是有的,再放進virusTotal裏面檢測一下:
技術分享圖片
這?!(不是說好了怎麽編碼都不管用的麽,難道我做出來了??)
誒!
怎麽只有0kb,還是我太naive了
技術分享圖片
技術分享圖片
果然,第13次編碼叠代遇到的錯誤導致了5207_3.exe變成了空文件。
哎,我沒有搜到為啥,就,先減少一下編碼次數試一下吧,改成叠代10次:
技術分享圖片
然後,我們來檢測一下叠代十次的結果:
技術分享圖片
技術分享圖片
網絡不太好,有幾個檢測超時了,37/57和49/69相比變化應該不算大。

1.1.3、msfvenom生成jar之類的其他文件

用msfvenom的-l參數瞅瞅都能生成啥樣的payload:
技術分享圖片
第一次用的時候沒有分頁或者像上圖一樣把輸出重定向到另一個文件裏,結果500多個結果把滾動條都搞崩潰了

打開輸出重定向的文件payloadlist,前方高能:
技術分享圖片
上面肉眼可見的payload的取值就有安卓平臺的,實驗要求了jar文件,先搜個jar唄:
當然了,我搜jar沒有搜到,搜Java才搜出來這麽一大堆payload的取值:
技術分享圖片
再研究一下f參數後面可不可以接jar格式
技術分享圖片
技術分享圖片
哇曬,除了我要的jar之外,什麽vb腳本asp啥的都可以啊
然後來實踐一下:
技術分享圖片
這樣,一個用Java反向tcp的payload生成的jar類型的可執行文件就新鮮出爐了
經過剛才的搜索,可選的其他類型的攻擊載荷以及其他類型的可執行文件格式都出來了,想要生成別的就只是一個搜索再輸入的過程了:
比如,生成一個dll:
技術分享圖片
其他的就,搜索,輸入,
對了,把這個jar和dll測上一測
技術分享圖片
嘿嘿,比37低上了一點
那dll呢
技術分享圖片
媽耶,dll好慘

1.2、使用veil-evasion

在宿舍感人的網速下,下了好久才:
技術分享圖片
然後選個y開始裝:
技術分享圖片
後面出來了一堆不知道咋回事的問題,主要就是要我安裝東西(Python和Ruby之類的,但是指定的路徑又不對,指定完了又會卡死)
只好重新開始選擇s進行靜默安裝,好處就是,它知道自己要咋設置可以不出錯,不會再問我問題了
技術分享圖片
在可用的payload列表裏找到我們要的,因為我之前的shellcode是c寫的,而且是tcp反彈連接,所以use7
用set來設置端口和ip
設置好之後,generate生成
技術分享圖片
生成好了之後來測一測veil的效果:
技術分享圖片

1.3、shellcode編程

在裝veil的時候這邊試一下shellcode編程
用C語言的格式生成一段shellcode代碼的數組:
技術分享圖片
然後可以交叉編譯也可以用Windows裏的visualStudio

1.3.1、交叉編譯

先編寫一個C語言程序,加入shellcode,具體操作就是,把shellcode賦給一個全局變量數組,然後再將數組首地址強轉為一個函數指針的指向,然後就可以通過函數名來調用shellcode了
技術分享圖片
調用mingw交叉編譯:
技術分享圖片
檢測一下交叉編譯的結果:
技術分享圖片

1.4、vs、加殼、實現免殺

打開我塵封多年的vs,新建項目(還好當初計算機實習做完mfc之後沒有卸載)
技術分享圖片
然後,用_asm格式來在c源代碼裏加入匯編
以及實驗指導裏這個位置我覺得不應該有分號:
技術分享圖片
vs生成的exe文件:
技術分享圖片
放到kali裏面加殼
技術分享圖片
激動人心的時刻到了,360殺毒
技術分享圖片
怎麽說呢,這個免殺的結果,我高興了兩秒,然後
技術分享圖片
這是因為360聯網了嗎,然後把我的程序上傳了????????
上傳了之後,我就從識別不出來變成有毒了????????
關閉了雲上傳功能之後360殺毒還是認識這個東西,好吧……
見了一面就記住我了……
沒有辦法了,換個軟件,我沒下別的,因為之前好像有個360安全衛士的安裝包
讓我再試一次另一款360,要是再不行,就得回去重新來了
技術分享圖片
目前沒有掃描出來(關掉了雲上傳)
運行文件,反彈回連kali試試
技術分享圖片
這裏,360的“實時防護”是開著的,運行met5207upx沒有檢測出來,Kali那邊:
技術分享圖片
成了
所以說如果360不開那個雲安全計劃,還是可以免殺的
怎麽說呢,後來我閑的沒事下了個騰訊電腦管家,沒有出現360的情況,電腦裏面自帶的聯想電腦管家是免殺的。
嘖,360這個雲上傳還是有點厲害的(想起來了當初我做實驗編的人畜無害的程序都可以給我殺沒)。

1.5、用另一臺電腦反彈

用我的舊電腦,打開360安全衛士,關掉360雲安全計劃
舊電腦的內網ip是10.1.1.137和kali在同一個網段上
它雖然沒修好但是運行個exe還是可以的
技術分享圖片
技術分享圖片
但是,這個雲安全計劃,還是很常見的,我一會再試試再加一個加密殼看看。

2、問題回答

2.1、殺軟是如何檢測出來惡意代碼的

基於特征碼或者基於哈希:
比如一些早期病毒,編寫者會署上自己的名字向大家展示自己的技術,比如CIH、Brain病毒
基於啟發式檢測:
有基於靜態特征、基於代碼仿真和基於行為的等等幾種,總的來說就是通過判斷程序的行為與惡意代碼行為的相似程度。
我還聽說過有基於機器學習的方法來檢測的,但是我不太了解。

2.2、免殺是做什麽的

讓惡意代碼不被殺毒軟件查殺出來

2.3、免殺的基本方法有哪些

有改變特征碼和改變行為兩種,改變特征碼可以用加殼、編碼、用其他語言重寫重編譯來進行,如果要改變行為可以做反彈連接、附加在大段的正常代碼上、利用內存操作等等

3、總結與體會

這次免殺實驗之後,我了解到了要刻意做一個殺毒軟件殺不出來的惡意代碼其實很容易。所以,以後假期打遊戲打不過去,就查查攻略了,修改器什麽的就算了,下別的東西也是這樣,要謹慎。雲安全計劃很強大,被上傳了,就會被全國聯保……

20165207 Exp3 免殺原理與實踐