ソリューション

マクニカネットワークスが取り扱う製品で、皆様の課題を解決します

変化する攻撃手口を分析の組み合わせで検知!
Splunkによる不正ログイン攻撃の検知方法

SIerの為の実践講座

本講座は、ITエンジニアの為の明日から役に立つシステム構築スキルや技術・製品スキルなどをご提供します。まだお客様へご提案したことがない製品や技術でも、ポイントを押さえた実務知識を短時間に把握したい方にお勧めです。

【今回の講座】

最近、不正ログイン攻撃に関するニュースを目にする機会が増えています。一度、不正ログイン攻撃により情報流出が発生すると、原因、影響範囲の特定、対策の立案と実施などの対応に追われてしまいます。また、影響範囲の特定や原因の特定が長期化したことで、ビジネスに与える影響が深刻化するケースも増えてきています。このような深刻な問題を引き起こしかねない不正ログイン攻撃に対しては、検知が重要なポイントです。最近では攻撃元となるIPアドレスや攻撃時に使用するユーザIDが常に変化する場合など従来の閾値を用いた一律な検知ルールでの対処が困難な攻撃も確認されているようです。そこで今回は、データ分析プラットフォームであるSplunkを使用して、通常のログ監視による検知の手法と、一律な検知ルールでの対処が難しい不正ログイン攻撃に対してユーザの挙動分析など複数の分析を組み合わせて検知を行う手法をご紹介します。

主な攻撃手法

1.ブルートフォース攻撃

まずは、不正ログイン攻撃で主に使用される3つの攻撃手法についてご説明します。

  • 総当たり攻撃
    パスワードに対して可能な組み合わせを全て試す手法です。
    パスワードの例:)
      4桁の数字:0000~9999の全通りを試す
      アルファベット6文字であれば、26^6=141兆通り
  • 辞書攻撃
    パスワードに対して可能な組み合わせを全て試す手法です。
    例)password、qwaszx、123456 など
辞書ファイルはオンラインで様々なものが公開されています。
https://dazzlepod.com/site_media/txt/passwords.txt

4桁の数字などを除き、総当たり攻撃は成功率が低いため、主に辞書攻撃が使用されます。

2.リバースブルートフォース攻撃

複数ユーザに対して固定のパスワードでログイン施行する攻撃手法です。ユーザリストはSNSやブログ、ツール等を使用して入手します。

3.パスワードリスト

過去の攻撃(不正アクセス)で入手したアカウント情報を再利用する手法です。アカウント情報を使いまわしているユーザが攻撃対象となり、他の攻撃と比較して、1アカウント当たりのログイン失敗数が少ないことが特徴です。

不正アクセスの例:
  • Webサイトに対する不正アクセスを実行し、DBから直接アカウント情報を抽出する
    • SQLインジェクションなどのWebアプリの脆弱性を突く攻撃
    • CMSの脆弱性を突く攻撃
  • Webサイトの管理者PCに対して、スピアフィッシングメールなどでマルウェアを送り込み、管理者PCからDBにアクセスして、アカウント情報を窃取する
攻撃手法 説明 IDとパスワード
ブルートフォース 予め用意したパスワードのリストを固定のIDに試す ブルートフォース
リバースブルートフォース 予め用意したIDのリストに対して固定のパスワードを試す リバースブルートフォース
パスワードリスト 他の認証システムより入手したIDとパスワードの組み合わせを試す パスワードリスト

Splunkについて

Splunkは、非構造化データを容易に検索・分析するためのNoSQL型のデータ分析プラットフォームです。テキスト化されているデータであれば、ログフォーマットの違いを意識せずにあらゆるデータをSplunkに取り込むことが出来ます。Splunkはセキュリティやマシンデータ解析など、様々な用途で使用することが可能です。また、リアルタイム処理が可能なため、サーバ監視や障害検知での用途にも向いています。下記のイラストではアプライアンスに見えますが、Splunk自体はソフトウェアです。専用のサーバを用意し、Splunkをインストールして動作させます。

