NetApp Cloud Insights – Cloud Secureを使ってみた(SMB検知編)

2022.06.07

こんにちは。たかやまです。

前回Linux環境(NFS接続)でのCloud Secureランサムウェア検知をご紹介しました。

今回はWindows環境(SMB接続)でCloud Secureのランサムウェア検知を試してみたいと思います。

やってみた

ユーザ追加

1. ユーザ作成

Cloud SecureではActive Directory/LDAPに登録されているユーザ情報を紐づけてアクセス情報を確認することができます。情報確認用に新たにユーザを作成していきたいと思います。

Active Directoryサーバにログインし、検索から dsa.msc を入力して Active Directoryユーザーとコンピューター を表示します。

Active Directoryユーザーとコンピューター が表示されたらFSx for ONTAPに接続するOUを右クリックして新規作成ユーザ を選択します。

OUの設定がまだのかたはこちらのブログを参考に設定を実施してください。

ユーザ名を登録します。

2. ユーザプロパティ設定

追加されたユーザを右クリックして プロパティ を選択します。

ユーザの電話番号/住所/役職/写真等のプロパティ情報を登録します。

thumbnailphotoの登録コマンド

$photo = [byte[]](Get-Content C:\画像保存先path -Encoding byte)
Set-ADUser your_username -Replace @{thumbnailPhoto=$photo}
実行ログ(展開)
$photo = [byte[]](Get-Content C:\Users\Administrator\Pictures\neko_icon.jpg -Encoding byte)
Set-ADUser takayama -Replace @{thumbnailPhoto=$photo}

3. Cloud Secureユーザ確認

ユーザディレクトリコレクターは12時間間隔で同期するため、強制的に同期する場合は Restart を実行します。

The User list is refreshed every 12 hours.

Forensic User Overview

まだユーザディレクトリコレクターを設定していない場合は、こちらのブログを参考に登録を実施してください。
NetApp Cloud Insights – Cloud Secureを使ってみた(導入編) | DevelopersIO

左ペインの FORENSICSUsers にさきほど追加したユーザが表示されます。

ユーザを選択すると、設定した以下のプロパティ情報が表示されます。

  • ユーザの名前
  • ユーザの E メールアドレス
  • ユーザーのマネージャー
  • ユーザの電話連絡先
  • ユーザの場所

Forensic User Overview

ちなみに、このプロパティ情報はユーザディレクトリコレクタ設定にある Attribute Mappingの設定が紐付けられる形になります。Attribute Mappingに反映されるActive DirectoryのAttibute情報はユーザプロパティ 属性エディター から確認できます。

通知設定

Cloud Secureでは以下のイベント発生時に簡単にメール通知を実装できます。
今回はこちらの通知機能も設定していこうと思います。

  • Potential Attack
  • Warning
  • データコレクタの接続エラー

設定画面は ADMINNotifications から表示します。

今回はPotential Attackの通知を受け取りたいので、 Security Alertsにメールアドレスを入力します。

保存すると上部に Successfully saved email configuration! が表示されます

ディスクマウント

共有ボリュームに接続したいクライアントのコマンドプロンプトで以下のコマンドを実行します。

net use Z: \\[IPアドレス or 共有名]\フォルダ\サブフォルダ\
実行ログ(展開)
C:\Users\takayama>net use Z: \\SVM02.fsx-dev.classmethod.jp\C$\taka_vol1
コマンドは正常に終了しました。

ファイル作成

1. データコレクター停止

Linuxでの検知テストを実施した時と同様に、データコレクターが動作している場合は一旦停止します。

2. ファイル作成

デスクトップなどでファイル作成用の createfile.ps1 を用意します。

$files="\\[IPアドレス or 共有名]\フォルダ\サブフォルダ\"
1..1000 | foreach { new-item -path $files$_.txt }
# write something to files or it wont "read"
$i = 1
while ($i -le 1000) {
add-content -path $files$i.txt -value "ransom test"
$i++
}

