在滲透測試的時候,我們可能需要規避殺軟程序,特別是在post攻擊階段要在目標機器上執行特定文件的時候。有時候,繞過特定的殺軟是一個挑戰,因為并沒有標準的規避殺毒軟件的方法和技術。因此,我們需要嘗試一個不同的方法來繞過它們。這篇文章將介紹常用的規避殺軟的工具。
文件分割和十六進制編輯器
我們要討論的第一個技術就是使用文件切割工具來定位殺軟檢測的特征,然后修改它。這是一個比較老的繞過殺軟的辦法。如果我們能夠精確定位出被檢測的特征,這個技術是很有效的。然而,這個技術也有限制。如果我們破壞了應用程序的功能,即便我們規避了殺軟也是無用的。所以,只要我們在修改特征的時候沒有改變它的功能,就是可以的。
這可以使用文件分割工具來實現,它能把二進制分割成多個部分。分割方式應該是這樣的,每一個部分都比前一個部分多一個固定大小的內容。然后,我們使用殺軟掃描這些分割好的塊兒,判斷哪一個塊兒被首先標記為惡意軟件。我們需要重復這個過程直到定位出特征的確切位置。“Dsplit”和“Evade”之類的工具就可以用來分割文件。一旦定位出特征,我們需要修改它然后保存。
讓我們用一個例子來說明它是怎樣對抗殺軟的吧。
我從這里下載了wce.exe。這是在post攻擊階段常用的獲取明文口令的工具。
當我們在virustotal.com上掃描這個工具時,56個殺軟中有47個把它識別為惡意軟件。
通過使用Dsplit,我們發現殺毒軟件使用歡迎字符串來檢測它,這個字符串會在工具運行時顯示。因此,我用十六進制個編輯器打開wce.exe,通過把大寫轉換為小寫,小寫轉換為大寫的方式改變其特征。如下所示:
在對二進制文件作了上面的修改后,再次在virustotal.com上掃描,這次發現56個殺軟中有42個將其標記為惡意軟件。
然而,這樣并不能繞過大多數殺毒軟件程序,如果我們能夠準確定位出被哪些殺軟檢測的特征的話,我們就可以規避它們。
作為一個例子,下面是原始的wce程序,從內存中提取口令。
原始wce.exe的輸出
在修改了二進制文件后,功能沒有變化。它依然可以從內存中得到口令。如下圖。
修改后的wce.exe的輸出
Hyperion
加密二進制也是一種常用的過殺軟的方法。加密器的原理就是混淆二進制來對抗殺軟。當二進制文件運行的時候加密的內容會被還原。Kali Linux有一個開源的加密器,名為Hyperion,已經可以下載使用。
我用的是從上面的鏈接處下載的工具。讓我們看看這個工具怎么用。
在我們使用Hyperion之前,首先讓我們在virustotal.com上掃描wce.exe的32位版本。
正如我們看到的,有44個殺軟把它識別為惡意軟件。
讓我們用Hyperion加密這個文件,如下:
讓我們再次掃描這個新生成的文件,看看檢測率。
如上圖所示,與未加密的文件相比,這個得到了更低的檢測率。
Veil-Evasion
Veil-Evasion是另外一個用python寫的流行的框架。我們可以用這個框架生成能夠規避大多數殺軟的載荷。
可以從其官網上下載到Veil-evasion。
首先,下載并安裝Veil-Evasion,然后運行它,命令為:
“veil-evasion”
正如我們看到的,已經加載了46個載荷。我們可以使用“use”命令選擇特定的載荷。
我選擇第31個,創建一個python/meterpreter/rev_tcp可執行載荷。實際上,它創建了一個python腳本,然后會使用工具轉換為可執行文件,比如:pyinstaller。
在上圖中,我們設置LHOST為192.168.56.101,輸入命令“generate”生成載荷。
接下來,它會讓我們輸入載荷的名稱,我將其命名為“backdoor”。如上面提及的,Veil會把python文件轉為exe,它詢問我們選擇什么工具來轉換。我個人而言,喜歡Pyinstaller,我輸入1選擇它。這兩步如下圖所示
一旦完成,它就會創建出最終的載荷,并顯示它的路徑,如下:
正如我們在上圖看到的,這個框架的作者不建議我們把樣本上傳到網上。因此,我在Avast殺軟的沙盒環境中測試這個載荷,沒有被檢測到。
這些載荷在目標機上也會工作得很好。
下圖展示了使用上面創建的載荷獲取的一個meterpreter shell。
可以試試帶加密的其它載荷,效果會更好。
peCloak
peCloak是另外一個有趣的工具,我是從下面的鏈接處下載的。
http://www.securitysift.com/pecloak-py-an-experiment-in-av-evasion/
這個腳本自動采用多種技巧規避殺軟。作者為了自己使用開發了這個工具,之后公開發行了beta版。這個腳本可以啟發我們寫出自己的規避殺軟的腳本。
讓我們看看怎么用它
為此,我要用msfvenom創建一個meterpreter載荷。如下圖:
讓我們在virustotal.com上掃描這個載荷“test.exe”,如下圖。
56個殺軟中有36個殺軟將其標記為惡意軟件。現在,讓我們執行peCloadk.py腳本。我們以默認的參數執行這個腳本,如下:
它創建了一個名為“cloaked.exe”的文件,如上圖所示。
讓我們掃描這個新載荷,看看有多少殺毒軟件引擎將其識別為惡意軟件。
56個中只有26個將其識別為惡意軟件。
結論
除了這篇文章中提到的工具外,還有很多其它的工具,比如Metasploit的編碼器。寫一個定制的能規避殺軟檢測的載荷比使用流行的框架創建載荷要好。注意:在你閱讀這篇文章的時候,這篇文章中顯示的結果可能有所變化,因為殺軟的特征也在不斷地更新。