[Cortex XDR]XQLを使用してサーバの設定ファイルの変更監視を行う - BIOC

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 
L4 Transporter
この記事は役に立ちましたか? はい いいえ
評価なし

この記事では、XQLで記述したクエリを用いたBIOCルールによって

Linuxサーバの設定ファイルの変更監視する方法について説明します。

 

また、本記事の内容はお客様の運用環境において要求される事項と必ずしも一致するものではなく、

動作を保証するものではありませんのでご承知おきください。

 

 

指定のディレクトリ、およびファイルを監視する

Linuxサーバで、ファイルのアクセス権、所有者の変更、Remove, Rename, Write, Createイベントが

発生した時にアラートを出力するようにします。

以下のファイル及びディレクトリを監視対象としてみます。

 

・/etcディレクトリ直下の拡張子.confのファイル

・/bootディレクトリ内のファイル及びサブディレクトリ

・/etc/crontab

・/etc/cron.dailyディレクトリ内のファイル及びサブディレクトリ

・/etc/cron.hourlyディレクトリ内のファイル及びサブディレクトリ

・/etc/cron.weeklyディレクトリ内のファイル及びサブディレクトリ

・/etc/cron.monthlyディレクトリ内のファイル及びサブディレクトリ

 

 

XQLクエリは以下のとおりです。 監視対象となるファイルパス「action_file_path」は

正規表現で記述しています。より良い正規表現があると思うので色々試して見てください。

また、見てただいてわかるとおり正規表現を使う場合は「~=」という演算子を使います。

 

dataset = xdr_data
| filter agent_os_type = ENUM.AGENT_OS_LINUX and
  event_type = ENUM.FILE and
    event_sub_type in ( ENUM.FILE_CHANGE_MODE, ENUM.FILE_CHANGE_OWNER, ENUM.FILE_REMOVE ,ENUM.FILE_RENAME, ENUM.FILE_WRITE, ENUM.FILE_CREATE_NEW ) and
    (
       action_file_path ~= "^\/etc\/[\w]+(.conf)$" or
       action_file_path ~= "^/etc/crontab$" or
       action_file_path ~= "^\/etc\/cron\.daily\/.+" or
       action_file_path ~= "^\/etc\/cron\.hourly\/.+" or
       action_file_path ~= "^\/etc\/cron\.weekly\/.+" or
       action_file_path ~= "^\/etc\/cron\.monthly\/.+" or
       action_file_path ~= "^\/boot\/.+"
    ) 

filter action_file_path !~= ".+(.swp|.swx)$"

 

 

BIOCルールを作成する

上にXQLを使ってBIOCルールを作成します。

ルールを作成する画面で以下のようにクエリをテストし成功すると条件に一致したイベントが検出されます。

期待しない結果が出てくる場合はここでXQLのチューニングを行います。

 
massaito_0-1672213718847.png
 
EVENT_SUB_TYPEとACTION_FILE_PATHのところを拡大
massaito_0-1672276520710.png

 

action_file_pathに含まれる値の内訳

massaito_1-1672213741205.png

 

 

ルールの名前、Severity、MITRE ATT&CKにおけるTactic/Techniqueなどを設定し作成します。
OKボタンをクリックすると、

massaito_2-1672213837906.png

 

BIOC Rulesの画面に作成したルールが表示されます。

massaito_3-1672213899151.png

 

 

監視対象のファイルを操作する

ここでは2つの操作を実施してみたいと思います。

1つ目は、sshでLinuxサーバ(ホスト名ubuntusvr、IP 192.168.68.114)リモートアクセスして、

/etc/resolv.confの編集を行い最終行にちょっとしたコメント行を追加し、

 

massaito_4-1672214334662.png

 

2つ目は、/etc/cron.dailyディレクトリにあるbsdmainutilsの名前を変更してみます。

(sudo mv bsdmainutilsbsdmainutils.renameのところ)

massaito_5-1672214416561.png

 

 

インシデントを確認する

サーバのログデータがクラウドに送信されるとBIOCルールによって判定されインシデントが作成されました。

massaito_6-1672214578977.png

 

 

Linux File Monitoringというアラート名で2つのHigh Severityのアラート(赤いところ)が表示されています。

massaito_8-1672214718532.png

 

 

/etc/resolv.confの操作で発生したアラートを確認する

まず1つ目のアラートを確認してみます。

INITIATOR_PATHにvimが、FILE_PATHに/etc/resolv.confが表示されており、

vimによってresolv.confが操作されたということがわかります。

massaito_2-1672276983420.png

 

このアラートからCausality Chainを確認すると、

Bのマーク(オレンジ枠のところ)赤く塗られて強調表示されており、ここで検知したことがわかります。

massaito_9-1672214885228.png
 
Bマークの下のアイコンをクリックするとvim(エディタ)を用いて編集したことがわかります。(CMDに書かれたコマンド)
massaito_0-1672215763475.png

 

 

余談ですが、2つ左隣のアイコン(黄色の枠)を見ると、ユーザーがrootに変更になったことがわかります。

vimをsudoコマンドで起動した後に該当ファイルを編集したので、このようなプロセスの連鎖になっています。

 

massaito_3-1672277414156.png

 

また、プロセスの連鎖をもう少し左側にさかのぼっていくと雲のマークのアイコンがあります。

白枠のメッセージに

sshd has been controlled from a remote host; connection details: local IP address: 192.168.68.114, local port: 22, remote IP address: 192.168.68.104, remote port: 57507

 

と書かれておりsshによってリモートアクセスが行われ、そこが起点になっていることがわかります。

実際にsshでリモートアクセスして操作していたので、同じ結果がCausality Viewに表示されています。

massaito_0-1672215873614.png

 

 

/etc/cron.dailyディレクトリにあるファイル操作で発生したアラートを確認する

次に2つ目のアラートを確認してみます。

INITIATOR_PATHに/usr/bin/mvが、FILE_PATHに/etc/cron.daily/bsdmainutils.renameが表示されており、

mvによってbsdmainutils.renameが操作されたということがわかります。

massaito_1-1672276950290.png

 

 

上の例と同様、このアラートからCausality Chainを確認すると、

Bのマーク(オレンジ枠のところ)赤く塗られて強調表示されており、ここで検知したことがわかります。

(よく見ると上の例のCausality Chainと同じでsshが起点になってます。)

massaito_11-1672215575959.png

 

 


Bマークの下のアイコンをクリックするとmvを用いて名前を変更していたことがわかります。(CMDに書かれたコマンド)

massaito_13-1672215629854.png

 

このようにして、サーバの変更監視にBIOCルールを活用することもできます。

実際には運用環境に合わせて適切なXQLを記述する必要があると思いますが 、

監視の必要性がある場合は参考にして見てください。

 

Tech Doc

BIOCルールのついての詳細はこちら

正規表現におけるXQLの演算子についてはこちら

 

この記事を評価: