11章

Hands-on-2

ここでは、CDIR-Aに含まれるレジストリ調査ツール regruns により、永続化に関係するレジストリを抽出したうえ、抽出データ(CSVファイル)を分析するハンズオンを行います。

CDIR-A(Analyzer)は、以下のURL(株式会社サイバーディフェンス研究所の公式Githubリポジトリ)から入手できます。

https://github.com/CyberDefenseInstitute/CDIR-A

上記リポジトリの「Releases」から、圧縮ファイル(CDIR-Aの実行ファイルやソースコードをアーカイブしたもの)をダウンロードします。「Parser」フォルダに regruns 等のCDIR-Aパーサツールが保存されていますので、解凍したうえで、コマンドプロンプトからの実行に適した場所へ配置して下さい。

 

解析対象のレジストリファイル

このハンズオンで解析対象とするレジストリファイルは、演習用データの以下の相対パスに保存されています。

s11\h2\DESKTOP-QEKJ4CO_20210521142046\Registry

 

エクスプローラーで上記フォルダを開いてみましょう。以下のように、保全済みのレジストリファイルが保存されています。


Tutorial02_1


これらのレジストリファイルは、調査のサンプルとしたPCから、CDIR-C(CDIR Corrector)で保全したものです。CDIR-Cによる保全方法は、「証拠保全Ⅱ」の章で紹介しています。

サンプルPCには、複数のユーザーアカウント(「sales33」と「04180」)が設定されていました。したがって、保全した各「NTUSER.dat」と「UsrClass.dat」のファイル名には、それぞれのユーザーアカウント名が付加されています。

 

regrunsの実行

regrunsを使用して、上記の解析対象レジストリファイルから、永続化に関係するレジストリキーをCSVファイルに出力します。

コマンドプロンプトを起動し、以下の実行手順例を参考に、regruns を実行して下さい。

 

1 cdコマンドでCDIR-A の「parser」フォルダ(regruns.exeが保存されたフォルダ) へ移動

 cd C:\CDIR-A\parser

 

2 出力先フォルダ(-o オプション)と解析対象レジストリファイルのフォルダを指定して、regrunsを実行

regruns -o C:\temp\regruns-out  C:\_data\s11\h2\DESKTOP-QEKJ4CO_20210521142046\Registry
  • 出力先フォルダ(-o)は、任意のフォルダ名を設定します。存在しないフォルダの場合は、自動的に新規作成されます。
  • CDIR-Aの仕様上、出力先フォルダにすでに同じ出力ファイル名(regruns_output.csv)があると、上書きせずにデータを追加します。他の調査対象PCの出力結果とマージしたいケースでなければ、新規フォルダの指定を推奨します。  

3 以下の処理実行メッセージが表示されれば完了

Finished: 'C:\_data\s11\h2\DESKTOP-QEKJ4CO_20210521142046\Registry'
Finished: 'C:\_data\s11\h2\DESKTOP-QEKJ4CO_20210521142046\Registry\SYSTEM'
Finished: 'C:\_data\s11\h2\DESKTOP-QEKJ4CO_20210521142046\Registry\SOFTWARE'
Finished: 'C:\_data\s11\h2\DESKTOP-QEKJ4CO_20210521142046\Registry\04180_NTUSER.dat'
 (中略)
Saved: 'C:\temp\regruns-out'

 

regruns実行の結果、指定した出力フォルダに、永続化に関係するレジストリデータを抽出したCSVファイル(regruns_output.csv)が作成されます。

 

出力したCSVファイルの分析

上記で出力したCSVファイル(regruns_output.csv)を、表計算アプリケーションに読み込みます。

ここでは、オープンソースソフトウェアの LibreOffice に含まれる、表計算アプリケーション(Calc)の利用を想定して説明します。

LibreOffice は、次の公式サイトから入手できます。

https://ja.libreoffice.org/

LibreOffice のインストール時に、Calc をCSVファイルのデフォルト編集用アプリケーションとして設定しておくと、CSVファイルのダブルクリックで自動的にCalcへ読み込むことができます。「テキストのインポート」設定画面が表示されますので、「文字エンコーディング」には「Unicode(UTF-8)」、区切り文字には「タブ」を指定して下さい。

