将 APIVoid 与 Google SecOps 集成

本文档介绍了如何将 APIVoid 与 Google Security Operations (Google SecOps) 集成。

准备工作

在 Google SecOps 中为 v2 配置 APIVoid 集成之前,请验证您是否具备以下条件:

  • APIVoid v2 账号:一个有权访问 v2 API 服务的有效账号。

  • APIVoid v2 API 密钥:从 APIVoid 用户信息中心专门为 v2 API 生成的新 API 密钥。

  • 更新后的 API 端点:熟悉您计划使用的特定 APIVoid 服务(例如 IP Reputation API、Domain Reputation API)的更新后的 v2 API 端点网址。

生成 APIVoid v2 API 密钥

如需生成 APIVoid v2 API 密钥,请完成以下步骤:

  1. 登录您的 APIVoid 用户控制台。

  2. 前往 API 密钥部分。(具体位置可能会因信息中心更新而有所不同。)

  3. 生成新的 API 密钥。立即复制并妥善存储该密钥。该令牌可能仅显示一次。

网络

函数 默认端口 方向 协议
API 多个值 出站 apikey

集成参数

使用以下参数配置集成:

参数名称 类型 默认值 为必填项 说明
实例名称 字符串 不适用 否 您要为其配置集成的实例的名称。
说明 字符串 不适用 否 实例的说明。
API 根 字符串 https://endpoint.apivoid.com 是 APIVoid 实例的地址。
API 密钥 密码 不适用 是 在 APIVoid 控制台中生成的 API 密钥。
验证 SSL 复选框 尚未核查 否 如果您的 APIVoid 连接需要 SSL 验证,请选中此复选框。
远程运行 复选框 尚未核查 否 勾选此字段,以便远程运行配置的集成。选中后,系统会显示选择远程用户(代理)的选项。

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

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

操作

如需详细了解操作,请参阅 在工作桌上响应待处理的操作和在案例中运行手动操作。

获取域名信誉

获取域名信誉检查,了解域名是否被热门且受信任的域名屏蔽名单服务(例如 URLVir、ThreatLog、OpenPhish、Spam404、PhishTank、ZeuS Tracker 等)排除。多网域屏蔽名单服务可识别涉及恶意软件分发、钓鱼式攻击事件和虚假网店的潜在恶意和欺诈性网站。

参数

参数名称 类型 默认值 为必填项 说明
阈值 字符串 0 是 网域风险阈值。阈值必须是数值。示例:3
创建分析洞见 复选框 勾选 是 指定该操作是否应创建数据分析。

使用场景

Domain Reputation API 的一个应用场景是检查客户的网站是否被排除、检查用户在您的应用中提交的网址,或识别潜在的恶意和不安全网站。

运行时间

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

  • 主机名
  • 网址

操作结果

实体丰富化

如果负面引擎的数量等于或高于给定阈值,则将实体标记为可疑。

扩充项字段名称 逻辑 - 适用场景
alexa_top_100k 如果存在于 JSON 结果中,则返回
domain_length 如果存在于 JSON 结果中,则返回
alexa_top_10k 如果存在于 JSON 结果中,则返回
屏蔽名单 如果存在于 JSON 结果中,则返回
服务器 如果存在于 JSON 结果中,则返回
主机 如果存在于 JSON 结果中,则返回
most_abused_tld 如果存在于 JSON 结果中,则返回
alexa_top_250k 如果存在于 JSON 结果中,则返回
数据分析
严重级别 说明
警告 系统会创建警告分析洞见,以告知丰富实体的恶意状态。当检测到的引擎数量等于或超过扫描前设置的最低可疑阈值时,系统会创建该事件。
脚本结果
脚本结果名称 值选项 示例
成功 True/False success:False
JSON 结果
[
    {
        "EntityResult": {
            "alexa_top_100k": false,
            "domain_length": 17,
            "alexa_top_10k": false,
            "blacklists": {
                "scantime": "0.07",
                "detection_rate": "0%",
                "detections": 0,
                "engines_count": 29,
                "engines": [{
                    "engine": "ThreatLog",
                    "detected": false,
                    "confidence": "high",
                    "reference": "http://www.threatlog.com/"
                }, {
                    "engine": "Threat Sourcing",
                    "detected": false,
                    "confidence": "high",
                    "reference": "https://www.threatsourcing.com/"
                }, {
                    "engine": "URLVir",
                    "detected": false,
                    "confidence": "high",
                    "reference": "http://www.urlvir.com/"
                }]},
            "server": {
                "region_name": null,
                "reverse_dns": " ",
                "ip": " ",
                "isp": null,
                "continent_code": null,
                "latitude": null,
                "city_name": null,
                "longitude": null,
                "country_code": null,
                "country_name": null,
                "continent_name": null
            },
            "host": "example.com",
            "most_abused_tld": false,
            "alexa_top_250k": false
        },
        "Entity": "example.com"
    }, {
        "EntityResult": {
            "alexa_top_100k": false,
            "domain_length": 9,
            "alexa_top_10k": false,
            "blacklists": {
                "scantime": "0.03",
                "detection_rate": "0%",
                "detections": 0,
                "engines_count": 29,
                "engines": [{
                    "engine": "ThreatLog",
                    "detected": false,
                    "confidence": "high",
                    "reference": "http://www.threatlog.com/"
                }, {
                    "engine": "Threat Sourcing",
                    "detected": false,
                    "confidence": "high",
                    "reference": "https://www.threatsourcing.com/"
                }, {
                    "engine": "URLVir",
                    "detected": false,
                    "confidence": "high",
                    "reference": "http://www.urlvir.com/"
                }]},
            "server": {
                "region_name": null,
                "reverse_dns": " ",
                "ip": " ",
                "isp": null,
                "continent_code": null,
                "latitude": null,
                "city_name": null,
                "longitude": null,
                "country_code": null,
                "country_name": null,
                "continent_name": null
            },
            "host": "192.0.2.1",
            "most_abused_tld": false,
            "alexa_top_250k": false
        },
        "Entity": "192.0.2.1"
    }
]

