●サイバーセキュリティにおける情報共有へのYARAの有効活用について概要とYARAルールYARAはマルウェアの解析や分類といった情報セキュリティ方面に有用なツールです。基本機能としては、条件として指定した文字列やバイト列を、対象とするファイルやプロセスメモリのバイナリデータ上でスキャンし、指定した条件との合致があればそのスキャン結果を出力します。この文字列の条件は「正規表現」という柔軟な指定方法に対応しています。バイト列の条件に関しても、バイト数が不定のワイルドカードといった柔軟な指定が可能です。スキャン対象がPEファイルならば、特定インポート関数の有無や、PEヘッダ内の各項目の状況(格納値)を条件に指定、さらにはネット・レジストリ・ファイルへのアクセスという「ふるまい」も条件に指定してスキャンすることもできます。スキャンする条件のセットは「ルール」と呼ばれ、複数の条件を一度に指定し、一つのルールとしてその合致を判別させることも、さらに複数のルールを指定して一度にスキャンさせることも可能です。ANSI(Shift-JIS)形式のテキストファイルに記述します。them}一般的なルールでは、ルール名、タグ(必須ではない)、説明等の付属データ(必須ではない)、条件「strings」、合致状況「condition」を記述します。」しか使えず、ルール名先頭文字に数字は使えないという制約があります。行内「//」以降、あるいは「/*」と「*/」の間はコメントでありルールには影響ありません。YARAのルールは2バイト文字を想定していない仕様のため、日本語文字列の記述は誤作動を招く可能性があります。上の例では条件として正規表現を用いた文字列指定「/UsaMimi[0-9a-zA-Z_]{0,5}.exe/」により、スキャン対象バイナリデータ内の文字列「UsaMimi.exe」、「UsaMimi64.exe」、「UsaMimi_v027.exe」のいずれも条件に合致することになります。00}」は??部分にどのような値が入っても条件に合致とみなすワイルドカードの指定です。このワイルドカードは上記「(05|0D|15|1D|25|2D|35|3D)」というように指定したバイトのいずれか、あるいは上記「[1-20]」というように中身が不明なバイト数幅(この例は1から20バイト)という指定もできます。ANSI(Shift-JIS)」と「Unicodeのリトルエンディアン形式」のどちらの文字コードでも条件に合致とみなすことを意味します。同様に「nocase」は大文字・小文字を区別しないことを意味します。them」つまり条件がどれか一つでも合致したら、このルールとして合致とみなします。$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ルールでスキャン])。これらのスキャン機能用に、YARAルールの例を記述したファイル「yara_rule_file.txt」も同梱しています。条件の記述例や、条件の合致状況指定の詳細については、同テキストファイルを参照されることをお勧めします。YARAのルールは、すでに情報セキュリティ関連のサイト・ブログ等で数多く公開されており、また、猛威を振るう新しいマルウェアを検出可能なルールが迅速に提供されることもあります。ような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ルールでスキャン」時のssdeepやimpfuzzy等の類似度表示機能(YARAルール合致表示なし)YARAのメインサイトには、ルールの記述に関する英語の詳細な解説があります。「青い空を見上げればいつもそこに白い猫」や「うさみみハリケーン」の新型32ビット版と64ビット版が使用する、同梱のYARAルールのテキストファイル「yara_rule_file.txt」では、以下のカテゴリに分けたYARAルールを格納しています。上記のカテゴリ分けされたYARAルールは、そのままではテキストエディタでの管理や編集が煩雑になるため、各カテゴリとルール名にアウトライン解析の階層レベルを設定しておくことをお勧めします。アウトラインプロセッサあるいはアウトライン解析対応のテキストエディタで、カテゴリとルール名の階層表示が可能になります。これにより、YARAルールの管理と編集の効率化が図れます。日本語の「アウトラインプロセッサ」は、海外では「outliner」と呼ばれます。新しいYARAルールを「yara_rule_file.txt」に取り込む場合は、そのルールの文字列をyara_rule_file.txt内に貼り付けることで対処できます。"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のルールの書式はそのような情報共有の仕様を取り入れたものではありませんが、特定マルウェアの存在や痕跡の検出に使用可能な、ファイル名・文字列・バイト列・各種ふるまいといった指標(インディケータ)は、サイバーセキュリティ上の情報共有にあたり役立つとみられます。このような情報共有が重視される背景には、シグネチャに依存したマルウェア検出や分類がすでに限界を迎えているという実状もあります。このようなサイバーセキュリティにおける情報共有の仕様は、米国の組織の主導で策定が行われており、日本では仕様が標準化されたり、広く普及し一般的に使用されている、という状況ではありません。企業向けの国際規格ISO/IEC27001のサイバーセキュリティ・フレームワークでは、情報セキュリティの専門機関等との情報共有に係る記述がありますが、情報共有の具体的な仕様といった詳細は規定されていません。日本には、米国のISAC(情報共有分析センター)に相当する、情報技術・インフラ・金融といった各分野ごとに攻撃や脆弱性関連情報の共有を推進する政府管轄の専門組織もありません。日本においても、サイバーセキュリティにおける高度な情報共有の必要性が高まりつつあります。その時勢を受け、情報セキュリティに関係のある産学官各機関や企業での、サイバー攻撃の詳細情報やソフトウェアの脆弱性情報等を共有するための、連携体制の構築といった各種取り組みも進んでいます。サイバー犯罪対策センター」(JC3)の設立などが挙げられます。Response)」があります。このセプターは一般社団法人という形ではなく、主に各分野の業界団体が事務局を兼任するという運営形態となっていますが、情報通信(うち電気通信事業)のセプターの事務局は上記ICT-ISACが担うなど、別の情報共有体制との重なりもあります。加えて、全13分野のセプター代表で構成される協議会「セプターカウンシル」があり、分野の異なる各セプター間での情報共有体制「C4TAP」を構築しています。これらの別系統の情報共有体制が接点を持つことにより、より高度で密な情報共有の実現が期待されます。ちなみに、日本政府の情報セキュリティ関連政策においては、内閣サイバーセキュリティセンター(NISC)はセプターとの連携や既存ISACの活性化を図り、国土交通省は所管重要インフラ分野でISAC設立の検討を進めるといった、情報共有体制の推進策に相互補完的といえる相違が見受けられます。構築を主な活動とする「サイバーセキュリティ協議会」が、内閣サイバーセキュリティセンター(NISC)により発足しました。サイバーセキュリティ協議会は、既存の各情報共有体制を包括し、さらに多くの加入者を擁する新たな情報共有体制を目指しています。インフラ事業者および一般企業等に情報が提供されます。協議会への加入および、加入者の情報提供に対するハードルを下げるであろう、「情報提供者名の漏洩抑止」や「提供情報の共有範囲を指定可」等が規約で定められています。サイバーセキュリティ協議会には、運営が軌道に乗ること、そして、サイバーセキュリティにおいて米国ほかに後れを取った日本の、IT立国推進の一翼を担うことが期待されます。(AIS)」を推進しています。このシステムのメンバーは米連邦機関と米国企業・団体に限定されず、米国外の企業・団体の加入も可能であり、富士通など複数の日本企業が加入しています。加入にあたり必要なPKI証明書の取得などは容易ではなく、どんな民間企業でも簡単に加入できるという訳ではありません。日本及び世界各国における、政府が関与する情報共有体制の構築に影響を及ぼすと予想されます。ちなみに、総務省はサイバーセキュリティに関する情報共有等に係る国際連携を支援する方針にあり、その支援もあって、日本のICT-ISACと米国のIT-ISACが、相互の情報共有および、情報共有自動化システム構築への協力という内容の覚書を交わしました。このような情報共有体制の構築や拡充が進む時勢において、少なくとも情報共有の仕様が存在するということは覚えておいた方が良いと考えられます。現実の問題として、政府系機関や一般企業では、人的要因により標的型攻撃などのサイバー攻撃は完全には防ぎきれないものであり、攻撃・侵入が行われてから、いかに短時間でその被害を最小限に抑えるかが焦点となります。情報共有のシステムがうまく運用されれば、このような攻撃・侵入へのより迅速で適切な対処が可能になります。主要な情報共有の仕様にはXML形式が使用されていたため、『うさみみハリケーン』や同梱「青い空を見上げればいつもそこに白い猫」が実装しているYARAルールでのスキャン機能でも、情報共有の仕様への流用を想定した、スキャン結果をXML形式で出力・保存する機能を実装しています。主要な情報共有の仕様は、JSON形式への移行が進みつつあります。情報共有の仕様については、サイバー攻撃の内容、マルウェアの特徴、ネットワーク関連および脆弱性といった要素に応じた、すでに数多くの仕様が公開されています。ここでは、特にマルウェアに深い関連がある仕様を列挙します。サークルなどに属さない個人の場合、これらの仕様を使って記述することは少ないのですが、それでも一度はこれらの仕様に基づいた記述例に触れることをお勧めします。記述例は、各仕様のWebサイトや、各仕様名での検索で見つかります。Characterization)(Webサイト)YARAが特に役立つであろう、マルウェアに関する情報共有の仕様には、MAEC(マルウェア特徴属性一覧)があります。MAECは米国連邦政府の資金援助を受ける非営利団体「MITRE」(マイター)によって作成された仕様です。