将 UrlScan.io 与 Google SecOps 集成

本文档提供了有关如何将 urlscan.io 与 Google SecOps 集成的指南。

本文档介绍了如何将 UrlScan.io 与 Google Security Operations 集成。

使用场景

UrlScan.io 集成使用 Google SecOps 功能来支持以下使用场景:

  • 自动网址分析:自动将可疑网址提交给 UrlScan.io,以确定风险等级并在突发事件分诊期间检索屏幕截图以进行直观验证。

  • 威胁情报丰富化:通过查询 UrlScan.io 获取有关 IP 地址、网域和网址的详细元数据,从而丰富提醒,为分析师提供有关 ASN、服务器类型和恶意分数的即时背景信息。

  • 主动历史扫描搜索:搜索与入侵指标关联的现有公开扫描和私密扫描,以识别历史恶意活动和模式。

  • 深入的取证和报告:使用特定扫描 ID 检索全面的扫描详细信息,以便对复杂的安全调查进行深入分析,包括 Cookie、请求计数和相关链接。

准备工作

如要验证 Google SecOps 与 UrlScan.io 之间的连接,您必须提供有效的 API 密钥。

您可以在 urlscan.io 账号个人资料部分中获取和管理 API 密钥。

集成参数

urlscan.io 集成需要以下参数:

参数 说明
Api Key

必填。

用于向 urlscan.io 服务进行身份验证的唯一 API 密钥。

Verify SSL

可选。

如果选中此复选框,则集成会在连接到 UrlScan.io 服务器时验证 SSL 证书。

如需了解如何在 Google SecOps 中配置集成,请参阅配置集成

如有需要,您可以在稍后阶段进行更改。配置集成实例后,您可以在 playbook 中使用该实例。如需详细了解如何配置和支持多个实例,请参阅支持多个实例

操作

如需详细了解操作,请参阅 在工作台页面中处理待处理的操作执行人工处置措施

Ping

测试连接。

参数

不适用

使用场景

不适用

Run On

此操作会在所有实体上运行。

操作执行结果

实体扩充
数据分析

不适用

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
N/A

网址检查

提交要扫描的网址并获取扫描详细信息。

参数

参数名称 类型 是必填字段 默认值 说明
公开范围

DDL
可能:
公开、不公开列出、私享。

公开 urlscan.io 上的扫描结果具有以下三种可见性级别之一,请务必为您的提交内容使用适当的级别。
阈值 整数 -1 如果判决得分不低于给定的阈值,则将实体标记为可疑。默认值为 -1,在这种情况下,我们会将每个扫描的网址都视为可疑网址。
创建分析洞见 布尔值 如果启用,操作将创建包含实体相关信息的分析洞见。
仅限可疑数据洞见 布尔值 如果启用,操作将仅针对可疑实体创建数据洞见。注意:需要启用“创建数据洞见”参数。
向分析洞见添加屏幕截图 布尔值 如果启用,操作会向数据洞见添加网站的屏幕截图(如果有)。

使用场景

不适用

Run On

此操作适用于以下实体:

  • IP 地址
  • 网域
  • 网址

操作执行结果

实体扩充
名称
real_url tasks/url
visibility visibility
requests_count len(data/requests)
Cookie 数据/Cookie/名称的 CSV 文件
related_links 数据/链接/href 的 CSV 文件
main_country 网页/国家
main_domain 网页/网域
main_ip 网页/IP
main_asn page/asnname
main_server 网页/服务器
related_ips_count len(lists/ips)
related_domains_count len(lists/domains)
related_countries CSV 列表/国家/地区
overall_score 判决/总体/得分
categories verdicts/overall/categories
标签 判决/总体/标记
恶意 判决/总体/恶意
数据分析