3. powershell実行

powershellを実行します。

以下のメッセージが出力された Y を入力します。

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"):
実行ログ(展開)
実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): Y

ディレクトリ: \\SVM02.fsx-dev.classmethod.jp\share

Mode LastWriteTime Length Name
---- ------------- ------ ----
-a----2022/06/03 11:45  0 1.txt
-a----2022/06/03 11:45  0 2.txt
-a----2022/06/03 11:45  0 3.txt
-a----2022/06/03 11:45  0 4.txt
-a----2022/06/03 11:45  0 5.txt
-a----2022/06/03 11:45  0 6.txt
-a----2022/06/03 11:45  0 7.txt
-a----2022/06/03 11:45  0 8.txt
-a----2022/06/03 11:45  0 9.txt
-a----2022/06/03 11:45  0 10.txt
-a----2022/06/03 11:45  0 11.txt
-a----2022/06/03 11:45  0 12.txt
-a----2022/06/03 11:45  0 13.txt
・
・
・
-a----2022/06/03 11:45  0 998.txt
-a----2022/06/03 11:45  0 999.txt
-a----2022/06/03 11:45  0 1000.txt

1000個ファイルが作成されていればOKです。

ランサムウェア実行

1. データコレクター再開

正しいパスワードを入力して、データコレクターを再開します。

2. ransomware.ps1ファイル作成

デスクトップなどにランサムウェアの代わりとなるスクリプトの ransomware.ps1 を用意します。

$files="\\[IPアドレス or 共有名]\フォルダ\サブフォルダ\"
Write-Host ""
Write-Host "Simulating Ransom attack..."
Write-Host ""
$i = 1
while ($i -le 1000) {
Invoke-Item -path $files$i.txt
Stop-Process -Force -Name "notepad"
add-content -path $files$i.txt -value "ransome"
Rename-Item -Path $files$i.txt -NewName "$i.txt.lol"
$i++
}

3. powershell実行

以下のメッセージが出力された Y を入力します。

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"):

スクリプトの処理が終わると、作成したテキストファイルの拡張子が lol に変わります。

Cloud Secure確認

1. メール確認

Cloud Secureを確認する前に、先程設定したメール通知を確認します。
メールを確認するとRansomware attackに関するメッセージが届いていることを確認できます。

View details に記載されてるリンクをクリックすることで、すぐにアラート画面に飛ぶこともできます。

2. Cloud Secure確認

左ペインの Alerts から検知していることが確認できます。

検知の詳細は以下の通りです。
ADで設定した情報と紐付けられており、どのユーザが攻撃者になっているかひと目でわかります。

各項目についてはこちらのブログで紹介しているのでぜひ確認ください。

今回Cloud Secureは自動スナップショットのみを取得してくれる動作にしているため、こちらの画面から Restrict User を使い接続をブロックしてみます。

制限の内容は以下の組み合わせになります。
今回は12時間アクセスをブロックする設定にしてみます。

  • Limit Access : Block / Read-only
  • Time Period : Permanetly / 1hour / 2hour / 4hour / 8hour / 12hour

ん?以下のエラーメッセージがでてうまく制限できていないようです。
エラー内容はSVMの is-exportpolicy-enabled オプションがtrueになっていない場合に発生するようです。

classemthod-dev-fsx-ontap-svm02: Export policy usage for SMB protocol is disabled for the SVM.Enable use of "export-policy" to use restrict user access feature.

Restrict機能を利用するためSVMで is-exportpolicy-enabled オプションを有効化していきます。

現在はオプションが表示されないため設定されていないことが確認できます。

FsxId06b3d2e945d454c19::> export-policy rule show -policyname default -vserver classmethod-dev-fsx-ontap-svm02
Policy  RuleAccess   ClientRO
Vserver  NameIndex   Protocol Match Rule
------------ --------------- ------  -------- --------------------- ---------
classmethod-dev-fsx-ontap-svm02
 default 1   any  0.0.0.0/0 any

