1. 程式人生 > >攻擊者通過 Windows 自帶工具載入挖礦程式的檢測分析

攻擊者通過 Windows 自帶工具載入挖礦程式的檢測分析

譯文宣告

譯文僅供參考,具體內容表達以及含義原文為準

前言

我在職業生涯早期學到的一個教訓是,技術專業人員通常會繼承老問題。對於負責網路服務和安全的管理員來說尤其如此,因為他們繼承了最大的問題:企業 網路。隨著網路的老化,網路往往變得更加難以安全和維護,而管理員常常實施新的安全措施,卻發現他們的環境中已經存在一些邪惡的東西。

Red Canary的探測工程師對這個概念並不陌生。由於我們與事件響應夥伴的關係日益密切,Red Canary通常部署在事件已經在進行中的環境中。儘管沒有觀察到最初的攻擊,我們的網路事件響應小組(Cyber Incident Response Team/CIRT

)可以提供一個全面的關於攻擊者策略的觀點,以加快補救。

在本文中,我將介紹一個場景,在這個場景中,我們與IR的一個合作伙伴一起進行搜尋,以阻止正在進行的攻擊。我還將分享檢測策略,以發現在此事件中使用的攻擊策略,以及越過陳舊的補丁管理建議的預防策略。

邪惡的最初跡象

當通過IR合作伙伴部署Red Canary時,事件處理程式通常會向檢測工程團隊簡要介紹即將發生的事件的背景資訊。在這種情況下,Red Canary令人敬畏的Eric Groce讓我們知道,我們很快就會為一個由於惡意活動而無法使用網路的組織提供調查支援。這些問題嚴重影響了該組織的業務,我們將看到大量的事件。不久 之後,我們看到了第一批事件的發生,從攻擊者已經放置在裝置上的永續性機制開始。

我們的第一個邪惡的跡象是應用白名單繞過技術,這種技術是在幾年前因為我們的應用研究主任Casey Smith而流行的。在這種情況下,執行Windows計劃任務(Windows Scheduled Task),執行Regsvr32.exe的例項以下載和執行程式碼。(這通常稱為squiblydoo攻擊。Casey在這篇Atomic Red Team的文章中介紹了這次攻擊。)

下載的payload聲稱是PHP指令碼檔案,但其實是惡意指令碼,進一步導致Windows命令處理程式(cmd.exe)產生PowerShell,然後Powershell執行Base64編碼的命令來下載並執行第二個payload:antivirus.ps1。

從這裡開始,執行額外的PowerShell來檢索以前儲存為Windows Management Instrumentation (WMI)事件訂閱的屬性的程式碼。這與我們通常在“無檔案(fileless)”惡意軟體執行中看到的情況略有不同,後者通常使用Windows登錄檔項來儲存PowerShell payload,WMI類屬性的使用更少,維護者更難檢查和補救。

此時,我們已經可以看到,攻擊者已經在組織的各個端點建立了相當大的永續性。我們收到了來自100多個主機的事件,顯示了計劃的任務執行和通過PowerShell檢索WMI類屬性。

挖礦開始

我們的下一個邪惡跡象來自WMI用於生成PowerShell的主機。我們可以基於PowerShell的父程序得出這樣的結論:通過WMI生成的 程序具有wmiprvse.exe的父程序。PowerShell命令再次使用base64進行編碼,在解碼之後我們可以看到一個複雜的指令碼。

攻擊者建立了一個指令碼,該指令碼將檢查工具的新版本,並在查詢的版本號更改時嘗試下載新的payload。在隨後的指令碼中,我們還觀察到了查詢端點的 活動網路連線的攻擊者,我們很快就發現了原因。對於每個具有已建立網路連線的程序,惡意PowerShell指令碼都會執行findstr.exe的例項。 這個內建的Windows實用程式用於搜尋檔案中由使用者指定的文字字串。在這種情況下,攻擊者使用它來搜尋與加密相關的字元 串:“cryptonight”。

