将 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

测试连接。

参数

不适用

使用场景

不适用

运行时间

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

操作执行结果

实体丰富化
数据分析

不适用

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

网址检查

提交要扫描的网址并获取扫描详情。

参数

参数名称 类型 是否为必填项 默认值 说明
公开范围

DDL
possible:
public, unlisted, private.

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

使用场景

不适用

运行时间

此操作将在以下实体上运行:

  • IP 地址
  • 网域
  • 网址

操作执行结果

实体丰富化
名称 键
real_url tasks/url
visibility visibility
requests_count len(data/requests)
Cookie 数据/Cookie/名称的 CSV 文件
related_links 数据/链接/href 的 CSV 文件
main_country page/国家/地区
main_domain 网页/网域
main_ip page/ip
main_asn page/asnname
main_server 页面/服务器
related_ips_count len(lists/ips)
related_domains_count len(lists/domains)
related_countries CSV 列表/国家/地区
overall_score verdicts/overall/score
categories verdicts/overall/categories
标签 verdicts/overall/tags
恶意 verdicts/overall/malicious
数据分析

不适用

脚本结果
脚本结果名称 “值”选项 示例
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,最大值:10000(取决于订阅)。

运行时间

此操作将在以下实体上运行:

  • 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 执行:

  • if find scans for some of the entities (is_success = true): print "Successfully listed scans for the following entities:\n".format(entity.identifier)
  • 如果未找到某些实体的扫描结果 (is_success = true):print "Action wasn't able to list scans for the following entities:\n".format(entity.identifier)
  • 如果未找到所有实体的扫描结果(is_success = false):输出“Action wasn't able to list scans for the available entities”。
  • 如果没有实体:输出“No suitable entities were found in the current scope.”

    操作应失败并停止 playbook 执行:
    如果发生严重错误,例如凭据错误、无法连接到服务器等: 输出“Error executing action "Search for Scans". Reason: {0}''.format(error.Stacktrace).
常规
案例墙表格

标题:“{entity identifier} - 搜索结果”

列:

扫描 ID

网址

扫描日期

大小

IPS

唯一身份国家/地区数

国家/地区

扫描类型

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

获取扫描完整详情

按扫描 ID 获取扫描完整详情

参数

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

运行时间

此操作不会对实体执行。

操作执行结果

实体丰富化

不适用

数据分析

不适用

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

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

  • if find some scan ids (is_success = true): print "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}
  • If didn't find all (is_success = false): print "Action wasn't able to fetch results. 无法使用 urlscan.io 获取提供的扫描 ID”

操作应失败并停止 playbook 执行:

  • if fatal error, like wrong credentials, no connection to server, other: print "Error executing action "Get Scan Full Details". Reason: {0}''.format(error.Stacktrace)
常规
案例墙链接 标题:“urlscan.io Web Report +(扫描 ID)。 常规
案例墙附件 将包含屏幕截图。 常规

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