如何使用 YARA 進行進階惡意軟體檢測

最後更新: 01/12/2025

  • YARA 允許使用基於字串、二進位模式和檔案屬性的靈活規則來描述惡意軟體家族。
  • 精心設計的規則可以跨多個環境檢測從勒索軟體和 APT 到 webshel​​l 和零日漏洞等各種威脅。
  • 將 YARA 整合到備份、取證工作流程和企業工具中,可以增強防禦能力,超越傳統的防毒軟體。
  • YARA 社群和規則庫使得情報共享和持續改進檢測變得容易。

如何使用 YARA 進行進階惡意軟體檢測

¿如何使用YARA進行高階惡意軟體檢測? 當傳統防毒軟體達到極限,攻擊者能夠突破所有可能的漏洞時,一種在事件回應實驗室中變得不可或缺的工具就派上了用場: YARA,惡意軟體獵殺的“瑞士軍刀”它旨在利用文字和二進位模式來描述惡意軟體家族,其功能遠遠超出簡單的雜湊匹配。

在合適的人手中,YARA 不僅僅用於定位 不僅包括已知的惡意軟體樣本,還包括新的變種、零時差漏洞,甚至是商業攻擊工具。在本文中,我們將深入探討如何使用 YARA 進行高階惡意軟體偵測,如何撰寫強大的規則,如何測試這些規則,如何將它們整合到 Veeam 等平台或您自己的分析工作流程中,以及專業社群遵循的最佳實踐。

YARA是什麼?為什麼它在檢測惡意軟體方面如此強大?

YARA 代表“又一個遞歸縮寫詞”,它已成為威脅分析領域的實際標準,因為 它允許使用易讀、清晰且高度靈活的規則來描述惡意軟體家族。YARA 不依賴靜態的防毒特徵碼,而是使用您自己定義的模式。

基本想法很簡單:YARA 規則檢查檔案(或記憶體或資料流),並檢查一系列條件是否滿足。 基於文字字串、十六進位序列、正規表示式或檔案屬性的條件如果滿足條件,則表示“匹配成功”,您可以發出警報、阻止或進行更深入的分析。

這種方法允許安全團隊 識別並分類各種類型的惡意軟體:經典病毒、蠕蟲、木馬、勒索軟體、WebShell、加密貨幣挖礦程式、惡意宏等等。它不局限於特定的檔案副檔名或格式,因此它還可以偵測帶有 .pdf 副檔名的偽裝可執行檔或包含 webshel​​l 的 HTML 檔案。

此外,YARA 已整合到網路安全生態系統的許多關鍵服務和工具中: VirusTotal、Cuckoo 等沙箱、Veeam 等備份平台,或頂級製造商提供的威脅狩獵解決方案因此,掌握 YARA 幾乎已成為高級分析師和研究人員的必備技能。

YARA在惡意軟體檢測中的高階應用案例

YARA 的優點之一在於它能夠像手套一樣適應多種安全場景,從安全營運中心 (SOC) 到惡意軟體實驗室。 同樣的規則也適用於一次性狩獵和持續監測。.

最直接的情況涉及創建 針對特定惡意軟體或整個惡意軟體家族的特定規則如果您的組織正遭受基於已知家族(例如遠端存取木馬或 APT 威脅)的攻擊活動,您可以分析特徵字串和模式,並製定規則以快速識別新的相關樣本。

另一個經典用途是作為焦點 YARA 基於簽名這些規則旨在尋找雜湊值、非常特定的文字字串、程式碼片段、註冊表項,甚至是同一惡意軟體多個變種中重複出現的特定位元組序列。但是,請記住,如果您只搜尋無關緊要的字串,則可能會產生誤報。

YARA在以以下方式篩選方面也表現出色: 文件類型或結構特徵透過將字串與檔案大小、特定標頭(例如,PE 執行檔的 0x5A4D)或可疑函數匯入等屬性結合,可以建立適用於 PE 執行檔、辦公室文件、PDF 或幾乎任何格式的規則。

在現代環境中,它的使用與以下方面相關: 情報部門公共儲存庫、研究報告和 IOC 資料來源會轉換為 YARA 規則,並整合到 SIEM、EDR、備份平台或沙箱中。這使得組織能夠: 快速偵測與已分析的攻擊活動具有相似特徵的新興威脅。.

理解YARA規則的語法

YARA 的語法與 C 語言非常相似,但更簡單、更專注。 每條規則都包含一個名稱、一個可選的元資料部分、一個字串部分,以及一個必不可少的條件部分。從現在開始,力量就取決於你如何將所有這些結合起來。

