github Yamato-Security/hayabusa v4.1.0
v4.1.0 - Suzumushi Release

4 hours ago

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.1.0 [2026/09/13] - Suzumushi Release

New Features:

  • Added a sort-csv command that post-processes a Hayabusa CSV: it keeps the header, sorts the rows by the Timestamp column, and removes duplicate detections (comparing every column except EvtxFile, so the same event collected from overlapping/backup .evtx files collapses to one entry). Takes a single file with -f, --file or a whole directory of CSVs with -d, --directory (handy for CSVs collected from many endpoints), and writes to -o, --output (or stdout), with -C, --clobber to overwrite. This does in post-processing what --low-memory-mode can't do during the scan. (#1295) (@ChrisJr404)

Enhancements:

  • Added embedded version information (VERSIONINFO) to Windows executables, including the product name, file description, company name, copyright, and original filename. File and product versions are generated automatically from the package version in Cargo.toml, and the release workflow verifies the metadata before packaging. (#1926) (@YamatoSecurity)
  • Added the -G, --geo-ip option to the logon-summary command, which appends Source ASN, Source Country and Source City columns for the source IP address of each summarized logon. (#1920) (@fukusuket)

Bug Fixes:

  • Fixed the -T, --visualize-timeline histogram printing its axis markers in UTC regardless of the selected time format, so they disagreed with every other timestamp in the same output by the host's UTC offset -- an axis reading 2026-05-06 12:49:03 sat about ten lines above First timestamp: 2026-05-06 15:49:03.364 +03:00 in the same summary, with nothing on screen saying which of the two was UTC. calc_statistic_info collected raw UTC epoch seconds, and krapslog renders each marker with DateTime::from_timestamp (always UTC) and strips the trailing " UTC", so the markers came out as unlabelled UTC; the helper that used to add the offset before the value reached krapslog lost its last caller in February 2024 and has been dead code since. The offset is applied again, now taken at the instant being converted rather than at the Unix epoch (the old helper read Local.timestamp_opt(0, 0), i.e. the 1970 offset, which is wrong for any zone that observes DST or has changed its rules since). It is applied to the axis markers alone, where they are rendered: krapslog picks its markers by index, but bins the sparkline by value, so shifting the collected timestamps themselves would let a DST fall-back merge two distinct hours into one bin and a spring-forward stretch the drawn duration by an hour. format_time and the histogram each spelled out the "is this output UTC?" condition separately and now share TimeFormatOptions::is_utc_output, so a future always-UTC format cannot leave them disagreeing again. Since the markers carry no offset of their own, the histogram title now names the zone: Detection Frequency Timeline (local time), or (UTC) under -U/--iso-8601. (#1914) (@kotru21)

Other:

  • Refreshed Rust crate dependencies and updated the bundled hayabusa-evtx crate to 0.9.12 (hayabusa-evtx#94), which includes quick-xml 0.42 compatibility changes. (@YamatoSecurity)

改善:

  • csv-timeline コマンドと json-timeline コマンドを統合し、単一の dfir-timeline コマンドにしました。出力形式は -t, --output-type で指定します。指定なしまたは -t csv で CSV 出力(デフォルト)、-t json で JSON 出力、-t jsonl で JSONL 出力となります。値の大文字・小文字は区別されません(例: -t JSONL)。これまで --threads の短縮形だった -t--output-type に割り当てられました(--threads は長い形式のまま使用できます)。CSV 専用のオプションである -M, --multiline-S, --tab-separator-R, --remove-duplicate-data は、ヘルプ内の新しい「CSV Output」カテゴリにまとめられ、CSV 以外の -t と併用した場合はエラーになるようになりました。旧 json-timeline-L, --JSONL-output フラグは廃止されました(代わりに -t jsonl をご利用ください)。(#1906) (@YamatoSecurity)
  • Linux aarch64(ARM64)の musl リリースバイナリ(hayabusa-<ver>-lin-aarch64-musl)を追加した。正しく動作するよう、適切な aarch64 musl クロスツールチェインでビルドしている。(これまで報告されていた実行失敗は、musl ターゲットを glibc の aarch64-linux-gnu-gcc でリンクしていたためで、起動時に kill されるバイナリが生成されていた。) (#1332) (@YamatoSecurity)
  • logon-summary コマンドが、RDP のセッションイベントも集計するようにした。既存の LocalSessionManager 21 と Gateway 302 に加えて、Security 4778/4779(セッションの再接続/切断。RDP クライアントのワークステーション名とIPを含む)と、Terminal Services の運用ログの RemoteConnectionManager/Operational 1149(ネットワークレベル認証)・LocalSessionManager/Operational 25(セッション再接続)を対象に追加した。これにより、対応する Security 4624 がログからあふれて消えている場合でも RDP ログオンを集計でき、再接続/切断では接続元クライアントのホスト名も表示される。 (#1893) (@YamatoSecurity)
  • extract-base64 コマンドに、PowerShellのイベントID 4100/4102(Microsoft-Windows-PowerShell/Operational および PowerShellCore/Operational)と、クラシックの 403/600(Windows PowerShell)を追加した。4100/4102ContextInfoHost Application = powershell -encodedcommand ...)と Payload フィールドを、403/600 は既存の 400 と同様に EventData.Data の詳細ブロックをスキャンする。 (#1889) (@YamatoSecurity)
  • logon-summary の成功ログオンテーブルに First Logon/Last Logon 列を、失敗ログオンテーブルに First Attempt/Last Attempt 列を追加した。各アカウント/ソースの組み合わせがログオン(または試行)した時間の範囲を表示する。 (#1883) (@YamatoSecurity)

新機能:

  • HayabusaのCSVを後処理する sort-csv コマンドを追加した。ヘッダーを保持し、Timestamp 列で行を並べ替え、重複した検知を削除する(EvtxFile 以外のすべての列を比較するため、内容が重複する .evtx ファイルやバックアップから収集された同じイベントは1件にまとめられる)。-f, --file で単一のファイル、または -d, --directory でCSVを格納したディレクトリ全体を指定できる(多数のエンドポイントから収集したCSVに便利)。-o, --output で指定したファイル、または標準出力に書き出し、-C, --clobber で上書きできる。--low-memory-mode ではスキャン中にできない処理を、スキャン後に行える。 (#1295) (@ChrisJr404)

改善:

  • Windows版の実行ファイルに、製品名、ファイルの説明、会社名、著作権、元のファイル名などのバージョン情報(VERSIONINFO)を埋め込むようにした。ファイル/製品バージョンは Cargo.toml のパッケージバージョンから自動生成し、リリースワークフローでパッケージ化前にメタデータを検証する。 (#1926) (@YamatoSecurity)
  • logon-summary コマンドに -G, --geo-ip オプションを追加した。集計された各ログオンの送信元IPアドレスに対して Source ASNSource CountrySource City 列を追加する。 (#1920) (@fukusuket)

バグ修正:

  • -T, --visualize-timeline のヒストグラムが、選択した時刻フォーマットに関わらず軸のマーカーを常に UTC で表示し、同じ出力内の他のタイムスタンプとホストの UTC オフセット分ずれる問題を修正した。同一のサマリー内で、軸の 2026-05-06 12:49:03 の10行ほど下に First timestamp: 2026-05-06 15:49:03.364 +03:00 が表示され、どちらが UTC なのかを示すものが画面上に何もなかった。calc_statistic_info が UTC のエポック秒をそのまま収集しており、krapslog は各マーカーを DateTime::from_timestamp(常に UTC)で描画して末尾の " UTC" を取り除くため、マーカーはタイムゾーン表記のない UTC になっていた。krapslog に値が渡る前にオフセットを加算していたヘルパーは、2024年2月に最後の呼び出し元を失い、以降デッドコードになっていた。再びオフセットを適用するようにし、その際 Unix エポック時点ではなく変換対象の時刻におけるオフセットを用いるようにした(旧ヘルパーは Local.timestamp_opt(0, 0)、すなわち1970年のオフセットを読んでおり、サマータイムを採用している地域やその後ルールが変更された地域では誤った値になる)。オフセットの適用は描画時の軸マーカーに対してのみ行う。krapslog はマーカーをインデックスで選ぶ一方、スパークラインは値でビン分けするため、収集したタイムスタンプ自体をずらすと、サマータイム終了時には異なる2時間が1つのビンにまとめられ、開始時には描画される期間が1時間伸びてしまう。また、format_time とヒストグラムがそれぞれ個別に記述していた「出力が UTC かどうか」の判定を TimeFormatOptions::is_utc_output に共通化し、将来 UTC 固定のフォーマットが追加されても両者が食い違わないようにした。マーカー自体はオフセットを持たないため、ヒストグラムのタイトルにタイムゾーンを表示するようにした(Detection Frequency Timeline (local time)-U/--iso-8601 指定時は (UTC))。 (#1914) (@kotru21)

その他:

  • Rustのクレート依存関係を更新し、同梱の hayabusa-evtx クレートを 0.9.12 に更新した(hayabusa-evtx#94)。このバージョンには quick-xml 0.42への互換対応が含まれる。 (@YamatoSecurity)

Don't miss a new hayabusa release

NewReleases is sending notifications on new releases.