不适用

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
[
    {
        "Entity": "https://example.com",
        "EntityResult": {
            "lists": {
                "ips": [
                    "0.0.0.0"
                ],
                "countries": [
                    "ZZ"
                ],
                "asns": [
                    "00000"
                ],
                "domains": [
                    "subdomain.example.com"
                ],
                "servers": [
                    "GenericServer/1.0.0"
                ],
                "urls": [
                    "https://example.com/",
                    "https://example.com/assets/image.png",
                    "https://example.com/assets/script.js",
                    "https://example.com/assets/style.svg",
                    "https://example.com/favicon.ico"
                ],
                "linkDomains": [
                    "node1.example.com",
                    "node2.example.com",
                    "node3.example.com"
                ],
                "certificates": [
                    {
                        "subjectName": "*.example.com",
                        "issuer": "CA-0",
                        "validFrom": 1000000000,
                        "validTo": 2000000000
                    }
                ],
                "hashes": [
                    "hash_string_alpha_001",
                    "hash_string_alpha_002",
                    "hash_string_alpha_003"
                ]
            },
            "page": {
                "asn": "AS00000",
                "asnname": "PROVIDER - Service Provider Inc., ZZ",
                "city": "",
                "country": "ZZ",
                "domain": "subdomain.example.com",
                "ip": "0.0.0.0",
                "ptr": "host.provider.net",
                "server": "GenericServer/1.0.0",
                "url": "https://example.com/",
                "apexDomainAgeDays": 1,
                "mimeType": "application/octet-stream",
                "title": "Title Placeholder",
                "tlsValidDays": 0,
                "tlsAgeDays": 0,
                "domainAgeDays": 1,
                "tlsValidFrom": "2000-01-01T00:00:00.000Z",
                "umbrellaRank": 0,
                "apexDomain": "example.com",
                "tlsIssuer": "CA-0",
                "status": "000"
            },
            "scanner": {
                "country": "zz"
            },
            "stats": {
                "IPv6Percentage": 0,
                "adBlocked": 0,
                "malicious": 0,
                "securePercentage": 0,
                "secureRequests": 0,
                "totalLinks": 0,
                "uniqCountries": 0
            },
            "submitter": {
                "country": "ZZ"
            },
            "task": {
                "method": "system",
                "source": "source_id",
                "time": "2000-01-01T00:00:00.000Z",
                "url": "https://example.com/",
                "uuid": "00000000-0000-0000-0000-000000000000",
                "visibility": "private",
                "reportURL": "https://service.io/result/id/",
                "screenshotURL": "https://service.io/screen/id.png",
                "domURL": "https://service.io/dom/id/",
                "domain": "subdomain.example.com",
                "apexDomain": "example.com"
            },
            "verdicts": {
                "overall": {
                    "score": 0,
                    "categories": [],
                    "brands": [],
                    "tags": [],
                    "malicious": false,
                    "hasVerdicts": false
                },
                "service_provider": {
                    "score": 0,
                    "categories": [],
                    "brands": [],
                    "tags": [],
                    "malicious": false,
                    "hasVerdicts": false
                },
                "engines": {
                    "score": 0,
                    "malicious": false,
                    "categories": [],
                    "enginesTotal": 0,
                    "maliciousTotal": 0,
                    "benignTotal": 0,
                    "maliciousVerdicts": [],
                    "benignVerdicts": [],
                    "hasVerdicts": false,
                    "tags": [
                        "tag-alpha",
                        "tag-beta"
                    ]
                },
                "community": {
                    "score": 0,
                    "categories": [],
                    "brands": [],
                    "votesTotal": 0,
                    "votesMalicious": 0,
                    "votesBenign": 0,
                    "malicious": false,
                    "hasVerdicts": false
                }
            },
            "is_risky": false
        }
    }
]

搜索扫描

按网域、IP、自治系统 (AS) 编号、哈希等属性搜索 urlscan.io 的现有扫描结果。此操作将查找任何人执行的公开扫描,以及您或您的团队执行的不公开列出私享扫描。

参数

参数名称 类型 是必填字段 默认值 说明
最大扫描次数 整数 100 每个实体要返回的扫描次数。默认值:100;最大值:10, 000(取决于订阅)。

Run On

