Windowsイベントログ解析ツール「Hayabusa」を使ってみる

こんにちは、いちび( @itiB_S144 )です。

2021年12月25日にWindowsイベントログ解析ツールとして「Hayabusa」がリリースされました🎉

Hayabusaは事前に作成したルールに則ってWindowsイベントログを調査し、インシデントや何かしらのイベントが発生していないか高速に検知することができるツールです。 私も開発を微力ながらお手伝いさせていただきました。 本記事では多くの方にHayabusaを触っていただきたいため、簡単な使い方を紹介していきます。

github.com

詳細なHayabusaの実装についてはコミッターのKazuminさんの記事が参考になります、 ぜひご参照ください!

kazuminkun.hatenablog.com

Hayabusaとは

HayabusaはWindowsイベントログの解析ツールです。 事前に作成したルールに則って解析を行い、ルールに引っかかるものがあれば検知します。

Hayabusaは、日本のYamato Securityグループによって作られたWindowsイベントログのファストフォレンジックタイムライン生成およびスレットハンティングツールです。

hayabusa/README-Japanese.md at main · Yamato-Security/hayabusa · GitHub

ルールは独自に作成することも可能ですが、1000以上のルールがプリセットとして用意されており、手軽に試すことができます。 また日本のコミュニティが作っているため日本語のREADMEが充実しています。英語が苦手な方でも安心

ルールの例

Hayabusaリポジトリの中には独自に作られたルールと多くの研究者が作成したルールである Sigma をベースに変換したルールが配置されています。 上にあげた例だけでなく、マルウェア検知など様々なルールが用意されています。 自分でルールを作るのが難しいという方でも十二分にHayabusaを利用することができます。

Hayabusaを使ってみる

以下に用意されたサンプルWindowsイベントログファイルに対してHayabusaを実行してみます。 ルールファイルはHayabusaで用意されたものを用います。 github.com

環境

手順

1. GitHubから必要なファイルを入手

Hayabusaの実行ファイルとサンプルWindowsイベントログファイルを取得します。

Windows環境なので hayabusa-1.0.0-windows-x64-evtx-0.7.2.zip をダウンロードしました。evtx以降の 0.6.70.7.2 の違いは中で使用しているライブラリのバージョンの違いです。とりあえず新しいほうを選んでいます。

f:id:itib:20211231172724p:plain

ファイルを解凍して準備OKです。

2. フォルダの確認

基本的に変更が発生するのは config フォルダになります。 大量発生してログを埋め尽くすようなルールをミュートしたり等々の設定ができます。

ひとまず今回はデフォルトのままで進めます。

├── hayabusa-1.0.0-windows-x64-evtx-0.7.2
│   ├── README.md
│   ├── hayabusa.exe
│   ├── config                // 設定ファイル
│   ├── doc                   // ドキュメントたち
│   ├── logs                  // hayabusa.exeの実行ログ
│   ├── rules                 // 検知ルールファイルたち
│   ├── sample-results
│   └── tools
└── hayabusa-sample-evtx-main // サンプルイベントファイルたち
    ├── DeepBlueCLI
    ├── EVTX-ATTACK-SAMPLES
    ├── EVTX-to-MITRE-Attack
    ├── README.md
    └── YamatoSecurity

3. Hayabusaの実行

コマンドプロンプトからHayabusaを起動します。 エクスプローラーでHayabusaフォルダに移動し、バーに cmd と入力することで簡単に開くことができます。

f:id:itib:20211231183542p:plain

オプションをなにもつけずに hayabusa.exe を実行するとヘルプが出てきます。

f:id:itib:20211231184229p:plain

ファイルに対してHayabusaを実行

hayabusa-sample-evtx に用意されたサンプルのWindowsイベントログファイル(.evtx)に対してHayabusaを実行します。

>hayabusa.exe -f <検査対象WIndowsイベントログ.evtx>

f:id:itib:20211231193000p:plain

検知した内容が表示されたのち、サマリが表示されます。 デフォルトのHayabusaが使用しているルールは /rules フォルダ下に配置されたすべてのルールです。 オプションから使用するルールを指定することも可能です。

フォルダに対してHayabusaを実行

windowsイベントファイルを置いたフォルダに対してまとめてHayabusaを実行することができます。

>hayabusa.exe -d ..\hayabusa-sample-evtx-main

その他

基本的な使い方はREADMEにすべて書かれています。 検出結果のファイルへの出力方法等は以下に記載されていますので参考にしてください。

hayabusa/README-Japanese.md at main · Yamato-Security/hayabusa · GitHub

自分のWindowsに対してHayabusa実行