获取 IP 信誉

IP Reputation API 可检测通常用于垃圾内容、网站攻击或欺诈活动的潜在恶意 IP 地址。

参数

参数 类型 默认值 为必填项 说明
阈值 字符串 不适用 是 IP 风险阈值。阈值必须是数值。示例:3.
创建分析洞见 复选框 勾选 是 指定该操作是否应创建数据分析。

运行时间

此操作在 IP 地址实体上运行。

操作结果

实体丰富化

如果负面引擎的数量等于或高于给定阈值,则将实体标记为可疑。

扩充项字段名称 逻辑 - 适用场景
信息 如果存在于 JSON 结果中,则返回
屏蔽名单 如果存在于 JSON 结果中,则返回
anonymity 如果存在于 JSON 结果中,则返回
ip 如果存在于 JSON 结果中,则返回
数据分析
严重级别 说明
警告 系统会创建警告分析洞见,以告知丰富哈希的恶意状态。当检测到的引擎数量等于或超过扫描前设置的最低可疑阈值时,系统会创建数据分析。
脚本结果
脚本结果名称 值选项 示例
成功 True/False success:False
JSON 结果
[
    {
        "EntityResult": {
            "information": {
                "is_proxy": false,
                "is_vpn": false,
                "region_name": "Zhejiang",
                "is_webproxy": false,
                "latitude": 28.680280685424805,
                "isp": "ChinaNet Zhejiang Province Network",
                "continent_code": "AS",
                "is_tor": false,
                "reverse_dns": " ",
                "detections": 18,
                "engines_count": 76,
                "longitude": 121.44277954101562,
                "city_name": "Jiaojiang",
                "country_name": "China",
                "continent_name": "Asia",
                "detection_rate": "24%",
                "country_code": "CN",
                "is_hosting": false
            },
            "blacklists": {
                "scantime": "0.57",
                "detection_rate":
                "24%",
                "detections": 18,
                "engines_count": 76,
                "engines": [{
                    "engine": "PlonkatronixBL",
                    "detected": false,
                    "reference": "http://bl.plonkatronix.com/"
                }, {
                    "engine": "Engine",
                    "detected": true,
                    "reference": "https://home.nuug.no/~engine/"
                }, {"engine": "Malc0de",
                    "detected": false,
                    "reference": "http://malc0de.com/database/index.php"
                   }]},
            "anonymity": {
                "is_tor": false,
                "is_proxy": false,
                "is_vpn": false,
                "is_webproxy": false,
                "is_hosting": false
            },
            "ip": "192.0.2.1"
        },
        "Entity": "192.0.2.1"
    }
]

获取网址信誉

获取网址的安全信誉和风险评分。

参数

参数名称 类型 默认值 为必填项 说明
阈值 整数 不适用 是

网址风险阈值。阈值必须是数值。示例:3

使用场景

分析师可以检索网址信誉,这与检索网域或 IP 地址的信誉类似。

运行时间

此操作在网址实体上运行。

操作结果

实体丰富化

