コンテンツにスキップ

クレデンシャルスタッフィング検出

クレデンシャルスタッフィングは、ハッカーが漏洩したユーザー認証情報のリストを使用して複数のウェブサイト上のユーザーアカウントに不正にアクセスするサイバー攻撃です。本記事では、Wallarmのクレデンシャルスタッフィング検出を使用してこの種の脅威を検出する方法について説明します。

クレデンシャルスタッフィング攻撃は、複数のサービスで同じユーザー名とパスワードを再利用する一般的な慣行や、容易に推測可能な(弱い)パスワードを採用する傾向のため、非常に危険です。成功するクレデンシャルスタッフィング攻撃は試行回数が少なく済むため、攻撃者はリクエストを非常に低頻度で送信でき、ブルートフォース保護などの標準的な対策が効果を発揮しにくくなります。

Wallarmによるクレデンシャルスタッフィングへの対応

Wallarmのクレデンシャルスタッフィング検出は、漏洩または弱い認証情報を使用してアプリケーションへアクセスしようとする試行に関するリアルタイム情報を収集・表示します。また、そのような試行に関する即時通知を可能にし、アプリケーションへアクセスするために使用された全ての漏洩または弱い認証情報のリストをダウンロード可能な形式で作成します。

Wallarmは、漏洩および弱いパスワードの特定のため、公開されているHIBPの漏洩認証情報データベースから収集された8億5,000万件以上のレコードを含む包括的なデータベースを使用します。

クレデンシャルスタッフィング - スキーマ

Wallarmのクレデンシャルスタッフィング検出は、以下の手順により認証情報の安全性を確保します。

  1. リクエストがノードに到達すると、パスワードからSHA-1が生成され、いくつかの文字がCloudに送信されます。

  2. Cloudは受信した文字列で始まる既知の漏洩パスワードのデータベースをチェックします。発見された場合、SHA-1暗号化形式のデータがノードに送信され、ノードはリクエスト内のパスワードと比較します。

  3. 一致した場合、ノードはリクエストから取得したログイン情報を含め、この攻撃がクレデンシャルスタッフィング攻撃であることをCloudに通知します。

  4. ノードはリクエストをアプリケーションに渡します。

このため、Wallarmノードを搭載したマシンからのパスワードがWallarm Cloudに暗号化されずに送信されることはありません。認証情報は同時に送信されないため、クライアントの認証データはネットワーク内で安全に管理されます。

大量および単一の試行

クレデンシャルスタッフィング検出は、ボットによる大量の漏洩認証情報の使用試行と、その他の手法では検出不可能な単一の試行の両方を登録することが可能です。

軽減策

漏洩または弱いパスワードを持つアカウントの情報を把握することで、アカウント所有者への連絡や、一時的なアクセス停止など、これらのアカウントのデータ保護のための対策を講じることができます。

Wallarmは、パスワードが弱い、もしくは漏洩している場合でも正当なユーザーのアクセスをブロックしないため、漏洩認証情報を使用したリクエストをブロックしません。しかし、以下の場合はクレデンシャルスタッフィングの試行がブロックされる可能性があります。

  • 悪意のあるボット活動の一環として検出され、API Abuse Preventionモジュールが有効になっている場合。

  • その他の攻撃の兆候を伴うリクエストである場合。

有効化

Wallarmのクレデンシャルスタッフィング検出を有効化するには、以下の手順を実施してください。

  1. お使いのサブスクリプションプランクレデンシャルスタッフィング検出が含まれていることを確認します。サブスクリプションプランの変更をご希望の場合は、sales@wallarm.comまでリクエストを送信してください。

  2. Wallarmノードがバージョン4.10以降であり、以下のいずれかのアーティファクトを使用してデプロイされていることを確認してください。

  3. お使いのユーザーのロールクレデンシャルスタッフィング検出の設定を許可していることを確認してください。

  4. Wallarm Console→Credential Stuffingに移動し、機能を有効化します(初期状態では無効です)。

クレデンシャルスタッフィング検出が有効化されると、動作開始のための設定が必要となります。

設定

認証情報の使用試行を確認するためにチェックする認証エンドポイントのリストを作成する必要があります。リスト作成には、Wallarm Console→Credential Stuffingに移動してください。

Wallarm Console - Credential Stuffing

