Releases: Yamato-Security/hayabusa
Release list
v4.0.0 - BlackHat Arsenal USA Release
Anti-Virus False Positives
Warning: You will get false positives from certain anti-virus programs like Windows Defender and Web Browsers saying they have detected malicious files. They are detecting on Sigma .yml files that are not executable and just contain certain signatures from malware. They are not malicious. If you are running Hayabusa for live analysis and do not want to cause any anti-virus alerts, be sure to use the live response packages that use encoded Sigma rules.
4.0.0 [2026/07/29] - Black Hat Arsenal USA Release
Enhancements:
- Combined the
csv-timelineandjson-timelinecommands into a singledfir-timelinecommand whose output format is chosen with-t, --output-type: unspecified or-t csvoutputs CSV (default),-t jsonoutputs JSON, and-t jsonloutputs JSONL. The value is case-insensitive (e.g.-t JSONL). The-tshorthand, previously--threads, now belongs to--output-type(--threadskeeps its long form). The CSV-only options-M, --multiline,-S, --tab-separator, and-R, --remove-duplicate-dataare grouped under a new "CSV Output" help category and now error if used with a non-CSV-t. The oldjson-timeline-L, --JSONL-outputflag is removed (use-t jsonl). (#1906) (@YamatoSecurity) - Standardized all command-line option long names to lowercase for consistency:
--GeoIP→--geo-ip,--HTML-report→--html-report,--UTC→--utc,--ISO-8601→--iso-8601,--RFC-2822/--RFC-3339→--rfc-2822/--rfc-3339,--US-time/--US-military-time/--European-time→lowercase,--JSON-input/--JSON-output→--json-input/--json-output, and--EID-filter→--eid-filter(--GeoIPwas the only long name that joined words by capitalization, so it also gains a hyphen). Short flags are unchanged. The help for-T, --visualize-timeline,-X, --remove-duplicate-detections, and-R, --remove-duplicate-datanow notes that they require event sorting (-s, --sort). (#1909) (@YamatoSecurity) - Added a Linux aarch64 (ARM64) musl release binary (
hayabusa-<ver>-lin-aarch64-musl), built with a proper aarch64 musl cross toolchain so it runs correctly. (The previously reported failure was from linking a musl target with the glibcaarch64-linux-gnu-gcc, which produced a binary killed at startup.) (#1332) (@YamatoSecurity) - The
logon-summarycommand now also counts RDP session events: Security4778/4779(session reconnect/disconnect, which carry the RDP client's workstation name and IP) and the Terminal Services operational events RemoteConnectionManager/Operational1149(network-level authentication) and LocalSessionManager/Operational25(session reconnect) — on top of the existing LocalSessionManager21and Gateway302. This keeps RDP logons summarized even when the matching Security4624has been flooded out of the log, and surfaces the source client hostname for reconnect/disconnect. (#1893) (@YamatoSecurity) - Added PowerShell event IDs
4100/4102(Microsoft-Windows-PowerShell/Operational and PowerShellCore/Operational) and classic403/600(Windows PowerShell) to theextract-base64command.4100/4102scan theContextInfo(Host Application = powershell -encodedcommand ...) andPayloadfields;403/600scan theEventData.Datadetail blob like the existing400. (#1889) (@YamatoSecurity) - Added
First Logon/Last Logoncolumns to thelogon-summarysuccessful-logons table andFirst Attempt/Last Attemptcolumns to the failed-logons table, showing the time range over which each account/source combination logged on (or attempted to). (#1883) (@YamatoSecurity)
Bug Fixes:
- Fixed
eid-metrics,logon-summaryandpivot-keywords-listproducing differently ordered output on every run, so two scans of the same logs could not be diffed.eid-metricsandlogon-summarysorted only by count, leaving equal-count rows inHashMapiteration order, which is reseeded per process; ties are now broken by channel and event ID, and by the logon grouping key.pivot-keywords-listwrote each category's keywords inIndexSetinsertion order, which varies because the values are inserted from the per-record parallel tasks; they are now sorted. Only the ordering changes -- the rows and keywords themselves are the same. (#1912) (@YamatoSecurity) - Fixed a panic in the results-summary tables when a top-5 rule title or author name contained multi-byte UTF-8 (e.g. a Japanese rule title). The titles/authors were truncated with a raw byte slice (
&title[..32],&author[0..24]), which panics when the byte index falls inside a multi-byte character — so with piped/redirected output (where the width defaults such that titles over 32 bytes are truncated) the whole run crashed after the scan finished, losing the summary. Truncation is now done at character boundaries, and the width limits use saturating subtraction so very narrow terminals no longer underflow. (#1904) (@YamatoSecurity) - Fixed
ComplexDataevent fields (e.g. theIdleState/PerfStatevalues in Kernel-Processor-Power EID26) not being extracted correctly: the twoNameattributes collapsed into aNamearray and the field values were dropped entirely. They are now keyed by theirNameattribute like normal<Data>fields (fixed in the bundledhayabusa-evtx, bumped to0.9.10). (#1520) (@YamatoSecurity) - Fixed
-c(custom rules config directory) being ignored bypivot-keywords-list, which always loadedpivot_keywords.txtfrom the bundled config next to the executable. It now resolvespivot_keywords.txtthrough the-cdirectory (falling back to the bundled copy), the same way every other config file is loaded. (#1902) (@YamatoSecurity) - Fixed the
read_jsonl_to_value/read_json_to_valuefile-open error printing the literal placeholder{path}instead of the file path (the error string was a plain string literal rather than aformat!). (#1897) (@YamatoSecurity) - Fixed a
u16underflow in theeid-metricstable's "Event" column width on terminals narrower than 55 columns:terminal_width - 55underflowed before the 45-character floor could apply, panicking in overflow-checked builds and wrapping to a huge value in release builds (leaving the column effectively uncapped). It now uses saturating subtraction. (#1897) (@YamatoSecurity) - Fixed Splunk-JSON timestamps carrying an explicit UTC offset (e.g.
+09:00) being parsed as aNaiveDateTime, which discards the offset and stored the local wall-clock time as if it were UTC — skewing thelog-metricsFirst/Last Timestamp columns as well as theeid-metrics/logon-summarytime ranges (EventMetrics::stats_time_cntandparse_evtx_datetime). The timeline aggregators now share one offset-aware parser (utils::parse_evtx_timestamp) that applies the offset. (#1897) (@YamatoSecurity) - Fixed
-G(GeoIP enrichment) with a custom rules config directory (-c) ignoring that directory'sgeoip_field_mapping.yaml: the lookup used the extensionless namegeoip_field_mapping, which never matched the real file, so it always fell back to the default bundled mapping. (#1897) (@YamatoSecurity) - Fixed
count(field)correlation rules producing a false-positive alert spanning longer than the rule'stimeframe. Injudge_timeframe's sliding window, the branch handling a window that did not satisfy the count condition did an uncheckedadd_data(right)before dropping the left edge, pullingrecords[right]— already known to be outside the timeframe from the window's left edge — into the next window; when that record's field value was new it could push the distinct-value count over the threshold across a span longer than the timeframe. The slide now only drops the left edge and lets the inner loop re-extendrightwith the timeframe check, so no record beyond the timeframe is counted. Barecount()was unaffected. (#1896) (@YamatoSecurity) - Fixed narrow-terminal issues in the results summary:
_print_timeline_histdid uncheckedusizesubtraction that could underflow on a very narrow terminal (huge allocation / hang) — it now skips the histogram when there is no room and usessaturating_sub; the rule-authors table computed its row count with a hard-codedis_multiple_of(4)instead of the actual column count (uneven tables at most widths) — nowauthors_num.div_ceil(table_column_num); and the rule-authors table now falls back to a single column on very narrow terminals (≤72 chars) instead of overflowing/wrapping. Timeline output is unaffected. (#1858) (@YamatoSecurity) - Fixed the ungrammatical "Successed submodule update" message printed after
update-rules(now "Submodule update succeeded"). (#1840) (@YamatoSecurity) - Fixed
temporal/temporal_orderedcorrelations not enforcing the rule'sgroup-byvalue when combining referenced-rule matches. Each referenced rule was aggregated per group-by value, but matches from different groups (e.g. different Computers) could still be correlated together as long as their timestamps fit the timeframe, producing false-positive alerts. Referenced-rule matches are now required to share the base match's group-by value. (#1841) (@YamatoSecurity) - Fixed
temporal_orderedcorrelations not enforcing event order beyond the first referenced rule: a no-op assignment (last_base = base) left every subsequent rule checked only against the base event's window, so out-of-order attack-chain events (e.g. A→C→B for a rule requiring A→B→C) were still matched. Each referenced rule is now required to match at or after the previous rule's matched event while staying within the timeframe window anchored at the base event. (#1841) (@YamatoSecurity)
Refactoring:
- Updated all Rust crate dependencies to their latest versions, including the bundled
hayabusa-evtxcrate to0.9.11(hayabusa-evtx#93). That release is a dependency refresh with no.rschanges, so evtx parsing behavior is unchanged: `dfir-timeli...
v3.10.0 - Happy Independence Day Release
Anti-Virus False Positives
Warning: You will get false positives from certain anti-virus programs like Windows Defender and Web Browsers saying they have detected malicious files. They are detecting on Sigma .yml files that are not executable and just contain certain signatures from malware. They are not malicious. If you are running Hayabusa for live analysis and do not want to cause any anti-virus alerts, be sure to use the live response packages that use encoded Sigma rules.
3.10.0 [2026/07/04] - Independence Day Release
New Features:
- Added support for the
|neqand|fieldref|neqfield modifiers from the Sigma 2.1 specification.|neqnegates a comparison and can be combined with other modifiers (|contains|neq,|startswith|neq,|endswith|neq,|fieldref|neq, ...). (#1684) (@YamatoSecurity) - Added unique and total alert count to MITRE ATT&CK tactics found. (#1753) (@fukusuket)
Bug Fixes:
- MITRE ATT&CK Tactics were not line-breaking properly in HTML reports (#1751) (@fukusuket)
- Fixed the scan progress bar not redrawing in place (each update was printed on a new line) during large scans, caused by literal carriage returns (
\r\n) in the progress bar template. (#1760) (@YamatoSecurity) - Fixed a typo (
infomational→informational) in the pivot keyword list level exclusion that preventedinformational-level records from being excluded, so their field values polluted the pivot keyword lists. (#1804) (@YamatoSecurity) - Fixed a Markdown-injection issue in the HTML report: user-supplied values (e.g. computer names) were HTML-escaped but not Markdown-escaped, so a value like
[x](javascript:alert(1))could render as a clickablejavascript:link. Markdown metacharacters in user values are now escaped as well. (#1806) (@YamatoSecurity) - The exemption that keeps the null-UUID test rule out of the excluded/noisy rule counts compared the exclude-list file path instead of the rule ID, so it never applied and test rules inflated the
Excluded rulescount. (#1821) (@YamatoSecurity) - Unique detection percentages in the Results Summary (and the HTML report) were mirrored across levels: the percentage was computed with the reversed loop index, so e.g. the
criticalrow showedinformational's percentage and vice versa (onlymediumwas correct). (#1812) (@YamatoSecurity) logon-summary: the Target Domain column was always-for RDS Gateway logons (EID 302 inMicrosoft-Windows-TerminalServices-Gateway/Operational) because thedst_domainlookup used the misspelled event key aliasRdsGtwUserNameinstead ofRdsGtwUsername, so the domain inDOMAIN\uservalues was silently dropped. (#1809) (@YamatoSecurity)- The GeoIP function treated every public IPv6 address as
Privateand never performed a lookup for them, because the IPv6 private range list included2000::/3(the entire global unicast space). Removed it (along with the redundantFD00::/8, a subset ofFC00::/7) so that public IPv6 addresses are now enriched with ASN/Country/City. (#1819) (@YamatoSecurity) - Wildcard field patterns that fall back to regex matching (patterns containing
?, a mid-string*, or non-ASCII text together with*) were compiled to an unanchored regex and evaluated withRegex::is_match()(a substring search), so they matched any value that merely contained the pattern instead of the whole field value (e.g.Channel: Sec?ritymatchedMySec1rityLog, andnet*usermatchedmynetXuserZ). These wildcard regexes are now anchored to the full value, matching Sigma full-value semantics and Hayabusa's own fast-match paths (Exact/StartsWith/EndsWith). Keyword (grep) searches and|reregexes remain intentionally unanchored. (#1826) (@Shirofune-Security) - The HTML report's General Overview section was missing the analyzed event file count, total file size, selected detection rule set, and excluded tags. These lines were registered under a misspelled section key (
General Overview #{general_overview}with#outside the braces, instead of{#general_overview}), which is not one of the sections the renderer emits, so the data was silently dropped. Fixed the key (now sourced from shared section-name constants so it cannot drift again) along with the mislabeled total-file-size and rule-set lines on it. (#1827) (@YamatoSecurity) -X/--remove-duplicate-detectionsdid not remove the second of two identical detections when the copies were the first records of a timestamp group.get_duplicate_indices()never added the first record of each group to its comparison set (both the initial-record and timestamp-boundary branches skipped insertion), so the second copy was treated as unique and only the third and later copies were removed, leaving duplicate rows incsv-timeline/json-timelineoutput and inflating detection counts. Fixed so exactly one of N identical detections in a timestamp group survives. (#1828) (@YamatoSecurity)read_encoded_filesilently discarded I/O read errors (returning a truncated or empty rule set) and panicked via.expect()on invalid UTF-8 when loading encoded rules (encoded_rules.yml); both are now surfaced as errors through itsResult. (#1834) (@YamatoSecurity)
Other:
- Translated all remaining Japanese code comments to English, cleaned up and added many code comments for readability, and fixed misspelled internal identifiers. Comments and identifiers only; no behavior changes. (#1808) (@YamatoSecurity)
- Renamed 76 cryptic, misleading, or hayabusa-specific variable, parameter, and struct-field names in
src/(e.g.datas→records,con_cal→joined_value,name_2_node→name_to_node,hlch→horizontal_line_char,rulepath→rule_path,ext_field→output_fields, and a misnamedor_node→all_nodethat actually held an AND-semanticsAllSelectionNode) to clearer, idiomatic Rust names for readability. Internal identifiers only; no behavior or output changes. (#1830) (@YamatoSecurity) - Updated the
hayabusa-evtxcrate to0.9.9, bumping all of its dependencies (notablythiserror1→2 andcriterion0.5→0.8) to their latest versions. No behavior change. (#1835) (@YamatoSecurity) - Removed two pieces of dead code surfaced during review: an always-empty
addition_headerbranch in the JSON string escaper, and a never-taken branch plus a per-unitVecallocation in the relative time-offset parser. No behavior change. (#1834) (@YamatoSecurity)
新機能:
- Sigma 2.1仕様の
|neqおよび|fieldref|neqフィールド修飾子のサポートを追加した。|neqは比較を否定するもので、他の修飾子(|contains|neq、|startswith|neq、|endswith|neq、|fieldref|neqなど)と組み合わせて使用できる。 (#1684) (@YamatoSecurity) - 検出されたMITRE ATT&CK戦術について、一意の件数と合計件数を追加した。 (#1753) (@fukusuket)
バグ修正:
- MITRE ATT&CK Tacticsの項目が、HTMLレポートで適切に改行されていなかった。 (#1751) (@fukusuket)
- 大量のファイルをスキャンする際に、スキャンのプログレスバーがその場で再描画されず、更新ごとに新しい行に表示される問題を修正した。プログレスバーのテンプレートにリテラルの改行コード(
\r\n)が含まれていたことが原因。 (#1760) (@YamatoSecurity) - ピボットキーワードリスト機能のレベル除外判定にあったタイポ(
infomational→informational)を修正した。この誤字によりinformationalレベルのレコードが除外されず、そのフィールド値がピボットキーワードリストに混入していた。 (#1804) (@YamatoSecurity) - HTMLレポートのMarkdownインジェクションの問題を修正した。ユーザー由来の値(コンピュータ名など)はHTMLエスケープされていたがMarkdownエスケープはされておらず、
[x](javascript:alert(1))のような値がクリック可能なjavascript:リンクとして描画される可能性があった。ユーザー値内のMarkdownメタ文字もエスケープするようにした。 (#1806) (@YamatoSecurity) - null-UUIDのテストルールを除外ルール・ノイジールールの件数から除くための判定が、ルールIDではなく除外リストファイルのパスと比較していたため機能しておらず、テストルールが
Excluded rulesの件数を水増ししていた問題を修正した。 (#1821) (@YamatoSecurity) - Results Summary(およびHTMLレポート)のユニーク検知のパーセンテージがレベル間で鏡写しに入れ替わっていた問題を修正した。逆順ループのインデックスでパーセンテージを計算していたため、例えば
criticalの行にinformationalのパーセンテージが表示されていた(正しかったのは中央のmediumのみ)。 (#1812) (@YamatoSecurity) logon-summaryコマンドで、RDSゲートウェイのログオン(Microsoft-Windows-TerminalServices-Gateway/OperationalのEID 302)のTarget Domain列が常に-になっていた問題を修正した。dst_domainの抽出がイベントキーエイリアスRdsGtwUsernameをスペルミスのRdsGtwUserNameで参照していたため、DOMAIN\user形式の値からドメインが取得されていなかった。 (#1809) (@YamatoSecurity)- GeoIP機能がすべてのパブリックIPv6アドレスを
Privateとして扱い、GeoIP検索を行っていなかった問題を修正した。IPv6のプライベート範囲リストにグローバルユニキャスト空間全体である2000::/3が含まれていたことが原因。あわせて冗長なFD00::/8(FC00::/7に包含される)も削除し、パブリックIPv6アドレスにASN・国・都市の情報が付与されるようにした。 (#1819) (@YamatoSecurity) - 正規表現マッチにフォールバックするワイルドカードのフィールドパターン(
?を含む、途中に*がある、または非ASCII文字と*を含むパターン)が、アンカーなしの正規表現にコンパイルされRegex::is_match()(部分一致検索)で照合されていた問題を修正した。このためフィールド値全体ではなくパターンを単に「含む」値にも一致し、誤検知が発生していた(例:Channel: Sec?rityがMySec1rityLogに、net*userがmynetXuserZに一致)。これらのワイルドカード正規表現を値全体にアンカーするようにし、Sigmaの完全一致セマンティクスおよびHayabusaの高速マッチ経路(Exact/StartsWith/EndsWith)と整合させた。キーワード(grep)検索と|re正規表現は意図的にアンカーなしのままとした。 (#1826) (@Shirofune-Security) - HTMLレポートのGeneral Overviewセクションから、解析したイベントファイル数・合計ファイルサイズ・選択した検知ルールセット・除外タグの各行が抜け落ちていた問題を修正した。これらがスペルミスのセクションキー(
{#general_overview}ではなく#が波括弧の外にあるGeneral Overview #{general_overview})で登録されており、レンダラーが描画しないキーだったため、データが黙って破棄されていた。キー(今後ずれないよう共通のセクション名定数に統一)と、あわせて合計ファイルサイズ行・ルールセット行のラベルの誤りを修正した。 (#1827) (@YamatoSecurity) -X/--remove-duplicate-detectionsで、重複した検知の2件目が、それらがタイムスタンプグループの先頭レコードだった場合に除去されない問題を修正した。get_duplicate_indices()が各グループの先頭レコードを比較用のセットに追加していなかった(初回レコードの分岐とタイムスタンプ境界の分岐の両方で挿入をスキップしていた)ため、2件目が一意とみなされ、3件目以降しか除去されていなかった。この結果、csv-timeline/json-timelineの出力に重複行が残り、検知件数が水増しされていた。タイムスタンプグループ内の同一なN件の検知のうち、ちょうど1件だけが残るように修正した。 (#1828) (@YamatoSecurity)read_encoded_fileが、エンコード済みルール(encoded_rules.yml)の読み込み時にI/O読み込みエラーを黙って無視し(切り詰められた・空のルールセットを返す)、不正なUTF-8に対して.expect()でパニックしていた問題を修正した。どちらもResultを通じてエラーとして返すようにした。 (#1834) (@YamatoSecurity)
その他:
- 可読性向上のため、
src/内の分かりにくい・誤解を招く・Hayabusa固有の変数・引数・構造体フィールド名76個を、より明確で慣用的なRustの名前にリネームした(例:datas→records、con_cal→joined_value、name_2_node→name_to_node、hlch→horizontal_line_char、rulepath→rule_path、ext_field→output_fields、および実際にはAND条件のAllSelectionNodeを保持していた誤名のor_node→all_node)。内部識別子のみの変更で、挙動・出力に変化はない。 (#1830) (@YamatoSecurity) hayabusa-evtxクレートを0.9.9に更新し、その...
v3.9.0 - Showa Day Release
Anti-Virus False Positives
Warning: You will get false positives from certain anti-virus programs like Windows Defender and Web Browsers saying they have detected malicious files. They are detecting on Sigma .yml files that are not executable and just contain certain signatures from malware. They are not malicious. If you are running Hayabusa for live analysis and do not want to cause any anti-virus alerts, be sure to use the live response packages that use encoded Sigma rules.
3.9.0 [2026/04/29] - Showa Day Release
Enchancements:
Support for MITRE ATT&CK v19. (@fukusuket)
Other:
Added unit tests. (#1746) (@Fuzzdkk)
改善:
MITRE ATT&CK v19に対応した。(@fukusuket)
その他:
v3.8.1 - Spring Hayfever Release
Anti-Virus False Positives
Warning: You will get false positives from certain anti-virus programs like Windows Defender and Web Browsers saying they have detected malicious files. They are detecting on Sigma .yml files that are not executable and just contain certain signatures from malware. They are not malicious. If you are running Hayabusa for live analysis and do not want to cause any anti-virus alerts, be sure to use the live response packages that use encoded Sigma rules.
3.8.1 [2026/02/24] - Spring Hayfever Release
Bug Fixes:
Fixed multiple progress bars issue. (#1740) (@fukusuket)
アンチウィルスの過検知について
注意: ウェブブラウザやWindows Defenderのような一部のアンチウイルス製品が、悪意のあるファイルを検出したと誤検知を出すことがあります。これは実行可能ではない Sigmaの.ymlファイル内にマルウェアのシグネチャに該当する記述が含まれているためであって、当該ファイル自体は悪意のあるものではありません。Hayabusa をライブ調査で実行していてアンチウイルスのアラートを出したくない場合は、Sigmaルールをエンコードしたライブレスポンス用のパッケージを必ず使用してください。
バグ修正:
複数のプログレスバーの問題を修正した。 (#1740) (@fukusuket)
v3.8.0 - Winter Release
Anti-Virus False Positives
Warning: You will get false positives from certain anti-virus programs like Windows Defender and Web Browsers saying they have detected malicious files. They are detecting on Sigma .yml files that are not executable and just contain certain signatures from malware. They are not malicious. If you are running Hayabusa for live analysis and do not want to cause any anti-virus alerts, be sure to use the live response packages that use encoded Sigma rules.
3.8.0 [2026/01/31] - Winter Release
Bug Fixes:
- Fixed MaxMind compile error. (#1722) (@fukusuket)
- When
-GeoIPis specified, the GeoIP fields were outputed in both theDetailsandExtraFieldInfoin the JSON timelines. (#1724) (@fukusuket) - Fixed a possible panic with corrupted logs. (#1732) (@fukusuket)
Vulnerability Fixes:
- Fixed an XSS vulnerability in the HTML report if a user scans JSON exported logs (not the standard
.evtxfiles) and an attacker has the ability to inject malicious Javascript in theComputerfield of those logs. (@fukusuket)- Many thanks to the Mobasi team for finding and reporting this!
アンチウィルスの過検知
注意: ウェブブラウザやWindows Defenderのような一部のアンチウイルス製品が、悪意のあるファイルを検出したと誤検知を出すことがあります。これは実行可能ではない Sigmaの.ymlファイル内にマルウェアのシグネチャに該当する記述が含まれているためであって、当該ファイル自体は悪意のあるものではありません。Hayabusa をライブ調査で実行していてアンチウイルスのアラートを出したくない場合は、Sigmaルールをエンコードしたライブレスポンス用のパッケージを必ず使用してください。
3.8.0 [2026/01/31] - Winter Release
バグ修正:
- MaxMindのコンパイルエラーを直した。 (#1722) (@fukusuket)
-GeoIPが指定された場合、GeoIPフィールドはJSONタイムラインのDetailsとExtraFieldInfoの両方に出力されていた。 (#1724) (@fukusuket)- 破損したログによるパニックの可能性を修正した。 (#1732) (@fukusuket)
脆弱性修正:
- HTMLレポートにおけるXSS脆弱性を修正した。ユーザが(標準の
.evtxファイルではなく)JSON形式でエクスポートされたログをスキャンし、攻撃者がそれらのログのComputerフィールドに悪意のあるJavaScriptを注入できる場合に発生する問題。 (@fukusuket)- この問題を発見し報告してくれたMobasiチームに深く感謝します!
v3.7.0 - CODE BLUE Release
Anti-Virus False Positives
Warning: You will get false positives from certain anti-virus programs like Windows Defender and Web Browsers saying they have detected malicious files. They are detecting on Sigma .yml files that are not executable and just contain certain signatures from malware. They are not malicious. If you are running Hayabusa for live analysis and do not want to cause any anti-virus alerts, be sure to use the live response packages that use encoded Sigma rules.
3.7.0 [2025/11/15] - CODE BLUE Release
New Features:
- Added a
-V, --validate-checksumsoption to check chunk header checksums in thecsv-timelineandjson-timelinecommands. (#1709) (@fukusuket)
Enhancements:
- Added four new command-line options
--include-channel,--exclude-channel,--include-filename, and--exclude-filenameto thelog-metricscommand. (#1715) (@fukusuket) - Updated the Timesketch install readme to support Timesketch on ARM-based Macs. (#1719) (@fukusuket)
Bug Fixes:
- When
validate_checksumis disabled (default), an infinite loop and memory leak when the data_size of an event is set to zero was fixed. (omerbenamram/evtx#264) -t, --threadswas not working in thecomputer-metricsandsearchcommands. (#1563) (@hach1yon)computer-metricswas giving incorrect results when logs from multiple comuters were scanned. (#1713) (@fukusuket)
アンチウィルスの過検知
注意: ウェブブラウザやWindows Defenderのような一部のアンチウイルス製品が、悪意のあるファイルを検出したと誤検知を出すことがあります。これは実行可能ではない Sigmaの.ymlファイル内にマルウェアのシグネチャに該当する記述が含まれているためであって、当該ファイル自体は悪意のあるものではありません。Hayabusa をライブ調査で実行していてアンチウイルスのアラートを出したくない場合は、Sigmaルールをエンコードしたライブレスポンス用のパッケージを必ず使用してください。
3.7.0 [2025/11/15] - CODE BLUE Release
新機能:
csv-timelineおよびjson-timelineコマンドでチャンクヘッダーのチェックサムを確認する-V, --validate-checksumsオプションを追加した。 (#1709) (@fukusuket)
改善:
log-metricsコマンドに、4つの新しいコマンドラインオプション--include-channel、--exclude-channel、--include-filename、--exclude-filenameを追加した。 (#1715) (@fukusuket)- Timesketchのインストール用Readmeを更新し、ARMベースのMacでのTimesketchサポートを追加した。 (#1719) (@fukusuket)
バグ修正:
validate_checksumが無効(デフォルト設定)になっている場合、イベントのdata_sizeがゼロに設定されていると、無限ループとメモリリークが発生する問題が修正された。 (omerbenamram/evtx#264)-t, --threadsオプションがcomputer-metricsおよびsearchコマンドで機能していなかった。(#1563) (@hach1yon)- 複数のコンピュータからのログをスキャンした際、
log-metricsが誤った結果を返していた。 (#1713) (@fukusuket)
v3.6.0 - Nezamezuki Release
Anti-Virus False Positives
Warning: You will get false positives from certain anti-virus programs like Windows Defender saying they have detected malicious files. They are detecting on Sigma .yml files that are not executable and just contain certain signatures from malware. They are not malicious. If you are running Hayabusa for live analysis and do not want to cause any anti-virus alerts, be sure to use the live response packages that use encoded Sigma rules.
3.6.0 [2025/09/25] - Nezamezuki Release
Note: "Nezame-zuki" (寝覚月) means the "month where you easily wake up early" (due to the cool autumn weather starting in September)
Enhancements:
- Event and record IDs with multiple possibilities due to correlation rules are now outputted as empty strings instead of
-for easier parsing. (#1694) (@fukusuket) - We now output first and last detection timestamps instead of just the first and last timestamps found in the
Results Summaryof thecsv-timelineandjson-timelinecommands. (#1688) (@fukusuket) - The guide on how to import Hayabusa JSONL results into SOF-ELK (Elastic Stack) was updated. (#1091) (@YamatoSecurity)
- Output an empty string instead of
-in the rule's modified date if it is not defined to make importing into a SIEM easier. (#1702) (@YamatoSecurity) - Empty fields in rule metadata like
RuleModifiedDate, etc... are not outputted to JSON if they are empty in order to make parsing easier and decrease file size. (#1702) (@fukusuket)
Bug Fixes:
-T, --visualize-timelinewould output incorrect results if-s, --sortwas not specified so we now require-swhen-Tis used. (#1690) (@YamatoSecurity)- Records outside the range specified by the time range options (
--timeline-start/--timeline-end) were being displayed because we were filtering with the timestamps in the record headers instead of the timestamps in the records themselves. (#1689) (@fukusuket) - GeoIP lookup was not working with
json-timeline. (#1693) (@fukusuket) - The
searchcommand would not consistently abbreviate fields. (#1697) (@fukusuket)
アンチウィルスの過検知
注意: Windows Defenderのような一部のアンチウイルス製品が、悪意のあるファイルを検出したと誤検知を出すことがあります。これは実行可能ではない Sigmaの.ymlファイル内にマルウェアのシグネチャに該当する記述が含まれているためであって、当該ファイル自体は悪意のあるものではありません。Hayabusa をライブ調査で実行していてアンチウイルスのアラートを出したくない場合は、Sigmaルールをエンコードしたライブレスポンス用のパッケージを必ず使用してください。
3.6.0 [2025/09/25] - 寝覚月リリース
改善:
- 相関ルールにより複数の可能性を持つイベントIDおよびレコードIDは、パースしやすくするため、
-ではなく空文字列として出力されるようになった。 (#1694) (@fukusuket) csv-timelineおよびjson-timelineコマンドのResults Summaryに表示される最初のタイムスタンプと最後のタイムスタンプの後に、最初と最後の検出のタイムスタンプも出力するようにした。 (#1688) (@fukusuket)- SOF-ELK(Elastic Stack)へのHayabusa JSONL結果のインポート方法に関するガイドが更新された。 (#1091) (@YamatoSecurity)
- ルールの変更日時が定義されていない場合、SIEMへのインポートを容易にするため、
-の代わりに空文字列を出力する。 (#1702) (@YamatoSecurity) - ルールメタデータ内の
RuleModifiedDate等の空フィールドは、パースを容易にしファイルサイズを削減するため、JSONに出力されない。 (#1702) (@fukusuket)
バグ修正:
-T, --visualize-timelineは、-s, --sortが指定されていない場合、正しくない結果を出力するため、-Tを使用する際には-sの指定を必須とした。 (#1690) (@YamatoSecurity)- レコード自体のタイムスタンプではなく、レコードヘッダー内のタイムスタンプでフィルタリングしていたため、タイムレンジオプション(--timeline-start / --timeline-end)で指定した範囲外のレコードが表示されていた。 (#1689) (@fukusuket)
- GeoIP検索が
json-timelineで機能していなかった。 (#1693) (@fukusuket) searchコマンドにおける省略形処理は一貫していなかった。(#1697) (@fukusuket)
v3.5.0 - Obon Release
3.5.0 [2025/08/16] - Obon Release
Enhancements:
- Hayabusa now supports the
base64field modifier. (#1677) (@fukusuket)
改善:*
base64フィールド修飾子に対応した。 (#1677) (@fukusuket)
v3.4.0 - Black Hat Arsenal USA 2025 Release
3.4.0 [2025/08/01] - Black Hat Arsenal USA 2025 Release
Enhancements:
- Field names are now abbreviated in the
searchcommand. You can disable with-b, --disable-abbreviations. (#1627) (@hitenkoku) - 32-bit version of Hayabusa will now also run on 64-bit OSes. (#1665) (@akkuman)
- We now put a return character after the last line in JSON/L files so that filebeat will not miss the last event. (#1666) (@fukusuket)
Bug Fixes:
- Levels would be abbreviated even when
--disable-abbreviationswas enabled. (#1672) (@fukusuket)
改善:
searchコマンドでフィールド名が省略されるようになった。-b, --disable-abbreviationsで無効にできる。 (#1627) (@hitenkoku)- 32ビット版のHayabusaが64ビットOSでも動作するようになった。 (#1665) (@akkuman)
- Filebeatが最後のイベントを見逃さないように、JSON/Lファイルの最終行の後にリターン文字を置くようにした。 (#1666) (@fukusuket)
バグ修正:
- レベルは、
--disable-abbreviationsオプションが有効であっても省略されていた。(#1672) (@fukusuket)
v3.3.0 - AUSCERT/SINCON Release
3.3.0 [2025/05/22] - AUSCERT/SINCON Release
Enhancements:
- Now output file size in base 1024 (Ex:
KiB,MiB,GiB). (#1648) (@fukusuket) - Improved the uptime calculation in the
computer-metricscommand. (#1656) (@fukusuket)
Bug Fixes:
- The
computer-metricscommand was not working with the Windows live response package. (#1654) (@fukusuket) ruletypefield was returned to being an optional field. (#1660) (@fukusuket)
改善:
- ファイルサイズを1024ベースで出力するようにした。(例:
KiB,MiB,GiB等) (#1648) (@fukusuket) computer-metricsコマンドのアップタイムの計算を改善した。 (#1656) (@fukusuket)
バグ修正:
- Windowsのライブレスポンスパッケージでは、
computer-metricsコマンドが正しく動作しなかった。 (#1654) (@fukusuket) ruletypeフィールドは任意フィールドに戻された。 (#1660) (@fukusuket)