データ分析プラットフォーム
  • Splunkによる分析

    Splunkの大きな特徴の一つである検索機能についてご紹介します。WebにおけるGoogleのように、検索条件を自由に定義して、Splunkに取り込んだデータの中から見たい情報だけを高速に表示することができます。
    検索に使える条件として下記のようなものがあります。

    キーワード 例)error
    論理演算子 例)error OR failed NOT application
    ワイルドカード 例)172.22.* OR 172.16.*
    正規表現による検索
    100種類の検索コマンド組み合わせによる検索
    検索結果をパイプ「|」でつなげることで、絞り込みや結果の編集も可能
        例)error | head 1
    下記がSplunkの検索画面です。ブラウザでSplunkサーバへアクセスしてGUIによって操作できます。上部の検索BOXに、キーワードなどの検索条件を入力して、画面下部に検索結果が表示されます。

  • Splunkの検索画面

    Splunkの検索画面

    上記のように検索した結果を、そのままレポートとして表示・保存することや、ダッシュボードに表示して複数の検索を一画面に表示することが可能です。

    レポート例

    レポート例

    ダッシュボード例

    ダッシュボード例

主な攻撃に対する検知方法

1.ブルートフォース攻撃の検知

検知を行う攻撃手法、及び検知条件を決定し、Splunkに対し条件に沿って検知できるよう設定を行います。ここでは、ブルートフォース攻撃を例にとって説明します。尚、本記事でご紹介する検知条件等は一般的な事例を元にした一例となります。実際の環境ではご使用のシステムやアクセス等環境に基づいて条件を算出し検知設定を行う必要があります。

例:)ブルートフォース攻撃

ブルートフォース攻撃

ブルートフォース攻撃の検知のため、1アカウントで1時間に20件以上のエラー発生を検知条件としてSplunkでログ監視を行います。
具体的には、Splunkで1時間毎に各ユーザのエラー回数を算出し、閾値(20エラー)を超えているユーザがいないかを監視します。尚、Splunkでは、集計の時間範囲の変更(1時間から3時間へ変更等)や閾値の変更(20件から50件へ変更等)などの設定変更を容易に行うことができますので、運用に合わせて簡単に条件の調整を行うことができます。

Splunkの検索コマンド例

sourcetype="aceess_auth" result=error earliest=-1h@h | stats count by result user_id | search count > 20

  • 検索コマンドの意味
  • sourcetype="aceess_auth":検索対象ログの指定
  • result=error:ログのログイン結果を表す箇所を検索対象としてエラー(ログインエラー)を指定
  • earliest=-1h@h:検索対象範囲に直近一時間を指定
  • stats count by result user_id:ユーザID毎にエラー回数を集計
  • search count > 20:エラー回数が20回より大きい結果を指定
ダッシュボードを使用した経過表示
  • 統計対象:ユーザ毎のログインエラー回数
  • 閾値  :20回
ブルートフォース攻撃検知

Splunkでは上記のようにダッシュボードを使用することで、視覚的にエラー発生状況を確認することができます。上記の場合では、「最大エラー数」が「閾値」を上回った時にアラートがあがるように設定します。ダッシュボードで視覚的に表示することで、閾値を超えた後のエラー発生状況の推移を確認することができますので、閾値を超えたエラー発生が一時的な状態だったのか、あるいは他のアカウントへの攻撃が続いているか等を確認することが可能です。

閾値を超えた場合の動作として、Splunkではメール、スクリプトの実行、及びRSSの3種類のアラートをあげることができます。

アラート作成

「メール送信」では、メールの内容に結果を含めることができますので、設定次第で管理者に対して被害に遭った可能性のあるIDリスト等を通知することが可能です。
Splunkのアラート機能を使用することにより、検知、被害状況の確認、対策等を効果的に行うことができます。

2.リバースブルートフォース攻撃の検知

リバースブルートフォース攻撃は予め用意したユーザIDのリストに対して固定のパスワードを試します。そのため今回は、攻撃を受けた際は1つのIPアドレスで複数のユーザIDが使用されると想定します。そこで、検知条件として「一時間に複数のID(5 ID)を使用してログインを試行したIPアドレス」を設定し、Splunkを使用してこの条件に合いたした場合にアラートをあげる設定を行います。

Splunkの検索コマンド例

sourcetype="aceess_auth" result=error earliest=-1h@h | stats count by src_ip user_id | search count > 5

検索結果のダッシュボード表示
  • 統計対象:接続元IPアドレス毎のログイン試行ユーザID
  • 閾値:5 ID
リバースブルート攻撃検知

上記ダッシュボードで、閾値を超えそうなユーザIDがどのくらい存在するかを確認することができます。
但し、上記検知方法では、通常の動作として、1つのIPアドレスから複数IDへのアクセスがある場合にも「不正攻撃の疑いのあるIPアドレス」として検知してしまう可能性があります。これを防ぐ方法として、他の分析と組み合わせる方法をご紹介します。例えば、ユーザIDによる検知が行われたあと、直近一ヶ月のエラー推移を確認することで、ある日を境にエラー数が大幅に増加している場合はリバースブルートフォース攻撃を受けている、増減を確認できない場合は攻撃を受けていない等の判断材料とすることができます。