如果负面引擎的数量等于或高于给定阈值,则将实体标记为可疑。if data.get("report", {}).get("risk_score", {}).get("result") > threshold

扩充项字段名称 逻辑 - 适用场景
domain_blacklist 如果存在于 JSON 结果中,则返回
html_forms 如果存在于 JSON 结果中,则返回
server_details 如果存在于 JSON 结果中,则返回
response_headers 如果存在于 JSON 结果中,则返回
重定向 如果存在于 JSON 结果中,则返回
file_type 如果存在于 JSON 结果中,则返回
risk_score 如果存在于 JSON 结果中,则返回
security_checks 如果存在于 JSON 结果中,则返回
geo_location 如果存在于 JSON 结果中,则返回
url_parts 如果存在于 JSON 结果中,则返回
site_category 如果存在于 JSON 结果中,则返回
web_page 如果存在于 JSON 结果中,则返回
dns_records 如果存在于 JSON 结果中,则返回
脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
[
    {
        "EntityResult": {
            "domain_blacklist": {
                "detections": 0,
                "engines": [{
                    "detected": false,
                        "name": "SpamhausDBL", "reference": "https://www.spamhaus.org/lookup/"
                    }, {
                        "detected": false,
                        "name": "ThreatLog",
                        "reference": "http://www.threatlog.com/"
                    }, {
                        "detected": false,
                        "name": "OpenPhish",
                        "reference": "http://www.openphish.com/"
                    }, {
                        "detected": false,
                        "name": "PhishTank",
                        "reference": "http://www.phishtank.com/"
                    }, {
                        "detected": false,
                        "name": "Phishing.Database",
                        "reference": "https://github.com/mitchellkrogza/Phishing.Database"
                    }, {
                        "detected": false,
                        "name": "PhishStats",
                        "reference": "https://phishstats.info/"
                    }, {
                        "detected": false,
                        "name": "URLVir",
                        "reference": "http://www.urlvir.com/"
                    }, {
                        "detected": false,
                        "name": "URLhaus",
                        "reference": "https://urlhaus.abuse.ch/"
                    }, {
                        "detected": false,
                        "name": "RPiList Not Serious",
                        "reference": "https://github.com/RPiList/specials"
                    }, {
                        "detected": false,
                        "name": "precisionsec",
                        "reference": "https://precisionsec.com/"
                    }, {
                        "detected": false,
                        "name": "AntiSocial Blacklist",
                        "reference": "https://theantisocialengineer.com/"
                    }, {
                        "detected": false,
                        "name": "PhishFeed",
                        "reference": "https://phishfeed.com/"
                    }, {
                        "detected": false,
                        "name": "Spam404",
                        "reference": "https://www.spam404.com/"
                    }]},
            "html_forms": {
                "number_of_total_input_fields": 0,
                "email_field_present": false,
                "number_of_total_forms": 0,
                "password_field_present": false,
                "two_text_inputs_in_a_form": false,
                "credit_card_field_present": false
            },
            "server_details": {
                "continent_name": "Asia",
                "hostname": "example.com",
                "region_name": "Seoul-teukbyeolsi",
                "ip": "192.0.2.141",
                "isp": "Example Corporation",
                "continent_code": "AS",
                "country_name": "Korea (Republic of)",
                "city_name": "Seoul",
                "longitude": 126.97782897949219,
                "country_code": "KR",
                "latitude": 37.568260192871094
            },
            "response_headers": {
                "status": "HTTP/1.1 404 Not Found",
                "content-length": "177",
                "code": 404,
                "server": "nginx/1.4.6 (Ubuntu)",
                "connection": "keep-alive",
                "date": "Wed, 15 Jul 2020 08:21:54 GMT",
                "content-type": "text/html"
            },
            "redirection": {
                "url": null,
                "found": false,
                "external": false
            },
            "file_type": {
                "headers": "HTML",
                "extension": "HTML",
                "signature": " "
            },
            "risk_score": {
                "result": 10
            },
            "security_checks": {
                "is_suspended_page": false,
                "is_defaced_heuristic": false,
                "is_windows_exe_file": false,
                "is_credit_card_field": false,
                "is_windows_exe_file_on_free_hosting": false,
                "is_masked_linux_elf_file": false,
                "is_exe_on_directory_listing": false,
                "is_php_on_directory_listing": false,
                "is_masked_windows_exe_file": false,
                "is_sinkholed_domain": false,
                "is_robots_noindex": false,
                "is_windows_exe_file_on_free_dynamic_dns": false,
                "is_doc_on_directory_listing": false,
                "is_non_standard_port": false,
                "is_linux_elf_file_on_free_dynamic_dns": false,
                "is_suspicious_domain": false, "is_suspicious_url_pattern": false,
                "is_china_country": false,
                "is_risky_geo_location": false,
                "is_pdf_on_directory_listing": false,
                "is_valid_https": false,
                "is_external_redirect": false, "is_windows_exe_file_on_ipv4": false,
                "is_phishing_heuristic": false,
                "is_linux_elf_file_on_ipv4": false,
                "is_email_address_on_url_query": false,
                "is_uncommon_clickable_url": false,
                "is_most_abused_tld": false,
                "is_domain_blacklisted": false,
                "is_host_an_ipv4": false,
                "is_linux_elf_file_on_free_hosting": false,
                "is_zip_on_directory_listing": false,
                "is_password_field": false,
                "is_linux_elf_file": false,
                "is_empty_page_title": false,
                "is_directory_listing": false,
                "is_masked_file": false,
                "is_suspicious_file_extension": false,
                "is_suspicious_content": false
            },
            "geo_location": {
                "countries": ["KR"]
            },
            "url_parts": {
                "host_nowww": "example.com",
                "host": "www.example.com",
                "path": "/dynamic/example.html",
                "query": null,
                "scheme": "http",
                "port": 80},
            "site_category": {
                "is_vpn_provider": false,
                "is_url_shortener": false,
                "is_anonymizer": false,
                "is_torrent": false,
                "is_free_dynamic_dns": false,
                "is_free_hosting": false
            },
            "web_page": {
                "keywords": "",
                "description": "",
                "title": "404 Not Found"
            },
            "dns_records": {
                "ns": {
                    "records": [{
                        "country_name": "Korea (Republic of)",
                        "ip": "192.0.2.95",
                        "isp": "Example Corporation",
                        "target": "example.com",
                        "country_code": "KR"
                    }, {
                        "country_name": "Korea (Republic of)",
                        "ip": "192.0.2.26",
                        "isp": "LX",
                        "target": "example.com",
                        "country_code": "KR"
                    }]},
                "mx": {
                    "records": []
                }}},
        "Entity": "www.example.com:80/dynamic/example.html"
    }
]
案例墙
结果类型 说明 类型
输出消息*
  1. 成功的实体:“APIVoid:已提取以下实体的信誉:<实体标识符列表>
  2. 失败的实体:“以下实体发生错误:<实体标识符列表>”
  3. 缺少实体(无数据):“找不到以下实体的声誉值:<实体标识符列表>”
  4. 不含网址实体的提醒:“APIVoid:未找到网址。”
