【Q&Aコーナー】MDEを使った調査で必要な前提知識を身に着ける

皆さんこんにちは。国井です。
2023年5月18日に「ひと目でわかるMicrosoft Defender for Endpoint」が発売されます。

今日はこの書籍とのコラボ投稿としてMicrosoft Defender for Endpointの話をしたいと思います。書籍の内容は私が担当させていただいているトレーニングでも扱っているのですが、トレーニングの中でお客さんにMDEを使っていただいているとこんなことを言われることがあります。

MDEのスキル以上にWindowsについてもっと知っておかないと厳しいですね

確かにおっしゃる通りだと思います。
普段からWindowsを使っている人、管理している人でもセキュリティ界隈で登場するプログラムというのは特殊なものもありますし、それがWindows標準のプログラムであったとしても使う機会がなければMDEで初めてお目にかかる人もいるでしょう。

しかし初見のプログラムがMDEのアラートで登場したら恐らく驚くし、下手したらWindows標準のプログラムをマルウェアだ!と言ってどうやって削除しようか.. などと間違った方向に行ってしまう可能性すらあります。そこで今日はアラートで登場するプログラムがどのような特徴のものであるか確認する方法を見てみたいと思います。

インシデント画面を参照する

ひと目でわかるMicrosoft Defender for Endpoint書籍でも書きましたが、組織でインシデントが発生したときには最初にインシデント画面を参照します。そしてインシデント画面の[概要]タブをクリックすると以下のような画面が出てきます。
このときに左側に棒グラフのようなものが出てくると思いますが、こちらはMITRE ATT&CKのグラフになります。MITRE ATT&CKは攻撃者による攻撃手法をまとめたデータベースのようなものでグラフの縦棒が攻撃のジャンルを表しています。そのため、インシデント画面に出ている色が塗られた部分は今回の攻撃で使われた攻撃の種類を表しています。
それでは赤枠で囲った部分を表すPersistence (MDEの日本語では「常設」)にフォーカスしてみます。

image

アラート画面を参照する

インシデントの詳細を参照するときは[アラート]を使います。
フィルター設定で[カテゴリ]=[常設]となるように設定すると、常設カテゴリのアラートだけが登場します。
ここから[An anomalous scheduled task was created]アラートをクリックしてみます。

image

アラートをクリックすると下の画面が出てくるのですがschtasks.exeがアラートの要因だと書かれていることがわかります。

image

そして右側に書いてあるアラートの説明を見てみると

An anomalous scheduled task was created. This may be used by an attacker to obtain persistence on the machine.
(異常なスケジュールタスクが作成されました。これは、攻撃者がマシンの永続性を取得するために使用される可能性があります。)

理解できましたか?
人によっては「タスクスケジューラに悪性のプログラムが登録された」と頭を働かせることができるかもしれませんが、普段からタスクスケジューラを利用している人でなければなかなかそこまでたどり着けないと思います。
(私はたどり着けたぜ!っていう”つよつよ”の方、この先は読まなくて大丈夫です。お疲れさまでしたw)

タスクスケジューラがどのように攻撃に使われるのか?これを知りたいときには既出のMITRE ATT&CKを利用します。MITRE ATT&CKのサイトにアクセスして、マトリクスチャートからPersistenceの欄を縦に読むと Scheduled Task という項目があることがわかります。

image

クリックしてみるとこんな感じの画面が出てきます。

image

この説明をDeepLに翻訳させてみたら、こんな感じの日本語が返ってきました。

攻撃者は、タスクスケジュール機能を悪用して、悪意のあるコードの初期実行や反復実行を容易にする可能性があります。主要なオペレーティングシステムには、指定した日時に実行されるプログラムやスクリプトをスケジュールするためのユーティリティが存在します。タスクは、適切な認証(例:Windows環境におけるRPCとファイルおよびプリンタの共有)を満たせば、リモートシステム上でスケジュールすることも可能です。リモートシステムでタスクをスケジューリングするには、通常、リモートシステムの管理者またはその他の特権グループのメンバーであることが必要になる場合があります。

攻撃者は、タスクスケジューリングを利用して、システム起動時やスケジュールされたベースでプログラムを実行し、永続化することができる。また、これらのメカニズムを悪用して、特定のアカウント(昇格した権限や特権を持つアカウントなど)のコンテキストでプロセスを実行することも可能である。システムバイナリのプロキシ実行と同様に、敵対者はタスクスケジューリングを悪用して、信頼されたシステムプロセスの下で1回限りの実行をマスクする可能性もあります。

