【IBM Security Verify】 脅威検出機能（ベータ版）について

# はじめに
IBM Security Verifyの2023年8月に、ベータ版としてリリースされた脅威検出機能について、機能を有効化してどのようなデータが確認できるか試してみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/2fd7a868-2ab2-dacd-dd6b-c89cfcf63fcd.png)

追加された脅威検出機能の概要です。
- SEIM製品と組み合わせて実現する "IPアドレスからのログイン試行が複数回失敗した場合にアラートをあげる" といった機能がいくつか標準実装されました。
    - 脅威イベントを検出するためのルールは決まっています。
- 脅威検出時に、IBM Security Verifyのイベントが出力されるようになりました。
    - IBM Security Verifyの脅威検出 (Threat Detection)レポートや、イベント・サービス API (/v1.0/events) でデータを確認できます。
    - IBM Security Verifyの通知 Webhook機能と連携できるため、外部システムへのデータ連携も可能です。

# 1.脅威検出アラートの種類について
マニュアルに記載されている4つの脅威検出アラートについて整理してみました。

|No  |ルールカテゴリ|示唆される攻撃手法|アラートの説明|重要度の判定ルール|
|---|---|---|---|---|
|1|IBM Security X-Force Exchange(XFE) からの実用的な IP アドレス|ブルートフォース攻撃|パスワード・スプレーやボットネット C & C の実行など、悪意のあるアクティビティーに関与する高リスクの IP アドレスが検出されました。 このアラートは、過去 1 時間以内に一部のアカウントが漏えいしたことを示している可能性があります。|クリティカル:アクション可能な IP から 5 つ以上の IP アドレスが見つかった場合<BR>警告:アクション可能な IP から IP アドレスが 1 つまたは 5 つ未満見つかった場合|
|2|潜在的なクレデンシャル スタッフィング (PCS) 攻撃|クレデンシャル スタッフィング攻撃|ユーザー名パスワードの失敗の突然の増加が検出されました。 アクティビティー・レベルは、過去 14 日間の SSO イベントまたは認証イベントの通常の動作と比較されます。 アラートには、アタック中に検出されたすべてのルーター IP アドレスの詳細が含まれます。|クリティカル:異常なイベントの数が次の条件である場合。> max(5*normal_failure_count, 10000) <BR>警告:異常なイベントの数が次の範囲にある場合[min(3* normal traffic volume, 5000), 10000]|
|3|IP アドレスからの複数回のログイン試行の失敗|ブルートフォース攻撃またはクレデンシャル スタッフィング攻撃|IPアドレスからのログイン失敗の突然の増加が検出されました。 アクティビティー・レベルは、過去 7 日間の SSO イベントまたは認証イベントの通常の動作と比較されます。|クリティカル:異常なイベントの数が次の場合> max(5*normal_failure_count, 5000)<BR>警告:異常なイベントの数が次の範囲にある場合[min(3* normal traffic volume, 1000), 5000]|
|4|テナントごとに監視された、失敗した SSO/ 認証イベントの異常数|ブルート フォース攻撃、クレデンシャル スタッフィング攻撃、または運用上の問題|過去 14 日間の SSO または認証イベントの通常の動作と比較して、テナントのログイン失敗数が突然増加しました。|クリティカル:異常なイベントの数が次の条件である場合> max(5*normal_failure_count, 10000)<BR>警告:異常なイベントの数が次の範囲にある場合[min(3* normal traffic volume, 5000), 10000]|


# 2.レポート出力確認
アラートの件数や、重要度の割合などがグラフ表記され、各イベントがどのルールに該当したか詳細を確認することができます。
この例では、「emma」「max」「nezuko」「scott」「sophia」というユーザーがログイン試行の失敗の上位5名であることがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/904993d9-f674-f37b-72fe-a460f1eccd9c.png)