サンプルのWindowsイベントログファイルにHayabusaを実行した後は自分のWindowsに対して実行してみたくなりますね? 早速試していきましょう。

新規Windowsユーザの作成

今回はログに残る動作として新たなユーザをWindowsに追加します。

設定 → アカウント → 他のユーザ からユーザを追加します。 f:id:itib:20211231193851p:plain

ログの取得

Windowsのイベントログファイルは C:\Windows\System32\winevt\Logs 下に保存されます。 管理者権限が必要となるため Hayabusa を管理者権限のあるコマンドプロンプトで開くかログファイルを管理者権限のいらないフォルダ下にコピーしましょう。

ユーザ追加のログは Security.evtx に保存されます。

f:id:itib:20211231194230p:plain

Hayabusaで調査する

コピーした Security.evtx に対してHayabusaをかけてみました。 User: test が作られたことを検知できていることがわかります。

f:id:itib:20211231195943p:plain

オプション -o をつけるとCSVファイルに検知結果を出力することができます。

>hayabusa.exe -f ..\Security.evtx -o detect.csv

detect.csv

Timestamp,Computer,EventID,Level,RuleTitle,Details,RulePath,FilePath
2021-12-31 19:38:37.370 +09:00,DESKTOP-ITIB,4728,low,User added to local security group,User: itib  :  Group: なし  :  LogonID: 0x4a111111,rules\hayabusa\default\alerts\Security\4728-AccountManipulation_UserAddedToLocalSecurityGroup.yml,..\Security.evtx
2021-12-31 19:38:37.370 +09:00,DESKTOP-ITIB,4728,medium,User added to global security group,User: itib  :  Group: なし  :  LogonID: 0x4a111111,rules\hayabusa\default\alerts\Security\4728_AccountManipulation_UserAddedToGlobalSecurityGroup.yml,..\Security.evtx
2021-12-31 19:38:37.372 +09:00,DESKTOP-ITIB,4720,medium,Local user account created,User: test  :  SID: S-1-1-11-111111111-1111111111-1111111111-1111,rules\hayabusa\default\alerts\Security\4720_CreateAccount-LocalAccount_UserAccountCreated.yml,..\Security.evtx

csvには検知したルールファイルへのパスが表示されています。

ルールファイルを見てみる

Hayabusaで調査するで検知したイベントログとルールファイルを見てみましょう。

Security.evtxをイベントビューアで開き、検索を駆使して検知したイベントを見つけました。 イベントログの EventID4720ChannelSecurity、作られたTargetUserNametestであることがわかります。後々のためにXML形式で見ています。

f:id:itib:20211231204223p:plain

上記イベントを検知した先ほどルールファイルは 4720_CreateAccount-LocalAccount_UserAccountCreated.yml でした。

author: Eric Conrad, Yamato Security
creation_date: 2020/11/08
uodated_date:  2021/12/22

title: Local user account created
title_jp: ローカルユーザアカウントが作成された
details: 'User: %TargetUserName%  :  SID: %TargetSid%'
details_jp: 'ユーザ名: %TargetUserName%  :  SID: %TargetSid%'
description: A local user account was created.
description_jp: ローカルユーザアカウントが作成された.

id: 13edce80-2b02-4469-8de4-a3e37271dcdb
level: medium
status: stable
detection:
    selection:
        Channel: Security
        EventID: 4720
    filter:
        TargetUserName|endswith: "$" #Filter out machine/computer accounts
    condition: selection and not filter
falsepositives:
    - system administrator
tags:
    - attack.persistence
    - attack.11136.001
references:
    - https://attack.mitre.org/techniques/T1136/001/
sample-evtx: ./sample-evtx/DeepBlueCLI/new-user-security.evtx
logsource: default
ruletype: Hayabusa

detection下に書かれた条件で検知が行われます。 ChannelSecurity AND EventID4720 であり、filter にマッチしない条件がこのルールで検知されるようです。

検知した場合は title: Local user account createddetails: 'User: %TargetUserName% : SID: %TargetSid%'%~% が埋められた文字列が検知結果として表示されています。

詳細なルールの書き方はこれまたREADMEに詳しく書かれていますので参考にしてください。

hayabusa/AboutRuleCreation-Japanese.md at main · Yamato-Security/hayabusa · GitHub

最後に

ここまで読んでいただきありがとうございました。

簡単なHayabusaの使い方を紹介させていただきました。 Hayabusa、面白そう!触ってみたいと思っていただけたら幸いです。

HayabusaはOSSとして大和セキュリティが開発しています。 Hayabusaの開発気になる、バグ見つけた等あればGithubのissueや下記ConnpassのSlackからコンタクトお願いします。

yamatosecurity.connpass.com

それではよいWindowsログ解析ライフを!