Skip to content

从IP看异常:威胁溯源和风险IP识别的入门玩法

做安全的同行常把"威胁溯源"挂在嘴边,听着很玄乎。其实对普通开发者来说,用IP数据做最基础的风险识别,门槛远没有想象中高。

这篇聊聊,不依赖商业威胁情报库,怎么用IP查询接口做入门级的风险识别和溯源。我用的还是IP9这个免费接口。

风险IP的几个"长相"

见多了你就有直觉了,风险IP通常长这样:

  • 归属地漂移:同一账号登录IP在极短时间内横跨多个城市/国家;
  • 机房IPip_type 是 IDC,说明是服务器/脚本,不是真人;
  • 匿名化特征:IP背后是VPN/代理,归属地和真实位置对不上;
  • 异常时段:大量请求集中在凌晨(真人不会那样)。

入门玩法1:IP画像打分

把上面几个特征做成一个简单的"风险分":

python
def ip_risk_score(info):
    score = 0
    if not info:
        return 50   # 查不到,中立偏疑
    if info.get("ip_type") == "IDC":
        score += 40
    if info.get("country") == "中国" and not info.get("prov"):
        score += 10
    return score

配合行为数据(登录频率、设备数),可以做个基础的"异常检测"。这是我之前做电商风控时的起点。

入门玩法2:账号-IP-时间三维关联

这是"溯源"最核心的思路:把账号、IP、时间串起来看

python
def trace_account(user_id, events):
    # events: [(ip, time, action), ...]
    seen = []
    for ip, t, action in events:
        info = query_ip(ip)
        loc = f"{info.get('prov')} {info.get('city')}" if info else "未知"
        seen.append({"time": t, "ip": ip, "loc": loc, "type": info.get("ip_type"), "action": action})
    # 按时间排序后人工/自动分析
    return seen

比如一个账号,30分钟内登录IP从"北京"跳到"香港"再跳到"美国机房",这种不用看第二条,基本就是被盗号或代理。

入门玩法3:高频攻击源识别

把一段时间内访问异常的IP单独沉淀成"风险名单":

python
from collections import defaultdict
import time

hit = defaultdict(list)

def observe(ip):
    now = time.time()
    hit[ip] = [t for t in hit[ip] if now - t < 60]
    hit[ip].append(now)
    if len(hit[ip]) > 100:   # 1分钟内超100次
        mark_risky(ip)       # 标记,触发频率限制/验证码

积累下来,你会得到一份"本网站的高风险IP名单",这些IP往往反复来捣乱。这个名单可以入库,下次直接拦截,响应速度比实时判断快得多。

进阶:ASN 维度

IP9 的VIP字段里有 ip_asn(AS号)。懂网络的知道,AS号代表一个网络机构。同一ASN下出现大量异常流量,说明"某个机构/机房被用来干坏事了"。

入门阶段,可以记录"异常IP的ASN分布",看是不是集中在几个ASN上——如果是,说明有批量操作,可以针对性处理。

溯源到什么程度算"够"

说句实在话,普通人做"溯源"到不了"揪出真人"那一步(那需要执法机构配合)。但我们能做的:

  • 识别异常:这IP看着就不对;
  • 提前拦截:把风险挡在业务之外;
  • 留痕:记录证据链(时间、IP、归属地),出事有据可查。

这三步做到位,对绝大多数中小项目已经很有价值了。

别越过的红线

  • IP信息属于个人信息的范畴,收集、保存要合规,别乱用、别裸存当营销数据;
  • 风险判断别一刀切,IDC IP也可能是正常业务(比如企业办公);
  • 溯源结果别用于人肉,那是违法的,也是没必要的。

小结

用IP做威胁溯源,本质是把"谁、在哪、什么时候、干了什么"串起来。免费的IP9能提供归属地、IP类型、ASN这些基础信号,够你搭一套入门级的风险识别系统了。

接口:https://www.ip9.com.cn