# 3.イベント取得確認
脅威検出イベントのイベントタイプは、"threat"になります。
イベントAPIや、通知Webhookでイベントを指定する際には、event_type="threat"を設定します。
```
イベントAPI設定例：
curl --location --request GET 'https://<tenantname>.verify.ibm.com/v1.0/events?event_type="threat"' --header 'Authorization: Bearer <accesstoken>'
```
```
通知Webhook設定例：
{
    "name": "Threat_Intelligence_hook",
    "type": "notification",
    "urls": [
        "https://<webook_url>
    ],
    "purpose": [
        "notifications"
    ],
    "notification": {
        "interests": [
            {
                "name": "Threat Intelligence activity",
                "description": "",
                "clauses": [
                    {
                        "operation": "include",
                        "key": "event_type",
                        "value": "threat"
                    }
                ]
            }
        ],
        "enabled": true
    }
}
```
出力されたイベントのペイロードのサンプルです。
```
{
    "data": {
        "anomalous_event_count": 6100,
        "anomalous_suspicious_ips": [
            "202.xxx.xxx.xxx"
        ],
        "component": "Login activity",
        "compromised_users": "{}",
        "date": "2023-11-06",
        "end_time": "2023-11-06 06:00:00",
        "impacted_user_count": 6,
        "index": "event-authentication-*",
        "most_significant_data_cause": [
            "The system failed to authenticate user \"emma\" because of \"INVALID_CREDS\".",
            "The system failed to authenticate user \"max\" because of \"INVALID_CREDS\".",
            "The system failed to authenticate user \"nezuko\" because of \"INVALID_CREDS\".",
            "The system failed to authenticate user \"scott\" because of \"INVALID_CREDS\"."
        ],
        "most_significant_data_grant_type": [],
        "most_significant_data_mfamethod": [],
        "most_significant_data_providerid": [],
        "most_significant_data_scope": [],
        "most_significant_data_sourcetype": [
            "clouddirectory"
        ],
        "most_significant_data_subtype": [
            "user_password"
        ],
        "most_significant_data_username": [
            "emma",
            "max",
            "nezuko",
            "scott"
        ],
        "most_significant_geoip_country_name": [
            "India"
        ],
        "most_significant_servicename": [
            "profilemgmt"
        ],
        "most_significant_tenantid": [
            "xxxx"
        ],
        "most_significant_tenantname": [
            "xxxx.verify.ibm.com"
        ],
        "normal_traffic_volume": 0,
        "rule_attribute": "threat_multiple_failed_logins",
        "rule_id": "MULTIPLE_FAILED_LOGIN_AUTH",
        "rule_name": "Multiple failed login from an IP address (Auth)",
        "severity": "critical",
        "source": "[('data.origin', '202.xxx.xxx.xxx'), ('data.result', 'failure')]",
        "start_time": "2023-11-06 05:00:00",
        "summary": "Multiple failed login from an IP address (Auth): 6100 anomalous events are observed, beyond normal traffic volume, from 2023-11-06 05:00:00 UTC to 2023-11-06 06:00:00 UTC.",
        "suspicious_ips": "[['ip', 'fail_percentage', 'failure_count', 'success_count'], ['202.xxx.xxx.xxx', 100.0, 6100, 0]]",
        "suspicious_ips_count": 1,
        "top5_affected_data_cause": "{'The system failed to authenticate user \"emma\" because of \"INVALID_CREDS\".': 1280, 'The system failed to authenticate user \"max\" because of \"INVALID_CREDS\".': 1080, 'The system failed to authenticate user \"nezuko\" because of \"INVALID_CREDS\".': 1060, 'The system failed to authenticate user \"scott\" because of \"INVALID_CREDS\".': 940, 'The system failed to authenticate user \"sophia\" because of \"INVALID_CREDS\".': 940}",
        "top5_affected_data_grant_type": "{}",
        "top5_affected_data_mfamethod": "{}",
        "top5_affected_data_providerid": "{}",
        "top5_affected_data_scope": "{}",
        "top5_affected_data_sourcetype": "{'clouddirectory': 6100}",
        "top5_affected_data_subtype": "{'user_password': 6100}",
        "top5_affected_data_username": "{'emma': 1280, 'max': 1080, 'nezuko': 1060, 'scott': 940, 'sophia': 940}",
        "top5_affected_geoip_country_name": "{'India': 6100}",
        "top5_affected_servicename": "{'profilemgmt': 6100}",
        "top5_affected_tenantid": "{'xxxxx': 6100}",
        "top5_affected_tenantname": "{'xxxxx.verify.ibm.com': 6100}",
        "xfe_confirmed_malicious_ips": [],
        "xfe_threat_insight": "Found 0 known malicious IPs."
    },
    "day": 6,
    "event_type": "threat",
    "id": "xxxx",
    "month": 11,
    "servicename": "Anomaly-Detector",
    "tenantid": "xxx",
    "tenantname": "xxx.verify.ibm.com",
    "time": 1699250426815,
    "year": 2023
}
```
サンプルのペイロードについては以下のサイトに詳しく記載されています。

https://docs.verify.ibm.com/verify/docs/threat-intelligence-in-verify


# 最後に
2023年8月新機能の1つである脅威検出機能（ベータ版）についてご紹介させて頂きました。
機能を有効化する場合は、IBMサポートにお問い合わせください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/1a9867f1-ac0d-69e3-d4c5-4ef48c2d89bc.png)

https://www.ibm.com/docs/ja/security-verify?topic=security-managing-threat-detection

# 参考
https://www.ibm.com/docs/en/security-verify?topic=overview-whats-new

https://docs.verify.ibm.com/verify/docs/threat-intelligence-in-verify

https://www.ibm.com/docs/ja/security-verify?topic=security-managing-threat-detection

https://www.ibm.com/docs/ja/security-verify?topic=reports-generating-threat-detection-report