YARAについて
YARAについて 目次
●概要とYARAルール●YARAルール作成時の各種識別情報の収集例
●YARAルールの用途例と管理方法
●YARAの基本的な注意事項
●サイバーセキュリティにおける情報共有へのYARAの有効活用について
概要とYARAルール
YARAはマルウェアの解析や分類といった情報セキュリティ方面に有用なツールです。基本機能としては、条件として指定した文字列やバイト列を、対象とするファイルやプロセスメモリのバイナリデータ上でスキャンし、指定した条件との合致があればそのスキャン結果を出力します。この文字列の条件は「正規表現」という柔軟な指定方法に対応しています。バイト列の条件に関しても、バイト数が不定のワイルドカードといった柔軟な指定が可能です。さらに、スキャン対象がPEファイルならば、特定インポート関数の有無や、PEヘッダ内の各項目の状況(格納値)を条件に指定、さらにはネット・レジストリ・ファイルへのアクセスという「ふるまい」も条件に指定してスキャンすることもできます。スキャンする条件のセットは「ルール」と呼ばれ、複数の条件を一度に指定し、一つのルールとしてその合致を判別させることも、さらに複数のルールを指定して一度にスキャンさせることも可能です。基本的に、ルールは文字列としてWindows ANSI(Shift-JIS)形式のテキストファイルに記述します。●YARAルールの例 rule Misc_Suspicious_Strings : Tag1 Tag2 { meta: Description = "UsaMimi Hurricane, ProcessMonitor, ShellCode, SEH, VM, etc." strings: $0 = /UsaMimi[0-9a-zA-Z_]{0,5}.exe/ ascii wide //UsaMimi.exe or UsaMimi64.exe or UsaMimi_v027.exe $1 = "ProcmonDebugLogger" ascii wide $3 = {64 8B ?? 30 00 00 00} //or {64 8B (05|0D|15|1D|25|2D|35|3D) 30 00 00 00} $4 = {64 A1 30 00 00 00} //or {64 A1 30 00 00 00 [1-20] 0C} $5 = {64 89 25 00 00 00 00} $6 = "vmtools" nocase condition: any of them }一般的なルールでは、ルール名、タグ(必須ではない)、説明等の付属データ(必須ではない)、条件「strings」、合致状況「condition」を記述します。ルール名には英数字とアンダースコア(下線記号)「 _ 」しか使えず、ルール名先頭文字に数字は使えないという制約があります。行内「//」以降、あるいは「/*」と「*/」の間はコメントでありルールには影響ありません。YARAのルールは2バイト文字を想定していない仕様のため、日本語文字列の記述は誤作動を招く可能性があります。
上の例では条件として正規表現を用いた文字列指定「/UsaMimi[0-9a-zA-Z_]{0,5}.exe/」により、スキャン対象バイナリデータ内の文字列「UsaMimi.exe」、「UsaMimi64.exe」、「UsaMimi_v027.exe」のいずれも条件に合致することになります。また、バイト列指定「{64 8B ?? 30 00 00 00}」は??部分にどのような値が入っても条件に合致とみなすワイルドカードの指定です。このワイルドカードは上記「(05|0D|15|1D|25|2D|35|3D)」というように指定したバイトのいずれか、あるいは上記「[1-20]」というように中身が不明なバイト数幅(この例は1から20バイト)という指定もできます。記述「ascii wide」は文字列が「Windows ANSI(Shift-JIS)」と「Unicodeのリトルエンディアン形式」のどちらの文字コードでも条件に合致とみなすことを意味します。同様に「nocase」は大文字・小文字を区別しないことを意味します。日本語文字列を条件にする場合にはバイト列として指定することが可能です。この際、『うさみみハリケーン』同梱の式入力演算ソフト「UMEC」で、日本語文字列のANSI/Unicode(UTF-16LE)バイナリデータをバイト列として文字列化したものが簡単に取得できるので、条件の指定に役立ちます。
上の例では、合致状況「condition」が「any of them」つまり条件がどれか一つでも合致したら、このルールとして合致とみなします。「$3」や「$a0 and $a1」「$a2 or $a3」というように単独の条件を合致状況に指定することもできます。また、条件が文字列ではない場合は、「strings:」を記述せずに、合致状況に「pe.imports("user32.dll","FindWindowA")」(スキャン対象はPEファイルかつインポート関数にuser32.dllが提供するFindWindowA関数あり)といった特殊な条件をそのまま指定することもできます。
このような柔軟な条件指定を行ってスキャンすることで、マルウェアの検出や解析および、他のマルウェアとの類似性の判別などが容易になります。この手軽さと有用さに加えて、YARAはオープンソースであるため、近年はウイルス対策ソフトなどの各種セキュリティソフトや、プログラム解析用の各種ツールがYARA対応機能の実装を進めています。また、システムへの攻撃・侵害状況を検出するためのデジタル・フォレンジック用途でもYARAが役立つケースがあると見られます。ちなみに、近年では、マルウェアの分類には機械学習で行う方法が提唱されており、その手法の改良も進んでいます。
YARAの用途に関しては、その有用性が発揮できる情報セキュリティ関連での活用例がよく述べられます。しかし、情報セキュリティ関連に限定されないあらゆるプログラム解析分野での、バイナリファイルやプロセスメモリのバイナリデータに対して、正規表現に対応した検索すなわちgrepを行う、汎用性の高いツールとしても有用だといえます。
当ソフトウェア『うさみみハリケーン』では、同梱する汎用ファイルアナライザ「青い空を見上げればいつもそこに白い猫」(AoZoraSiroNeko.exe)で、YARAルールを用いたファイルのスキャン機能および、32ビットプロセスのプロセスメモリのスキャン機能を実装しています。また、YARAルールを用いた32ビットプロセスのプロセスメモリのスキャンは、「うさみみハリケーン」の新型32ビット版(UsaMimi32.exe)が、同じく64ビットプロセスのプロセスメモリのスキャンは、「うさみみハリケーン」の64ビット版(UsaMimi64.exe)で対応しています(メニューの[検索]→[YARAルールでスキャン])。さらに「UsaMimi64.exe」では、実行中の全ての32ビットおよび64ビットプロセスを一括してスキャンすることも可能です。全てのプロセスの一括スキャンは、特定の文字列やバイト列を参照しているプロセスの探索に有用で、たとえば「svchost.exe」の偽装プロセス等にも対処可能です。「うさみみハリケーン」でのスキャン対象には、対象プロセスのプロセスメモリだけではなく、「対象プロセスが使用する全ての実行可能ファイル」を指定することもできます。なお、「うさみみハリケーン」および「青い空を見上げればいつもそこに白い猫」他同梱ソフトウェア群は、USBメモリへのインストールも可能なポータブルアプリケーションであり、各種ソフトウェアのインストールが制限された環境でも使用可能です。USBメモリから起動した「UsaMimi64.exe」でも、YARAルールを用いた全プロセスへの一括スキャンが可能です。
加えて、上記のスキャン機能用に、YARAルールの例を記述したファイル「yara_rule_file.txt」も同梱しています。条件の記述例や、条件の合致状況指定の詳細については、同テキストファイルを参照されることをお勧めします。なお、YARAのルールは、すでに情報セキュリティ関連のサイト・ブログ等で数多く公開されており、また、猛威を振るう新しいマルウェアを検出可能なルールが迅速に提供されることもあります。「YARA Rules」で検索すれば、 「Yara Rules Project」 のようなYARAルールの配布サイトが複数見つかります。『PEiD』のパッカー/コンパイラ判別用定義ファイルをYARAルール化したものや、Crypt系のYARAルール「findcrypt3.rules」など、特定ジャンルに特化したYARAルールの配布もあります。ただし、YARAのルール記述様式とスキャン機能については、バージョンアップにより仕様変更が行われることもあるため、「うさみみハリケーン」の新型32ビット版と64ビット版や「青い空を見上げればいつもそこに白い猫」が実装しているYARAルールを用いたスキャン機能では、ネットで入手可能な一部のYARAルールは、そのままでは使用できず修正が必要となる可能性があります。
「青い空を見上げればいつもそこに白い猫」の「YARAルールでスキャン」機能では、マルウェア解析における分類等に有用な、ssdeepやimpfuzzyを用いた各ファイルの類似度併記にも対応しています。この場合、画面中央のスキャン設定で[対象ファイルのあるフォルダごとスキャン]をチェックし、さらに、ファイル名に併記する情報の選択用コンボボックスで「ファイル名にssdeep類似度併記」あるいは「ファイル名にimpfuzzy類似度併記」を選択します。これにより、YARAルールでスキャン時に、指定ファイルと同じフォルダ内にある全てのファイルを列挙し、さらに指定ファイルとの類似度をパーセンテージで表示します。「ファイル名にEntropy差異併記」ならば、指定ファイルとのエントロピー値の差異をパーセンテージと絶対値で表示します。このssdeep・impfuzzy類似度表示あるいはエントロピー差異表示などは、比較・分類用途で使用されることから、列挙漏れが生じないようYARAルールの合致がなくとも表示するようにしています。この際、スキャン設定の[下の指定タグを持つルールのみ表示]をチェックして、YARAルール上に存在しないタグ「None」を指定すれば、YARAルールのスキャン結果は表示されず、ファイル名と類似度あるいは差異などの情報だけが列挙されることになります。
●参考画像:「青い空を見上げればいつもそこに白い猫」の「YARAルールでスキャン」機能
●参考画像:「YARAルールでスキャン」時のssdeepやimpfuzzy等の類似度表示機能
●参考画像:「YARAルールでスキャン」時のssdeepやimpfuzzy等の類似度表示機能(YARAルール合致表示なし)
●参考画像:「うさみみハリケーン」の64ビット版で全てのプロセスを一括スキャン
●参考画像:「うさみみハリケーン」の64ビット版でプロセスが使用する全ての実行可能ファイルをスキャン
YARAのメインサイトには、ルールの記述に関する英語の詳細な解説があります。
●YARAメインサイト
https://virustotal.github.io/yara/
YARAルール作成時の各種識別情報の収集例
YARAルール作成にあたっては、『うさみみハリケーン』および同梱ソフトウェア群の活用をお勧めします。例として、以下のような情報収集が可能になります。PEダンパー兼PEエディタ 「UMPE」で、解析対象実行ファイルのPEヘッダ内の特徴的な情報として、イメージベース、タイムスタンプ(コンパイル日時あるいは一意のID)、エントリーポイントとバイト列、セクション数やセクション名などに加え、参照DLL名やインポート・エクスポート関数名およびデバッグ情報などを取得。
リソース文字列ビューア「ResStrView_DotNET40.exe」で、解析対象実行ファイルのリソース内の特徴的な文字列や、特定リソースの名前・ID・サイズ・言語などを取得。特定リソースをハッシュ生成用にダンプ。
汎用ファイルアナライザ「青い空を見上げればいつもそこに白い猫」で、解析対象実行ファイルに関連する各種ハッシュや参照文字列および、埋め込まれた各種データなどを取得。
挙動解析用プロセスモニター「猫原喜雨」さんで、解析対象プロセスから起動されるプロセスの情報を取得。解析対象プロセスあるいはその子プロセスがアクセスするファイル・レジストリ・ネットワークの情報を取得。解析対象プロセスあるいはその子プロセスが動的にロードするモジュールの情報を取得。
ヘキサエディタ「へきさにゃん」で解析対象バイナリファイル内に存在する特徴的な文字列やバイト列を取得。
『うさみみハリケーン』で解析対象プロセスのプロセスメモリ上に展開される特徴的な文字列やバイト列を取得。解析対象プロセスのハンドル情報から、開いているファイル・レジストリ・イベント・ミューテックスなどの情報を取得。解析対象プロセスのモジュール情報から、動的にロードしたモジュールの情報を取得。モジュールの逆アセンブル結果から、暗号化処理等に用いる定数やバイト列を取得。解析対象プロセスのプロセスメモリ空間全体を各種情報収集用にファイルとしてダンプ。
必要に応じて、式入力演算ソフト「UMEC」で、日本語文字列のANSI/Unicode(UTF-16LE)バイナリデータをバイト列として文字列化したものを取得。
YARAルールの用途例と管理方法
「青い空を見上げればいつもそこに白い猫」や「うさみみハリケーン」の新型32ビット版と64ビット版が使用する、同梱のYARAルールのテキストファイル「yara_rule_file.txt」では、以下のカテゴリに分けたYARAルールを格納しています。・Test (新しいYARAルールのスキャンテスト用)
・Crypto
・CTF
・Hash
・Malware
・Network
・PEiD (同梱PEエディタ「UMPE」がPEiD対応なので、こちらは例だけ)
・ELF
・MACH
・レジストリ/ファイル/ミューテックス参照
上記のカテゴリ分けされたYARAルールは、そのままではテキストエディタでの管理や編集が煩雑になるため、各カテゴリとルール名にアウトライン解析の階層レベルを設定しておくことをお勧めします。「yara_rule_file.txt」ならば、行先頭文字列「///」にレベル1、「////」にレベル2、「rule」にレベル3のレベル順位を設定することで、 アウトラインプロセッサあるいはアウトライン解析対応のテキストエディタで、カテゴリとルール名の階層表示が可能になります。これにより、YARAルールの管理と編集の効率化が図れます。なお、日本語の「アウトラインプロセッサ」は、海外では「outliner」と呼ばれます。
新しいYARAルールを「yara_rule_file.txt」に取り込む場合は、そのルールの文字列をyara_rule_file.txt内に貼り付けることで対処できます。また、新しいYARAルールをテキストファイル形式で入手したならば、YARAルールのinclude構文を使って、yara_rule_file.txt内に「include "c:\\yara\\includes\\other1.yar"」といった記述を行うことで取り込み可能です。この際、新しく追加したYARAルールの中に、既存のYARAルールと同じ名前のルールがあるならば、YARAによるスキャンは失敗します。状況に応じて、「yara_rule_file.txt」をいったん別名にリネームして退避させ、新しいYARAルールファイルを「yara_rule_file.txt」にリネームしてスキャンに使用してください。ルール名が重複する既存のルールを、一時的にコメントアウトする方法もあります。
YARAの基本的な注意事項
YARAはすでにシステムに存在するマルウェアとその痕跡の検出には有用です。しかし、ウイルスといったマルウェアによる被害を「事前に予防する」ためのものではありません。この点はYARAとウイルス対策ソフトなどのセキュリティソフトとの大きな相違点です。YARAの機能が『うさみみハリケーン』や同梱「青い空を見上げればいつもそこに白い猫」あるいはPythonなどの一般的なアプリケーションで実行される場合、その機能はユーザーモード上で実行されます。つまり、カーネルモードからの操作で隠蔽されたファイルやプロセスメモリ、あるいはカーネルモードで使用されるメモリエリアはスキャンできません。このため、出力されたスキャン結果が全てではないことに、十分に注意してください。なお、この場合、ページファイルや、システム全体のメモリダンプファイルを対象としたスキャンが有効なケースもあると考えられます。また、上記のような隠蔽が無い通常のケースでは、特定プロセスのプロセスメモリ全体をダンプした、メモリダンプファイルへのスキャンも有効です。
YARAによる文字列やバイナリデータのスキャンは、あくまでその時点で存在するデータに対して有効です。使用時に動的に生成し、使用後にはすぐにバイナリデータ0x00で上書きされるような文字列やバイナリデータの検出はできません。使用時に復号し、使用後に再暗号化するケースも同様です。API関数名等の特定文字列使用を隠すために、同文字列を比較用ハッシュ値で用意しているケースもあります。
マルウェアとしての挙動を行うと即座に終了するプロセスのプロセスメモリのスキャンは困難です。基本的に、ディスクやプロセスメモリ上での活動痕跡を消すタイプのマルウェアに対しては、スキャンによる検出が難しいといえます。他には、レジストリに悪質なプログラムコードを埋め込むタイプのマルウェアや、ファイルやプロセスのアクセス権限を操作するタイプのマルウェアへの対処も困難です。なお、このような挙動の解明には、挙動解析用のプロセスモニターが役立ちます。「うさみみハリケーン」には、プロセスやスレッドの作成および、ファイルやレジストリの操作などを検出する、プロセスモニターを同梱しています。
YARAルールは実際の使用において、スキャンの効率化を意図した、スキャン対象ファイルサイズに上限を設定しているケースも多いことから、マルウェア側では実行ファイル等に無意味なデータを動的に付加してサイズを巨大なものとし、YARA等での解析を回避させるケースもあります。マルウェアの形態として、対象PCには実行されるファイルをコピーしない、「ファイルレス」なマルウェアも増えており、この場合、ファイルのスキャンでは検知が困難であり、プロセスメモリのスキャンが必要になります。ウイルスによっては感染が広まってから数時間後には新しいバージョンが出てくることもあり、公開されたYARAルールが数時間で使えなくなるケースも想定されます。
上記の色々な問題から、YARAは単体での使用結果に依存せず、プロセスメモリエディタやデバッガ、プロセスモニターおよびPEエディタなど、他のプログラム解析ツール、あるいは各種セキュリティソフトと併用することが望ましいと考えられます。
YARAが条件に指定された文字列をスキャンする際に、その文字列に正規表現が使用されているならば、単純な文字列のスキャンと比較して、スキャンにより多くの時間を要することになります。条件の文字列に正規表現を使用する際は、その条件の件数が多大な場合、スキャンの所要時間も相応に長くなることに注意してください。
YARAのPEファイル関連のスキャン機能は、PEファイルを対象としたものであり、プロセスメモリ上にロードされたPEファイル、すなわちモジュールを対象としたものではありません。「うさみみハリケーン」の新型32ビット版と64ビット版や「青い空を見上げればいつもそこに白い猫」でのプロセスのスキャン時には、必要に応じてオプション「全ての使用実行可能ファイル」を選択してください。マルウェアの構成ファイルと疑わしいモジュールといった、解析したいモジュールだけをプロセスメモリ上からダンプ(かつ適切なPEファイルになるよう再構築)して、個別にスキャンするアプローチもあります。
YARAルールを用いたスキャンについて、セキュリティ上の理由により、YARAの公式サイトで配布している実行ファイルのみ使用が許可される状況ならば、コマンドプロンプト(管理者)から以下の構文で全プロセスをスキャンするアプローチがあります。
for /F "tokens=2" %i in ('tasklist.exe /NH') do @C:\APP\YARA\yara64.exe C:\APP\YARA\test.yar %i 2> nul
サイバーセキュリティにおける情報共有へのYARAの有効活用について
サイバー攻撃が世界規模で行われる現在では、マルウェア等の識別とその被害への対処といった情報は、個々のリバースエンジニア、企業や組織あるいは国が独自に保有していても、世界を見据えたサイバーセキュリティ上の適切な対応には繋がりません。そのため近年では、このようなサイバーセキュリティの情報をどのように共有するかが重視されるようになり、情報共有のための複数の仕様(あるいは言語)が考案されています。YARAのルールの書式はそのような情報共有の仕様を取り入れたものではありませんが、特定マルウェアの存在や痕跡の検出に使用可能な、ファイル名・文字列・バイト列・各種ふるまいといった指標(インディケータ)は、サイバーセキュリティ上の情報共有にあたり役立つとみられます。なお、このような情報共有が重視される背景には、シグネチャに依存したマルウェア検出や分類がすでに限界を迎えているという実状もあります。このようなサイバーセキュリティにおける情報共有の仕様は、米国の組織の主導で策定が行われており、日本では仕様が標準化されたり、広く普及し一般的に使用されている、という状況ではありません。主に企業向けの国際規格ISO/IEC27001のサイバーセキュリティ・フレームワークでは、情報セキュリティの専門機関等との情報共有に係る記述がありますが、情報共有の具体的な仕様といった詳細は規定されていません。また、日本には、米国のISAC(情報共有分析センター)に相当する、情報技術・インフラ・金融といった各分野ごとに攻撃や脆弱性関連情報の共有を推進する政府管轄の専門組織もありません。しかし日本においても、サイバーセキュリティにおける高度な情報共有の必要性が高まりつつあります。その時勢を受け、情報セキュリティに関係のある産学官各機関や企業での、サイバー攻撃の詳細情報やソフトウェアの脆弱性情報等を共有するための、連携体制の構築といった各種取り組みも進んでいます。連携体制の構築例としては、一般社団法人の「金融ISAC」や「ICT-ISAC」の設立や、捜査・法執行機関である警察と産業界が連携する情報共有に強みを持つ、一般財団法人「日本サイバー犯罪対策センター」(JC3)の設立などが挙げられます。
なお、日本には、上記の金融ISACなどとは別に、金融、電力、鉄道、行政サービスおよび情報通信といった、重要インフラに関連する事業者での情報共有および情報分析を図る組織「セプター(CEPTOAR:Capability for Engineering of Protection, Technical Operation, Analysis and Response)」があります。このセプターは一般社団法人という形ではなく、主に各分野の業界団体が事務局を兼任するという運営形態となっていますが、情報通信(うち電気通信事業)のセプターの事務局は上記ICT-ISACが担うなど、別の情報共有体制との重なりもあります。加えて、全13分野のセプター代表で構成される協議会「セプターカウンシル」があり、分野の異なる各セプター間での情報共有体制「C4TAP」を構築しています。これらの別系統の情報共有体制が接点を持つことにより、より高度で密な情報共有の実現が期待されます。ちなみに、日本政府の情報セキュリティ関連政策においては、内閣サイバーセキュリティセンター(NISC)はセプターとの連携や既存ISACの活性化を図り、国土交通省は所管重要インフラ分野でISAC設立の検討を進めるといった、情報共有体制の推進策に相互補完的といえる相違が見受けられます。
ちなみに、日本政府の政策における「重要インフラ」の該当業種としては、電気、ガス、石油、水道、鉄道、貨物自動車運送、船舶運航(外航貨物)、航空、空港、電気通信、放送、郵便、金融およびクレジットカードの14業種が挙げられます。これらの業種は、経済安全保障推進法で「基幹インフラ」として規定されています。ただし、政策の内容によっては、港湾運送、行政サービス、化学および医療など別の業種が追加される可能性もあります。
2019年には、サイバーセキュリティ基本法に基づいた、情報共有・連携体制の構築を主な活動とする「サイバーセキュリティ協議会」が、内閣サイバーセキュリティセンター(NISC)により発足しました。サイバーセキュリティ協議会は、既存の各情報共有体制を包括し、さらに多くの加入者を擁する新たな情報共有体制を目指しています。この新しい情報共有体制の核となるのは日本のセキュリティ専門機関やセキュリティベンダーの連合体で、一般加入者となる日本の行政機関、地方公共団体、重要インフラ事業者および一般企業等に情報が提供されます。協議会への加入および、加入者の情報提供に対するハードルを下げるであろう、「情報提供者名の漏洩抑止」や「提供情報の共有範囲を指定可」等が規約で定められています。サイバーセキュリティ協議会には、運営が軌道に乗ること、そして、サイバーセキュリティにおいて米国ほかに後れを取った日本の、IT立国推進の一翼を担うことが期待されます。
また、米国国土安全保障省(DHS)は、サイバー攻撃に係る情報を匿名かつ迅速に共有するシステム「Automated Indicator Sharing (AIS)」を推進しています。このシステムのメンバーは米連邦機関と米国企業・団体に限定されず、米国外の企業・団体の加入も可能であり、富士通など複数の日本企業が加入しています。ただし、加入にあたり必要なPKI証明書の取得などは容易ではなく、どんな民間企業でも簡単に加入できるという訳ではありません。AISによる情報共有の成功実績すなわち脅威抑制・防御効果は、日本及び世界各国における、政府が関与する情報共有体制の構築に影響を及ぼすと予想されます。ちなみに、日本の総務省はサイバーセキュリティに関する情報共有等に係る国際連携を支援する方針にあり、その支援もあって、日本のICT-ISACと米国のIT-ISACが、相互の情報共有および、情報共有自動化システム構築への協力という内容の覚書を交わしました。
このような情報共有体制の構築や拡充が進む時勢において、少なくとも情報共有の仕様が存在するということは覚えておいた方が良いと考えられます。現実の問題として、政府系機関や一般企業では、人的要因により標的型攻撃などのサイバー攻撃は完全には防ぎきれないものであり、攻撃・侵入が行われてから、いかに短時間でその被害を最小限に抑えるかが焦点となります。そして、情報共有のシステムがうまく運用されれば、このような攻撃・侵入へのより迅速で適切な対処が可能になります。
主要な情報共有の仕様にはXML形式が使用されていたため、『うさみみハリケーン』や同梱「青い空を見上げればいつもそこに白い猫」が実装しているYARAルールでのスキャン機能でも、情報共有の仕様への流用を想定した、スキャン結果をXML形式で出力・保存する機能を実装しています。なお、主要な情報共有の仕様は、JSON形式への移行が進みつつあります。
情報共有の仕様については、サイバー攻撃の内容、マルウェアの特徴、ネットワーク関連および脆弱性といった要素に応じた、すでに数多くの仕様が公開されています。ここでは、特にマルウェアに深い関連がある仕様を列挙します。情報セキュリティ関連の企業、団体、組織、勉強会、学内サークルなどに属さない個人の場合、これらの仕様を使って記述することは少ないのですが、それでも一度はこれらの仕様に基づいた記述例に触れることをお勧めします。記述例は、各仕様のWebサイトや、各仕様名での検索で見つかります。
●MAEC (Malware Attribute Enumeration and Characterization)(Webサイト)
YARAが特に役立つであろう、マルウェアに関する情報共有の仕様には、MAEC(マルウェア特徴属性一覧)があります。MAECは米国連邦政府の資金援助を受ける非営利団体「MITRE」(マイター)によって作成された仕様です。この仕様でJSON形式(以前はXML形式)で記述される構造化された情報は、ファイル名、ファイルサイズ、MD5/SHA-1、分類結果、作成やアクセスを行うファイル・レジストリ名、他プロセスの操作内容、PEヘッダの内容、検出・解析可能なツール名等です。つまり、マルウェアに対する、各種プログラム解析ツールや自動解析用仮想環境での表層・静的・動的解析結果などが反映されます。なお、MAECと同種の仕様に、「MMDEF (IEEE ICSG’s Malware Metadata Exchange Format)」という仕様があるのですが、こちらはあまり使われていないようです。ちなみに、マルウェアの特徴といった認識情報を表現する仕様全般をVDL (Virus Definition Language)と呼ぶこともあります。
●CybOX (Cyber Observable eXpression)(Webサイト)
CybOXは、サイバー攻撃で観察された挙動など攻撃内容全般に関する情報をXML形式で記述する、情報共有のための言語です。CybOXも上記MITREが作成しました。CybOXで記述する内容は、サイバー攻撃において参照・使用されるファイルやプロセスその他カーネルオブジェクト、API関数、WindowsとUNIXのネットワーク関連各種文字列や各種データ、そしてそれらに対する開始や中断といった各種アクションなど、サイバー攻撃に関連する数多くの要素に対応しています。これらの要素のうち、特にマルウェアの特徴に関する部分は、MAECと連携が図られており、CybOXはMAECと部分的に共通であり、かつMAECより広い範囲の情報をカバーするといえます。CybOXの運用にあたっては、攻撃・脅威の情報の記述に関する仕様「STIX(Structured Threat Information eXpression)」や、攻撃・脅威の情報の転送や交換に関する仕様「TAXII(Trusted Automated eXchange of Indicator Information)」などと連携することで、より効果的な情報共有を可能にしてきました。そしてさらに発展する形で、CybOXはSTIXバージョン2.0に統合されました。STIXバージョン2.0の記述仕様はJSON形式です。上述AISでは、情報共有に用いる仕様として、このSTIXとTAXIIを使用しています。
●OpenIOC (Open Indicators of Compromise)
IOCは「脅威・攻撃・侵入の痕跡」といった意味であり、マルウェアの特徴を示すものでもあります。OpenIOCは、IOCをXML形式の文字列データとして記述することで、情報の共有とその機械的処理の効率化を図る仕様です。OpenIOCの仕様は、情報セキュリティ関連のソフトウェア開発で実績のあるMandiant社が作成しました。さらに、同社の情報セキュリティ関連ツールである「Redline」や「IOC Finder」により、システムの状態に関する各種詳細情報を収集してIOCの記述を補助したり、収集されたシステム情報と記述されたIOCを元にその痕跡の有無をスキャンすることも可能です。ただし、これらのツールはソースコードが公開されておらず、YARAのようにそのスキャン機能を他のアプリケーションがそのまま実装することはできません。OpenIOCはその仕様や運用において、YARAとCybOXの両方に近い側面があるといえます。ちなみにMandiant社は、2013年に情報セキュリティ関連企業で自社製品がYARA対応のFireEye社に買収されましたが、子会社化でブランドや独自性は残され、2022年にはGoogleに買収されています。関連して、Mandiant社は、各種実行ファイルが使用できる機能の識別を行うツール「capa」を公開しています。capaで識別可能な機能は、ネットワーク関連やプロセス操作関連およびファイル操作関連など多岐にわたります。この識別にあたっては、「capaルール」という、OpenIOCやYARAルールなどを再構成したものを用います。
上述とは別系統の、サイバーセキュリティに関する共有可能な情報提供例としては、「MITER ATT&CK」などが挙げられます。「MITER ATT&CK」は、攻撃の技術・攻撃に用いるツール・目的を達成する戦術・攻撃者といった情報の組み合わせで構成される、攻撃の流れを体系的にまとめたナレッジベースで、一切の制約なしに無償で公開されているものです。主に、攻撃の流れに関する調査や解析および、企業のセキュリティ対策における多面的な見直しと強化などに役立つと見られます。