将 APIVoid 与 Google SecOps 集成

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

集成版本:12.0

准备工作

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

  • APIVoid v2 账号:可访问 v2 API 服务的有效账号。

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

  • 更新后的 API 端点:熟悉您计划使用的特定 APIVoid 服务的更新后的 v2 API 端点网址(例如,IP Reputation API、Domain Reputation 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 中配置集成,请参阅配置集成

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

操作

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

获取网域声誉

如果某个网域被热门且可信的网域封锁名单服务(例如 网址Vir、ThreatLog、OpenPhish、Spam404、PhishTank、ZeuS Tracker 等)排除,则获取网域声誉检查结果。多种网域屏蔽名单服务可识别涉及恶意软件分发、钓鱼式攻击事件和虚假网店的潜在恶意网站和欺诈性网站。

参数

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

使用场景

网域声誉 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 结果中是否存在相应值
匿名性 返回 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. 网域屏蔽列表报告: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:如果 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. 成功实体:“APIVoid:已为以下实体添加屏幕截图:<实体标识符列表>”
  2. 失败的实体:“以下实体发生错误:<实体标识符列表>”
  3. 缺少实体(无数据):“未找到以下实体的屏幕截图:<实体标识符列表>”
  4. 不含网址实体的提醒:“APIVoid:未找到用于捕获屏幕截图的网址实体。”
  5. 对于大型实体(附件文件大小 > 3MB):“无法将屏幕截图添加为以下实体的附件:<<实体标识符列表>>”
常规
附件

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

  1. 附件标题:“屏幕截图 - {0}”.format(entity.identifier)
  2. 文件名应为不含后缀 (https/http) 的网址 +“_capture.<文件格式>”
  3. 屏幕截图以 base64 编码的字符串形式返回 --> 文件内容应为 b64decode(data.get('base64_file'))
  4. 别忘了添加 try、except - 我们有来自平台的 3MB 限制。如果出现错误,请向记录器添加相关消息。
常规

Ping

测试连接。

参数

不适用

运行于

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

操作结果

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

验证电子邮件

检查电子邮件是否为临时电子邮件地址、是否具有 MX 记录等。

参数

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

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

示例:3

使用场景

分析师可以检查电子邮件是否为临时电子邮件,获取 MX 记录等。

运行于

此操作在 User 实体上运行。

操作结果

实体丰富化

如果负面引擎的数量达到或超过给定的阈值,则将实体标记为可疑。is_suspicious:如果 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. 成功实体:“APIVoid:已提取以下实体的信息:<实体标识符列表>
  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 专业人士那里获得解答。