はじめに
LogPoint は、次世代のSIEM(セキュリティ情報およびイベント管理)製品です。
前回のブログで、LogPoint の検索クエリの基本的な使い方の説明と、検索クエリが検索だけでなくアラートやダッシュボード、レポートにも簡単に利用できることを紹介しました。
さて最近では、リモートワークの拡大により社外から社内システムにアクセスできる環境が増えてきています。そのため、社内システムが外部から、不正ログインの攻撃を受けるケースも増えています。
今回は、LogPoint を使って、不正ログインが試行されていることや、不正ログインが成功してしまったことを、簡単に検知できることを紹介します。また、不正ログインの成功が見つかった場合、次にどのような対応を取ればよいのかについて簡単に説明します。
不正ログイン攻撃について
今回は不正ログイン攻撃の手法として、ブルートフォース攻撃・辞書攻撃を取り上げます。
これらの攻撃は、パスワードのような認証情報を、網羅的に試行したり、既知のパスワードのリストから試行して、不正にログインしようとする攻撃手法です。
以下、不正ログインのイベントを検索する例、連続した不正ログインを検知する例、不正ログインの成功を検索する例を示し、最後に、不正ログインが見つかった場合の対応の考え方の例について、MITRE ATT&CK®を含めて簡単に説明します。
不正ログイン失敗の検知
単独のログイン失敗の検索
このような攻撃の特徴として、ログインの試行と失敗が何度も発生します。
これらの攻撃が発生していることを知るため、まずログインの失敗を検索します。
以下の例は、ログイン失敗を検知する例です。
label=Login label=Fail
この検索では、正規化されたログにLoginおよびFailのラベルがあるメッセージを探します。
以下が検索結果の表示例です。
ご覧のように、非常に単純な形式でログイン失敗を検知することができます。
メッセージの正規化を行わない製品の場合、メッセージが
- ログインに関するメッセージであることを示すイベント番号やプロセス名
- ログイン失敗に関するイベント番号やメッセージ内容
といったことを指定する必要があります。
しかしLogPoint の場合、正規化、ラベル付けされたログであれば、それらのラベルを指定すればよいので、上に例示したような対象メッセージやイベントについての知識が少なくても容易に検索することができます。
連続した不正ログインの検知
不正ログイン攻撃では、ログインの失敗が繰り返されます。そのための検索クエリ例を以下に示します。
[20 label=Login label=Fail having same user] | chart count() by user order by count() desc
この検索クエリの各部分の意味は、以下のとおりです。
[ … ] | 角括弧内が完結した一つの検索クエリであることを指定 |
20 | 角括弧の終了までが20回発生することを指定(最少20回) |
label=Login | Login ラベルがあるログを対象 |
label=Fail | Fail ラベルがあるログを対象 |
having same user | user フィールドの値が同じログを対象 |
| | | の前段の検索結果を後段のコマンドに渡す |
chart | chartコマンドで、後続のcount関数を用いて数えた結果を一覧表示 |
count() by user | 検索結果のuser フィールド毎にカウント |
order by count() desc | カウント結果(失敗数)を降順に並べ替え |
以上をまとめると、はじめに “|” の前段で、同じユーザーがログイン失敗を20回以上繰り返したことを検知します。
“|” の後段で、20回以上ログインに失敗したユーザーを、失敗数が多い順に並べて表示します。
以下は、検索結果の一例です。
不正ログインの試行のアラート
不正ログインの試行の条件を、「同一ユーザーが20回以上ログインに失敗していること」とする場合、上のセクションで使用した検索クエリを用いて、アラートを定義し管理者に通知できます。
アラートの定義方法については、前回のブログを参照してください。
不正ログインの成功の検知
不正ログインが試行されている場合に、それが成功したかどうかを検知することは、セキュリティ上非常に重要です。
LogPoint では以下の検索クエリで、不正ログインの成功を検知できます。
[20 label=Login label=Fail having same user] as s1 followed by [label=Login label=Successful] as s2 on s1.user=s2.user | chart count() by user order by count() desc
上の検索クエリの意味は、以下のとおりです。
[20 label=Login label=Fail having same user] | 同一ユーザーが20回ログインに失敗している(最少20回) |
as s1 | asの前段の検索結果に s1 と名前を付与 (後段で検索結果を利用するため) |
followed by | followed by の前段の検索イベントの発生後、その後段で示す検索イベントが発生していること |
[label=Login label=Successful] | ログイン成功 |
on s1.user=s2.user | s1で検索されたユーザーとs2で検索されたユーザーが同一 |
chart count() by user order by count() desc | 検索にマッチしたユーザーを降順に表示 |
LogPoint の場合、ある検索条件(一定回数のログイン失敗)が発生した後に、別の検索条件にマッチするログ(同一ユーザーでログインに成功)を検知するクエリは、”followed by”キーワードを利用することで記述できます。
このようなイベントの順序関係を指定する機能がない場合、このような検索は困難です。
以下に検索結果の一例を示します。
不正ログインが見つかった場合の対応
不正ログインが試行されていることが分かったり、不正ログインが成功していることが分かった場合、何らかの対応を取る必要があります。
いくつか考えられる代表的な対応例(*1)を以下に示します。
1. 不正ログインの試行が見つかった場合
- 不正ログイン試行元のマシンからの通信の拒否
- 上のIPアドレスが組織内の別マシンにアクセスしていないかの確認
- 不正ログインが成功した場合の監視レベルの引き上げ
2. 不正ログインが成功している場合の対応
- 不正ログインされている機器のネットワークからの切り離し
- 他の機器への不正ログインがないかの確認
- 情報漏洩等の確認
今回は、上の対応項目の中から、「不正ログイン試行元のマシンやIPアドレスからの受信の拒否」と「他の機器への不正ログインがないかの確認」について、LogPoint で対応できることを簡単に紹介します。
SOAR 機能を使った対応
不正ログインの試行が発生している場合の対応として、試行元のマシンからの通信を拒否することが考えられます。
この場合、上で説明した不正ログインの検知とそれによって発生するインシデントに対するSOAR (セキュリティインシデントへの自動応答)機能による対応が可能です。LogPoint には、セキュリティ脅威の自動調査や自動対応を行うプレイブックが80種類以上、組み込みで定義されています。
対応の流れは以下のとおりです。
- 規定の回数のログイン失敗をアラートルールで検知
- アラートルールの発動によりインシデント発生
- 発生したインシデントによりプレイブックをを自動実行
1.のために、「不正ログイン失敗の検知」で説明した検索クエリをアラートとして登録しておきます。登録方法については、前回のブログを参照してください。
2.は、発生したインシデントと実行するプレイブックを関連付けて定義します。
3.により、不正ログインを試行している機器のIPアドレスからの通信を拒否します。以下に、使用するプレイブックの例を示します。
図4 IPアドレスをブロックするプレイブックの例
このプレイブックで、IPアドレスのブロックを実行する機器やアプリケーションにIPアドレスを登録したり、その機器等にIPアドレスをブロックするコマンドを発行したりすることで、IPアドレスをブロックできます。
また、デフォルトのプレイブックで対応していない機器やアプリケーションの場合も、その機器やアプリケーションが公開しているAPIやコマンドを実行する部品をプレイブックに定義、追加することで対応ができます。
MITRE ATT&CK ベースのアラートルールを使った対応
LogPoint にあらかじめ組み込み済みのアラートルールは、MITRE ATT&CKに準拠して作成されています。
以下に、MITRE ATT&CK に準拠したLogPointのアラートルールのマトリックス表示を示します。
対象の項目をクリックすることにより、アラートルールの詳細を確認することができます。
図5 MITRE ATT&CKに準拠したLogPointのアラートルールのマトリックス表示
このマトリックス表示の横軸は、「Tactics(戦術)」という、セキュリティ侵害や攻撃のライフサイクル(段階)を示します。一般に、セキュリティ侵害は、左の戦術から右の戦術に進んでいきます。また、縦軸は、それぞれの攻撃手法をまとめた「Techniques(技法)」を示します。
今回の不正ログインの検知と同等のアラートルールは、「Credential Access(認証情報へのアクセス)」という戦術と、「Brute Force(総当たり)」という技法に分類されています。
総当たりによる不正ログインが見つかった場合、その後の対応を行うには戦術の右側の列を参照します。例えば、「Discovery(探索)」や「Lateral Movement(横移動、横断的侵害)」があります。「探索」の戦術には、アカウントやサービスの脆弱性を利用した攻撃の技法に対応したアラートルールがあります。また、「横移動」の戦術には、侵入に成功した機器から更に他の機器やサービスに侵入する技法に対応したアラートルールが登録されています。これらのルールを使用することにより、侵入後に発生した可能性のある攻撃を調べることができます。
また、不正ログインが見つかった場合に、その前段階の攻撃の兆候等を調べたい場合は、該当する戦術の左側の列を参照します。例えば、「Reconnaissance(偵察)」の戦術があります。「偵察」では、スキャンを受けていたり、ホスト情報を収集されていることを検知するアラートルールがあります。
これらのLogPointに組み込まれたアラートルールを使用することで、経験が少ないユーザーでも、攻撃を受けた場合に容易に対応を行うことが可能になります。
まとめ
本ブログでは、LogPoint で不正ログインの試行および不正ログインの成功を検知する方法を紹介しました。
LogPoint では、ログメッセージへのラベル付けや、時系列のイベントの検索機能があり、容易に不正ログインやその成功を検知することができます。
また、不正ログインの試行や不正ログインの成功が分かった場合の対応について、LogPoint での対応についてSOAR機能やMITRE ATT&CKベースのルールが使用できることを簡単に紹介しました。
LogPoint の機能を使用することにより、セキュリティの脅威の検知や対応を容易に行うことができます。
*1 情報セキュリティ対策、対応については、情報処理推進機構(IPA)の情報セキュリティページ等も参考にしてください。
by ky
LogPoint の長所・製品情報
- LogPoint は、Windowsのイベントログなどを正規化する時に、自動的にログを分類して標準化したラベルとしてfileやwriteなどを付加します。そのため、label=file、label=write、label=login のようにラベルを使用してログを検索することができます。また、項目名もuserやfileのように標準化されており、フォーマットが異なるデバイスなどのログを相関分析することができるようになっています。LogPoint ではこれをシングル タクソノミーと呼んでいます。
- LogPoint は、ログの種類に応じた正規化の定義を数多く装備しており、インストール後すぐに異常検知や分析をすることができます。
- 新しい形式のログをサポートするには、そのログ形式用のプラグインをインストールすることにより容易に対応できます。このプラグインはメーカーに作成を依頼できますし、お客様自身で容易に作成することもできます。
LogPoint の製品情報は以下のとおりです。
製品一覧からLogPointを選択してください
LogPointをインストール後に評価ライセンスをリクエストしてください