エンドポイントをリストに追加する方法は2通りあります。

  • Recommended endpointsリストから追加する方法
    このリストには以下の2種類の要素が含まれています:

    • Wallarmが定義したルール(正規表現を活用)により、一般的に使用される認証エンドポイントと、パラメータとしてパスワードとログインが格納されるものが指定されています。
    • API Discoveryモジュールによって検出され、実際にトラフィックを受信した認証エンドポイント。
  • 手動で追加する方法
    ご自身のユニークな認証エンドポイントを追加して、完全な保護を実現することも可能です。手動で追加する場合、URIおよび認証パラメータの検索方法を設定してください:

    • Exact location of parameters ― パスワードおよびログインが配置されている具体的なエンドポイントリクエストポイントを指定する必要があります。
    • Regular expression ― パスワードおよびログインが含まれるエンドポイントパラメータを正規表現を使用して検索します。

      クレデンシャルスタッフィング - 認証エンドポイント追加 - 正規表現

漏洩認証情報使用試行の確認方法

過去7日間における漏洩認証情報の使用試行回数は、Credential Stuffingセクションに表示されます。カウンターをクリックすると、過去7日間のすべてのcredential_stuffing攻撃が表示されるAttacksセクションにリダイレクトされます。

攻撃を展開すると、漏洩したパスワードを持つログイン情報のリストを確認できます。

Attacks - credential stuffing

漏洩認証情報のCSVリストの取得

全体の漏洩認証情報の数は、Credential Stuffingセクションに表示されます。カウンターをクリックすると、CSVファイルが自動的にダウンロードされ、漏洩認証情報のリストが取得されます。

通知の受信

漏洩認証情報の使用試行に関する即時通知を、メール、メッセンジャー、または統合済みシステムに受信することができます。そのような通知を有効化するには、Wallarm ConsoleのTriggersセクションで、Compromised user account条件を設定したトリガーを1つ以上構成してください。

通知は、監視したいアプリケーションやホスト、及びレスポンスタイプによって絞り込むことができます。

トリガー例: Slackへ漏洩認証情報使用試行の通知

この例では、新たに漏洩認証情報使用試行が検出された場合、設定済みのSlackチャンネルへその旨の通知が送信されます。

クレデンシャルスタッフィングトリガー

トリガーのテスト方法:

  1. Wallarm Console→Integrationsにアクセスし、USまたはEUクラウド上でSlackとの統合を設定します。

  2. Credential Stuffingセクションでクレデンシャルスタッフィングが有効化され、Recommended endpointsからWallarmが定義した以下のルールがアクティブなAuthentication endpointsに追加されていることを確認します:

    リクエストは以下の通りです:

    /**/{{login|auth}}.*
    

    パスワードは以下の場所にあります:

    ([^/](|((api|current|new|old|plain)(|\.|-|_)))(pass(|word|wd))|^pass(|wd|word))$
    

    ログインは以下の場所にあります:

    ^((w+.)|_|.|)(login|user|auth)(|_|-.)(user|client|auth|id|name|)(|[\d])$
    
  3. Triggersセクションで、上記のようにトリガーを作成し、ご自身のSlack統合にマッピングしてください。

  4. ノードのlocalhost/loginエンドポイントに、漏洩認証情報を含むリクエストを送信します:

    curl -X POST http://localhost/login -d '{"password": "123456", "user": "user-01@company.com"}'
    
  5. Attacksセクションで、リクエストがcredential_stuffingタイプのイベントとして登録されていることを確認してください。

  6. 攻撃を展開し、漏洩したログイン情報が含まれていることを確認してください。

  7. Slackチャンネルのメッセージを確認します。新規メッセージは以下のようになります:

    [wallarm] Stolen credentials detected
    
    Notification type: compromised_logins
    
    Stolen credentials have been detected in your incoming traffic:
    
    Compromised accounts: user-01@company.com
    Associated URL: localhost/login
    Link: https://my.wallarm.com/attacks/?q=attacks+d%3Alocalhost+u%3A%2Flogin+statuscode%3A404+application%3Adefault+credential_stuffing+2024%2F01%2F22
    
    Client: YourCompany
    Cloud: EU
    

制限事項

現時点では、以下の方法でデプロイされたWallarmノードではクレデンシャルスタッフィング検出モジュールはサポートされていません: