VirusTotal を Google SecOps と統合する

このドキュメントでは、VirusTotal を Google Security Operations(Google SecOps)と統合する方法について説明します。

統合バージョン: 39.0

この統合では、VirusTotal API v2 を使用します。

この統合では、1 つ以上のオープンソース コンポーネントを使用します。この統合の完全なソースコードの zip 形式のコピーを Cloud Storage バケットからダウンロードできます。

始める前に

VirusTotal 統合を使用するには、API キーを構成します。

API キーを構成する手順は次のとおりです。

  1. VirusTotal ポータルにログインします。
  2. ユーザー名の下にある [API キー] をクリックします。
  3. 生成された API キーをコピーして、統合パラメータで使用します。
  4. [保存] をクリックします。

統合のパラメータ

VirusTotal 統合には次のパラメータが必要です。

パラメータ 説明
Api Key

必須。

VirusTotal にアクセスするための API キー。

Verify SSL

省略可。

選択すると、VirusTotal に接続するときに SSL 証明書が検証されます。

デフォルトでは選択されていません。

Google SecOps で統合を構成する手順については、統合を構成するをご覧ください。

必要に応じて、後の段階で変更できます。統合インスタンスを構成すると、ハンドブックで使用できるようになります。複数のインスタンスを構成してサポートする方法の詳細については、複数のインスタンスのサポートをご覧ください。

操作

アクションの詳細については、Your Workdesk から保留中のアクションに対応する手動アクションを実行するをご覧ください。

ドメイン レポートを取得する

ドメイン レポートを取得アクションを使用して、指定されたエンティティのドメイン レポートを VirusTotal から取得し、Google SecOps プラットフォーム内でエンティティを拡充します。

このアクションは、次の Google SecOps エンティティに対して実行されます。

  • User
  • Hostname

アクション入力

なし

アクションの出力

[Get Domain Report] アクションは、次の出力を提供します。

アクションの出力タイプ 対象
ケースウォールのアタッチメント 利用不可
ケースウォールのリンク 利用不可
ケースウォール テーブル 利用不可
エンティティ拡充テーブル 利用可能
JSON の結果 利用可能
スクリプトの結果 利用可能
エンティティ拡充テーブル

[Get Domain Report] アクションでは、次のフィールドを拡充できます。

拡充フィールド名 適用可能なロジック
Forcepoint ThreatSeeker category JSON の結果に存在する場合に返します。
BitDefender domain info JSON の結果に存在する場合に返します。
Categories JSON の結果に存在する場合に返します。
BitDefender Category JSON の結果に存在する場合に返します。
Alexa Category JSON の結果に存在する場合に返します。
Alexa domain info JSON の結果に存在する場合に返します。
Websense ThreatSeeker category JSON の結果に存在する場合に返します。
TrendMicro category JSON の結果に存在する場合に返します。
Opera domain info JSON の結果に存在する場合に返します。
Webutation domain info JSON の結果に存在する場合に返します。
verbose_msg JSON の結果に存在する場合に返します。
whois JSON の結果に存在する場合に返します。
JSON の結果

次の例は、ドメイン レポートを取得アクションを使用した場合に受信する JSON 結果の出力を示しています。

[
    {
        "EntityResult": {
            "detected_downloaded_samples": [],
            "undetected_downloaded_samples": [{
                "date": "2018-08-08 22:48:28",
                "positives": 0,
                "sha256": "ef1955ae757c8b966c83248350331bd3a30f658ced11f387f8ebf05ab3368629",
                "total": 59
            }],
            "resolutions": [{
                "last_resolved": "2019-01-13 03:31:09",
                "ip_address": "192.0.2.1"
            }],
            "Opera domain info": "The URL domain/host was seen to host badware at some point in time",
            "domain_siblings": [],
            "BitDefender domain info": "This URL domain/host was seen to host badware at some point in time",
            "whois": "Domain Name: EXAMPLE.CO.IN, nUpdated Date: 2018-05-22T09:30:37Z, nCreation Date: 2003-06-23T14:02:33Z, nRegistry Expiry Date: 2019-06-23T14:02:33Z, nDomain Status: clientDeleteProhibited, nDomain Status: clientTransferProhibited, nDomain Status: clientUpdateProhibited, nRegistrant Country: US, nName Server: NS1.EXAMPLE.COM, nName Server: NS2.EXAMPLE.COM, nName Server: NS3.EXAMPLE.COM, nName Server: NS4.EXAMPLE.COM, nDNSSEC: unsigned",
            "Alexa domain info": "example.co.in is one of the top 100 sites in the world and is in the Search_Engines category",
            "verbose_msg": "Domain found in dataset",
            "BitDefender category": "searchengines",
            "undetected_referrer_samples": [{
                "date": "2019-02-05 13:20:39",
                "positives": 0,
                "sha256": "3baf9f2a2d2b152193d2af602378b71e40d381e835b0aa3111851b2f29e64f38",
                "total": 71
            }],
            "whois_timestamp": 1548379042,
            "WOT domain info": {
                "Vendor reliability": "Excellent",
                "Child safety": "Excellent",
                "Trustworthiness": "Excellent",
                "Privacy": "Excellent"
            },
            "detected_referrer_samples": [{
                "date": "2019-02-05 01:11:35",
                "positives": 1,
                "sha256": "097ea19b440441248b157698e2b23555cdf6117491b5f49f7ec8e492550cb02c",
                "total": 70
            }],
            "Forcepoint ThreatSeeker category": "search engines and portals",
            "Alexa category": "search_engines",
            "detected_communicating_samples": [{
                "date": "2019-01-28 23:58:13",
                "positives": 30,
                "sha256": "e65faa1283f8941d98dc23ff6822be228a24cb4489a5e5b01aeee749bf851658",
                "total": 70
            }],
            "TrendMicro category": "search engines portals",
            "categories": [
                "searchengines", "search engines and portals"
            ],
            "undetected_urls": [[
                "http://example.co.in/example", "daed97b2c77f0f72c9e4ee45506e3e1bc4e34d7b8846246877a02779bb85dd5b", 0, 70, "2019-02-04 14:58:23"
            ]],
            "response_code": 1,
            "Webutation domain info": {
                "Safety score": 100,
                "Adult content": "no",
                "Verdict": "safe"
            },
            "subdomains": [
                "www.example.co.in"
            ],
            "Websense ThreatSeeker category": "search engines and portals",
            "detected_urls": [{
                "url": "http://example.co.in/urlURL",
                "positives": 2,
                "total": 66,
                "scan_date": "2018-01-13 00:38:35"
            }],
            "Alexa rank": 100,
            "undetected_communicating_samples": [{
                "date": "2018-11-17 03:19:28",
                "positives": 0,
                "sha256": "e2a6ab7d594490c62bd3bb508dc38d7191ad48977da4d8dcce08dcb8af0070e9",
                "total": 68
            }],
            "pcaps": [
           "97e4a17068ce3ed01ed1c25c3d263fc0145e5ecc53b7db6f2ba84496b53d4a65"
            ]},
        "Entity": "example.co.in"
    }
]
スクリプトの結果

次の表に、ドメイン レポートを取得アクションを使用した場合のスクリプト結果出力の値を示します。

スクリプトの結果名
is_success True または False

ハッシュをスキャン

Scan Hash アクションを使用して、VirusTotal でファイル ハッシュをスキャンし、リスクスコアが指定されたしきい値と一致する場合は、エンティティを不審としてマークして分析情報を表示します。

このアクションは Google SecOps の Filehash エンティティに対して実行されます。

アクション入力

Scan Hash アクションには、次のパラメータが必要です。

パラメータ 説明
Threshold

必須。

検出を不審とマークするしきい値。

悪意のあるエンジンの検出が設定されたしきい値に達するか、それを超えると、このアクションにより、エンティティは不審であるとしてマークされます。

Rescan after days

省略可。

最新のスキャン日からエンティティを再スキャンするまでの日数。

アクションの出力

[Scan Hash] アクションは、次の出力を提供します。

アクションの出力タイプ 対象
ケースウォールのアタッチメント 利用不可
ケースウォールのリンク 利用不可
ケースウォール テーブル 利用不可
エンティティ拡充テーブル 利用可能
分析情報 利用可能
JSON の結果 利用可能
スクリプトの結果 利用可能
エンティティ拡充テーブル

[Scan Hash] アクションでは、次のフィールドを拡充できます。

拡充フィールド名 適用可能なロジック
permalink JSON の結果に存在する場合に返します。
sha1 JSON の結果に存在する場合に返します。
resource JSON の結果に存在する場合に返します。
Scan date JSON の結果に存在する場合に返します。
Scan ID JSON の結果に存在する場合に返します。
verbose_msg JSON の結果に存在する場合に返します。
total JSON の結果に存在する場合に返します。
positives JSON の結果に存在する場合に返します。
sha256 JSON の結果に存在する場合に返します。
md5 JSON の結果に存在する場合に返します。
Detecting Engines JSON の結果に存在する場合に返します。
分析情報

[Scan Hash] アクションは、次の分析情報を返すことができます。

重大度 説明
Warn

このアクションにより、拡充されたハッシュの悪意のあるステータスを通知する警告インサイトが作成されます。

このアクションは、検出されたエンジンの数がスキャン前に設定した最小の疑わしいしきい値以上の場合にのみ、分析情報を生成します。

JSON の結果

次の例は、ハッシュをスキャン アクションを使用した場合に受信される JSON 結果の出力を示しています。

[
    {
        "EntityResult": {
            "permalink": "https://www.virustotal.com/file/HASH/analysis/ANALYSIS_ID/",
            "sha1": "3395856ce81f2b7382dee72602f798b642f14140",
            "resource": "HASH",
            "response_code": 1,
            "scan_date": "2019-02-05 15:41:52",
            "scan_id": "HASH-ANALYSIS_ID",
            "verbose_msg": "Scan finished, information embedded",
            "total": 60,
            "positives": 54,
            "sha256": "HASH",
            "md5": "44d88612fea8a8f36de82e1278abb02f",
            "scans": {
                "Bkav": {
                    "detected": true,
                    "version": "192.0.2.1",
                    "result": "Trojan",
                    "update": "20190201"
                },
                "MicroWorld-eScan": {
                    "detected": true,
                    "version": "14.0.297.0",
                    "result": "Test-File",
                    "update": "20190205"
                }}},
        "Entity": "HASH"
    }
]
スクリプトの結果

次の表に、Scan Hash アクションを使用する場合のスクリプト結果出力の値を示します。

スクリプトの結果名
is_risky True または False

IP をスキャン

IP をスキャン アクションを使用して、VirusTotal が最近特定の IP で確認した情報を収集します。

このアクションは Google SecOps の IP Address エンティティに対して実行されます。

アクション入力

[Scan IP] アクションには、次のパラメータが必要です。

パラメータ 説明
Threshold

省略可。

IP アドレスを不審としてマークするしきい値。

悪意のあるエンジンの検出数が設定されたしきい値に達するか、しきい値を超えると、このアクションにより、IP アドレスは不審であるとしてマークされます。

デフォルト値は 25 です。

アクションの出力

[IP をスキャン] アクションでは、次の出力が提供されます。

アクションの出力タイプ 対象
ケースウォールのアタッチメント 利用不可
ケースウォールのリンク 利用不可
ケースウォール テーブル 利用不可
エンティティ拡充テーブル 利用可能
分析情報 利用可能
JSON の結果 利用可能
スクリプトの結果 利用可能
エンティティ拡充テーブル

Scan IP アクションは、次のフィールドを拡充できます。

拡充フィールド名 適用可能なロジック
Country JSON の結果に存在する場合に返します。
Related Domains JSON の結果に存在する場合に返します。
Last Scan Date JSON の結果に存在する場合に返します。
verbose_msg JSON の結果に存在する場合に返します。
Resolutions JSON の結果に存在する場合に返します。
分析情報

[Scan IP] アクションは、次の分析情報を返すことができます。

重大度 説明
Warn

このアクションにより、拡充された IP アドレスの悪意のあるステータスを通知する警告インサイトが作成されます。

このアクションは、検出されたエンジンの数がスキャン前に設定した最小の疑わしいしきい値以上の場合にのみ、分析情報を生成します。

分析情報の名前 本文
Entity Insight
  • 国: country
  • 悪意のあるリファラーの例: len(detected_referrer_samples)
  • 悪意のあるダウンロードされたサンプル: len(detected_downloaded_samples)
  • 悪意のある通信のサンプル: len(detected_communicating_samples)
  • 悪意のある URL: len(detected_urls)
