ファイルの不正アクセスは、どのように実行されるでしょうか。また、それをどのように検知し調査できるでしょうか。
本稿では、他の人のログイン情報を不正使用して、他の人になりすましてファイルサーバー上のファイルを書き換えた場合に、LogPointではどのように調査できるか紹介します。
今回は以下のシナリオとテスト環境で調査しました。
シナリオ
- Windows Server 2019のファイルサーバー上に保存されている secret.txt というファイルが不正に書き換えられていることが発覚。
- 書き換えたのはユーザーのHogeであるとWindowsのイベントログから分かったが、Hogeは書き換え権限を持っていても、そのような書き換えに覚えがない状況。
- 別のユーザーがHogeのアカウントを不正利用した可能性を調査し、別の端末からHogeのアカウントにログオンしている状況を確認。
- その結果、ユーザーXの端末からアクセスしたことが判明。
テスト環境
Windows Server 2019
- LogPoint Agent をインストール。
- ローカル セキュリティ ポリシーでファイルアクセスとログオンの監視機能を有効に設定し、監視対象ファイルを設定。
LogPoint
- LogPoint Agent用のコレクタ(イベントログの受信モジュール)を設定。
ログの調査
Windowsのイベントログは種類が多く、どのログを見たら何が分かるかノウハウが必要です。
LogPointでは、MITRE ATT&CKフレームワークをベースにしたアラートルールを標準に搭載しており、それらを使用して容易に必要なイベントを検知して調査することができます。
今回は、それらのアラートルールに使用されている検索クエリを参考にして、Windows Serverのイベントログの監査ログからファイルに書き込みがあったログを検索します。誰がいつファイルを書き換えたか以下の検索クエリを使用して調査します。
検索クエリ1
"user"!="*$" "device_ip" = "192.168.91.104" label=file label=write | chart count() by log_ts, user, file
クエリの意味は以下です。
“user”!=”*$” | Windowsのシステムユーザーを排除 |
“device_ip” = “192.168.91.104” | ログの送信元(Windows Server 2019)のIPを指定 |
label=file | ファイルにアクセスしたログに限定 |
label=write | ファイルに書き込みをしたログに限定 |
| | 上記で絞り込んだ結果のログを次へ渡す |
chart count() | chartコマンドでログ数をカウントする関数を使用 |
by log_ts, user, file | log_ts(ログ生成時間)、user名、file名 でグループ化して表示 |
これにより、ユーザーHogeが ファイル secret.txt を書き換えたことが分かります。
次にHogeのアカウントに別の端末からログオンしたかどうか以下で確認します。
注意:LogPointで標準化したログオンのラベルはLoginです。
検索クエリ2
label=User label=Login label=Successful | chart distinct_count(source_address) as UniqueSources by user order by UniqueSources asc limit 10 | search UniqueSources > 1
クエリの意味は以下です。
label=User | User名があるログに限定 |
label=Login | Loginのログに限定 |
label=Successful | Loginが成功したログに限定 |
| | 上記で絞り込んだ結果のログを次へ渡す |
chart distinct_count(source_address) as UniqueSources | chartコマンドでdistict_count関数を使用してユニークなsource_address数をカウントしてUniqueSourcesという名前にする |
by user order by UniqueSources asc limit 10 | user名でグループ化してカウント数を昇順に10個表示 |
| | 上記で絞り込んだ結果のログを次へ渡す |
search UniqueSources > 1 | UniqueSources数が1より大きいuserを表示 |
2ヶ所からアクセスしたのが確認できたため、どの端末からアクセスしたか以下で調査します。
これは、上記の検索結果後、Hogeの左にある虫眼鏡のアイコンをクリック(ユーザー名をHogeに限定して検索)した結果に | chart count() by user, source_address を追加した検索クエリです。
検索クエリ3
label=User label=Login label=Successful | filter “user”=”Hoge” | chart count() by user, source_address
クエリの意味は以下です。
label=User | User名があるログに限定 |
label=Login | Loginのログに限定 |
label=Successful | Loginが成功したログに限定 |
| | 上記で絞り込んだ結果のログを次へ渡す |
filter “user”=”Hoge” | UserをHogeに限定 |
| | 上記で絞り込んだ結果のログを次へ渡す |
chart count() by user, source_address | userとsource_addressでグループ化してログ数をチャート表示 |
これでユーザーHogeの端末以外(ユーザーXの端末)からアクセスしたことが判明します。
補足:ユーザーの端末のIPアドレスは管理されている前提です。
・HogeのIP: 192.168.93.62
・XのIP: 192.168.93.229
ファイルの不正アクセス検知について補足
- 今回、ファイルの書き換え時にアラート機能で検知するところを省略しログの検索から調査を始めました。これはアラートで通知しても、Hogeは書き換えのアクセス権を持っているユーザーのため、その時点では不正行為かどうか不明のためです。
- ファイルの書き換え時に検知したい場合はアラートルールを使用し、ファイルの書き換え状況を把握したい場合はダッシュボードを使用できます。今回調査に使用した検索クエリ1は、アラートルールとダッシュボードにそのまま使用することができます。
- 今回のシナリオでは、別の端末からHogeのアカウントを不正使用した例を紹介しました。検索クエリ2をアラートルールに使用することにより、今回のようなアカウントの不正使用を検知できます。
まとめ
LogPointでWindowsのイベントログを調査しましたが、EventIDを指定しなくともラベルや項目名など正規化機能で標準化されているため、目的のログを容易に調査することができます。
by fm
LogPointの長所
- LogPointは、Windowsのイベントログなどを正規化する時に、自動的にログを分類して標準化したラベルとしてfileやwriteなどを付加します。そのため、label=file、label=write、label=login のようにラベルを使用してログを検索することができます。また、項目名もuserやfileのように標準化されており、フォーマットが異なるデバイスなどのログを相関分析することができるようになっています。LogPointではこれをシングル タクソノミーと呼んでいます。
- LogPointは、ログの種類に応じた正規化の定義を数多く装備しており、インストール後すぐに異常検知や分析をすることができます。
- 新しい形式のログをサポートするには、そのログ形式用のプラグインをインストールすることにより容易に対応できます。このプラグインはメーカーに作成を依頼できますし、お客様自身で容易に作成することもできます。
LogPointの製品情報は以下です。
製品一覧からLogPointを選択してください
LogPointをインストール後に評価ライセンスをリクエストしてください