CTF問題「マルウェアの作成した自動起動設定を発見せよ」から学べる知識とは:CTF問題から学ぶセキュリティ基礎知識(4)
情報セキュリティの技術を競うコンテスト「CTF」の問題から情報システムの仕組みやセキュリティを理解する連載。第4回は、「マルウェアの作成した自動起動設定を発見せよ」という問題について解説します。
情報セキュリティの技術を競うコンテスト「CTF(Capture The Flag)」は、セキュリティ教育や優秀な人材発掘に役立てようとする組織や企業で注目される、実践的な学習の環境でもあります。本連載「CTF問題から学ぶセキュリティ基礎知識」では、筆者が所属する会社で実施している社内向けのセキュリティコンテスト(CTF)の問題を中心に毎回一問一答をしていきます。
今回は、インシデントレスポンスチームの一員になって社内のセキュリティインシデントに立ち向かうシチュエーションの問題です。普段の業務でインシデントレスポンスを担当している方は少ないかもしれませんが、このようなコンテストの問題を通して、現実のマルウェアの挙動を体験することができます。
問題
今回は「フォレンジック」ジャンルの問題です。記事の都合上、きちんと調査をするには少し情報が足りないかもしれませんが、どのような方針で解答するのかを考えてみましょう。
ジャンル:フォレンジック
あなたは、インシデントレスポンスチームの一員です。チームの先輩から、次のようにメールで指示がありました。
「あるPCがマルウェアに感染した。至急、添付のファイルからマルウェアのエントリを見つけてくれ」
添付ファイルは、「Autoruns」というソフトウェアの実行結果のようです。あなたは、「なるほど、マルウェアが永続化のために作成した自動起動設定を探るのだな」と、先輩の指示を理解しました。添付ファイルから、マルウェアによって作成されたと思われるエントリを全て探してください。
【注意】この問題の解答は特定の形式の文字列ではありません。マルウェアによって作成されたと思われるエントリ名(Autoruns上の「Autorun Entry」、XMLファイル上の「itemname」に該当する部分)を全て解答してください。
※画像は各添付ファイルの一部を抜粋
この問題から学べる知識
この問題に取り組むことで、以下のようなセキュリティに関する知識を学ぶことができます。
- マルウェアの永続化とその方法
- 不審なプログラムの特定方法
問題の解き方
前提としてCTFは、その名の通り、「フラグ」を見つけることが正解の条件です。フラグは、大会ごとに決められた特定の形式の文字列である場合が多いですが、今回の問題は文字列の形式に指定がなく、「発見したエントリを全て解答する」方式です。
解き方の方針
マルウェアが永続化のために作成した自動起動設定とは、感染したPCがシャットダウンされた場合にも起動時に再度マルウェアを実行させるための設定のことです。全てのエントリの中から信頼できるソフトウェアを除外していくと、マルウェアによって作成された不正なエントリを特定できます。与えられた添付ファイルの内容を確認し、注目すべきエントリを抽出してみましょう。
自動起動設定データの確認
添付ファイルはAutorunsを実行した結果だと分かっています。「.arn」形式のファイルはAutorunsに読み込んで閲覧し、XML形式のデータは表計算ソフトなどに取り込んでパースし、内容を確認します。
まずは「.arn」形式のファイルをAutoruns上で確認していきましょう。なお、問題文中の画像では、エントリが存在しない場所やWindowsのエントリについては非表示になっています。これらのエントリや場所についても確認したい場合は、メニューバーの「Options」から選択すると表示可能です。
署名されていないプログラムの抽出
各エントリが信頼できるかどうかを判別する代表的な基準として、「プログラムが署名されており、正規のものと確認できるかどうか」があります。一般的に、署名が確認できるプログラムについてはマルウェアが作成したような不審なものではなく、メーカーや作成元がはっきりしており、信頼できるプログラムと判断できます。
Autorunsの「Publisher」欄に注目してみましょう。空欄、または「Not Verified」と記述があるエントリが赤色や黄色でハイライトされていることが分かります。赤色は、署名がない、または正規のものと確認できなかったもので、黄色はファイルの実体がなく確認できなかったものになります。今回、赤色または黄色でハイライトされていたエントリが5つあったので、この5つについてさらに確認する必要があります。
ファイル名やその他の情報を基にプログラムの信頼性を判断
署名が確認できなかったエントリは5つです。これらについて、エントリ名やファイルパス、「Description」欄に記載された説明を確認したり、インターネットで情報を収集したりして、マルウェアかどうかを判断します。XMLファイルからは、該当エントリよりも詳しい情報を得られるので、そちらも確認が必要です。
結果をまとめると、表のようになります。
エントリ名 | 調査結果と見解 |
---|---|
bididler | 実行ファイルのファイルパスがユーザーディレクトリ配下の不審な場所を示している。XMLファイルに書かれたハッシュを調べると、マルウェアと分かる |
Microsoft Update Task Scheduler | 実行ファイルのファイルパスがユーザーディレクトリ配下の不審な場所を示している。XMLファイルに書かれたハッシュを調べると、マルウェアと分かる |
\Updater | XMLファイルの「lanchstring」欄に記載されたコマンドをインターネットで検索すると、PowerShellマルウェアやEmpire(ペネトレーションテストツール)の一部と一致するので、マルウェアの可能性が高い |
VGAuthService | インターネットで検索して得た情報や、ファイルパスなどから、VMwareの正規サービスの可能性が高い |
BVTConsumer | インターネットで検索すると、「デフォルトで存在し、無視してもいいエントリ」という情報がある |
bididlerやMicrosoft Update Task Schedulerのようにハッシュが残っている不審なファイルについては、「VirusTotal」などのマルウェアを検査するサービスを利用して、マルウェアかどうかを判定できます。ハッシュを入力すると、登録されている複数のセキュリティベンダーが提供するマルウェア検知エンジンの検査結果を表示できます。
なお、実行ファイルそのものをアップロードすることもできますが、アップロードしたファイルは本サービスの提供者および利用者に公開されてしまうので、機密情報が含まれるファイルは絶対にアップロードしないでください。検査が目的なら、今回のように手元で取得したハッシュを検索しましょう。
これらの結果から、マルウェアによって作成されたと思われるエントリは下記の3つといえます。今回の問題では、これが解答です。
- bididler
- Microsoft Update Task Scheduler
- \Updater
本物のマルウェアを調査する場合、該当するプログラムを利用者が自分の意志でインストールしたかどうかなどをヒアリングしたり、別の証跡を調査した結果と突き合わせたりすることで、これらの証拠を裏付けることができます。
今回はCTFの問題なので、ここまでで調査は終了ですが、本物の調査の場合はAutorunsの出力だけで結論を出すのではなく、さまざまな証拠を集めて総合的に判断することをお勧めします。
マルウェアの永続化
今回紹介したような永続化は、一般的なマルウェアの挙動です。ファイルレスマルウェアのように、ディスク上に実行ファイルを保持しないマルウェアでも、このような自動起動設定の中に、自分自身を起動するためのコマンドが格納されている場合があります。設定される場所には、主にスタートアップやサービス、タスクスケジューラなどがあり、今回使用したAutorunsのようなツールで確認できます。実行ファイルを発見して削除しても、永続化の設定が残っているとマルウェアがまた復活する可能性があるので、注意が必要です。
プログラムに対する署名
今回問題を解く上で重要だったプログラムに対する署名は、「コードサイニング」といいます。主な署名の役割は下記の3つです。
- 正規のプログラムという証明(なりすまし防止)
- 改ざん防止
- プログラム作成者の否認防止
今回の問題では、1つ目の「正規のプログラムという証明」に注目しています。署名されている場合、そのプログラムは信頼できる第三者機関(認証局)によって保証されていることを確認できます。確認ができない、またはそもそも署名が付いていない場合は、信頼できないプログラムです。「マルウェアの疑いがある」と判断されてしまいます。
今回の問題のように、署名を元に不審なプログラムに注意する考え方を身に付けるとともに、開発者の場合は自分が作成したプログラムを安心して使ってもらうために、きちんと署名することを心掛けてください。
ただしマルウェアの中には、署名されているものも存在します。信頼できるメーカーによって正しく署名されている実行ファイルやDLL(Dynamic Link Library)を悪用するものも発見されています。署名されていても100%安全ではないので注意しましょう。
最近のマルウェアの紹介と主な対策
2020年は「EMOTET」や新しいランサムウェアによる被害が話題となり、マルウェアに対する意識が高まったのではないでしょうか。2021年に入ってからも、ランサムウェアによる社会インフラを脅かすニュースがあったり、「IcedID」のようなマルウェアがメールなどで多くの人の元に届いていたりと、脅威は継続しています。
マルウェア対策ソフトウェアのパターンファイルを最新に保つ、OSやソフトウェアを最新の状態にアップデートするなどの基本的な技術面の対策とともに、セキュリティ教育や「不審なメールの添付ファイルやURLを開かない」などの注意事項の周知など、人的対策で備えることが大切です。
万が一マルウェアに感染してしまったり、その疑いがあったりする場合は、まずは自社のセキュリティ担当者に速やかに報告しましょう。必要に応じて、IPA(独立行政法人 情報処理推進機構)やJPCERT/CC(Japan Computer Emergency Response Team Coordination Center)などにも報告、相談しましょう。
おわりに
問題は解けたでしょうか? IT技術者の中でもセキュリティを専門にしていなければ、今回のようなマルウェア調査やフォレンジックのような作業にはなじみがないかもしれません。しかし、マルウェア感染は情報システムを利用する全ての人に起こり得る脅威です。いつ、自分の端末やサーバが感染して専門的な調査が必要になるかは分かりません。自らが調査しなければならなくなったときはもちろん、外部ベンダーに依頼するときにも、このようなCTFの問題から得た学びを役立てていただけたら幸いです。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- リクルートのCSIRTが、マルウェア対策の一部を内製化した理由
本連載では、ランサムウェアを含む「マルウェア感染」という、さまざまな企業が頭を悩ませる問題について、リクルートグループのコンピュータインシデント対応チーム「Recruit-CSIRT」の発想と技術をお伝えする。 - RPAのセキュリティを確保するための4つのステップ
セキュリティとリスク管理のリーダーは、RPAプロジェクトのセキュリティ対策を実施することで、RPA導入に伴う業務不正やデータの漏えいに備える必要がある。本稿では、RPAのセキュリティを確保するための4つのステップを紹介しよう。 - セキュリティ業務における「ログ」の基礎知識――なぜ分析基盤が必要なのか
セキュリティ業務における「ログ」と、その分析基盤の活用について解説する連載。初回は、セキュリティログに関する基礎知識や分析基盤に求められることなどについて。