常规
CSV 案例墙

如果有可用数据,请创建新的实体 CSV 表:

  1. domain blocklist report: data.get("report",{}).get("domain_blacklist",{}).get("engines", [])
常规
丰富

如果有可用数据,请添加以下内容作为实体丰富信息:(别忘了添加前缀“APIVoid”)

  1. geo_location: data.get("report",{}).get("geo_location",{}).get("countries", [])
  2. is_suspicious_domain: data.get("report",{}).get("security_checks",{}).get("is_suspicious_domain")
  3. is_domain_blacklisted: data.get("report",{}).get("security_checks",{}).get("is_domain_blacklisted")
  4. is_risky_geo_location: data.get("report",{}).get("security_checks",{}).get("is_risky_geo_location")
  5. risk_score: data.get("report", {}).get("risk_score", {}).get("result")
  6. is_external_redirect: data.get("report",{}).get("security_checks",{}).get("is_external_redirect")
实体

获取屏幕截图

截取任何网站或网址的高画质屏幕截图。

参数

不适用

使用场景

分析人员可以捕获任何网站或网址的高质量屏幕截图,格式为 PNG 或 JPG 图片格式。

运行时间

此操作在 User 实体上运行。

操作结果

实体丰富化

如果负面引擎的数量等于或高于给定阈值,则将实体标记为可疑。is_suspicious: if data.get("score") > threshold