直近一ヶ月の一日毎のエラー推移のダッシュボード
  • 統計対象:システム全体でのログインエラー回数
直近一か月のエラー推移 3.パスワードリスト攻撃検知

パスワードリスト攻撃は他の認証システムより入手したIDとパスワードの組み合わせを試します。そのため今回は、攻撃を受けるとログイン失敗数が跳ね上がると想定します。実際に、過去の不正ログイン攻撃でも大量のログイン失敗回数を検知することで早期検知につながった事例が多いようです。そこで、検知条件として、「一時間に発生したログインエラー数が1000以上」と設定し、Splunkを使用してこの条件に合いたした場合にアラートをあげます。

Splunkの検索コマンド例

sourcetype="aceess_auth" result=error earliest=-1h@h | stats count by result | search count > 1000

検索結果のダッシュボード表示
  • 統計対象:システム全体でのログインエラー回数
  • 閾値:1000回
パワードリスト攻撃

上記ダッシュボードで、一時間毎のエラー発生回数を表示し、エラーの発生傾向を把握することができます。
この方法により短期間で集中的に攻撃を受けた際には検知が可能ですが、最近では検知の網を潜り抜けるために、ログイン試行毎にIPアドレスやユーザIDを変更し、またログイン試行回数も非常に少ない頻度の攻撃が行われているようです。このような攻撃はエラー発生回数やIPアドレスに対して一律に閾値を設ける方法では検知が非常に難しく、対策に頭を悩ませている管理者の方も多いのではないかと思います。従来の分析による検知が難しい攻撃については、過去の情報との比較等、複数の分析を組み合わせることで検知確率を上げることができます。

従来の攻撃

従来の攻撃

最近の攻撃

最近の攻撃

過去情報との比較による検知

過去情報との比較による検知 4.複数分析の組み合わせによる検知

一律なルールでの検知が難しい攻撃手法に対して、過去の情報との比較など複数の分析を組み合わせることで検知する方法をご紹介します。検索コマンドは、システムやアクセス状況、分析の切り口の取り方など環境により異なりますので、ここでは一例として分析の概要をご紹介します。

  • 前週の同時刻のログインエラー数との比較
    前週の同じ曜日、同じ時刻(例えば月曜日の14時から15時など)との一時間毎のエラー数を比較し、前週より大きくログインエラー数が増えている場合(例:深夜に通常の3倍のエラーが発生しているなど)、不正ログイン攻撃を受けている可能性があります。
前週とのエラー比較のダッシュボード表示
  • 統計対象:システム全体でのログインエラー回数
前週とのエラー比較のダッシュボード表示
  • 過去三ヶ月間ログインしていないユーザのエラー数
    パスワードリスト攻撃が発生した場合、攻撃者は入手したリストを元に様々なユーザIDを駆使して攻撃を仕掛けるため、システムに登録されていないユーザIDでのログインが増加します。ここに着目し、Splunkを使用して過去3ヶ月以内にログインが成功したユーザIDをリスト化したあと、そのリストに含まれないユーザIDのエラー回数を集計します。リストに含まれていないユーザIDを擬似的にシステムに存在しないユーザIDとみなすと、このエラー回数が大きく増加している場合は不正ログイン攻撃を受けている可能性があります。
過去三ヶ月ログインしていないユーザのエラー回数のダッシュボード表示
  • 統計対象:ユーザID毎のログインエラー回数
前週とのエラー比較のダッシュボード表示

ご紹介した分析の他にも、過去一ヶ月間の各曜日でのログインエラー数平均との比較や、Webアクセス時のパラメータ(UserAgent等)を分析することでも攻撃検知の判断材料とすることができるでしょう。
これまでご紹介した複数の分析等を一つのダッシュボードで表示し、多角的な視点でより細かく状況を確認することで、一律なルールでは検知困難な不正ログイン攻撃に対して検知確率を上げることができます。

まとめ

ログを活用することにより、主要な不正ログイン攻撃が検知可能なことをご理解頂けたかと思います。一律なルール化では検知の難しい攻撃に対しても、Splunkにより攻撃手法に合わせてログ分析を複数組み合わせることで検知の確率を上げることができます。また、検知時にアラートをあげることにより、調査および対策を効果的に実施することができ、被害を最小限に抑えることが期待できます。Splunkを使って、不正ログイン攻撃に怯えることのない運用を実現しましょう。

いつか見た景色 from Staff's Albums