Hayabusa 是由日本 Yamato 安全小組建立的Windows 事件日誌快速取證時間軸產生器和威脅搜尋工具。 Hayabusa 在日文中的意思是“遊隼”,之所以被選中是因為遊隼是世界上跑得最快的動物,擅長狩獵且易於訓練。它是用 Rust 編寫的,並支援多線程,以便盡可能快。我們提供了一個將 Sigma 規則轉換為 Hayabusa 規則格式的工具。與 Sigma 相容的 Hayabusa 檢測規則是用 YML 編寫的,以便盡可能輕鬆地自訂和擴展。 Hayabusa 可以在單一運行系統上運行以進行即時分析,透過從單一或多個系統收集日誌進行離線分析,或透過 Velociraptor 執行 Hayabusa 工件以進行企業範圍的威脅搜尋和事件回應。輸出將合併到單一 CSV 時間軸中,以便在 LibreOffice、Timeline Explorer、Elastic Stack、Timesketch 等中輕鬆分析...
evtx
箱的一個維護較好的分支。-T
選項)-H
選項)-M
多行輸出)computer-metrics
命令computer-metrics
命令範例computer-metrics
截圖eid-metrics
指令eid-metrics
指令範例eid-metrics
指令設定檔eid-metrics
截圖logon-summary
命令logon-summary
命令範例logon-summary
pivot-keywords-list
指令pivot-keywords-list
命令範例pivot-keywords-list
配置文件search
命令search
命令範例search
命令設定檔csv-timeline
命令csv-timeline
命令範例csv-timeline
命令設定文件json-timeline
命令json-timeline
命令範例和設定文件level-tuning
指令level-tuning
指令範例level-tuning
設定檔list-profiles
命令set-default-profile
命令set-default-profile
指令範例update-rules
命令update-rules
命令範例minimal
檔輸出standard
檔輸出verbose
檔輸出all-field-info
設定檔輸出all-field-info-verbose
設定檔輸出super-verbose
檔輸出timesketch-minimal
輪廓輸出timesketch-verbose
設定檔輸出Hayabusa 目前擁有超過 4000 條 Sigma 規則和超過 170 條 Hayabusa 內建偵測規則,並且會定期添加更多規則。它可用於企業範圍內的主動威脅搜尋以及免費的 DFIR(數位取證和事件回應)以及 Velociraptor 的 Hayabusa 工件。透過結合這兩個開源工具,當環境中沒有 SIEM 設定時,您基本上可以追溯性地重現 SIEM。您可以在此處觀看 Eric Capuano 的 Velociraptor 演練,以了解如何執行此操作。
傳統上,Windows 事件日誌分析是一個非常漫長且乏味的過程,因為 Windows 事件日誌 1) 採用難以分析的資料格式,2) 大部分資料都是噪音,對調查無用。 Hayabusa 的目標是只提取有用的數據,並以盡可能簡潔、易於閱讀的格式呈現,不僅可供受過專業培訓的分析師使用,而且任何 Windows 系統管理員都可以使用。與傳統的 Windows 事件日誌分析相比,Hayabusa 希望讓分析師在 20% 的時間內完成 80% 的工作。
-T
選項) -H
選項) -M
多行輸出) 您可以在此處了解如何在 Excel 和時間軸資源管理器中分析 CSV 時間軸。
您可以在此處了解如何將 CSV 檔案匯入 Elastic Stack。
您可以在此處了解如何將 CSV 檔案匯入 Timesketch。
您可以在此處了解如何使用jq
分析 JSON 格式的結果。
|equalsfield
和|endswithfield
。0xc0000234
-> ACCOUNT LOCKED
)請下載最新穩定版本的 Hayabusa 及其編譯的二進位文件,或從發布頁面編譯原始程式碼。
我們為以下架構提供二進位檔案:
hayabusa-xxx-lin-aarch64-gnu
)hayabusa-xxx-lin-x64-gnu
)hayabusa-xxx-lin-x64-musl
)hayabusa-xxx-mac-aarch64
)hayabusa-xxx-mac-x64
)hayabusa-xxx-win-aarch64.exe
)hayabusa-xxx-win-x64.exe
)hayabusa-xxx-win-x86.exe
)由於某種原因,Linux ARM MUSL 二進位檔案無法正常運作,因此我們不提供該二進位檔案。這是我們無法控制的,因此我們計劃在將來修復後提供它。
從 v2.18.0 開始,我們提供了特殊的 Windows 包,這些包使用單個文件中提供的 XOR 編碼規則以及組合到單個文件中的所有配置文件(託管在 hayabusa-encoded-rules 存儲庫中)。只要下載名稱中帶有live-response
zip 套件即可。 zip 檔案僅包含三個檔案:Hayabusa 二進位檔案、XOR 編碼的規則檔案和設定檔。這些即時回應套件的目的是在客戶端端點上執行 Hayabusa 時,我們希望確保 Windows Defender 等防毒掃描程式不會對.yml
規則檔案給予誤報。此外,我們希望最大限度地減少寫入系統的檔案量,以便像 USN Journal 這樣的取證工件不會被覆蓋。
您可以使用以下命令git clone
儲存庫並從原始程式碼編譯二進位檔案:
警告:儲存庫的主要分支用於開發目的,因此您可能能夠存取尚未正式發布的新功能,但是,可能存在錯誤,因此請考慮它不穩定。
git clone https://github.com/Yamato-Security/hayabusa.git --recursive
注意:如果您忘記使用 --recursive 選項,則作為 git 子模組管理的
rules
資料夾將不會被複製。
您可以使用git pull --recurse-submodules
同步rules
夾並取得最新的 Hayabusa 規則或使用以下命令:
hayabusa.exe update-rules
如果更新失敗,您可能需要重新命名rules
資料夾並重試。
注意:更新時,
rules
資料夾中的規則和設定檔將替換為 hayabusa-rules 儲存庫中的最新規則和設定檔。您對現有文件所做的任何更改都會被覆蓋,因此我們建議您在更新之前對編輯的任何文件進行備份。如果您使用level-tuning
執行等級調整,請在每次更新後重新調整您的規則檔案。如果您在rules
資料夾內新增規則,則更新時它們不會被覆寫或刪除。
如果安裝了 Rust,則可以使用以下命令從原始程式碼編譯:
注意:要編譯,您通常需要最新版本的 Rust。
cargo build --release
您可以從主分支下載最新的不穩定版本,或從發布頁面下載最新的穩定版本。
請務必定期更新 Rust:
rustup update stable
編譯後的二進位檔案將輸出到./target/release
資料夾。
您可以在編譯之前更新到最新的 Rust crate:
cargo update
更新後如果出現任何問題,請告訴我們。
您可以使用下列命令在 64 位元 Windows 系統上建立 32 位元二進位檔案:
rustup install stable-i686-pc-windows-msvc
rustup target add i686-pc-windows-msvc
rustup run stable-i686-pc-windows-msvc cargo build --release
警告:只要有新的 Rust 穩定版本,請務必執行
rustup install stable-i686-pc-windows-msvc
因為rustup update stable
不會更新編譯器以進行交叉編譯,並且您可能會收到建置錯誤。
如果收到有關 openssl 的編譯錯誤,則需要安裝 Homebrew,然後安裝以下軟體包:
brew install pkg-config
brew install openssl
如果收到有關 openssl 的編譯錯誤,則需要安裝以下軟體包。
基於 Ubuntu 的發行版:
sudo apt install libssl-dev
基於 Fedora 的發行版:
sudo yum install openssl-devel
在 Linux 作業系統上,先安裝目標。
rustup install stable-x86_64-unknown-linux-musl
rustup target add x86_64-unknown-linux-musl
編譯:
cargo build --release --target=x86_64-unknown-linux-musl
警告:只要有新的 Rust 穩定版本,請務必執行
rustup install stable-x86_64-unknown-linux-musl
因為rustup update stable
不會更新編譯器以進行交叉編譯,並且您可能會收到建置錯誤。
MUSL 二進位檔案將在./target/x86_64-unknown-linux-musl/release/
目錄中建立。 MUSL 二進位檔案比 GNU 二進位檔慢大約 15%,但是,它們在 Linux 的不同版本和發行版之間更易於移植。
當嘗試執行 hayabusa 時,甚至只是在下載.yml
規則時,您可能會收到來自防毒或 EDR 產品的警報,因為偵測簽章中會有mimikatz
和可疑 PowerShell 指令等關鍵字。這些都是誤報,因此需要在安全產品中配置排除項以允許 hayabusa 運作。如果您擔心惡意軟體或供應鏈攻擊,請檢查 hayabusa 原始碼並自行編譯二進位。
由於 Windows Defender 的即時保護,您可能會遇到運行速度緩慢的情況,尤其是在重新啟動後的首次運行時。您可以透過暫時關閉即時保護或在 hayabusa 運行時目錄中新增排除項來避免這種情況。 (在執行這些操作之前請考慮安全風險。)
在命令/PowerShell 提示字元或 Windows 終端機中,只需執行適當的 32 位元或 64 位元 Windows 二進位檔案。
在 Windows 中使用內建指令或 PowerShell 提示字元時,如果檔案或目錄路徑中有空格,您可能會收到錯誤訊息,指出 Hayabusa 無法載入任何 .evtx 檔案。為了正確載入 .evtx 文件,請務必執行以下操作:
您首先需要使二進位可執行檔。
chmod +x ./hayabusa
然後從 Hayabusa 根目錄運行它:
./hayabusa
從終端機或 iTerm2,您首先需要使二進位執行檔。
chmod +x ./hayabusa
然後,嘗試從 Hayabusa 根目錄運行它:
./hayabusa
在最新版本的 macOS 上,當您嘗試執行它時可能會收到以下安全性錯誤:
按一下“取消”,然後從“系統偏好設定”開啟“安全性和隱私權”,然後從“常規”標籤中按“仍然允許”。
之後,嘗試再次運行它。
./hayabusa
會彈出以下警告,請點選「開啟」。
您現在應該能夠運行 hayabusa。
computer-metrics
:根據電腦名稱列印事件數。eid-metrics
:根據事件 ID 列印事件的數量和百分比。logon-summary
:列印登入事件的摘要。pivot-keywords-list
:列印要旋轉的可疑關鍵字清單。search
:透過關鍵字或正規表示式搜尋所有事件csv-timeline
:以 CSV 格式儲存時間軸。json-timeline
:以 JSON/JSONL 格式儲存時間軸。level-tuning
:自訂調整警報的level
。list-profiles
:列出可用的輸出設定檔。set-default-profile
:更改預設設定檔。update-rules
:將規則同步到 hayabusa-rules GitHub 儲存庫中的最新規則。 help
: 列印此訊息或給定子命令的協助list-contributors
:列印貢獻者列表computer-metrics
命令您可以使用computer-metrics
指令來檢查根據
欄位中定義的每台電腦有多少個事件。請注意,您不能完全依賴Computer
欄位來按事件的原始電腦來分隔事件。儲存到事件日誌時,Windows 11 有時會使用完全不同的Computer
名稱。此外,Windows 10 有時會以全小寫形式記錄Computer
名稱。該命令不使用任何檢測規則,因此將分析所有事件。這是一個很好的命令,可以運行它來快速查看哪些電腦擁有最多的日誌。有了這些訊息,您就可以在建立時間軸時使用--include-computer
或--exclude-computer
選項,透過根據電腦建立多個時間軸或排除來自某些電腦的事件來提高時間軸產生的效率。
Usage: computer-metrics [OPTIONS]
Input:
-d, --directory Directory of multiple .evtx files
-f, --file File path to one .evtx file
-l, --live-analysis Analyze the local C:WindowsSystem32winevtLogs folder
General Options:
-C, --clobber Overwrite files when saving
-h, --help Show the help menu
-J, --JSON-input Scan JSON formatted logs instead of .evtx (.json or .jsonl)
-Q, --quiet-errors Quiet errors mode: do not save error logs
-x, --recover-records Carve evtx records from slack space (default: disabled)
-c, --rules-config Specify custom rule config directory (default: ./rules/config)
--target-file-ext Specify additional evtx file extensions (ex: evtx_data)
-t, --threads Number of threads (default: optimal number for performance)
Filtering:
--timeline-offset Scan recent events based on an offset (ex: 1y, 3M, 30d, 24h, 30m)
Output:
-o, --output Save the results in CSV format (ex: computer-metrics.csv)
Display Settings:
--no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
-v, --verbose Output verbose information
computer-metrics
命令範例hayabusa.exe computer-metrics -d ../logs
hayabusa.exe computer-metrics -d ../logs -o computer-metrics.csv
computer-metrics
截圖eid-metrics
指令您可以使用eid-metrics
指令列印出以通道分隔的事件 ID(
欄位)的總數和百分比。此命令不使用任何偵測規則,因此將掃描所有事件。
Usage: eid-metrics [OPTIONS]
Input:
-d, --directory Directory of multiple .evtx files
-f, --file File path to one .evtx file
-l, --live-analysis Analyze the local C:WindowsSystem32winevtLogs folder
General Options:
-C, --clobber Overwrite files when saving
-h, --help Show the help menu
-J, --JSON-input Scan JSON formatted logs instead of .evtx (.json or .jsonl)
-Q, --quiet-errors Quiet errors mode: do not save error logs
-x, --recover-records Carve evtx records from slack space (default: disabled)
-c, --rules-config Specify custom rule config directory (default: ./rules/config)
--target-file-ext Specify additional evtx file extensions (ex: evtx_data)
-t, --threads Number of threads (default: optimal number for performance)
Filtering:
--exclude-computer Do not scan specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--include-computer Scan only specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--timeline-offset Scan recent events based on an offset (ex: 1y, 3M, 30d, 24h, 30m)
Output:
-o, --output Save the Metrics in CSV format (ex: metrics.csv)
Display Settings:
--no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
-v, --verbose Output verbose information
Time Format:
--European-time Output timestamp in European time format (ex: 22-02-2022 22:00:00.123 +02:00)
--ISO-8601 Output timestamp in ISO-8601 format (ex: 2022-02-22T10:10:10.1234567Z) (Always UTC)
--RFC-2822 Output timestamp in RFC 2822 format (ex: Fri, 22 Feb 2022 22:00:00 -0600)
--RFC-3339 Output timestamp in RFC 3339 format (ex: 2022-02-22 22:00:00.123456-06:00)
--US-military-time Output timestamp in US military time format (ex: 02-22-2022 22:00:00.123 -06:00)
--US-time Output timestamp in US time format (ex: 02-22-2022 10:00:00.123 PM -06:00)
-U, --UTC Output time in UTC format (default: local time)
eid-metrics
指令範例hayabusa.exe eid-metrics -f Security.evtx
hayabusa.exe eid-metrics -d ../logs
hayabusa.exe eid-metrics -f Security.evtx -o eid-metrics.csv
eid-metrics
指令設定檔頻道、事件ID和事件標題在rules/config/channel_eid_info.txt
中定義。
例子:
Channel,EventID,EventTitle
Microsoft-Windows-Sysmon/Operational,1,Process Creation.
Microsoft-Windows-Sysmon/Operational,2,File Creation Timestamp Changed. (Possible Timestomping)
Microsoft-Windows-Sysmon/Operational,3,Network Connection.
Microsoft-Windows-Sysmon/Operational,4,Sysmon Service State Changed.
eid-metrics
截圖logon-summary
命令您可以使用logon-summary
命令輸出登入資訊摘要(登入使用者名稱以及成功和失敗登入計數)。您可以使用-f
顯示一個 evtx 檔案的登入訊息,或使用-d
選項顯示多個 evtx 檔案的登入資訊。
Usage: logon-summary [OPTIONS]
Input:
-d, --directory Directory of multiple .evtx files
-f, --file File path to one .evtx file
-l, --live-analysis Analyze the local C:WindowsSystem32winevtLogs folder
General Options:
-C, --clobber Overwrite files when saving
-h, --help Show the help menu
-J, --JSON-input Scan JSON formatted logs instead of .evtx (.json or .jsonl)
-Q, --quiet-errors Quiet errors mode: do not save error logs
-x, --recover-records Carve evtx records from slack space (default: disabled)
-c, --rules-config Specify custom rule config directory (default: ./rules/config)
--target-file-ext Specify additional evtx file extensions (ex: evtx_data)
-t, --threads Number of threads (default: optimal number for performance)
Filtering:
--exclude-computer Do not scan specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--include-computer Scan only specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--timeline-end End time of the event logs to load (ex: "2022-02-22 23:59:59 +09:00")
--timeline-offset Scan recent events based on an offset (ex: 1y, 3M, 30d, 24h, 30m)
--timeline-start Start time of the event logs to load (ex: "2020-02-22 00:00:00 +09:00")
Output:
-o, --output Save the logon summary to two CSV files (ex: -o logon-summary)
Display Settings:
--no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
-v, --verbose Output verbose information
Time Format:
--European-time Output timestamp in European time format (ex: 22-02-2022 22:00:00.123 +02:00)
--ISO-8601 Output timestamp in ISO-8601 format (ex: 2022-02-22T10:10:10.1234567Z) (Always UTC)
--RFC-2822 Output timestamp in RFC 2822 format (ex: Fri, 22 Feb 2022 22:00:00 -0600)
--RFC-3339 Output timestamp in RFC 3339 format (ex: 2022-02-22 22:00:00.123456-06:00)
--US-military-time Output timestamp in US military time format (ex: 02-22-2022 22:00:00.123 -06:00)
--US-time Output timestamp in US time format (ex: 02-22-2022 10:00:00.123 PM -06:00)
-U, --UTC Output time in UTC format (default: local time)
logon-summary
命令範例hayabusa.exe logon-summary -f Security.evtx
hayabusa.exe logon-summary -d ../logs -o logon-summary.csv
logon-summary
pivot-keywords-list
命令您可以使用pivot-keywords-list
命令建立唯一的pivot關鍵字列表,以快速識別異常用戶、主機名稱、進程等......以及關聯事件。
重要提示:預設情況下,hayabusa 將傳回所有事件的結果(資訊性事件和更高層級的事件),因此我們強烈建議將pivot-keywords-list
指令與-m, --min-level
選項結合使用。例如,首先使用-m critical
只從critical
警報中創建關鍵字,然後繼續使用-m high
、 -m medium
等...結果中很可能存在與許多正常事件相匹配的常見關鍵字,因此,在手動檢查結果並在單一檔案中建立唯一關鍵字清單後,您可以使用grep -f keywords.txt timeline.csv
等指令建立可疑活動的縮小時間軸。
Usage: pivot-keywords-list [OPTIONS]
Input:
-d, --directory Directory of multiple .evtx files
-f, --file File path to one .evtx file
-l, --live-analysis Analyze the local C:WindowsSystem32winevtLogs folder
General Options:
-C, --clobber Overwrite files when saving
-h, --help Show the help menu
-J, --JSON-input Scan JSON formatted logs instead of .evtx (.json or .jsonl)
-w, --no-wizard Do not ask questions. Scan for all events and alerts
-Q, --quiet-errors Quiet errors mode: do not save error logs
-x, --recover-records Carve evtx records from slack space (default: disabled)
-c, --rules-config Specify custom rule config directory (default: ./rules/config)
--target-file-ext Specify additional evtx file extensions (ex: evtx_data)
-t, --threads Number of threads (default: optimal number for performance)
Filtering:
-E, --EID-filter Scan only common EIDs for faster speed (./rules/config/target_event_IDs.txt)
-D, --enable-deprecated-rules Enable rules with a status of deprecated
-n, --enable-noisy-rules Enable rules set to noisy (./rules/config/noisy_rules.txt)
-u, --enable-unsupported-rules Enable rules with a status of unsupported
-e, --exact-level Only load rules with a specific level (informational, low, medium, high, critical)
--exclude-computer Do not scan specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--exclude-eid Do not scan specific EIDs for faster speed (ex: 1) (ex: 1,4688)
--exclude-status Do not load rules according to status (ex: experimental) (ex: stable,test)
--exclude-tag Do not load rules with specific tags (ex: sysmon)
--include-computer Scan only specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--include-eid Scan only specified EIDs for faster speed (ex: 1) (ex: 1,4688)
--include-status Only load rules with specific status (ex: experimental) (ex: stable,test)
--include-tag Only load rules with specific tags (ex: attack.execution,attack.discovery)
-m, --min-level Minimum level for rules to load (default: informational)
--timeline-end End time of the event logs to load (ex: "2022-02-22 23:59:59 +09:00")
--timeline-offset Scan recent events based on an offset (ex: 1y, 3M, 30d, 24h, 30m)
--timeline-start Start time of the event logs to load (ex: "2020-02-22 00:00:00 +09:00")
Output:
-o, --output Save pivot words to separate files (ex: PivotKeywords)
Display Settings:
--no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
-v, --verbose Output verbose information
pivot-keywords-list
命令範例hayabusa.exe pivot-keywords-list -d ../logs -m critical
keywords-Ip Addresses.txt
、 keywords-Users.txt
等...): hayabusa.exe pivot-keywords-list -d ../logs -m critical -o keywords`
pivot-keywords-list
配置文件您可以透過編輯./rules/config/pivot_keywords.txt
來自訂要搜尋的關鍵字。此頁面是預設設定。
格式為KeywordName.FieldName
。例如,當建立Users
清單時,hayabusa 將列出SubjectUserName
、 TargetUserName
和User
欄位中的所有值。
search
命令search
命令將允許您對所有事件進行關鍵字搜尋。 (不僅僅是隼鳥檢測結果。)這對於確定隼鳥未檢測到的事件中是否存在任何證據非常有用。
Usage: hayabusa.exe search <--keywords "" OR --regex ""> [OPTIONS]
Display Settings:
--no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
-v, --verbose Output verbose information
General Options:
-C, --clobber Overwrite files when saving
-h, --help Show the help menu
-Q, --quiet-errors Quiet errors mode: do not save error logs
-x, --recover-records Carve evtx records from slack space (default: disabled)
-c, --rules-config Specify custom rule config directory (default: ./rules/config)
--target-file-ext Specify additional evtx file extensions (ex: evtx_data)
-t, --threads Number of threads (default: optimal number for performance)
Input:
-d, --directory Directory of multiple .evtx files
-f, --file File path to one .evtx file
-l, --live-analysis Analyze the local C:WindowsSystem32winevtLogs folder
Filtering:
-a, --and-logic Search keywords with AND logic (default: OR)
-F, --filter Filter by specific field(s)
-i, --ignore-case Case-insensitive keyword search
-k, --keyword Search by keyword(s)
-r, --regex Search by regular expression
--timeline-offset Scan recent events based on an offset (ex: 1y, 3M, 30d, 24h, 30m)
Output:
-J, --JSON-output Save the search results in JSON format (ex: -J -o results.json)
-L, --JSONL-output Save the search results in JSONL format (ex: -L -o results.jsonl)
-M, --multiline Output event field information in multiple rows for CSV output
-o, --output Save the search results in CSV format (ex: search.csv)
Time Format:
--European-time Output timestamp in European time format (ex: 22-02-2022 22:00:00.123 +02:00)
--ISO-8601 Output timestamp in ISO-8601 format (ex: 2022-02-22T10:10:10.1234567Z) (Always UTC)
--RFC-2822 Output timestamp in RFC 2822 format (ex: Fri, 22 Feb 2022 22:00:00 -0600)
--RFC-3339 Output timestamp in RFC 3339 format (ex: 2022-02-22 22:00:00.123456-06:00)
--US-military-time Output timestamp in US military time format (ex: 02-22-2022 22:00:00.123 -06:00)
--US-time Output timestamp in US time format (ex: 02-22-2022 10:00:00.123 PM -06:00)
-U, --UTC Output time in UTC format (default: local time)
search
命令範例../hayabusa-sample-evtx
目錄中搜尋關鍵字mimikatz
: hayabusa.exe search -d ../hayabusa-sample-evtx -k "mimikatz"
注意:如果在資料中的任何位置找到
mimikatz
,則關鍵字將匹配。這不是完全匹配。
../hayabusa-sample-evtx
目錄中搜尋關鍵字mimikatz
或kali
: hayabusa.exe search -d ../hayabusa-sample-evtx -k "mimikatz" -k "kali"
../hayabusa-sample-evtx
目錄中搜尋關鍵字mimikatz
並忽略大小寫: hayabusa.exe search -d ../hayabusa-sample-evtx -k "mimikatz" -i
../hayabusa-sample-evtx
目錄中搜尋 IP 位址: hayabusa.exe search -d ../hayabusa-sample-evtx -r "(?:[0-9]{1,3}.){3}[0-9]{1,3}"
../hayabusa-sample-evtx
目錄並顯示WorkstationName
欄位為kali
所有事件: hayabusa.exe search -d ../hayabusa-sample-evtx -r ".*" -F WorkstationName:"kali"
注意:
.*
是符合每個事件的正規表示式。
search
命令設定檔./rules/config/channel_abbreviations.txt
:通道名稱及其縮寫的對應。
csv-timeline
和json-timeline
指令現在預設啟用掃描精靈。此舉旨在幫助使用者根據自己的需求和偏好輕鬆選擇想要啟用的偵測規則。要載入的檢測規則集是基於 Sigma 項目中的官方清單。這篇文章中解釋了詳細資訊。您可以透過新增-w, --no-wizard
選項輕鬆關閉精靈並以傳統方式使用 Hayabusa。
core
規則集啟用狀態為test
」或stable
以及等級為high
或critical
的規則。這些是具有高置信度和相關性的高品質規則,不應產生許多誤報。規則狀態為test
或stable
,這意味著超過 6 個月沒有報告誤報。規則將匹配攻擊者技術、一般可疑活動或惡意行為。它與使用--exclude-status deprecated,unsupported,experimental --min-level high
選項相同。
core+
規則集支援具有test
或stable
狀態以及medium
或更高等級的規則。 medium
規則通常需要額外的調整,因為某些應用程式、合法的使用者行為或組織的腳本可能會相符。它與使用--exclude-status deprecated,unsupported,experimental --min-level medium
選項相同。
core++
規則集支援狀態為experimental
、 test
或stable
以及medium
或更高等級的規則。這些規則是前沿的。它們根據 SigmaHQ 專案中提供的基線 evtx 檔案進行驗證,並由多名偵測工程師進行審核。除此之外,它們一開始幾乎未經測試。如果您希望能夠儘早偵測到威脅,但要以管理更高的誤報閾值為代價,請使用這些方法。它與使用--exclude-status deprecated,unsupported --min-level medium
選項相同。
Emerging Threats (ET)
規則集啟用具有detection.emerging_threats
這些規則針對特定威脅,對於目前還沒有太多資訊可用的威脅特別有用。這些規則不應有太多誤報,但隨著時間的推移,相關性會降低。當這些規則未啟用時,與使用--exclude-tag detection.emerging_threats
選項相同。當傳統上在沒有嚮導的情況下運行 Hayabusa 時,預設將包含這些規則。
Threat Hunting (TH)
規則集啟用具有detection.threat_hunting
標籤的規則。這些規則可以偵測未知的惡意活動,但是通常會產生更多誤報。當這些規則未啟用時,與使用--exclude-tag detection.threat_hunting
選項相同。當傳統上在沒有嚮導的情況下運行 Hayabusa 時,預設將包含這些規則。
從 Hayabusa v2.16.0 開始,我們在載入.evtx
檔案和.yml
規則時啟用基於通道的過濾器。目的是透過僅加載必要的內容來使掃描盡可能高效。雖然單一事件日誌中可能有多個提供程序,但單一 evtx 檔案中具有多個通道的情況並不常見。 (我們唯一一次看到這種情況是有人為 example-evtx 專案人為地將兩個不同的 evtx 檔案合併在一起。)我們可以透過先檢查指定的每個.evtx
檔案的第一個記錄中的Channel
字段來利用這一點進行掃描。我們也檢查哪些.yml
規則使用規則的Channel
欄位中指定的頻道。透過這兩個列表,我們僅載入使用.evtx
檔案中實際存在的通道的規則。
例如,如果使用者想要掃描Security.evtx
,則僅使用指定Channel: Security
的規則。載入其他偵測規則是沒有意義的,例如僅在Application
日誌中尋找事件的規則等...請注意,原始 Sigma 規則中未明確定義通道欄位(例如: Channel: Security
)。對於 Sigma 規則,通道和事件 ID 欄位是透過logsource
下的service
和category
欄位隱含定義的。 (例如: service: security
)在 hayabusa-rules 儲存庫中策劃 Sigma 規則時,我們會對logsource
欄位進行去抽象,並明確定義通道和事件 ID 欄位。我們在此深入解釋如何以及為何這樣做。
目前,只有兩個未定義Channel
且旨在掃描所有.evtx
檔案的偵測規則如下:
如果您想使用這兩個規則並針對載入的.evtx
檔案掃描所有規則,則需要在csv-timeline
和json-timeline
命令中新增-A, --enable-all-rules
選項。在我們的基準測試中,規則過濾通常可以將速度提高 20% 到 10 倍,具體取決於掃描的文件,當然使用的記憶體也更少。
載入.evtx
檔案時也會使用通道過濾。例如,如果您指定一個規則來尋找具有Security
通道的事件,則載入不是來自Security
日誌的.evtx
檔案是沒有意義的。在我們的基準測試中,正常掃描的速度提高了約 10%,使用單一規則掃描時的效能提高了 60% 以上。如果您確定在單一.evtx
檔案中使用多個通道,例如有人使用工具將多個.evtx
檔案合併在一起,則您可以使用-a, --scan-all-evtx-files
來停用此過濾csv-timeline
和json-timeline
指令中的選項。
注意:通道過濾僅適用於
.evtx
文件,如果您嘗試使用-J, --json-input
從 JSON 文件載入事件日誌並指定-A
或-a
,您將收到錯誤。
csv-timeline
命令csv-timeline
指令將以 CSV 格式建立事件的取證時間軸。
Usage: csv-timeline [OPTIONS]
Input:
-d, --directory Directory of multiple .evtx files
-f, --file File path to one .evtx file
-l, --live-analysis Analyze the local C:WindowsSystem32winevtLogs folder
General Options:
-C, --clobber Overwrite files when saving
-h, --help Show the help menu
-J, --JSON-input Scan JSON formatted logs instead of .evtx (.json or .jsonl)
-s, --sort-events Sort events before saving the file. (warning: this uses much more memory!)
-w, --no-wizard Do not ask questions. Scan for all events and alerts
-Q, --quiet-errors Quiet errors mode: do not save error logs
-x, --recover-records Carve evtx records from slack space (default: disabled)
-r, --rules Specify a custom rule directory or file (default: ./rules)
-c, --rules-config Specify custom rule config directory (default: ./rules/config)
--target-file-ext Specify additional evtx file extensions (ex: evtx_data)
-t, --threads Number of threads (default: optimal number for performance)
Filtering:
-E, --EID-filter Scan only common EIDs for faster speed (./rules/config/target_event_IDs.txt)
-D, --enable-deprecated-rules Enable rules with a status of deprecated
-n, --enable-noisy-rules Enable rules set to noisy (./rules/config/noisy_rules.txt)
-u, --enable-unsupported-rules Enable rules with a status of unsupported
-e, --exact-level Only load rules with a specific level (informational, low, medium, high, critical)
--exclude-category Do not load rules with specified logsource categories (ex: process_creation,pipe_created)
--exclude-computer Do not scan specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--exclude-eid Do not scan specific EIDs for faster speed (ex: 1) (ex: 1,4688)
--exclude-status Do not load rules according to status (ex: experimental) (ex: stable,test)
--exclude-tag Do not load rules with specific tags (ex: sysmon)
--include-category Only load rules with specified logsource categories (ex: process_creation,pipe_created)
--include-computer Scan only specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--include-eid Scan only specified EIDs for faster speed (ex: 1) (ex: 1,4688)
--include-status Only load rules with specific status (ex: experimental) (ex: stable,test)
--include-tag Only load rules with specific tags (ex: attack.execution,attack.discovery)
-m, --min-level Minimum level for rules to load (default: informational)
-P, --proven-rules Scan with only proven rules for faster speed (./rules/config/proven_rules.txt)
--timeline-end End time of the event logs to load (ex: "2022-02-22 23:59:59 +09:00")
--timeline-offset Scan recent events based on an offset (ex: 1y, 3M, 30d, 24h, 30m)
--timeline-start Start time of the event logs to load (ex: "2020-02-22 00:00:00 +09:00")
Output:
-G, --GeoIP Add GeoIP (ASN, city, country) info to IP addresses
-H, --HTML-report Save Results Summary details to an HTML report (ex: results.html)
-M, --multiline Output event field information in multiple rows
-F, --no-field-data-mapping Disable field data mapping
--no-pwsh-field-extraction Disable field extraction of PowerShell classic logs
-o, --output Save the timeline in CSV format (ex: results.csv)
-p, --profile Specify output profile
-R, --remove-duplicate-data Duplicate field data will be replaced with "DUP"
-X, --remove-duplicate-detections Remove duplicate detections (default: disabled)
Display Settings:
--no-color Disable color output
-N, --no-summary Do not display Results Summary for faster speed
-q, --quiet Quiet mode: do not display the launch banner
-v, --verbose Output verbose information
-T, --visualize-timeline Output event frequency timeline (terminal needs to support unicode)
Time Format:
--European-time Output timestamp in European time format (ex: 22-02-2022 22:00:00.123 +02:00)
--ISO-8601 Output timestamp in ISO-8601 format (ex: 2022-02-22T10:10:10.1234567Z) (Always UTC)
--RFC-2822 Output timestamp in RFC 2822 format (ex: Fri, 22 Feb 2022 22:00:00 -0600)
--RFC-3339 Output timestamp in RFC 3339 format (ex: 2022-02-22 22:00:00.123456-06:00)
--US-military-time Output timestamp in US military time format (ex: 02-22-2022 22:00:00.123 -06:00)
--US-time Output timestamp in US time format (ex: 02-22-2022 10:00:00.123 PM -06:00)
-U, --UTC Output time in UTC format (default: local time)
csv-timeline
命令範例standard
設定檔針對一個 Windows 事件記錄檔執行 hayabusa: hayabusa.exe csv-timeline -f eventlog.evtx
hayabusa.exe csv-timeline -d .hayabusa-sample-evtx -p verbose
super-verbose
文件,您的文件輸出大小將變得更大!): hayabusa.exe csv-timeline -d .hayabusa-sample-evtx -o results.csv -p super-verbose
注意:在我們的測試中,啟用 EID 過濾器將使分析速度加快約 10-15%,但可能會遺失警報。
hayabusa.exe csv-timeline -E -d .hayabusa-sample-evtx -o results.csv
-r .rules
中的所有規則): hayabusa.exe csv-timeline -d .hayabusa-sample-evtx -r .ruleshayabusa -o results.csv -w
hayabusa.exe csv-timeline -d .hayabusa-sample-evtx -r .ruleshayabusabuiltin -o results.csv -w
hayabusa.exe csv-timeline -d .hayabusa-sample-evtx -r .ruleshayabusasysmon -o results.csv -w
hayabusa.exe csv-timeline -d .hayabusa-sample-evtx -r .rulessigma -o results.csv -w
status
標記為deprecated
規則)和雜訊規則(其規則 ID 在.rulesconfignoisy_rules.txt
中列出的規則):注意:最近,已棄用的規則現在位於 sigma 儲存庫中的單獨目錄中,因此預設不再包含在 Hayabusa 中。因此,您可能不需要啟用已棄用的規則。
hayabusa.exe csv-timeline -d .hayabusa-sample-evtx --enable-noisy-rules --enable-deprecated-rules -o results.csv -w
hayabusa.exe csv-timeline -d .hayabusa-sample-evtx -r .ruleshayabusabuiltinSecurityLogonLogoffLogon -U -o results.csv -w
hayabusa.exe csv-timeline -l -m low
hayabusa.exe csv-timeline -d .hayabusa-sample-evtx -v
載入規則:
Loaded rule: rules/sigma/builtin/deprecated/proc_creation_win_susp_run_folder.yml
Loaded rule: rules/sigma/builtin/deprecated/proc_creation_win_execution_mssql_xp_cmdshell_stored_procedure.yml
Loaded rule: rules/sigma/builtin/deprecated/proc_creation_win_susp_squirrel_lolbin.yml
Loaded rule: rules/sigma/builtin/win_alert_mimikatz_keywords.yml
掃描過程中出現錯誤:
[ERROR] Failed to parse event file.
EventFile: ../logs/Microsoft-Rdms-UI%4Operational.evtx
Error: Failed to parse record number 58471
[ERROR] Failed to parse event file.
EventFile: ../logs/Microsoft-Rdms-UI%4Operational.evtx
Error: Failed to parse record number 58470
[ERROR] Failed to parse event file.
EventFile: ../logs/Microsoft-Windows-AppxPackaging%4Operational.evtx
Error: An error occurred while trying to serialize binary xml to output.
hayabusa.exe csv-timeline -d ../hayabusa-sample-evtx --RFC-3339 -o timesketch-import.csv -p timesketch -U
-Q
。 您可以使用免費的 GeoLite2 地理定位資料將 GeoIP(ASN 組織、城市和國家)資訊新增至 SrcIP(來源 IP)欄位和 TgtIP(目標 IP)欄位。
步驟:
.mmdb
檔案並將它們儲存到一個目錄。檔案名稱應命名為GeoLite2-ASN.mmdb
、 GeoLite2-City.mmdb
和GeoLite2-Country.mmdb
。csv-timeline
或json-timeline
指令時,新增-G
選項,後面接著 MaxMind 資料庫的目錄。使用csv-timeline
時,將額外輸出以下 6 個欄位: SrcASN
、 SrcCity
、 SrcCountry
、 TgtASN
、 TgtCity
、 TgtCountry
。
使用json-timeline
時,相同的SrcASN
、 SrcCity
、 SrcCountry
、 TgtASN
、 TgtCity
、 TgtCountry
欄位將會新增至Details
對象,但前提是它們包含資訊。
當SrcIP
或TgtIP
為 localhost ( 127.0.0.1
、 ::1
等)時, SrcASN
或TgtASN
將輸出為Local
。
當SrcIP
或TgtIP
是私人 IP 位址( 10.0.0.0/8
、 fe80::/10
等)時, SrcASN
或TgtASN
將輸出為Private
。
包含在 GeoIP 資料庫中尋找的來源和目標 IP 位址的欄位名稱在rules/config/geoip_field_mapping.yaml
中定義。如有必要,您可以新增到此清單中。該文件中還有一個過濾器部分,用於確定從哪些事件中提取 IP 位址資訊。
MaxMind GeoIP 資料庫每兩週更新一次。您可以在此安裝 MaxMind geoipupdate
工具,以便自動更新這些資料庫。
macOS 上的步驟:
brew install geoipupdate
/usr/local/etc/GeoIP.conf
:輸入登入 MaxMind 網站後建立的AccountID
和LicenseKey
。確保EditionIDs
行顯示EditionIDs GeoLite2-ASN GeoLite2-City GeoLite2-Country
。geoipupdate
。-G /usr/local/var/GeoIP
。Windows 上的步驟:
geoipupdate_4.10.0_windows_amd64.zip
)。ProgramDataMaxMind/GeoIPUpdateGeoIP.conf
:輸入登入 MaxMind 網站後建立的AccountID
和LicenseKey
。確保EditionIDs
行顯示EditionIDs GeoLite2-ASN GeoLite2-City GeoLite2-Country
。geoipupdate
可執行檔。 csv-timeline
命令設定文件./rules/config/channel_abbreviations.txt
:通道名稱及其縮寫的對應。
./rules/config/default_details.txt
:如果規則中未指定details:
行,則應輸出預設欄位資訊( %Details%
欄位)的設定檔。這基於提供者名稱和事件 ID。
./rules/config/eventkey_alias.txt
:此檔案具有欄位的短名稱別名與其原始較長欄位名稱的對應。
例子:
InstanceID,Event.UserData.UMDFHostDeviceArrivalBegin.InstanceId
IntegrityLevel,Event.EventData.IntegrityLevel
IpAddress,Event.EventData.IpAddress
如果此處未定義字段,Hayabusa 將自動在Event.EventData
下檢查該字段。
./rules/config/exclude_rules.txt
:此檔案包含將排除使用的規則 ID 清單。通常這是因為一條規則取代了另一條規則,或者規則一開始就無法使用。與防火牆和 IDS 一樣,任何基於簽名的工具都需要進行一些調整以適應您的環境,因此您可能需要永久或暫時排除某些規則。您可以將規則 ID(範例: 4fe151c2-ecf9-4fae-95ae-b88ec9c2fca6
)新增至./rules/config/exclude_rules.txt
以忽略任何您不需要或無法使用的規則。
./rules/config/noisy_rules.txt
:此檔案是預設停用的規則 ID 列表,但可以透過使用-n, --enable-noisy-rules
選項啟用雜訊規則來啟用。這些規則通常本質上是嘈雜的或由於誤報而產生的。
./rules/config/target_event_IDs.txt
:如果啟用了 EID 過濾器,則僅掃描此文件中指定的事件 ID。預設情況下,Hayabusa 將掃描所有事件,但如果您想提高效能,請使用-E, --EID-filter
選項。這通常會導致速度提高 10~25%。
json-timeline
命令json-timeline
指令將以 JSON 或 JSONL 格式建立事件的取證時間軸。輸出到 JSONL 將比 JSON 更快、檔案大小更小,因此如果您打算將結果匯入到 Elastic Stack 等其他工具中,那麼這是很好的選擇。如果您要使用文字編輯器手動分析結果,JSON 會更好。 CSV 輸出適合將較小的時間軸(通常小於 2GB)匯入到 LibreOffice 或 Timeline Explorer 等工具中。 JSON 最適合使用jq
等工具對資料(包括大型結果檔案)進行更詳細的分析,因為Details
欄位是分開的,以便於分析。 (在 CSV 輸出中,所有事件日誌欄位都位於一個大的Details
列中,這使得資料排序等變得更加困難。)
Usage: json-timeline [OPTIONS]
Input:
-d, --directory Directory of multiple .evtx files
-f, --file File path to one .evtx file
-l, --live-analysis Analyze the local C:WindowsSystem32winevtLogs folder
General Options:
-C, --clobber Overwrite files when saving
-h, --help Show the help menu
-J, --JSON-input Scan JSON formatted logs instead of .evtx (.json or .jsonl)
-s, --sort-events Sort events before saving the file. (warning: this uses much more memory!)
-w, --no-wizard Do not ask questions. Scan for all events and alerts
-Q, --quiet-errors Quiet errors mode: do not save error logs
-x, --recover-records Carve evtx records from slack space (default: disabled)
-r, --rules Specify a custom rule directory or file (default: ./rules)
-c, --rules-config Specify custom rule config directory (default: ./rules/config)
--target-file-ext Specify additional evtx file extensions (ex: evtx_data)
-t, --threads Number of threads (default: optimal number for performance)
Filtering:
-E, --EID-filter Scan only common EIDs for faster speed (./rules/config/target_event_IDs.txt)
-D, --enable-deprecated-rules Enable rules with a status of deprecated
-n, --enable-noisy-rules Enable rules set to noisy (./rules/config/noisy_rules.txt)
-u, --enable-unsupported-rules Enable rules with a status of unsupported
-e, --exact-level Only load rules with a specific level (informational, low, medium, high, critical)
--exclude-category Do not load rules with specified logsource categories (ex: process_creation,pipe_created)
--exclude-computer Do not scan specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--exclude-eid Do not scan specific EIDs for faster speed (ex: 1) (ex: 1,4688)
--exclude-status Do not load rules according to status (ex: experimental) (ex: stable,test)
--exclude-tag Do not load rules with specific tags (ex: sysmon)
--include-category Only load rules with specified logsource categories (ex: process_creation,pipe_created)
--include-computer Scan only specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--include-eid Scan only specified EIDs for faster speed (ex: 1) (ex: 1,4688)
--include-status Only load rules with specific status (ex: experimental) (ex: stable,test)
--include-tag Only load rules with specific tags (ex: attack.execution,attack.discovery)
-m, --min-level Minimum level for rules to load (default: informational)
-P, --proven-rules Scan with only proven rules for faster speed (./rules/config/proven_rules.txt)
--timeline-end End time of the event logs to load (ex: "2022-02-22 23:59:59 +09:00")
--timeline-offset Scan recent events based on an offset (ex: 1y, 3M, 30d, 24h, 30m)
--timeline-start Start time of the event logs to load (ex: "2020-02-22 00:00:00 +09:00")
Output:
-G, --GeoIP Add GeoIP (ASN, city, country) info to IP addresses
-H, --HTML-report Save Results Summary details to an HTML report (ex: results.html)
-L, --JSONL-output Save the timeline in JSONL format (ex: -L -o results.jsonl)
-F, --no-field-data-mapping Disable field data mapping
--no-pwsh-field-extraction Disable field extraction of PowerShell classic logs
-o, --output Save the timeline in JSON format (ex: results.json)
-p, --profile Specify output profile
-R, --remove-duplicate-data Duplicate field data will be replaced with "DUP"
-X, --remove-duplicate-detections Remove duplicate detections (default: disabled)
Display Settings:
--no-color Disable color output
-N, --no-summary Do not display Results Summary for faster speed
-q, --quiet Quiet mode: do not display the launch banner
-v, --verbose Output verbose information
-T, --visualize-timeline Output event frequency timeline (terminal needs to support unicode)
Time Format:
--European-time Output timestamp in European time format (ex: 22-02-2022 22:00:00.123 +02:00)
--ISO-8601 Output timestamp in ISO-8601 format (ex: 2022-02-22T10:10:10.1234567Z) (Always UTC)
--RFC-2822 Output timestamp in RFC 2822 format (ex: Fri, 22 Feb 2022 22:00:00 -0600)
--RFC-3339 Output timestamp in RFC 3339 format (ex: 2022-02-22 22:00:00.123456-06:00)
--US-military-time Output timestamp in US military time format (ex: 02-22-2022 22:00:00.123 -06:00)
--US-time Output timestamp in US time format (ex: 02-22-2022 10:00:00.123 PM -06:00)
-U, --UTC Output time in UTC format (default: local time)
json-timeline
命令範例和設定文件json-timeline
的選項和設定檔與csv-timeline
相同,但多了一個選項-L, --JSONL-output
用於輸出為 JSONL 格式。
level-tuning
指令level-tuning
指令可讓您調整規則的警報級別,根據您的環境提高或降低風險等級。
Usage: level-tuning [OPTIONS]
Display Settings:
--no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
General Options:
-f, --file Tune alert levels (default: ./rules/config/level_tuning.txt)
level-tuning
指令範例hayabusa.exe level-tuning
hayabusa.exe level-tuning -f my_level_tuning.txt
level-tuning
設定檔Hayabusa 和 Sigma 規則作者將在編寫規則時確定警報的風險等級。然而,實際風險等級可能會根據環境而有所不同。您可以透過將規則新增至./rules/config/level_tuning.txt
並執行hayabusa.exe level-tuning
來調整規則的風險級別,這將更新規則檔案中的level
線。請注意,規則文件將直接更新。
警告:每次執行
update-rules
時,原始警報級別都會覆蓋您更改的任何設置,因此如果您想更改級別,則需要在每次運行update-rules
後執行level-tuning
命令。
./rules/config/level_tuning.txt
範例行:
id,new_level
00000000-0000-0000-0000-000000000000,informational # sample level tuning line
在這種情況下,規則目錄中id
為00000000-0000-0000-0000-000000000000
的規則的風險level
將被重寫為informational
。可能設定的等級是critical
、 high
、 medium
、 low
和informational
。
list-profiles
命令 Usage: list-profiles [OPTIONS]
Display Settings:
--no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
set-default-profile
命令 Usage: set-default-profile [OPTIONS]
Display Settings:
--no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
General Options:
-p, --profile Specify output profile
set-default-profile
指令範例minimal
: hayabusa.exe set-default-profile minimal
super-verbose
: hayabusa.exe set-default-profile super-verbose
update-rules
命令update-rules
指令會將rules
資料夾與 Hayabusa 規則 github 儲存庫同步,從而更新規則和設定檔。
Usage: update-rules [OPTIONS]
Display Settings:
--no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
General Options:
-r, --rules Specify a custom rule directory or file (default: ./rules)
update-rules
命令範例您通常只需執行以下指令: hayabusa.exe update-rules
Hayabusa 有 5 個預先定義的輸出設定檔可在config/profiles.yaml
中使用:
minimal
standard
(預設)verbose
all-field-info
all-field-info-verbose
super-verbose
timesketch-minimal
timesketch-verbose
您可以透過編輯此文件輕鬆自訂或新增您自己的設定檔。您也可以使用set-default-profile --profile
輕鬆變更預設設定檔。使用list-profiles
命令顯示可用的設定檔及其欄位資訊。
minimal
檔輸出%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %RecordID%, %RuleTitle%, %Details%
standard
檔輸出%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %RecordID%, %RuleTitle%, %Details%, %ExtraFieldInfo%
verbose
檔輸出%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %MitreTactics%, %MitreTags%, %OtherTags%, %RecordID%, %RuleTitle%, %Details%, %ExtraFieldInfo%, %RuleFile%, %EvtxFile%
all-field-info
設定檔輸出EventData
和UserData
部分中的所有欄位資訊將與其原始欄位名稱一起輸出,而不是輸出最少的details
資訊。
%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %RecordID%, %RuleTitle%, %AllFieldInfo%, %RuleFile%, %EvtxFile%
all-field-info-verbose
設定檔輸出%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %MitreTactics%, %MitreTags%, %OtherTags%, %RecordID%, %RuleTitle%, %AllFieldInfo%, %RuleFile%, %EvtxFile%
super-verbose
檔輸出%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %RuleTitle%, %RuleAuthor%, %RuleModifiedDate%, %Status%, %RecordID%, %Details%, %ExtraFieldInfo%, %MitreTactics%, %MitreTags%, %OtherTags%, %Provider%, %RuleCreationDate%, %RuleFile%, %EvtxFile%
timesketch-minimal
輪廓輸出輸出為與匯入 Timesketch 相容的格式。
%Timestamp%, hayabusa, %RuleTitle%, %Computer%, %Channel%, %EventID%, %Level%, %MitreTactics%, %MitreTags%, %OtherTags%, %RecordID%, %Details%, %RuleFile%, %EvtxFile%
timesketch-verbose
設定檔輸出%Timestamp%, hayabusa, %RuleTitle%, %Computer%, %Channel%, %EventID%, %Level%, %MitreTactics%, %MitreTags%, %OtherTags%, %RecordID%, %Details%, %ExtraFieldInfo%, %RuleFile%, %EvtxFile%
以下基準測試是在 2018 Lenovo P51(Xeon 4 核心 CPU / 64GB RAM)上進行的,啟用了 3GB evtx 資料和 3891 條規則。 (2023/06/01)
輪廓 | 處理時間 | 輸出檔案大小 | 文件大小增加 |
---|---|---|---|
最小的 | 8分50秒 | 770MB | -30% |
標準(預設) | 9分00秒 | 1.1GB | 沒有任何 |
冗長的 | 9分10秒 | 1.3GB | +20% |
全字段資訊 | 9分3秒 | 1.2GB | +10% |
所有欄位詳細信息 | 9分10秒 | 1.3GB | +20% |
超冗長 | 9分12秒 | 1.5GB | +35% |
可使用內建輸出設定檔輸出以下資訊:
別名 | 隼鳥輸出訊息 |
---|---|
%所有欄位資訊% | 所有欄位資訊。 |
%渠道% | 日誌的名稱。 欄位。 |
%電腦% | 欄位。 |
%細節% | YML偵測規則中的details 字段,但是只有hayabusa規則有這個字段。此欄位提供有關警報或事件的額外信息,並且可以從事件日誌中的欄位中提取有用的資料。例如,使用者名稱、命令列資訊、進程資訊等…當佔位符指向不存在的欄位或存在不正確的別名對應時,將輸出為n/a (不可用)。如果未指定details 欄位(即 sigma 規則),將輸出提取./rules/config/default_details.txt 中定義的欄位的預設詳細details 訊息。您可以透過在default_details.txt 中新增要輸出的Provider Name 、 EventID 和details 資訊來新增更多預設details 訊息。當規則和default_details.txt 中都沒有定義details 欄位時,所有欄位都會輸出到details 列。 |
%額外欄位資訊% | 列印%Details%中未輸出的欄位資訊。 |
%事件ID% | 欄位。 |
%Evtx檔% | 引起警報或事件的 evtx 檔案名稱。 |
%等級% | YML偵測規則中的level 欄位。 ( informational 、 low 、 medium 、 high 、 critical ) |
%米特雷戰術% | MITRE ATT&CK 策略(例如:初始存取、橫向移動等...)。 |
%斜接標籤% | MITRE ATT&CK 組 ID、技術 ID 和軟體 ID。 |
%其他標籤% | YML 偵測規則中tags 欄位中未包含在MitreTactics 或MitreTags 中的任何關鍵字。 |
%提供者% | 欄位中的Name 屬性。 |
%記錄ID% | 欄位中的事件記錄 ID。 |
%規則作者% | YML偵測規則中的author 欄位。 |
%規則建立日期% | YML檢測規則中的date 欄位。 |
%規則檔% | 產生警報或事件的偵測規則的檔案名稱。 |
%規則修改日期% | YML檢測規則中modified 欄位。 |
%規則標題% | YML偵測規則中的title 欄位。 |
%地位% | YML偵測規則中的status 欄位。 |
%時間戳% | 預設格式為YYYY-MM-DD HH:mm:ss.sss +hh:mm 格式。事件日誌中的 欄位。預設時區將是本機時區,但您可以使用--UTC 選項將時區變更為 UTC。 |
如果需要,您也可以將這些額外的別名新增至輸出設定檔:
別名 | 隼鳥輸出訊息 |
---|---|
%渲染訊息% | WEC 轉送日誌中的 欄位。 |
%規則ID% | YML檢測規則中的id 字段。 |
注意:這些不包含在任何內建設定檔中,因此您需要手動編輯config/default_profile.yaml
檔案並新增以下行:
Message: "%RenderedMessage%"
RuleID: "%RuleID%"
您也可以定義事件鍵別名來輸出其他欄位。
為了節省空間,我們在顯示警報level
時使用以下縮寫。
crit
: critical
high
: high
med
: medium
low
: low
info
: informational
為了節省空間,我們在顯示 MITRE ATT&CK 戰術標籤時使用以下縮寫。您可以在./config/mitre_tactics.txt
設定檔中自由編輯這些縮寫。
Recon
:偵察ResDev
:資源開發InitAccess
:初始訪問Exec
:執行Persis
:堅持PrivEsc
:權限升級Evas
:防禦閃避CredAccess
:憑證訪問Disc
:發現LatMov
:橫向移動Collect
:收藏C2
:命令與控制Exfil
:滲透Impact
: 影響為了節省空間,我們在顯示 Channel 時使用以下縮寫。您可以在./rules/config/channel_abbreviations.txt
設定檔中自由編輯這些縮寫。
App
: Application
AppLocker
: Microsoft-Windows-AppLocker/*
BitsCli
: Microsoft-Windows-Bits-Client/Operational
CodeInteg
: Microsoft-Windows-CodeIntegrity/Operational
Defender
: Microsoft-Windows-Windows Defender/Operational
DHCP-Svr
: Microsoft-Windows-DHCP-Server/Operational
DNS-Svr
: DNS Server
DvrFmwk
: Microsoft-Windows-DriverFrameworks-UserMode/Operational
Exchange
: MSExchange Management
Firewall
: Microsoft-Windows-Windows Firewall With Advanced Security/Firewall
KeyMgtSvc
: Key Management Service
LDAP-Cli
: Microsoft-Windows-LDAP-Client/Debug
NTLM
Microsoft-Windows-NTLM/Operational
OpenSSH
: OpenSSH/Operational
PrintAdm
: Microsoft-Windows-PrintService/Admin
PrintOp
: Microsoft-Windows-PrintService/Operational
PwSh
: Microsoft-Windows-PowerShell/Operational
PwShClassic
: Windows PowerShell
RDP-Client
: Microsoft-Windows-TerminalServices-RDPClient/Operational
Sec
: Security
SecMitig
: Microsoft-Windows-Security-Mitigations/*
SmbCliSec
: Microsoft-Windows-SmbClient/Security
SvcBusCli
: Microsoft-ServiceBus-Client
Sys
: System
Sysmon
: Microsoft-Windows-Sysmon/Operational
TaskSch
: Microsoft-Windows-TaskScheduler/Operational
WinRM
: Microsoft-Windows-WinRM/Operational
WMI
: Microsoft-Windows-WMI-Activity/Operational
規則中使用以下縮寫以使輸出盡可能簡潔:
Acct
-> 帳戶Addr
-> 地址Auth
-> 身份驗證Cli
-> 客戶端Chan
-> 頻道Cmd
-> 命令Cnt
-> 計數Comp
-> 電腦Conn
-> 連接/已連接Creds
-> 憑證Crit
-> 嚴重Disconn
-> 斷開連接/斷開連接Dir
-> 目錄Drv
-> 驅動程式Dst
-> 目的地EID
-> 事件 IDErr
-> 錯誤Exec
->執行FW
-> 防火牆Grp
-> 組Img
-> 圖片Inj
-> 注射Krb
-> KerberosLID
-> 登入 IDMed
-> 中等Net
-> 網路Obj
-> 對象Op
-> 操作/操作Proto
-> 協議PW
-> 密碼Reconn
-> 重新連接Req
-> 請求Rsp
-> 響應Sess
-> 會話Sig
-> 簽名Susp
-> 可疑Src
-> 原始碼Svc
-> 服務Svr
->伺服器Temp
-> 臨時Term
-> 終止/終止Tkt
-> 門票Tgt
-> 目標Unkwn
-> 未知Usr
-> 用戶Perm
-> 永久燙髮Pkg
-> 包裝Priv
-> 特權Proc
-> 過程PID
-> 進程IDPGUID
-> 進程 GUID(全域唯一 ID)Ver
-> 版本進度條僅適用於多個 evtx 檔案。它將即時顯示已完成分析的 evtx 檔案的數量和百分比。
警報將根據警報level
以顏色輸出。您可以變更設定檔./config/level_color.txt
中的預設顏色,格式為level,(RGB 6-digit ColorHex)
。如果要停用顏色輸出,可以使用--no-color
選項。
每次掃描後都會顯示事件總數、命中事件數、資料縮減指標、偵測總數和唯一偵測、偵測次數最多的日期、偵測次數最多的電腦以及排名靠前的警報。
如果新增-T, --visualize-timeline
選項,事件頻率時間軸功能將顯示偵測到的事件的迷你圖頻率時間軸。注意:需要有5個以上的事件。此外,字元在預設命令提示字元或 PowerShell 提示字元下無法正確呈現,因此請使用 Windows 終端機、iTerm2 等終端機...
Hayabusa 偵測規則以類似 sigma 的 YML 格式編寫,位於rules
資料夾中。這些規則託管在 https://github.com/Yamato-Security/hayabusa-rules,因此請在那裡發送任何問題並拉取規則請求,而不是發送到主 Hayabusa 儲存庫。
請閱讀 hayabusa-rules 儲存庫自述文件以了解規則格式以及如何建立規則。
hayabusa-rules 儲存庫中的所有規則都應放置在rules
資料夾中。 informational
等級規則被視為events
,而任何具有low
和高級level
都被視為alerts
。
hayabusa 規則目錄結構分為 2 個目錄:
builtin
:可以由 Windows 內建功能產生的日誌。sysmon
:由 sysmon 產生的日誌。規則會依日誌類型進一步分為目錄(例如:安全性、系統等),並以以下格式命名:
請查看目前規則,以用作建立新規則或檢查檢測邏輯的範本。
Hayabusa 原生支援 Sigma 規則,但內部處理logsource
欄位有一個例外。為了減少誤報,西格瑪規則應該透過我們此處解釋的轉換器來運行。這將會新增正確的Channel
和EventID
,並為某些類別(如process_creation
執行欄位對應。
幾乎所有 Hayabusa 規則都與 Sigma 格式相容,因此您可以像 Sigma 規則一樣使用它們來轉換為其他 SIEM 格式。 Hayabusa 規則專為 Windows 事件日誌分析而設計,並具有以下優點:
details
字段,用於顯示僅從日誌中的有用字段獲取的附加資訊。|equalsfield
和|endswithfield
。據我們所知,hayabusa 為 sigma 規則提供了所有開源 Windows 事件日誌分析工具中最好的本機支援。
為了正確偵測 Windows 電腦上的惡意活動,您需要改進預設日誌設定。我們建立了一個單獨的專案來記錄需要啟用哪些日誌設定以及自動啟用正確設定的腳本,網址為 https://github.com/Yamato-Security/EnableWindowsLogSettings。
我們也推薦以下網站作為指導:
要建立最具取證性的證據並以最高精確度進行檢測,您需要安裝 sysmon。我們推薦以下網站和設定檔:
我們樂意接受任何形式的貢獻。拉取請求、規則建立和範例 evtx 日誌是最好的,但功能請求、通知我們錯誤等...也非常受歡迎。
至少,如果您喜歡我們的工具,請在 GitHub 上給我們一個 star 並表示您的支持!
請在此提交您發現的任何錯誤。該專案目前正在積極維護,我們很樂意修復報告的任何錯誤。
如果您發現 Hayabusa 規則有任何問題(誤報、錯誤等),請在此處將其報告至 hayabusa-rules GitHub 問題頁面。
如果您發現 Sigma 規則有任何問題(誤報、錯誤等),請在此處向上游 SigmaHQ GitHub 問題頁面報告。
Hayabusa 根據 AGPLv3 發布,所有規則均根據偵測規則許可證 (DRL) 1.1 發布。
Hayabusa 使用 MaxMind 建立的 GeoLite2 數據,可從 https://www.maxmind.com 取得。
您可以透過 Twitter @SecurityYamato 接收有關 Hayabusa、規則更新、其他 Yamato 安全工具等的最新消息...。