扩充项字段名称 逻辑 - 适用场景
网域 如果存在于 JSON 结果中,则返回
should_block 如果存在于 JSON 结果中,则返回
得分 如果存在于 JSON 结果中,则返回
一次性 如果存在于 JSON 结果中,则返回
has_mx_records 如果存在于 JSON 结果中,则返回
has_spf_records 如果存在于 JSON 结果中,则返回
脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
[
    {
        "EntityResult": {
            "domain": "example.com",
            "valid_tld": true,
            "email": "user@example.co",
            "role_address": false,
            "should_block": false,
            "risky_tld": false,
            "dirty_words_username": false,
            "suspicious_domain": false,
            "score": 100,
            "educational_domain": false,
            "dirty_words_domain": false,
            "did_you_mean": " ",
            "username": "user",
            "valid_format": true,
            "is_spoofable ": false,
            "disposable": false,
            "government_domain": false,
            "has_spf_records": true,
            "domain_popular": false,
            "has_mx_records": true,
            "china_free_email": false,
            "free_email": false,
            "russian_free_email": false,
            "police_domain": false,
            "dmarc_enforced": false,
            "suspicious_username": false
        },
        "Entity": "USER@EXAMPLE.COM"
    }
]
案例墙
结果类型 说明 类型
输出消息*
  1. Successful entities: "APIVoid: Added screenshots for the following entities: <entities identifier list>"
  2. 失败的实体:“以下实体发生错误:<实体标识符列表>”
  3. 缺少实体(无数据):“未找到以下实体的屏幕截图:<实体标识符列表>”
  4. 不含网址实体的提醒:“APIVoid:未找到用于截取屏幕截图的网址实体。”
  5. 对于大型实体(附件文件大小 > 3MB):“未能将屏幕截图作为附件添加到以下实体:<<实体标识符列表>>”
常规
附件

如果有可用数据,请创建一个新的文件对象:

  1. attachment title: 'Screenshot - {0}'.format(entity.identifier)
  2. 文件名应为不带后缀 (https/http) 的网址 +“_capture.<文件格式>”
  3. screenshot is returned in base64 encoded string --> file content should be b64decode(data.get('base64_file'))
  4. 别忘了添加 try、except - 平台有 3MB 的限制。如果出现错误,请向日志记录器添加相关消息。
常规

Ping

测试连接。

参数

不适用

运行时间

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

操作结果

脚本结果
脚本结果名称 值选项 示例
成功 True/False success:False

验证电子邮件

检查电子邮件是否为一次性邮箱、是否具有 MX 记录等。

参数

参数名称 类型 默认值 为必填项 说明
阈值 整数 不适用 是

电子邮件风险阈值。阈值必须是数值。

示例:3

使用场景

分析师可以检查电子邮件是否为一次性邮箱、获取 MX 记录等。

运行时间

此操作在 User 实体上运行。

操作结果

实体丰富化

如果负面引擎的数量等于或高于给定阈值,则将实体标记为可疑。is_suspicious: if data.get("score") > threshold

扩充项字段名称 逻辑 - 适用场景
网域 如果存在于 JSON 结果中,则返回
should_block 如果存在于 JSON 结果中,则返回
得分 如果存在于 JSON 结果中,则返回
一次性 如果存在于 JSON 结果中,则返回
has_mx_records 如果存在于 JSON 结果中,则返回
has_spf_records 如果存在于 JSON 结果中,则返回
脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
[
    {
        "EntityResult": {
            "domain": "example.com",
            "valid_tld": true,
            "email": "user@example.com",
            "role_address": false,
            "should_block": false,
            "risky_tld": false,
            "dirty_words_username": false,
            "suspicious_domain": false,
            "score": 100,
            "educational_domain": false,
            "dirty_words_domain": false,
            "did_you_mean": " ",
            "username": "user",
            "valid_format": true,
            "is_spoofable ": false,
            "disposable": false,
            "government_domain": false,
            "has_spf_records": true,
            "domain_popular": false,
            "has_mx_records": true,
            "china_free_email": false,
            "free_email": false,
            "russian_free_email": false,
            "police_domain": false,
            "dmarc_enforced": false,
            "suspicious_username": false
        },
        "Entity": "USER@EXAMPLE.COm"
    }
]
案例墙
结果类型 说明 类型
输出消息*
  1. successful entities: "APIVoid: Fetched information for the following entities: <entities identifer list>
  2. 失败的实体:“以下实体发生错误:<实体标识符列表>”
  3. 缺少实体(无数据):“找不到以下实体的信息:<实体标识符列表>”
  4. 不含网址实体的提醒:“APIVoid:未找到电子邮件。”
常规
CSV 案例墙 CSV 内容:实体数据(示例如下) 常规
丰富

如果有可用数据,请添加以下内容作为实体丰富信息:(别忘了添加前缀“APIVoid”)

  1. suspicious_domain: data.get("suspicious_domain")
  2. should_block: data.get("should_block")
  3. score: data.get("score")
  4. disposable: data.get("disposable")
  5. has_mx_records: data.get("has_mx_records")
  6. has_spf_records: data.get("has_spf_records")
实体

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