這種奇怪的行為是有意義的,一旦我們將其與我們在惡意挖礦程式例項中看到的行為進行比較。將挖礦程式作為payload部署的攻擊者通常遵循以下模式:

  1. 將挖掘工具下載到端點。
  2. 檢查端點,看看程式是否已經在執行。
  3. 終止任何現有的挖礦程式。
  4. 啟動程式並繼續。

在本例中,findstr.exe是在網路連線程序執行的每個二進位制檔案中執行的。如果這些程序中的任何一個包含字串“cryptonight”,則惡意指令碼將終止該程序並開始執行挖礦活動。

在Carbon Black (Cb) Response中觀察到的資料沒有顯示與PowerShell以外的這些活動相關的特定二進位制檔案,因此我們假設挖掘程式的載入方式對於CB響應來說是 不可見的。後來,我們通過獲取惡意PowerShell指令碼並發現它使用一個版本的Invoke-ReflectivePEInjection(來自 PowerSploit)將XMRig Miner二進位制檔案載入到PowerShell中,從而確認了這一點。這個二進位制檔案使用Base64進行編碼,並存儲在指令碼中,該指令碼隨後在執行時動 態地提取它。通過使用反射注入,指令碼載入挖掘程式二進位制檔案的方式避免了像LoadLibrary呼叫那樣的Windows API呼叫。這種技術通過對依賴Windows API呼叫的工具隱藏資料來了解載入了哪些二進位制檔案和程式碼庫。

本質上,這個指令碼包含了在執行時部署挖礦程式所需的所有內容,並通過這種對於大多數不結合某種形式的記憶體分析來檢查PowerShell的記憶體空間的工具來說是不可見的方式部署,而不是信任API。

橫向運動時間

在挖礦過程中,PowerShell指令碼還開始掃描本地網路,查詢445埠為伺服器訊息塊(SMB)服務開啟的主機。有讀者可能會注意到我們以前 見過這種模式。事實上,世界在2017年WannaCry ransomware運動期間以及隨後的幾個月中都看到了這種模式,當時攻擊者創造性地合併了WannaCry方法,並利用挖礦paload來分發 WannaMare惡意軟體。

在挖礦活動的同時,我們開始注意到證書失竊的跡象。Powershell載入了兩個動態連結庫(DLL),這兩個庫通常在憑證竊取攻擊期間被觀察 到:samlib.dll和vaultcli.dll。此外,我們還發現PowerShell正在讀取Windows本地安全授權程序 (lsass.exe)的記憶體空間。

這些行為與我們觀察到的攻擊者使用MimiKatz竊取或濫用密碼雜湊的情況非常相似。當在這個上下文中拼湊在一起時,我們假設像MimiKatz 這樣的工具已經被載入到PowerShell中來收集合法的憑證,然後這些憑證被用來驗證到其他端點,並傳播一個加密的payload。這個策略顯然有 效,因為我們在環境中的200個主機上發現了類似的活動。

可能的第一感染者(Patient Zero)

在200多個檢測中,只有一個端點在對抗性行為模式上表現出明顯的偏離。在這個主機上,我們觀察到從Java程序產生的奇怪命令。Windows命 令行視窗(cmd.exe)的一個例項用於將編碼的PowerShell命令寫入VBScript中執行,命名指令碼javaupdato.vbs。

回顧這個過程的Java父程序,該命令似乎是從執行有名為“WebHelpDesk”的應用程式的基於Java的Web伺服器產生的。從提供的有關 伺服器的環境判斷,我們能夠識別它作為Solarwinds Web Help Desk伺服器,這個伺服器可從Internet上公開訪問。在原始的遙測資料中,我們潛入Java父程序,發現了與Web伺服器惡意聯絡的證據。攻擊者 上傳了一個惡意Java類檔案,並以類似於Web shell活動的方式導致了cmd.exe的執行。反過來,cmd.exe編寫並執行惡意指令碼。

