SigmaおよびYARAルールを活用したリアルタイムクライアント監視ツールYAMAGoya
近年、ファイルレスマルウェアやマルウェアの難読化により、ファイル単体のスキャンだけでは不審なアクティビティを検知することが難しくなっています。そのような脅威に対抗するために、セキュリティ研究者やマルウェアアナリストは、SigmaやYARAなどのルールを積極的に作成し、公開しています。 しかし、既存のエンドポイントセキュリティツールでは、独自の検知エンジンを用いているため、SigmaやYARAを直接活用できる製品が不足しているのが現状です。 この課題に対し、オープンソースのスレットハンティングツールYAMAGoyaを公開しました。YAMAGoyaは、次のGitHubレポジトリで公開していますので、ご自由にお使いください。
GitHub JPCERTCC/YAMAGoya:https://github.com/JPCERTCC/YAMAGoya
以降では、YAMAGoyaのコンセプトや使用方法について紹介します。
YAMAGoyaのコンセプト
YAMAGoyaは、ETW(Event Tracing for Windows)のイベント監視とメモリスキャンをあわせて脅威の検知を行えるように設計しています。以下は、本ツールの特徴です。
- ユーザーランドのみで動作:カーネルドライバー不要で導入容易
- リアルタイム監視:ファイル/プロセス/レジストリ/DNS/ネットワーク/PowerShell/WMI等をETW経由でリアルタイム監視可能
- 複数のルール形式をサポート:Sigmaおよび相関分析に活用できるオリジナルYAMLルールをサポート
- メモリスキャン:ファイルレスやパッキングされたマルウェアをYARAルールで検知
- GUI/CLIサポート:GUIからの使用だけではなくコマンドラインによる自動化なども可能
導入方法
バイナリ入手
すぐに評価したい場合は、GitHubレポジトリのReleasesからバイナリを取得できます。
ビルド
ソースコードからビルドする場合は、READMEをご覧ください。
使い方
YAMAGoyaは、GUIおよびCLIで使用することが可能です。コマンドラインからオプションなしで実行するか、ダブルクリックで実行することでGUIが起動します。
# GUIの実行 > YAMAGoya.exe
本ツールは、管理者権限で実行する必要があります(ETWセッションを起動するため)。ツールを実行する際は、右クリックから「管理者として実行」を選択するか、コマンドプロンプトを管理者として実行するようにしてください。
コマンドラインからは、次のように実行することで利用可能です。その他のオプションについては、オプションhelpで確認してください。
# Sigmaルールで監視 > YAMAGoya.exe --session --sigma "C:\Rules\Sigma" --all
# YARAルールでメモリスキャン > YAMAGoya.exe --session --yara "C:\Rules\YARA" --all
YAMAGoyaのサポートルール
YAMAGoyaは、SigmaルールおよびYARAルールをサポートしていますので、公開されているルールなどを活用してください。Sigmaルールに関しては、サポートするカテゴリーがWindows OSを対象とするものに限られています。詳しくは、READMEをご覧ください。
本ツールでは、SigmaルールおよびYARAルール以外にもオリジナルYAMLルールをサポートしています。以下では、オリジナルYAMLルールの書き方について紹介します。
オリジナルYAMLルールの書き方
オリジナルYAMLルールを作成するには、以下のスキーマに従ってください。各ルールファイルには以下を含める必要があります:
- rulename: ルールの一意の名前 - description: ルールが検知する内容の説明 - rules: ルール項目のリスト。各項目には以下を含める必要があります: - ruletype: ルールの種類(例:regex、binary) - target: マッチするイベントカテゴリー - rule: マッチするパターンまたは値(正規表現ルールの場合は有効な正規表現)
targetのカテゴリーには表1のものを使用できます。
| target名 | 説明 |
| file | ファイル作成イベント |
| delfile | ファイル削除イベント |
| process | プロセスイベント |
| open | OpenProcess |
| load | DLL読み込みイベント |
| registry | レジストリイベント |
| dns | DNSイベント |
| ipv4 | IPv4ネットワークイベント |
| ipv6 | IPv6ネットワークイベント |
| shell | シェル関連イベント(RunKey、ショートカット) |
| powershell | PowerShell実行イベント |
| wmi | WMIコマンド実行イベント |
デフォルトでは、1ファイルに記述したすべてのruleが10秒以内に確認された場合に、アラートが上がります。 例えば、次のようなファイルの作成、プロセスの実行、DLLのロード、通信をしている場合にマルウェアとして検知することができるルールを記述することができます。 オリジナルYAMLルールは、このような複数のアクティビティを相関的に確認して検知したい場合に有効です。
rulename: "ANEL"
description: "Detects ANEL from maldoc type"
rules:
- ruletype: "regex"
target: "file"
rule: "Tmp\\.docx$"
- ruletype: "regex"
target: "process"
rule: "ScnCfg32\\.Exe$"
- ruletype: "regex"
target: "dll"
rule: "vsodscpl\\.dll$"
- ruletype: "regex"
target: "file"
rule: "TCDolW0p\\.log$"
- ruletype: "ipv4"
target: "ipv4"
rule: "45.32.116.146"
ログの確認
GUIで使用する場合は、アラートタブでログを確認することができます。また、図2のアラートタブのOpen Log Fileから、テキストログを確認することもできます。
さらに、イベントログ(Application)にもアラートは保存されます。表2は、YAMAGoyaが記録するイベントID一覧です。
| イベントID | 主なトリガー条件 |
| 8001 | オリジナルYAMLルールでの検知 |
| 8002 | オリジナルYAMLルールの一部要素がマッチ(デバッグメッセージ) |
| 8003 | オリジナルYAMLルールで検知したプロセスの停止(Killモードの動作時) |
| 8005 | WinRM アウトバウンド通信 |
| 8006 | WinRM インバウンド通信 |
| 8008 | Security Mitigationsイベント |
| 8009 | Security Adminlessイベント検知 |
| 8011 | Security CVEイベント検知 |
| 8012 | SMBサーバー認証検知 |
| 8013 | SMBサーバー ファイルシェア検知 |
| 8014 | SMBサーバー ファイルシェアの追加検知 |
| 8015 | SMBクライアント 接続失敗 |
| 8016 | SMBクライアント ファイル転送 |
| 8017 | ETWセッションのスタート |
| 8018 | ETWセッションの停止 |
| 9001 | Sigmaルールでの検知 |
| 9002 | Sigmaルールで検知したプロセスの停止(Killモードの動作時) |
おわりに
YAMAGoyaは、SigmaやYARAなどの公開されているシグネチャを利用可能なため、セキュリティコミュニティーのノウハウをセキュリティ対策に活用できるツールです。スレットハンティングやインシデントレスポンスなどの際にご活用ください。本ツールに関してPull Requestや要望などお待ちしています。
FAQ(よくある質問)
Q1. YAMAGoyaは従来型ウイルス対策ソフトの代わりになりますか?
A. いいえ。YAMAGoyaはウイルス対策ソフトを置き換えるものではなく、補完するツールです。デフォルトで検知ルールはないため、利用する際は検知ルールの収集・作成から行う必要があります。
Q2. 常駐(バックグラウンド実行)はできますか?
A. はい。システムトレイに常駐し、バックグラウンドで監視できます。設定したルールに基づき、検知があれば通知/ログ出力します。
Q3. 既存のSIEMと連携できますか?
A. はい。YAMAGoyaはログをテキストとイベントログ(Application)に出力します。これらをログ収集エージェントや転送機能で送れば、SplunkなどのSIEMに取り込めます。
Q4. ETWバイパス(回避手法)への対策に制限はありますか?
A. はい。現時点でETWバイパスへの専用対策は未実装です。高度な攻撃者がETWを無効化・改ざんして検知を回避する可能性があります。EDRや他の監視ツールと併用して多層防御を構成することを推奨します。


