こんにちは、臼田です。
皆さん、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だけで回るようになってきていると思います。