SaaS

MDATPでLinuxをサポートしてEDRもできるようになったのでやってみた

こんにちは、臼田です。

皆さん、Linuxのセキュリティ管理していますか?(挨拶

Microsoft Defender ATPがLinuxに対応しました!(2020年6月なのでかなり前ですが

Microsoft Defender ATP for Linux is now generally available! – Microsoft Tech Community

ついでに最近LinuxでもEDR機能がパブリックプレビューになっています。

EDR for Linux is now available in public preview – Microsoft Tech Community

以下がGAの時にブログに添付された図です。このAAはワクワクする。(しかしCentOSではこれが見れないのです。かなしみ

というわけで今回はMDATP for Linuxを使いつつEDRも試してみます。

Linuxまで管理できてEDRが使えるようになるのは最強ですね。先出ししますが以下のようにインシデントの可視化もできます。素晴らしい!

ライセンス

まず最初にMDATP for Linuxのライセンスです。何はともあれライセンスが無くては始まりません。

MDATP for LinuxのサポートOSは以下のとおりです。(Amazon Linux 2も入れてくれ…

  • RHEL 7.2+
  • CentOS Linux 7.2+
  • Ubuntu 16 LTS, or higher LTS
  • SLES 12+
  • Debian 9+
  • Oracle Linux 7.2

これら全てサーバーOSという扱いになり、サーバー用のライセンスが必要になります。ただE5などがあればいいわけではないので注意してください。(これにより検証に時間がかかりました)詳細はこちらでご確認下さい。

MDATP for Linuxやってみた

インストール

まずはMDATPをインストールしていきます。今回はCentOS7を対象とします。

詳細な要件や手順はこちらにあります。今回は手動で展開していきます。

RHELやCentOSではyum-utilsをインストールします。

sudo yum install yum-utils

続いてMDATPのリポジトリを登録します。これはディストリビューションやバージョン、選択するパッケージのチャンネル(更新が早いか遅いか)によってURLが違うので注意して下さい。CentOS7でfastを利用する場合以下のようになります。

sudo yum-config-manager --add-repo=https://packages.microsoft.com/config/centos/7/insiders-fast.repo

続いてMicrosoft GPG公開鍵をインストールし、キャッシュを作成します。

sudo rpm --import http://packages.microsoft.com/keys/microsoft.asc
yum makecache

準備できたらMDATPをインストールします。

sudo yum install mdatp

もしインストール対象のLinuxに複数のMicrosoftのリポジトリがある場合には、それを指定しないとうまく行かないかもしれませんので注意して下さい。詳細は上述の手順から。

オンボーディング

インストールできたら管理側にオンボーディングします。

MDATPの管理コンソールにアクセスして[設定]> [デバイス管理]> [オンボーディング]からLinux Serverを選択してローカルスクリプトをダウンロードします。

ダウンロードしたらSCP等でこれをLinuxへアップロードします。

unzipして出てきたPythonファイルを実行します。(unzipを入れるのもお忘れなく)

$ unzip WindowsDefenderATPOnboardingPackage.zip
$ python MicrosoftDefenderATPOnboardingLinuxServer.py
Re-running as sudo (you may be required to enter sudos password)
Generating /etc/opt/microsoft/mdatp/mdatp_onboard.json ...

無事成功していれば、以下のMDATP所属組織の確認でUUIDが返ってきます。

mdatp health --field org_id

稼働ステータスを確認するには --field healthy です。ほかにもフィールド指定を行わないと一通りの状況が確認できます。

$ mdatp health --field healthy
true
$ mdatp health
healthy                                     : true
licensed                                    : true
engine_version                              : "3.0"
app_version                                 : "101.16.24"
org_id                                      : "aaaaaaaa-6339-4c60-b2b7-xxxxxxxxxxxx"
log_level                                   : "info"
machine_guid                                : "bbbbbbbb-6cb3-3134-4fac-xxxxxxxxxxxx"
release_ring                                : "InsiderFast"
product_expiration                          : Aug 30, 2021 at 08:33:28 PM
cloud_enabled                               : true
cloud_automatic_sample_submission_consent   : "safe"
cloud_diagnostic_enabled                    : false
passive_mode_enabled                        : false
real_time_protection_enabled                : true
real_time_protection_available              : true
real_time_protection_subsystem              : "fanotify"
automatic_definition_update_enabled         : true
definitions_updated                         : Dec 14, 2020 at 09:13:05 PM
definitions_updated_minutes_ago             : 13
definitions_version                         : "82876"
definitions_status                          : "up_to_date"
edr_early_preview_enabled                   : "disabled"
edr_device_tags                             : []
edr_group_ids                               : ""
edr_configuration_version                   : unavailable
edr_machine_id                              : "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
conflicting_applications                    : unavailable
network_protection_status                   : "stopped"

検知テスト

EICARを利用して検知テストしてみます。まずリアルタイム保護が有効であるか確認します。

$ mdatp health --field real_time_protection_enabled
true

続いてcurlでEICARを取得して、検知したか確認します。

$ curl -o ~/eicar.com.txt https://www.eicar.org/download/eicar.com.txt
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    68  100    68    0     0     60      0  0:00:01  0:00:01 --:--:--    60
$ mdatp threat list
Id: "xxxxxxxx-6b10-4c97-a4c5-xxxxxxxxxx"
Name: EICAR-Test-File (not a virus)
Type: "virus"
Detection time: Mon Dec 14 21:31:50 2020
Status: "quarantined"

検知しました。MDATPの管理画面でも確認してみましょう。

デバイス一覧ではOS PlatformがLinuxとして登録されています。

詳細を確認するとAlertsにEICARを検知したことが確認できました。

EDRやってみる

それでは本題のEDRです。

プレビューのブログで紹介されている手順を実施していきます。

まだプレビューの機能であるので、デフォルト無効化されています。以下で有効化してステータスを確認します。

$ sudo mdatp edr early-preview enable
Early preview changed
$ mdatp health --field edr_early_preview_enabled
"enabled"

続いてEDRを反応させるためのスクリプトをcurlで取得し、Zipを解凍してスクリプトを実行します。

$ ./mde_linux_edr_diy.sh
/tmp/support_files.JH9E98
/home/centos
  adding: tmp/support_files.JH9E98/file_example.doc (stored 0%)
  adding: tmp/support_files.JH9E98/file_example.docx (stored 0%)
  adding: tmp/support_files.JH9E98/file_example.pptx (stored 0%)
  adding: tmp/support_files.JH9E98/file_example.pdf (stored 0%)
  adding: tmp/support_files.JH9E98/file_example.txt (stored 0%)
{"success":true,"key":"OoXF6E6ZWnYL","link":"https://file.io/OoXF6E6ZWnYL","expiry":"1 day"}

このスクリプトでは擬似的にdocxやpptxなどのファイルが作られ、Zipで圧縮してfile.ioへアップロードされました。

しばらくするとMDATP管理画面でインシデントが確認できます。

インシデントの詳細を見てみます。Alertsが2つあります。カテゴリーはExfiltrationとCollectionですね。

それぞれ選択すると詳細な解説や推奨の対応方法が書かれています。今回はファイルが検索・アーカイブされfile.ioにアップロードされたと書かれており、該当の操作やプロセスの出どころを確認するように推奨されています。

アラートの詳細を確認してみます。先程実行した./mde_linux_edr_diy.shからどのような処理がされたかプロセスツリーと供に見ることが可能です。以下のようにfindで各ファイルが検索されたり…

それらのファイルをまとめた/tmp/staging.zipを最終的にcurlでfile.ioにアップロードしているところまで特定できました。

更に前後の調査が必要であればSee in timelineでデバイスのタイムラインを確認したり、Advanced Hantingからクエリをかけて調査することも可能です。今回の場合はプロセスツリーから十分に起きた事象をたどることができました。ステータスをクローズにして完了します。

残念ながら「Microsoft Defender ATPの無料トライアルを始めてバックドア設置を検知・自動修復してみた」のようにインシデントの自動修復であるAuto Remidiationなどは、Linuxはまだ対応していないようでした。これが来たらすごく捗りそう。

まとめ

Microsoft Defender for LinuxとEDRのプレビューを試してみました。

非常に強力な機能をもつMDATPを各種Linuxディストリビューションで利用できるのはめちゃくちゃいいですね!

だんだんMDATPだけで回るようになってきていると思います。

臼田 佳祐

AWSとセキュリティやってます。普段はクラスメソッドで働いてます。クラウドネイティブでは副業としてセキュリティサービスの検証とかやってます。