Powershell:攻擊者的選擇工具

希望你已經注意到了一個特點:這個攻擊者喜歡使用PowerShell。在這種情況下,惡意VBScript導致PowerShell下載的 payload與在其他主機上所看到的略有不同。我們後來發現,payload包含一個漏洞,可以提升Web伺服器上的許可權。不需要利用這些漏洞,因為攻 擊者無意中獲得了Web Help Desk伺服器的本地SYSTEM帳戶執行程序的訪問許可權。當配置Web伺服器時,它已被設定為在系統上最高管理員的安全上下文中執行!

在某種程度上,攻擊者意識到了這一點,並使用另一種策略來觸發在其他主機上看到的挖掘/橫向移動payload的下載和執行。這一次,他們使用wmic.exe的例項,向程序提供惡意樣式表,以觸發PowerShell中的後續下載。

檢測策略:如何發現這些技術

如果沒有適當的遙測技術,該組織的維護者就沒有資料來檢測這些技術,直到他們的網路陷入停頓。適當的檢測需要以過程執行監控的形式進行遙測。防禦者 可以通過部署Endpoint Detection and Response (EDR) 感測器(如Carbon Black Response或CrowdStrike Falcon)來實現這一點。另一種可能是使用Sysinals的Sysmon來建立用於程序執行的Windows事件日誌。通過使用來自入侵檢測系統、 Netflow或其他網路控制元件的遙測,可以觀察到此事件的SMB網路掃描元件。

一旦遙測感測器就位,按照下面的檢測策略找到並停止各種技術。

Regsvr32.exe

從這個事件中最容易發現的策略是涉及Regsvr32.exe的策略。所示的策略稱為Squiblydoo攻擊,通過在命令列中識別具有Web地址和字串“scrobj.dll”的Regsvr32.exe例項,可以很容易地檢測到該策略。

WMI或計劃任務

可以通過查詢wmiprvse.exe(WMI)或taskeng.exe(計劃任務)的子程序來實現對通過WMI或計劃任務產生的程序的監視。根據組織的大小和配置,這種檢測策略可能非常麻煩,因此需要進行一些調整,以減少誤報並突出惡意警報。

PowerShell