以下のコマンドで特権になります。

set -privilege advanced
実行ログ(展開)
FsxId06b3d2e945d454c19::> set -privilege advanced

Warning: These advanced commands are potentially dangerous; use them only when directed to do so by NetApp personnel.
Do you want to continue? {y|n}: y

以下のコマンドでSVMに -is-exportpolicy-enabled オプションを有効にします。

cifs options modify -is-exportpolicy-enabled true -vserver <vserver>
実行ログ(展開)
FsxId06b3d2e945d454c19::*> cifs options modify -is-exportpolicy-enabled true -vserver classmethod-dev-fsx-ontap-svm02

以下のコマンドで export-policy を適用する対象クライアントを設定します。
今回は 0.0.0.0/0 を指定し、すべてのクライアントを対象にします。

export-policy rule create -vserver <vserver> -policyname default -protocol cifs -clientmatch 0.0.0.0/0 -rorule any -rwrule any
実行ログ(展開)
FsxId06b3d2e945d454c19::*> export-policy rule create -vserver classmethod-dev-fsx-ontap-svm02 -policyname default -protocol cifs -clientmatch 0.0.0.0/0 -rorule any -rwrule any

設定コマンドは以上です。最後に設定が問題ないか確認していきます。

cifs options show  -fields is-exportpolicy-enabled -vserver <vserver>
export-policy show -vserver <vserver>
export-policy rule show -policyname default -vserver <vserver>
実行ログ(展開)
FsxId06b3d2e945d454c19::*> cifs options show  -fields is-exportpolicy-enabled -vserver classmethod-dev-fsx-ontap-svm02
vserver is-exportpolicy-enabled
------------------------------- -----------------------
classmethod-dev-fsx-ontap-svm02 true

FsxId06b3d2e945d454c19::*> export-policy show -vserver classmethod-dev-fsx-ontap-svm02
Vserver  Policy Name
---------------  -------------------
classmethod-dev-fsx-ontap-svm02
 default
classmethod-dev-fsx-ontap-svm02
 fsx-root-volume-policy
2 entries were displayed.

FsxId06b3d2e945d454c19::*> export-policy rule show -policyname default -vserver classmethod-dev-fsx-ontap-svm02
 Policy  RuleAccess   ClientRO
Vserver  NameIndex   Protocol Match Rule
------------ --------------- ------  -------- --------------------- ---------
classmethod-dev-fsx-ontap-svm02
 default 1   any  0.0.0.0/0 any
classmethod-dev-fsx-ontap-svm02
 default 2   cifs 0.0.0.0/0 any
2 entries were displayed.

export-policyが効いた状態でWindowsクライアントからFSx for NetAppのフォルダにアクセスしようとすると

このような形でアクセスが制限されていることが確認できます。

ONTAP CLIでSVMのexport-policyのルール確認すると cloudsecure_rule が追加されていることが確認できます。

FsxId06b3d2e945d454c19::*> export-policy rule show -policyname default -vserver classmethod-dev-fsx-ontap-svm02
 Policy  RuleAccess   ClientRO
Vserver  NameIndex   Protocol Match Rule
------------ --------------- ------  -------- --------------------- ---------
classmethod-dev-fsx-ontap-svm02
 default 1   nfs3,cloudsecure_rule, never
 nfs4,10.0.0.138,10.0.0.184
 cifs
classmethod-dev-fsx-ontap-svm02
 default 3   any  0.0.0.0/0 any
classmethod-dev-fsx-ontap-svm02
 default 4   cifs 0.0.0.0/0 any
3 entries were displayed.

FsxId06b3d2e945d454c19::*> export-policy rule show -policyname default -vserver classmethod-dev-fsx-ontap-svm02 -ruleindex 1

Vserver: classmethod-dev-fsx-ontap-svm02
Policy Name: default
 Rule Index: 1
