NSRL RDS

NSRL(National Software Reference Library)はアメリカ国立標準技術研究所(NIST: National Institute of Standards and Technology)主導のプロジェクトです。様々なソフトウェアのハッシュ値で構成される参照用データセット(RDS: Reference Data Set)を作成し、調査対象のファイルと照合することにより調査の信頼性、効率の向上を実現しています。

RDSのフォーマットについては、2021年にVersion 3(v3)が発表されましたが、それまで長い間Version 2(v2)で運用されていたこともあり、2024年現在でも多くのフォレンジックツールはRDSv2形式を想定しており、RDSv3をv2に変換して利用しています。

本ページでは初めにv2のフォーマット、構成を簡単に説明し、その後v3での変更点を紹介します。

RDSv2

RDSv2のフォーマットは下記のホワイトペーパーで解説されています。

Data Formats of the NSRL Reference Data Set (RDS) Distribution
https://www.nist.gov/system/files/data-formats-of-the-nsrl-reference-data-set-16_0.pdf

RDSv2は4種類のファイル(レコード)で構成されます。各ファイルの役割とファイル内のフィールドは以下の通りです。

  1. NSRLFile.txt - ファイル単位
    "ハッシュ値(SHA-1, MD5, CRC32)、ファイル名、ファイルサイズ、製品コード、OSコード、スペシャルコード"
  2. NSRLMfg.txt - メーカ単位
    "メーカコード、メーカ名"
  3. NSRLOS.txt - OS単位
    "OSコード、OS名、OSバージョン、メーカコード"
  4. NSRLProd.txt - 製品単位
    "製品コード、製品名、製品バージョン、OSコード、メーカコード、言語、タイプ" 

この4種類のうちNSRLFile.txtがRDSの中枢データです。NSRLFile.txt内の製品コードはNSRLProd.txtと、OSコードはNSRLOS.txtと連動していて、それぞれの構成情報が記載されています。また、NSRLOS.txt内のメーカコードはNSRLMfg.txtに記載されています。

各フィールドに格納できる型としては、ファイルサイズと製品コードのみ数値型(integer)で、その他のフィールドは全て文字(列)型(char)と定義されています。

スペシャルコードはファイルに対して個別にフラグを設定するためのフィールドで、maliciousを示す"M"やspecialを示す"S"が設定できるようになっています。

RDSv3

RDSv3のフォーマットは下記のホワイトペーパーで解説されています。

National Software Reference Library Reference Dataset Version 3
https://s3.amazonaws.com/rds.nsrl.nist.gov/RDS/RDSv3_Docs/RDSv3.pdf

RDSv2との大きな変更点は以下の通りです。

  • SQLiteデータベースを採用
  • SHA-256の追加
  • CRC-32の除外
  • アプリケーションの様々な付属情報に対応

RDSv3 ER図


RDSv3からRDSv2への変換

RDSv3形式のデータをRDSv2に変換する手順が以下のドキュメントに記載されています。
https://s3.amazonaws.com/rds.nsrl.nist.gov/RDS/RDSv3_Docs/RDSv3_to_RDSv2_text_files_LINUX-OSX.pdf

変換に必要なテーブル、フィールドのみで構成されるminimalと呼ばれるサブセットの形式が公式サイトで提供されているため、RDSv2に変換する場合はminimalを入手して手順に従い変換することになります。

RDSv3 minimal ER図

sqlite3コマンドを使いcsv形式で対象となるフィールドのデータを抽出や置換をしていますが、元ファイルが数十GBと大きく変換にはそれなりの時間がかかります。

NSRLJPのフォーマット

公式のNSRLプロジェクトではRDSv3に移行しRDSv2での提供はなくなっています。しかし、実際の利用シーンではRDSv2に対応したツールが大半のため、ユーザ側でRDSv3をRDSv2に変換して対応しているのが現状です。そのため、RDSv3が普及するまでNSRLJPはRDSv2で提供します。

NSRLJPではフォレンジック調査に不要と思われる既知のデータのみを対象とする方針とし、マルウェアやグレーな判定をされやすいソフトウェアを対象から除外し、SpecialCodeは全てブランク(normal)としています。

NSRLJPではNSRLと干渉しないようにメーカコード、OSコード、製品コードを新しく割り当てています。

  • メーカコード 5001〜
  • OSコード 1001〜
  • 製品コード 50001〜

 

タグ