最佳檢測策略是將程序執行監視與Windows事件日誌控制元件相結合。如果將網路上的所有Windows客戶端升級為使用PowerShell v5而不是舊版本,則可以從其他安全和日誌配置中受益。一個很好的起點是從Black Hill Information Security獲得有關[PowerShell日誌(https://www.blackhillsinfosec.com/powershell-logging-blue-team/)]的資源。一旦生成包含PowerShell命令的日誌,就可以對惡意指令碼中涉及的單個行為建立檢測功能。

惡意Web伺服器開發

通過識別從Web伺服器生成的可疑程序,可以觀察到惡意Web伺服器攻擊。與WMI和計劃任務監視一樣,根據系統的配置,這種策略可能很麻煩。對於 高精準度警報,你可以將檢測功能調優到監視cmd.exe或該web伺服器程序帳戶中從web伺服器生成的其他shell。大多數Web伺服器都可以作為 一個受到高度監視和審計的帳戶來執行,所以要充分利用它!

測試您的檢測覆蓋率

想測試一下這些策略,看看你的控制元件是否遵守它們?這就是為什麼我們建立了AtomRedTeam,這是一組小型的、高度可移植的測試的開源集合,對應MITRE ATT&CK框架中的相應技術。

檢視以下 Atomic Red Team測試,看看你現有的控制元件是否可以檢測到它們:

預防策略

如果你一直認為可以通過修補程式管理來防止此事件的部分發生,那麼你是對的。我們已經寫了很多文章來闡述補丁管理和其他IT基礎知識的重要性,大多數安全專業人員對這個建議並不陌生。補丁管理是一個很好的開始,但是對於這篇文章,我想深入探討其他的預防策略:網路分割(network segmentation)和Web伺服器安全。

網路分割

防止像WannaCry和WannaMINE這樣的快速傳播的惡意攻擊的一個關鍵防禦方法是以一種將通訊限制在段間已批准的通道的方式來分割你的網路。如果SMB掃描不應該被允許從你的營銷辦公室連線到網路的其餘部分,禁止它並且用網路控制來監視它!

使用適當的訪問控制列表進行網路分段可以防止主機將惡意傳播到企業網路的其餘部分。當正確分割時,快速傳播的惡意程式將被限制在網路的單個部分,而不是像在無障礙的平面網路中那樣在整個組織中傳播。這對防禦者很有幫助,因為它將事件與其他工作系統隔離開來。

儘管如此,SolarwinsWeb Help Dest伺服器的這種情況代表了一種特殊的情況。SolarWinds軟體和其他IT管理工具通常位於網路的中心區域,在那裡它們可以跨所有網段訪問系 統。這個位置是一個挑戰,因為它允許一個主機成為一個潛在的向量,來危害網路的所有部分。維權者應確保這些系統不能通過網際網路公開訪問。如果存在需要在組 織網路之外使用IT管理工具的情況,請考慮使用虛擬專用網路(VPN)解決方案來提供安全的、經過身份驗證的訪問,這樣攻擊者就不會那麼容易地掃描和危害 這些系統。

Web伺服器安全性

Web伺服器的安全配置值得討論,因為Web應用程式包含大量的現代企業軟體。此外,許多這些Web應用程式都是為公眾訪問而設計的,這增加了所涉 及的風險。為了讓攻擊者利用Web應用程式執行遠端程式碼,可以使用利用漏洞或Web shell功能來利用授予Web伺服器程序的使用者許可權。防止利用Web shell功能通常涉及測試和修補Web伺服器和應用程式,但使用者特權部分可以由瞭解其伺服器需求的管理員管理。Linux Web伺服器上的Apache和Nginx可以很容易地配置為使用Web應用程式的非特權帳戶,從而限制了利用漏洞造成的損害。

在Windows端,這有點困難,因為Web伺服器使用者的配置可能需要比Linux上更專業的站點或服務配置。一般的經驗法則應該是使用在Web服 務器主機或網路上任何其他系統上沒有管理員許可權的帳戶。一旦你選擇了一個非特權帳戶,配置控制元件來監視該帳戶執行的操作,從而監視您的Web伺服器。

我們在這裡已經給了特權帳戶一個徹底的措施,所以我想提及為什麼以Windows本地系統帳戶執行一個Web伺服器是特別糟糕的。這個帳戶在 Windows中擁有最高級別的特權,高於IT人員用於管理系統的本地管理員帳戶。雖然這個帳戶在每臺計算機上都是唯一的,並且通常在其他主機上沒有權 限,但具有系統訪問許可權的攻擊者可以在帳戶下的單個主機上執行任何他們想要的操作。這包括可能竊取快取在可用於在網路上橫向移動的系統上的憑據。理論上, 利用作為系統執行的服務可能導致攻擊者獲得域管理員(可以橫向移動)的快取憑據,並可能將合法使用者鎖在系統之外以防止補救。

要意識到你已經提供給網際網路的Web伺服器,並且用最少的特權加強它們的配置。此外,如果Web伺服器提供對IT管理工具的訪問,則不惜一切代價使其遠離公共訪問。通過要求使用帶有身份驗證的VPN來確保對這些管理資源的外部訪問。

關鍵

我們希望深入調查這一事件可以幫助防禦者理解為什麼採取積極主動的措施來提高檢測能力和預防是很重要的。如果你需要幫助提高檢測覆蓋率,Red Canary在這裡!

稽核人:yiwang   編輯:邊邊