Access Protocol: nfs3, nfs4, cifs
List of Client Match Hostnames, IP Addresses, Netgroups, or Domains: cloudsecure_rule,10.0.0.138,10.0.0.184
 RO Access Rule: never
 RW Access Rule: never
User ID To Which Anonymous Users Are Mapped: 65534
   Superuser Security Types: none
   Honor SetUID Bits in SETATTR: false
  Allow Creation of Devices: false
 NTFS Unix Security Options: fail
 Vserver NTFS Unix Security Options: use_export_policy
  Change Ownership Mode: restricted
  Vserver Change Ownership Mode: use_export_policy

次にさきほど設定したLimit Accessを Read-only に変更してみたいと思います。

この状態ではファイルの読み込みは可能となります

もちろん書き込みはできません。

このときのSVMのexport-policyのルールはこちらです。
RO Access Rule がanyに変わっていることが確認できます。

FsxId06b3d2e945d454c19::*> export-policy rule show -policyname default -vserver classmethod-dev-fsx-ontap-svm02 -ruleindex 1

Vserver: classmethod-dev-fsx-ontap-svm02
Policy Name: default
 Rule Index: 1
Access Protocol: nfs3, nfs4, cifs
List of Client Match Hostnames, IP Addresses, Netgroups, or Domains: cloudsecure_rule,10.0.0.138,10.0.0.184
 RO Access Rule: any
 RW Access Rule: never
User ID To Which Anonymous Users Are Mapped: 65534
   Superuser Security Types: none
   Honor SetUID Bits in SETATTR: false
  Allow Creation of Devices: false
 NTFS Unix Security Options: fail
 Vserver NTFS Unix Security Options: use_export_policy
  Change Ownership Mode: restricted
  Vserver Change Ownership Mode: use_export_policy

ファイルリストア

最後にONTAP Snapshotを使ってファイルリストアを行いたいと思います。
ONTAP Snapshotの機能の詳細についてはこちらのブログをご覧ください。

ファイルリストアにあたりアクセス権を戻します。
アクセス権はRestore Access から戻すことができます。

ポップアップがでたら Restore Access を選択します。

export-policyから cloudsecure_rule が削除されていることが確認できます。

FsxId06b3d2e945d454c19::> export-policy rule show -policyname default -vserver classmethod-dev-fsx-ontap-svm02
             Policy          Rule    Access   Client                RO
Vserver      Name            Index   Protocol Match                 Rule
------------ --------------- ------  -------- --------------------- ---------
classmethod-dev-fsx-ontap-svm02
             default         3       any      0.0.0.0/0             any
classmethod-dev-fsx-ontap-svm02
             default         4       cifs     0.0.0.0/0             any
2 entries were displayed.

Windowsクライアントに戻り共有ボリュームを右クリックし、プロパティ を選択します。

以前のバージョン タブからランサムウェア実行前のスナップショットを選択して、 復元 を選択します。デフォルトでは以下のスナップショットが取得される設定になっています。

  • hh:05に1時間単位で作成され、最大6世代保持する毎時スナップショット
  • 月曜日から土曜日の00:10に作成され、最大2世代保持する日次スナップショット
  • 毎週日曜日の00:15に作成され、最大2世代保持する週次スナップショット

スナップショットの使用 - FSx for ONTAP

復元できるとポップアップが出力されます。

ボリューム内に暗号前のファイルを復元できたことが確認できます。

まとめ

Linux(NFS)については公式でシュミレーションのランサムウェアスクリプトが提供されていますが、Windows(SMB)でも同様のスクリプトを用意して動作確認することができました。

SMB接続の場合、ディレクトリサービスと連携してユーザ情報が詳細に見えるのもいいですね。

ONTAPストレージを利用している環境であれば、簡単にUBA検知を実装できるCloud Secureいかがだったでしょうか?

再掲になりますが、こちらのブログも参考にCloud Secureの利用のお役に立てれば幸いです。

以上、たかやまでした。