次の図は、regruns_output.csv を Calc で開いた例です。


Tutorial02_2


 

実行ファイル名の検索

Calc の検索機能(Ctrl + F キー)を使って、「mspaint.exe」が永続化されているRunキーを探してみましょう。


Tutorial02_3


サンプルPCのレジストリでは、以下のRunキーに「mspaint.exe」が永続化されていました。検索結果と同じであることを確認して下さい。

  • Key : HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
  • Name : TESTRUN
  • Value : C:\Windows\System32\mspaint.exe Tutoflag.png

 

出力項目による並べ替え・フィルタリング

Calc の「データ」-「オートフィルター」メニューから、並べ替えやフィルタリング機能を使用して、出力されたCSVファイルの分析を実施しましょう。


Tutorial02_3_0


 

以下、並べ替えやフィルタリングによる分析例を紹介します。

 

  • 「LastModified」(レジストリキーの最終更新日)による並べ替え

    項目名のセルをリストダウン(「▼」をクリック)し、昇順または降順を選択して並べ替えます。


    Tutorial02_3_3


 

  • 「Key」(レジストリキー名)によるフィルタリング

    代表的なRunキー名を抽出する例です。項目名のセルをリストダウンし、フィルターするキー名のみをチェックオンにします。

    以下は、次のRunキーでフィルタリングする例です。

    • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run(SOFTWARE)
      • 「Microsoft\Windows\CurrentVersion\Run」をチェックオン
    • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run(NTUSER.dat)
      • 「SOFTWARE\Microsoft\Windows\CurrentVersion\Run」をチェックオン


    Tutorial02_3_1


 

  • 「Value」(実行ファイルパス)によるフィルタリング

    ユーザープロファイルのフォルダから起動される実行ファイルを抽出する例です。項目名のセルをリストダウンし、フィルターするフォルダ名の一部を「Search items」に入力します。

    以下は「C:¥Users」を含むファイルパスでフィルタリングする例です。


    Tutorial02_3_2


 

永続化の痕跡による感染時期の推定

不審な永続化の痕跡を発見した場合、感染時期を推定する方法を検討してみましょう。 マルウェアの多くは、感染した最初の起動時に、Runキーの登録処理を行います。したがって、「LastModified」に表示されたRunキーの最終更新日時が、感染時期に近接している可能性が高いと考えられます。

ただし、感染後に別の正規アプリケーションによって、マルウェアと同じRunキーの別の「値」が更新されている場合は、「LastModified」のみで感染時期を推定することは困難です。

「mspaint.exe」が登録されたRunキーを例に、「LastModified」の分析方法を紹介します。

CSVファイルを「LastModified」で並べ替え、以下のように、「mspaint.exe」を含む3つの「値」が同一の最終更新日時となっていることを確認して下さい。


Tutorial02_4


これらの「値」は、すべて以下のRunキーに登録されています。

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

「LastModified」に表示される日時は、上記Runキーの最終更新日時となります。

レジストリでは、「値」ごとの更新日時は記録されません。そのため、実際には「mspaint.exe」(Name:「TESTRUN」)が登録された日時ですが、レジストリ上の情報のみでは、3つのうちいずれの「値」が最後に登録されたものかを特定することは困難です。

したがって、他の情報とも照合して、検討していく必要があります。

例えば、発見した不審なファイルや保存フォルダのタイムスタンプと、Runキーの最終更新日時が近接していれば、感染直後にRunキーが登録された可能性が高いと考えられます。

また、一般的に、Runキーはアプリケーションのインストール時に登録されますので、他のアプリケーションのインストール時期がRunキー最終更新日時より前であれば、消去法により、マルウェア感染によるRunキー登録が最終更新と考えられます。

入手できる多くの情報から、さまざまな可能性を検討しつつ、客観的に推定を行いましょう。

 


問題

  • 「mspaint.exe」を値に含むレジストリキーの最終更新日時から、前後1時間以内に更新された別のレジストリキー名を、CSVファイルの「Key」に表示された名称で回答して下さい。


S11H02

results matching ""

    No results matching ""