さっきよりはマシな説明が返ってきました。もうちょっと詳しく見てみましょう。上の画面の左側にあるリンクScheduled Taskをクリックするとこんな感じの画面が出てきます。

image

こちらの説明もDeepLに翻訳させてみましょう。

悪意ある者は、Windowsタスクスケジューラを悪用して、悪意あるコードを初期または繰り返し実行するためのタスクスケジューリングを実行する可能性があります。Windowsのタスクスケジューラーにアクセスする方法は複数あります。schtasksユーティリティをコマンドラインで直接実行したり、コントロールパネルの管理者ツールセクションにあるGUIからタスクスケジューラーを開いたりすることができます。場合によっては、敵はWindowsタスクスケジューラの.NETラッパーを使用し、代わりに敵はWindows netapi32ライブラリを使用してスケジュールタスクを作成しました。

また、at.exeはschtasksやコントロールパネルで作成されたタスクにはアクセスできませんが、非推奨のatユーティリティも敵に悪用される可能性があります(ex: At)。

敵対者は、Windowsタスクスケジューラを使用して、システム起動時または永続化のためのスケジュールベースでプログラムを実行することができる。また、Windowsタスクスケジューラは、横移動の一部としてリモート実行を行ったり、指定されたアカウント(SYSTEMなど)のコンテキストでプロセスを実行するために悪用される可能性があります。システムバイナリプロキシ実行と同様に、敵対者はWindowsタスクスケジューラを悪用して、署名された/信頼されたシステムプロセスの下で1回限りの実行をマスクする可能性もある。

また、攻撃者は、防御ツールやタスクを列挙するための手動クエリでは見えない「隠された」スケジュールタスク(Hide Artifacts)を作成する可能性があります。具体的には、敵は、関連するレジストリ値(Security Descriptor (SD))を削除することにより、schtasks /queryおよびタスクスケジューラからタスクを隠すことができます(この値の削除は、SYSTEM権限を使用して完了しなければなりません)また敵は、タスクを隠す別の方法、例えば関連レジストリキー内のメタデータ(インデックス値など)を変更することも採用できます.

こっちの説明も「たいがい」だけど、タスクスケジューラとはschtask.exeであること、タスクスケジューラというのを動かすと登録したプログラムが毎回実行するように設定できるのだな!だから攻撃者は攻撃ツールなどを動かしたりするのに悪用するのだな!しかもSYSTEM権限(Administratorよりも強い権限)で実行できるプログラムを登録できるのだな!ということがわかります。
(ちなみにですが、このテクニックにはT1053という番号が振られています。以前はMDEのアラート画面からMITRE ATT&CKのリンクをクリックすることでT1053の画面(=つまりこの画面)にアクセスできたのですが、直近ではなくなってしまったみたいです)

schtasks.exeが行ったことを振り返る

アラート画面に戻ってschtask.exeの詳細を見てみましょう。

image

アラート項目の上にあるschtasks.exeを選択すると画面右側にschtasks.exeのオプションスイッチが確認できます。

“schtasks.exe” /create /SC ONCE /TN Troj /TR C:\Users\vmadmin\Desktop\WinATP-Intro-Backdoor.exe /ST 13:36 /F

これを見るとWinATP-Intro-Backdoor.exeというプログラムを13:36に1度限りで実行するタスクを登録すると書かれていることがわかります。

【参考】Windowsコマンド虎の巻
https://windows.command-ref.com/cmd-schtasks-create.html

まとめ

ここまでの話をまとめるとインシデントが発生することによって

・schtasks.exeを実行したけど、schtasks.exe自体は悪性のプログラムではなくタスクスケジューラのコマンドである
・schtasks.exeで登録したプログラムはWinATP-Intro-Backdoor.exeなので、WinATP-Intro-Backdoor.exeが悪性のプログラムなのではないか?
・WinATP-Intro-Backdoor.exeは13:36に1度限りの実行しかしないので永続的(Persistence)に実行することを目的としていない

などといったことがわかると思います。
MDEは基本的にインシデントを発見すれば勝手に対応してくれるので、自分で頑張る必要はありません。しかし、自分の組織で何があったか?は(マネージドサービスに頼っていない限り)自分で把握しておく必要があるでしょうし、しかるべき場所へ報告できるだけの情報を持ち合わせておかなければなりません。
そうしたときに今回のような形で周辺情報を調べておくとMDEの中で書いてあることが立体的に見えてくると思いますし、報告書を作ったり、報告のプレゼンをしたりすることも徐々にできるようになっていくのではないかと思います。