JSON の結果

次の例は、Scan IP アクションを使用した場合に受信する JSON 結果の出力を示しています。

[
    {
        "EntityResult": {
            "asn": 4436,
            "undetected_urls": [[
                "http://example.com", "2ed06796f95e7c1xxxxxbd68d81754acf535c999e901bfe2cf9c45612396f66", 0, 66, "2022-11-23 06:51:49"
            ]],
            "undetected_downloaded_samples": [{
                "date": "2018-07-09 07:53:30",
                "positives": 0,
                "sha256": "6a0bf66ddc73d7e64eb2ff0dd3512c5378c0c63c2ad4e13c0e1429fe",
                "total": 60
            }],
            "country": "country",
            "response_code": 1,
            "as_owner": "Example, Inc.",
            "verbose_msg": "IP address in dataset",
            "detected_downloaded_samples": [{
                "date": "2023-05-20 08:38:00",
                "positives": 6,
                "sha256": "9cf5c07c99c3342d83b241c25850da0bf231ee150cb962cab1e8399cb",
                "total": 57
            }],
            "resolutions": [{
                "last_resolved": "2023-05-13 00:00:00",
                "hostname": "40515350444dff68-2f7735d5ad283fa41a203a082d9a8f25.example.com"
            }],
            "detected_urls": [{
                "url": "http://example.com",
                "positives": 2,
                "total": 67,
                "scan_date": "2023-05-20 07:16:45"
            }]},
            "Entity": "192.0.2.1"
        }
    ]
スクリプトの結果

次の表に、Scan IP アクションを使用する場合のスクリプト結果出力の値を示します。

スクリプトの結果名
is_success True または False

スキャンの URL

URL をスキャン アクションを使用して、VirusTotal で URL をスキャンします。

このアクションは Google SecOps の URL エンティティに対して実行されます。

アクション入力

[URL をスキャン] アクションには、次のパラメータが必要です。

パラメータ 説明
Threshold

必須。

検出を不審とマークするしきい値。

悪意のあるエンジンの検出が設定されたしきい値に達するか、それを超えると、このアクションにより、エンティティは不審であるとしてマークされます。

Rescan after days

省略可。

最新のスキャン日からエンティティを再スキャンするまでの日数。

アクションの出力

[URL をスキャン] アクションでは、次の出力が提供されます。

アクションの出力タイプ 対象
ケースウォールのアタッチメント 利用不可
ケースウォールのリンク 利用不可
ケースウォール テーブル 利用不可
エンティティ拡充テーブル 利用可能
分析情報 利用可能
JSON の結果 利用可能
スクリプトの結果 利用可能
エンティティ拡充テーブル

[Scan URL] アクションでは、次のフィールドを拡充できます。

拡充フィールド名 適用可能なロジック
Scan date JSON の結果に存在する場合に返します。
Scan ID JSON の結果に存在する場合に返します。
risk_score JSON の結果に存在する場合に返します。
Total JSON の結果に存在する場合に返します。
Online Link JSON の結果に存在する場合に返します。
Scanned Url JSON の結果に存在する場合に返します。
resource JSON の結果に存在する場合に返します。
Detecting Engines JSON の結果に存在する場合に返します。
Risk Score JSON の結果に存在する場合に返します。
Last Scan Date JSON の結果に存在する場合に返します。
verbose_msg JSON の結果に存在する場合に返します。
File Scan ID JSON の結果に存在する場合に返します。
分析情報

[URL をスキャン] アクションは、次の分析情報を返すことができます。

重大度 説明
Warn

このアクションにより、拡充された URL の悪意のあるステータスを通知する警告インサイトが作成されます。

このアクションは、検出されたエンジンの数がスキャン前に設定した最小の疑わしいしきい値以上の場合にのみ、分析情報を生成します。

JSON の結果

次の例は、[URL をスキャン] アクションを使用したときに受信した JSON 結果の出力を示しています。

