一、仅支持 IPv4
注意:说明:
| 函数名称 | 说明 | 示例 |
| ip_to_country(KEY)ip_to_country(KEY,'en') | 分析目标 IP 地址所属国家或地区。默认返回结果为国家或地区的中文名称,添加'en'参数时,返回英文名称。 | * | SELECT ip_to_country(ip) |
| ip_to_country_code(KEY) | 分析目标 IP 地址所属国家或地区的代码。返回结果为国家或地区的代码。 | * | SELECT ip_to_country_code(ip) |
| ip_to_country_geo(KEY) | 分析目标 IP 地址所属国家或地区的经纬度。返回结果为国家或地区的经纬度。 | * | SELECT ip_to_country_geo(ip) |
| ip_to_province(KEY) ip_to_province(KEY,'en') | 分析目标 IP 地址所属省份。默认返回结果为省份的中文名称,添加'en'参数时,返回英文名称。 | * | SELECT ip_to_province(ip) |
| ip_to_province_code(KEY) | 分析目标 IP 地址所属省份的代码。返回结果为省份的行政区划代码。 | * | SELECT ip_to_province_code(ip) |
| ip_to_province_geo(KEY) | 分析目标 IP 地址所属省份的经纬度。返回结果为省份的经纬度。 | * | SELECT ip_to_province_geo(ip) |
| ip_to_city(KEY)ip_to_city(KEY,'en') | 分析目标 IP 地址所属城市。默认返回结果为城市的中文名称,国外城市为英文名,添加'en'参数时,均返回英文名称。 | * | SELECT ip_to_city(ip) |
| ip_to_city_code(KEY) | 分析目标 IP 地址所属城市的代码。返回结果为城市的行政区规划代码,仅支持中国城市。 | * | SELECT ip_to_city_code(ip) |
| ip_to_city_geo(KEY) | 分析目标 IP 地址所属城市的经纬度。返回结果为城市的经纬度,仅支持中国城市。 | * | SELECT ip_to_city_geo(ip) |
| ip_to_provider(KEY) ip_to_provider(KEY,'en') | 分析目标 IP 地址对应的网络运营商,返回结果为网络运营商名称,添加'en'参数时,返回英文名称。 | * | SELECT ip_to_provider(ip) |
二、支持 IPv4 及 IPv6
| 函数名称 | 说明 | 示例 |
| ip_to_country(KEY,'enable_ipv6')ip_to_country(KEY,'enable_ipv6','en') | 分析目标 IP 地址所属国家或地区。默认返回结果为国家或地区的中文名称,添加'en'参数时,返回英文名称。 | * | SELECT ip_to_country(ip,'enable_ipv6') |
| ip_to_country_code(KEY,'enable_ipv6') | 分析目标 IP 地址所属国家或地区的代码。返回结果为国家或地区的代码。 | * | SELECT ip_to_country_code(ip,'enable_ipv6') |
| ip_to_country_geo(KEY,'enable_ipv6') | 分析目标 IP 地址所属国家或地区的经纬度。返回结果为国家或地区的经纬度。 | * | SELECT ip_to_country_geo(ip,'enable_ipv6') |
| ip_to_province(KEY,'enable_ipv6') ip_to_province(KEY,'enable_ipv6','en') | 分析目标 IP 地址所属省份。默认返回结果为省份的中文名称,添加'en'参数时,返回英文名称。 | * | SELECT ip_to_province(ip,'enable_ipv6') |
| ip_to_province_code(KEY,'enable_ipv6') | 分析目标 IP 地址所属省份的代码。返回结果为省份的行政区划代码。 | * | SELECT ip_to_province_code(ip,'enable_ipv6') |
| ip_to_province_geo(KEY,'enable_ipv6') | 分析目标 IP 地址所属省份的经纬度。返回结果为省份的经纬度。 | * | SELECT ip_to_province_geo(ip,'enable_ipv6') |
| ip_to_city(KEY,'enable_ipv6')ip_to_city(KEY,'enable_ipv6','en') | 分析目标 IP 地址所属城市。默认返回结果为城市的中文名称,国外城市为英文名,添加'en'参数时,均返回英文名称。 | * | SELECT ip_to_city(ip,'enable_ipv6') |
| ip_to_city_code(KEY,'enable_ipv6') | 分析目标 IP 地址所属城市的代码。返回结果为城市的行政区规划代码,仅支持中国城市。 | * | SELECT ip_to_city_code(ip,'enable_ipv6') |
| ip_to_city_geo(KEY,'enable_ipv6') | 分析目标 IP 地址所属城市的经纬度。返回结果为城市的经纬度,仅支持中国城市。 | * | SELECT ip_to_city_geo(ip,'enable_ipv6') |
三、IP 网段函数
注意:说明:
四、仅支持 IPv4
| 函数名 | 说明 | 示例 |
| ip_prefix(KEY,prefix_bits) | 获取目标 IP 地址的前缀。返回结果为子网掩码格式 IP 地址。例如192.168.1.0/24。 | * | SELECT ip_prefix(ip,24) |
| ip_subnet_min(KEY) | 获取 IP 网段中的最小 IP 地址。返回结果为 IP 地址,例如192.168.1.0。 | * | SELECT ip_subnet_min(concat(ip,'/24')) |
| ip_subnet_max(KEY) | 获取 IP 网段中的最大 IP 地址。返回结果为 IP 地址,例如192.168.1.255。 | * | SELECT ip_subnet_max(concat(ip,'/24')) |
| ip_subnet_range(KEY) | 获取 IP 网段范围。返回结果为 Array 类型的 IP 地址,例如["172.16.0.0","172.16.0.255"]。 | * | SELECT ip_subnet_range(concat(ip,'/24')) |
| is_subnet_of(KEY) | 判断目标 IP 地址是否在某网段内。返回结果为布尔值。 | * | SELECT is_subnet_of('192.168.0.1/24', ip) |
| is_prefix_subnet_of(KEY) | 判断目标网段是否为某网段的子网。返回结果为布尔值。 | * | SELECT is_prefix_subnet_of('192.168.0.1/24',concat(ip, '/24')) |
五、支持 IPv4 及 IPv6
| 函数名 | 说明 | 示例 |
| ip_to_domain(KEY) | 判断目标 IP 地址是内网地址还是外网地址。内网返回 intranet,外网返回 internet,非法地址返回 invalid。 | * | SELECT ip_to_domain(ip) |
| ip_version(KEY) | 获取 IP 地址版本,返回结果为 ipv4或 ipv6。 | * | SELECT ip_version(ip) |
六、IP 威胁检测函数
根据 腾讯安全威胁情报中心 中的安全情报,判断指定 IP 是否为恶意 IP。
注意:说明:
| 函数名 | 说明 | 示例 |
| ip_threat(KEY) | IP 是否为恶意 IP,返回结果为:UNKNOWN:未知(未检测到威胁信息)。SECURE:安全。SUSPICIOUS:可疑。MALICIOUS:恶意。 | * | SELECT ip_threat(ip) |
| ip_threat_tags(KEY) | 可疑及恶意 IP 的 威胁标签,代表该 IP 存在的具体恶意行为,返回结果为数组。 | * | SELECT ip_threat_tags(ip) |
| ip_threat_detail(KEY) | IP 威胁检测详情,返回结果为 JSON,例如:{ "reputation": "SECURE", "tags": ["Tencent Business Scan"], "extraInfo": { "announcement": "This IP is the scanning IP for WeChat Official Accounts and Mini-Programs, which will regularly scan your data transmission to ensure smooth callbacks and stable services. If you detect scanning activities from this IP, please allow or whitelist it.", "demo": "-", "descibe": null, "referer": "https://developers.weixin.qq.com/community/develop/doc/0000682a9aca4090cdfb008475b401" }, "extraInfo_zh": { "announcement": "此 IP为 微信公众号和小程序 的扫描 IP,将定期对你的 数据传输 进行检测,以 保障回调顺畅、服务稳定,若你发现来自此 IP 的扫描行为,请进行放行或加白…", "demo": "-", "descibe": null, "referer": "https://developers.weixin.qq.com/community/develop/doc/0000682a9aca4090cdfb008475b401" }}其中:reputation:IP 是否为恶意 IP,内容同 ip_threat(KEY)。tags:可疑及恶意 IP 的威胁标签,内容同 ip_threat_tags(KEY)。extraInfo:IP 详细说明,仅部分安全(SECURE)IP 具备,其他 IP 请前往 腾讯安全威胁情报中心 查看。extraInfo_zh:IP 详细说明中文版本。 | * | SELECT ip_threat_detail(ip) |
七、威胁标签说明
部分常见威胁标签及含义如下:
| 威胁标签 | 含义 | 详细说明 |
| xx Exploit vulnerability | xx 漏洞利用 | 该 IP 使用特定漏洞对用户发起攻击,例如 WebLogic 漏洞利用。 |
| xx attack | xx 攻击 | 该 IP 对用户发起过特定类型的攻击,例如 CC 攻击、撞库攻击等。 |
| xx Scanning | xx 扫描 | 该 IP 使用特定的漏洞对用户资产进行扫描,例如致远 OA 扫描(Zhiyuan OA Scanning)。 |
| Brute force | 暴力破解 | 该 IP 对用户系统存在密码尝试行为。 |
| Proxy seconds dial | 代理秒拨 | 代理:该 IP 在某时间点被网络黑产作为代理 IP 使用。秒拨:该 IP 在某时间点是网络黑产提供的秒拨 IP 资源(黑产利用家庭宽带拨号在一定时间内持有作恶的 IP)。 |
| Environmental forgery | 环境伪造 | 该 IP 通过伪造环境以绕过或欺骗服务的安全检测。 |
| Network traffic risk control | 流量风控 | 该 IP 的流量触发了流量风控规则。 |
| group control | 群控 | 该 IP 的流量来源可能来自于群控平台或系统。 |
八、示例
此处列举了 IP 函数在不同场景下的查询和分析示例。你在执行查询和分析操作后,还可以选择合适的统计图表展示查询和分析结果。
注意:说明:
注意:如下示例中的 ip 为日志字段。
·统计不是来自内网的请求总数。
* | SELECT count(*) AS PV where ip_to_domain(ip)!='intranet'
·统计请求总数 Top10的省份。
* | SELECT ip_to_province(ip) AS province, count(*) as PV GROUP BY province ORDER BY PV desc LIMIT 10
·如果上述结果中包含了内网请求,且你希望过滤这部分请求,可参考如下语句。
* | SELECT ip_to_province(ip) AS province, count(*) as PV where ip_to_domain(ip)!='intranet' GROUP BY province ORDER BY PV desc LIMIT 10
·统计 IP 地址的经纬度,确认客户端分布情况。
* | SELECT ip_to_geo(ip) AS geo, count(*) AS pv GROUP BY geo ORDER BY pv DESC
·统计恶意 IP,并获取每个 IP 的威胁等级、威胁标签、访问次数。
* | select ip, CASE WHEN ip_threat(ip)= 'SUSPICIOUS' THEN '可疑' WHEN ip_threat(ip)= 'MALICIOUS' THEN '恶意' END as "威胁等级", ip_threat_tags(ip) as "威胁标签", count(*) as "访问次数" where ip_threat(ip) = 'SUSPICIOUS' or ip_threat(ip) = 'MALICIOUS' group by ip order by count(*) desc limit 10000