首先是 規則名稱它必須緊跟在關鍵字之後。 排除 (o 標尺 如果您用西班牙語編寫文檔,儘管文件中的關鍵字將是 排除必須是有效的標識符:不能包含空格、數字或底線。最好遵循明確的約定,例如: 惡意軟體家族變種 o APT_Actor_Tool這樣,你就能一眼看出它要偵測的是什麼。

獨家內容 - 點擊這裡  5G技術會帶來哪些安全問題?

接下來是該部分 字符串在這裡,您可以定義要搜尋的模式。您可以使用以下三種主要類型: 文字字串、十六進位序列和正規表示式文字字串非常適合用於人類可讀的程式碼片段、URL、內部訊息、路徑名稱或PDB檔案。十六進制數允許您捕獲原始位元組模式,這在程式碼混淆但保留某些常數序列時非常有用。

當您需要處理字串中的細微變化時,例如更改域或稍微更改程式碼部分,正規表示式可以提供靈活性。 此外,字串和正規表示式都允許使用轉義字元來表示任意位元組。這就為非常精確的混合模式打開了大門。

部分 條件 這是唯一必填項,它定義了何時認為規則「匹配」了一個文件。您可以在這裡使用布林運算和算術運算(和、或、非、+、-、*、/、任何、所有、包含等。)表達比簡單的“如果出現此字串”更精細的檢測邏輯。

例如,您可以指定規則僅在檔案小於特定大小、所有關鍵字串都出現或至少存在幾個字串中的一個時才有效。 您也可以組合使用字串長度、符合項目數量、檔案中的特定偏移量或檔案本身的大小等條件。在這裡,創造力決定了通用規則和精準檢測之間的差異。

最後,還有可選部分。 非常適合記錄這段期間。通常會包括 作者、創建日期、描述、內部版本、報告或工單參考信息 一般來說,任何有助於保持儲存庫的組織性和易於其他分析師理解的資訊。

YARA 高級規則的實際範例

為了更好地理解以上所有內容,了解一個簡單的規則是如何建構的,以及當可執行檔、可疑的導入或重複的指令序列出現時,規則是如何變得更加複雜的,是很有幫助的。 我們先從玩具尺開始,然後逐漸增加尺的尺寸。.

一條最簡規則可以只包含一個字串和一個強制執行的條件。例如,您可以搜尋特定的文字字串或代表惡意軟體片段的位元組序列。 在這種情況下,條件只需說明如果出現該字串或模式,則滿足該規則即可。無需進一步篩選。

然而,在現實世界中,這種方法卻行不通,因為 簡單的連鎖反應往往會產生許多假陽性結果。因此,通常會將多個字串(文字和十六進位)與附加限制結合:例如,檔案大小不得超過一定限度,必須包含特定標頭,或只有在找到每個已定義群組中的至少一個字串時才能啟動。

PE 可執行檔分析中的典型例子是導入模組。 pe YARA 可讓您查詢二進位檔案的內部屬性:匯入的函數、節、時間戳記等。高級規則可能要求檔案匯入 CreateProcess的內核32.dll 以及一些來自 HTTP 函數 wininet.dll此外,還包含一個指示惡意行為的特定字串。

這種邏輯非常適合用於定位 具有遠端連線或資料竊取能力的木馬程序即使檔案名稱或路徑在不同活動之間發生變化,也應關注底層行為:流程建立、HTTP 請求、加密、持久化等等。

另一個非常有效的技巧是觀察… 重複的指令序列 同一系列樣本之間存在差異。即使攻擊者對二進位檔案進行打包或混淆,他們通常也會重複使用難以修改的程式碼部分。如果在靜態分析後發現恆定的指令塊,則可以製定一條規則。 十六進位字串中的通配符 既能捕捉到這種模式,又能保持一定的容差。

借助這些「基於代碼行為」的規則,這是可能的。 追蹤整個惡意軟體攻擊活動,例如 PlugX/Korplug 或其他 APT 家族的攻擊活動。你不僅要偵測特定的雜湊值,還要追蹤攻擊者的開發風格。

在實際攻擊活動和零日威脅中使用 YARA

YARA 尤其在高階威脅和零時差漏洞利用領域證明了自己的價值,因為傳統的保護機制往往來得太晚。 一個著名的例子是利用 YARA 從極少的洩漏情報中定位 Silverlight 中的漏洞。.

在這種情況下,從一家專門開發攻擊性工具的公司竊取的電子郵件中,推斷出了足夠的模式,從而建立了一個針對特定漏洞的規則。 憑藉這一規則,研究人員得以在一大堆可疑文件中追蹤到樣本。找出漏洞並強制修復,以防止造成更嚴重的損害。

這類故事說明了YARA如何發揮作用 在文件海洋撒網想像一下,你的企業網絡就像一片充滿各種「魚」(文件)的海洋。你的規則就像拖網裡的各個隔間:每個隔間都用來存放符合特定特徵的「魚」。

獨家內容 - 點擊這裡  如何刪除 Android 惡意軟件

拖曳結束後,你就擁有 以與特定攻擊家族或群體相似度分組的樣本例如:「類似物種 X」、「類似物種 Y」等等。其中一些樣本對您來說可能是全新的(新的二進位檔案、新的活動),但它們符合已知的模式,這可以加快您的分類和回應速度。

為了在此背景下最大限度地發揮 YARA 的作用,許多組織會結合以下方法: 高階培訓、實務實驗室和受控實驗環境有一些高度專業化的課程專門講授編寫良好規則的藝術,這些課程通常以真實的網絡間諜案例為基礎,學生們通過真實的樣本進行練習,並學習即使在不知道自己要找什麼的情況下也要搜索“某些東西”。

將 YARA 整合到備份和復原平台中

YARA 非常適合的一個領域,也是經常被忽略的領域,就是備份保護。 如果備份檔案感染了惡意軟體或勒索軟體,復原作業可能會重新啟動整個攻擊活動。這就是為什麼一些製造商將YARA引擎直接整合到他們的解決方案中的原因。

下一代備份平台可以啟動 YARA 基於規則的還原點分析會話目標有兩個:一是找到事件發生前的最後一個「乾淨」點,二是偵測隱藏在文件中的惡意內容,這些內容可能沒有被其他檢查觸發。

在這些環境下,典型的流程包括選擇“使用 YARA 尺掃描恢復點“在配置分析作業期間,接下來需要指定規則文件的路徑(通常帶有 .yara 或 .yar 擴展名),該文件通常存儲在特定於備份解決方案的配置文件夾中。”

在執行過程中,引擎會遍歷副本中包含的對象,套用規則,並且 它會將所有配對結果記錄在特定的 YARA 分析日誌中。管理員可以從控制台查看這些日誌,查看統計信息,查看哪些文件觸發了警報,甚至可以追蹤每個匹配項對應的機器和具體日期。

這種整合也輔以其他機制,例如: 異常偵測、備份大小監控、搜尋特定入侵指標或分析可疑工具但對於針對特定勒索軟體家族或攻擊活動的規則,YARA 是優化搜尋的最佳工具。

如何在不破壞網路的情況下測試和驗證 YARA 規則

Android的惡意軟件

一旦你開始編寫自己的規則,下一個關鍵步驟就是徹底測試它們。 過於嚴格的規則可能會產生大量的誤報,而過於寬鬆的規則可能會讓真正的威脅漏網。因此,測試階段與編寫階段同樣重要。

好消息是,你無需搭建一個裝滿可用惡意軟體的實驗室,也無需感染半個網路就能做到這一點。現有的程式碼庫和資料集已經提供了這些資訊。 用於研究目的的已知和受控惡意軟體樣本您可以將這些範例下載到隔離環境中,並將其用作規則的測試平台。

通常的做法是先在本機命令列執行 YARA,對包含可疑檔案的目錄進行掃描。 如果你的規則在應該出現問題的地方都能正確執行,並且在乾淨的文件中幾乎沒有出錯,那麼你就走對了路。如果觸發次數過多,就需要檢查字串、改進條件或引入其他限制(大小、導入、偏移等)。

另一個關鍵點是確保你的規則不會影響效能。在掃描大型目錄、完整備份或大量樣本集時, 優化不佳的規則會減慢分析速度或消耗比預期更多的資源。因此,建議測量時間,簡化複雜表達式,避免使用過於複雜的正規表示式。

通過實驗室測試階段後,您將能夠 將規則推廣到生產環境無論是在您的安全資訊和事件管理 (SIEM) 系統、備份系統、郵件伺服器,還是任何您想要整合的地方,都不要忘記保持持續的審查週期:隨著行銷活動的演變,您的規則需要定期調整。

YARA 的工具、程序和工作流程

識別無文件文件

除了官方二進位之外,許多專業人士還圍繞 YARA 開發了小型程式和腳本,以方便其日常使用。 一種典型的方法是創建一個應用程序,用於 自行組裝安全套件 它會自動讀取資料夾中的所有規則,並將它們套用到分析目錄。.

這類自製工具通常採用簡單的目錄結構:一個資料夾用來存放… 從網路下載的規則 (例如,「rulesyar」)以及另一個資料夾用於存放 可疑文件將被分析 (例如,「惡意軟體」)。程式啟動時,會檢查這兩個資料夾是否存在,在螢幕上列出規則,並準備執行。

當你按下類似這樣的按鈕時“開始檢查然後,該應用程式使用所需的參數啟動 YARA 可執行檔:掃描資料夾中的所有檔案、遞歸分析子目錄、輸出統計資料、列印元資料等。任何符合項目都會顯示在結果視窗中,指示哪個檔案與哪個規則相符。

獨家內容 - 點擊這裡  Roblox 安全最佳實踐

例如,此工作流程可以偵測一批匯出電子郵件中的問題。 惡意嵌入圖像、危險附件或隱藏在看似無害的檔案中的 Webshel​​l企業環境中的許多法證調查正是依賴這種機制。

在呼叫 YARA 時,有哪些最有用的參數?以下選項尤為突出: -r 用於遞歸搜索,-S 用於顯示統計信息,-m 用於提取元數據,-w 用於忽略警告透過組合這些標誌,您可以根據具體情況調整行為:從對特定目錄進行快速分析到對複雜資料夾結構進行完整掃描。

撰寫和維護 YARA 規則的最佳實踐

為防止您的規則庫變得難以管理,建議應用一系列最佳實踐。 首先,要使用一致的範本和命名規則。這樣任何分析師都能一目了然地了解每條規則的作用。

許多團隊採用包含以下內容的標準格式: 包含元資料的標頭、指示威脅類型、攻擊者或平台的標籤,以及偵測到的內容的清晰描述。這不僅對內部有幫助,而且當你與社區分享規則或為公共儲存庫做出貢獻時,也會有所幫助。

另一個建議是,要永遠記住: YARA 只是又一層防禦而已。它並不能取代防毒軟體或EDR,而是作為其策略的補充。 保護您的 Windows 電腦理想情況下,YARA 應該符合更廣泛的參考框架,例如 NIST 框架,該框架也涉及資產識別、保護、檢測、回應和復原。

從技術角度來看,值得花時間… 避免誤報這包括避免使用過於通用的字串、組合多個條件以及使用運算符,例如: 所有的 o 任何 動動腦筋,充分利用文件的結構特性。惡意軟體行為的邏輯越具體越好。

最後,保持自律 版本控制和定期審查 這一點至關重要。惡意軟體家族不斷演變,攻擊指標也不斷變化,如今行之有效的規則可能不再適用,甚至過時。定期審查和完善規則集是網路安全這場貓鼠遊戲中不可或缺的一部分。

YARA社群及可用資源

YARA 能取得如此成就的主要原因之一是其強大的社群。 來自世界各地的研究人員、安全公司和緊急應變團隊不斷分享規則、範例和文件。創造一個非常豐富的生態系統。

主要參考點是 YARA 在 GitHub 上的官方程式​​碼庫在那裡您可以找到該工具的最新版本、原始程式碼和文件連結。您還可以從那裡追蹤專案進度、報告問題或貢獻改進意見。

官方文件可在 ReadTheDocs 等平台上獲取,其中包含: 完整的語法指南、可用模組、規則範例和使用參考它是利用最先進的功能(例如 PE 檢查、ELF、記憶體規則或與其他工具的整合)的重要資源。

此外,還有YARA規則和簽名的社群儲存庫,世界各地的分析師都可以在其中進行分析。 他們發布現成的收藏或可以根據您的需求進行調整的收藏。這些儲存庫通常包含針對特定惡意軟體家族、漏洞利用工具包、惡意使用的滲透測試工具、Webshel​​l、加密貨幣挖礦程式等等的規則。

同時,許多製造商和研究機構提供 YARA提供從基礎到高階的專項訓練課程這些舉措通常包括虛擬實驗室和基於真實場景的實作練習。有些甚至免費提供給非營利組織或特別容易遭受定向攻擊的機構。

整個生態系統意味著,只要稍加投入,你就可以從寫最初的基本規則開始… 開發能夠追蹤複雜活動並偵測前所未有的威脅的複雜系統透過將 YARA 與傳統防毒軟體、安全備份和威脅情報結合,可以大幅增加在網路上游蕩的惡意行為者的作案難度。

綜上所述,YARA 不僅僅是一個簡單的命令列實用程式:它還是一個 關鍵件 在任何高階惡意軟體偵測策略中,一個能夠適應分析師思維方式的靈活工具都至關重要。 通用語言 它將世界各地的實驗室、安全營運中心和研究社群連結起來,使每項新規則都能增加一層保護,以抵禦日益複雜的攻擊。

如何在 Windows 11 中偵測危險的無檔案惡意軟體
相關文章:
如何在 Windows 11 中偵測危險的無檔案惡意軟體