[
    {
        "EntityResult": {
            "permalink": "https://www.virustotal.com/url/URL_HASH/analysis/ANALYSIS_ID/",
            "resource": "http://example.php",
            "url": "http://example.php",
            "response_code": 1,
            "scan_date": "2019-02-04 05:28:54",
            "scan_id": "URL_HASH-ANALYSIS_ID",
            "verbose_msg": "Scan finished, scan information embedded in this object",
            "filescan_id": null,
            "positives": 5,
            "total": 67,
            "scans": {
                "CLEAN MX": {
                    "detected": false,
                    "result": "clean site"
                },
                "DNS8": {
                    "detected": false,
                    "result": "clean site"
                }}},
        "Entity": "http://example.php"
    }
]
スクリプトの結果

次の表に、URL をスキャン アクションを使用した場合のスクリプト結果出力の値を示します。

スクリプトの結果名
is_risky True または False

ファイルをアップロードしてスキャンする

Upload and Scan File アクションを使用して、VirusTotal でファイルをアップロードしてスキャンします。

このアクションは、すべての Google SecOps エンティティに対して実行されます。

アクション入力

[Upload and Scan File] アクションには、次のパラメータが必要です。

パラメータ 説明
Threshold

必須。

ファイルを危険とみなし、分析情報をトリガーするために必要な VirusTotal スキャナの陽性検出の最小数。

デフォルト値は 3 です。

File Paths

必須。

アップロードしてスキャンするパスのカンマ区切りのリスト。

Linux Server Address

省略可。

ファイルが配置されているリモート Linux サーバーのアドレス(192.0.2.1 など)。

Linux User

省略可。

リモート Linux サーバーで認証するユーザー名。

Linux Password

省略可。

リモート Linux サーバーで認証するためのパスワード。

アクションの出力

[Upload and Scan File] アクションは、次の出力を提供します。

アクションの出力タイプ 対象
ケースウォールのアタッチメント 利用不可
ケースウォールのリンク 利用不可
ケースウォール テーブル 利用不可
エンティティ拡充テーブル 利用可能
分析情報 利用可能
JSON の結果 利用可能
スクリプトの結果 利用可能
エンティティ拡充テーブル

[Upload and Scan File] アクションでは、次のフィールドを拡充できます。

拡充フィールド名 適用可能なロジック
resource JSON の結果に存在する場合に返します。
Scan date JSON の結果に存在する場合に返します。
Scan ID JSON の結果に存在する場合に返します。
permalink JSON の結果に存在する場合に返します。
Total JSON の結果に存在する場合に返します。
Md5 JSON の結果に存在する場合に返します。
Sha1 JSON の結果に存在する場合に返します。
Sha256 JSON の結果に存在する場合に返します。
positives JSON の結果に存在する場合に返します。
total JSON の結果に存在する場合に返します。
Detecting Engines JSON の結果に存在する場合に返します。
verbose_msg JSON の結果に存在する場合に返します。
分析情報

[ファイルをアップロードしてスキャン] アクションは、次の分析情報を返すことができます。

重大度 説明
Warn

このアクションにより、拡充されたファイルの悪意のあるステータスを通知する警告インサイトが作成されます。

このアクションは、検出されたエンジンの数がスキャン前に設定した最小の疑わしいしきい値以上の場合にのみ、分析情報を生成します。

JSON の結果

次の例は、[Upload and Scan File] アクションを使用した場合に受信される JSON 結果の出力です。

{
    "file_path": {
        "scan_id": "FILE_ID-ANALYSIS_ID",
        "sha1": "ec44b2af88e602e3981db0b218ecb5d59dc0dfec",
        "resource": "FILE_ID-ANALYSIS_ID",
        "response_code": 1,
        "scan_date": "2019-02-05 15:55:50",
        "permalink": "https://www.virustotal.com/file/FILE_ID/analysis/ANALYSIS_ID/",
        "verbose_msg": "Scan finished, information embedded",
        "total": 58,
        "positives": 0,
        "sha256": "FILE_ID",
        "md5": "848d57fbd8e29afa08bd3f58dd30f902",
        "scans": {
            "Bkav": {
                "detected": false,
                "version": "192.0.2.1",
                "result": null,
                "update": "20190201"
            },
            "MicroWorld-eScan": {
                "detected": false,
                "version": "14.0.297.0",
                "result": null,
                "update": "20190205"
            }
        }
    }
}
スクリプトの結果

次の表に、[Upload and Scan File] アクションを使用する場合のスクリプト結果出力の値を示します。

スクリプトの結果名
is_risky True または False

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。