此操作适用于以下实体:

  • IP 地址
  • 主机名
  • 网址
  • 文件名
  • 哈希值
  • 网域

操作执行结果

实体扩充

不适用

数据分析

不适用

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
{"entity_identifier": "www.unitedneighborsfcu.com",
"entity_results":[
  {
        "indexedAt": "2020-12-09T12:16:43.329Z",
        "task": {
            "visibility": "public",
            "method": "automatic",
            "domain": "www.unitedneighborsfcu.com",
            "time": "2020-12-09T12:16:23.168Z",
            "source": "certstream-suspicious",
            "uuid": "96310829-fed4-4d61-9fb0-39eb2952719f",
            "url": "https://www.unitedneighborsfcu.com"
        },
        "stats": {
            "uniqIPs": 6,
            "consoleMsgs": 0,
            "uniqCountries": 3,
            "dataLength": 1938842,
            "encodedDataLength": 1568193,
            "requests": 28
        },
        "page": {
            "country": "US",
            "server": "Microsoft-IIS/10.0",
            "domain": "www.unitedneighborsfcu.com",
            "ip": "8.21.114.55",
            "mimeType": "text/html",
            "asnname": "LEVEL3, US",
            "asn": "AS3356",
            "url": "https://www.unitedneighborsfcu.com/",
            "status": "200"
        },
        "_id": "96310829-fed4-4d61-9fb0-39eb2952719f",
        "sort": [1607516183168, "96310829-fed4-4d61-9fb0-39eb2952719f"],
        "result": "https://urlscan.io/api/v1/result/96310829-fed4-4d61-9fb0-39eb2952719f/",
        "screenshot": "https://urlscan.io/screenshots/96310829-fed4-4d61-9fb0-39eb2952719f.png"
  }
  ]
}
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

  • 如果 find 扫描了部分实体(is_success = true):print "Successfully listed scans for the following entities:\n".format(entity.identifier)
  • 如果未找到某些实体的扫描结果 (is_success = true):打印“操作无法列出以下实体的扫描结果:\n”。format(entity.identifier)
  • 如果未找到所有实体的扫描结果(is_success = false):打印“操作无法列出可用实体的扫描结果”。
  • 如果没有实体:打印“No suitable entities were found in the current scope.”

    操作应失败并停止 playbook 执行
    如果出现致命错误(例如凭据错误、无法连接到服务器等)打印“Error executing action "Search for Scans".”原因:{0}''.format(error.Stacktrace)。
常规
“案例墙”表格

标题:“{实体标识符} - 搜索结果”

扫描 ID

网址

扫描日期

大小

IPS

唯一国家/地区数

国家/地区

扫描类型

常规
案例墙链接 标题:“urlscan.io 网页报告 +(实体 ID)。urlscan.io 常规
案例墙附件 将包含屏幕截图。 常规

获取扫描完整详细信息

按扫描 ID 获取扫描完整详细信息

参数

参数名称 类型 是必填字段 默认值 说明
扫描 ID 字符串 不适用 使用扫描 ID 获取扫描报告。以英文逗号分隔的值。

Run On

此操作不会在实体上运行。

操作执行结果

实体扩充

不适用

数据分析

不适用

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
['Effective URL'] = response['page']['url']
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

  • 如果找到一些扫描 ID(is_success = true):打印“Successfully fetched results for the following scans: {scan ids}
  • 如果未找到某些扫描结果(is_success = true):打印“Action wasn't able to fetch results for the following scans: {scan ids}
  • 如果未找到所有结果(is_success = false):打印“操作无法获取结果。提供的扫描 ID 无法通过 urlscan.io 获取

操作应失败并停止 playbook 执行

  • 如果出现致命错误(例如凭据错误、无法连接到服务器、其他错误):打印“Error executing action "Get Scan Full Details"”。原因:{0}''.format(error.Stacktrace)
常规
案例墙链接 标题:“urlscan.io 网页报告 +(扫描 ID)”。urlscan.io 常规
案例墙附件 将包含屏幕截图。 常规

需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。