关于IP,这里有你想知道的一切!

原创: 同盾反欺诈研究院 先知安全技术社区 2017-07-13

今日,就来跟大家聊聊关于IP地址方方面面的研究,其实可以归到三个问题上:

1、这个IP在哪儿?

2、这个IP是什么?

3、这个IP干了什么?

看似简单的问题,但每个都需要投入巨大深入研究的代价。同盾科技在IP画像研发过程中,我们接触了国内外很多出色的IP地址数据服务商,也经过诸多的测试与调研,最终我们选择了最优的平台,作为我们的基础数据供应商,在这些数据的基础上,产生出了更加丰富的信息,最终投入到各个风控场景中进行使用。

关于IP的一些冷知识:

IP地址(本文中特指IPv4地址),是用于标识网络和主机的一种逻辑标识。依托于强大的TCP/IP协议,使得我们可以凭借一个IP地址,就访问互联网上的所有资源。

IP地址本质上,只是一个32位的无符号整型(unsigned int),范围从0 ~ 2^32 ,总计约43亿个IP地址。为了便于使用,一般使用字符串形式的IP地址,也就是我们平常用到的192.168.0.1这种形式。实际上,就是把整数,每8个二进制位转换成对应的十进制整数,以点分隔的形式使用。

比如,192.168.0.1和3232235521是等价的。

当今全球,互联网系统共分为四大区域,每一个区域都由一件互联网的本体,通过光缆覆盖信号。这四大区域分别被命名为:格兰芬多,斯莱特林,赫奇帕奇以及拉文克劳......

这是《爱情公寓3》中的一个让人捧腹的桥段。虽然是恶搞,但是有一件事儿说对了,互联网确实是分区域的。

全球共有五个区域互联网注册机构(RIR),分别是:

美洲互联网号码注册管理机构(American Registry for Internet Numbers,ARIN);

欧洲IP网络资源协调中心(RIPE Network Coordination Centre,RIPE NCC);

亚太网络信息中心(Asia-Pacific Network Information Centre,APNIC);

拉丁美洲及加勒比地区互联网地址注册管理机构(Latin American and Caribbean Internet Address Registry,LACNIC);

非洲网络信息中心(African Network Information Centre,AfriNIC)。

IP地址的划分,有RIR机构来进行统筹管理。负责亚洲地区IP地址分配的,就是APNIC,总部位于澳大利亚墨尔本。

各大RIR机构都提供了关于IP地址划分的登记信息,即whois记录。可以在各大RIR机构提供的whois查询页面上查看,或者使用whois命令查询:

whois信息中,会显示IP地址所属的网段,以及申请使用和维护这个网段的运营商。比如,上面的信息中显示,153.35.93.31隶属于江苏省联通。

某些黑客题材的电影中往往会出现使用whois直接查询得到了一个IP的位置,非常精确地定位到了一幢建筑物里。

这张截图来自于2015年上映的《BlackHat》,满满的槽点,都是导演YY出来的。

(导演:怪我咯?)

正餐之前,给大家稍加科普一下,下面我们就要进入主菜了。让我们逐一来解惑文章开篇提到的三个问题。

NO.1  这个IP在哪儿?

前面提到IP的whois信息,其中包含了申请使用该IP的运营商信息,并且在网段描述信息中,会包含国籍和省份信息。

但是这样远远不够,风控场景中,我们需要更加精确的结果,需要知道这个IP具体在哪个城市、哪个乡镇,甚至希望能够精确到某一条街道或者小区。

曾有人问:我们的IP地址库是否能够提供这样的结果?可以确定用户在某个网吧、写字楼甚至某个小区?

那上面这样的IP数据库是如何产生的呢?

俗称“人海战术”。您可别不相信,直到今天,依然有众多的网友在为这个IP库提供数据更新,上报IP地址的确切位置。但我们无从考证这个位置信息是否真实准确,如果不能报保证数据的准确性,在风控决策中同盾是不会去使用的。

一种IP地址定位手段,是通过海量Traceroute信息来分析。

理论上,如果我能够得到所有IP相互之间Traceroute的信息,就可以绘制出整个互联网的链路图。

(上图来自于IPIP.NET提供的BestTrace工具)

每一次traceroute,都会返回详细的网络链路信息。积累了足够多的链路信息之后,就可以直观地看出,很多链路都经过了同一个IP,那么这个IP就是骨干节点或者区域的骨干节点。先确定出哪些节点是CN2骨干节点,进一步确定省级骨干节点,再逐一识别市县区级的骨干节点,最后得到全国范围内的网络分布。

以下是CAIDA的一份报告,使用了类似的原理,但统计的最小单位是AS(自治域)

原图地址:http://www.caida.org/research/topology/as_core_network/pics/2015/ascore-2015-jan-ipv4v6-poster-2000x1389.png圈的边缘,就是探测节点,中间的红色部分,就是全球互联网的骨干节点。原理虽然简单,但实现起来却没那么容易。

首先,你得有足够数量的节点来探测、收集traceroute链路数据。其次,要有可靠的技术手段来及时分析探测到的结果,汇总形成IP地址数据库。据了解,DigitalElemet也用了类似的方式进行探测,在全球范围内一共部署了超过8万个探测节点。

根据这种网络链路探测的出的定位结果,业内又称之为“网络位置”。就是从互联网的结构上来说,我们最终确定了一个IP,被分配到了某个地方的运营商手里。

但是我们又遇到了很多其他的情况,给大家举几个简单的例子。

117.61.31.0  江苏省 南京市 电信

通过分析这个IP关联的所有定位数据,得到了如下的分布:

这种情况,我们称为“流量回源”。当用户在使用南京电信的手机卡上网时,无论用户身处哪里,他的流量都会回到南京电信,再转发出去,所以从IP上看,都会显示为一个南京的IP。

上面的定位信息分布,可以在RTB Asia的IP地址实验室中https://ip.rtbasia.com/

153.35.93.32 江苏省 南京市 联通

各种渠道的信息表明,这个IP确实分配到了南京联通,结果定位点全部落在了北京市的范围内。如果我们根据IP的定位结果来判断用户当前的位置,得到的结果肯定就错了。

难道前面提供的信息错了?其实是由于国内运营商对IP地址的划分和使用不透明,甚至特殊形式的租赁,导致北京的用户,分配到了一个南京的IP。

IP地址跨城市覆盖,覆盖范围非常大,用户位置和网络位置不在同一个城市甚至不在同一个省,都会影响到结果,无法准确给出判断。

另一方面,随着移动设备的普及,在用户允许的情况下,可以通过移动设备采集到设备上的GPS信息。前面大家看到的两张定位分布图,就是分析一个IP在历史上关联过的所有GPS定位绘制出来的。每一个红点,都表示曾经有一个用户这里出现过。再通过聚类和GPS反向解析,就可以预测一个IP下的用户,可能出现的地理位置。这个结果,我们又称之为“行为位置”。

这种分析方法看起来效果非常不错,但是却面临两个很重要的问题。

其一是,今年来设备作弊的方式层出不穷,如果没有有效的手段来保证数据的准确性和可靠性,最终得出的结果也会有偏差。

比如下面这里例子,定位点非常规整地分布在一个矩形区域内,而且覆盖到了海面上,做了深入的分析之后才发现这个IP下面有大量的作弊行为:

另一方面,依靠定位点分布来分析IP的定位,需要长时间积累GPS数据。人口密集的地方,这个数据积累可以只要一天,二线城市需要一周,三线城市就需要至少一个月了。此前还遇到一个位于塔克拉玛干沙漠中的基站IP,至今还没有过与之关联的GPS信息。如果某一天,IP地址被重新分配了,划分到另外一个城市去使用,就需要等上一周甚至一个月的时间,才能重新校正结果。而网络链路的分析可以很快感知到。

实际的使用中,我们会把这两种方式结合到一起。并不是说,两个定位结果中,有一个错了。两个都是正确答案,只是某些情况下,有一个答案并不适合风控场景。

互联网,就像物流系统一样。我们分析IP的位置,和分析一个快递小哥负责派送的区域原理是一样。没有哪个快递小哥只给一户人家送货,IP也一样,我们最终只能确定这个IP后面的用户,可能出现的地理位置区域。随着技术的提升,数据的积累,我们能够不断缩小这个范围,达到最贴近真实的结果。

本次与大家分享的内容到此为止,大家可以反复多次阅读,很多专业描述其实也没有那么难懂,期望可以帮助到有需要的朋友们。另外两个问题的分享,敬请期待IP下半部的分享!

关于IP,这里有你想知道的一切!的更多相关文章

  1. 今天开dev的时候,config update一下别人的,但是忘了自己改过目录了,导致光看ip,想了半天,为什么接口不对

    今天开dev的时候,config update一下别人的,但是忘了自己改过目录了,导致光看ip,想了半天,为什么接口不对 baseUrl: {     //     // dev: 'http://1 ...

  2. selenium send_keys慢,卡,怎么办?这里有你想要的解决方案

    相信各位看官在用selenium时,会发现发送长字符时,一个字符一个字符在输入,特别在使用chrome时,更加明显. 如果你的网页是要大量编辑的怎么处理呢? 一.send_keys机制 既然问题出来了 ...

  3. 未来五年什么样的IT技术最具颠覆性?这里有你想知道的答案

    据外媒报道称,近日Gartner研讨会在美国弗罗里达州奥兰多举行,智能化.大数据和物联网成为届研讨会的三大主题.市场研究机构Gartner Research的副总裁兼资深研究员大卫·卡利(David ...

  4. 关于微信跳转,这里有你想知道的一切weixin://dl/business/?ticket=td9cd0bf056c561fe9f56e33c61df61bf

    纠结了了很久,还是放出来部分接口,相信能够看到这篇文章的人也基本都是需求比较强烈的. 京东: https://wq.jd.com/mjgj/link/GetOpenLink?rurl=http%3a% ...

  5. CSS效果:这里有你想要的CSS3漂亮的自定义Checkbox各种复选框

    在原来有一篇文章写到了<CSS效果篇--纯CSS+HTML实现checkbox的思路与实例>. 今天这篇文章主要写各种自定义的checkbox复选框,实现如图所示的复选框: 大致的html ...

  6. CSS效果篇--这里有你想要的CSS3漂亮的自定义Checkbox各种复选框

    在原来有一篇文章写到了<CSS效果篇--纯CSS+HTML实现checkbox的思路与实例>.这篇文章主要写各种自定义的checkbox复选框,实现如图所示的复选框: 大致的html代码都 ...

  7. MyEclipse内存不足?这里有你想要的问题解决方案

    [MyEclipse CI 2019.4.0安装包下载] No.1 打开MyEclipse目录下的myeclipse.ini文件 在后面修改下面几个属性: vmargs Xms512m ( Java能 ...

  8. 【spring springmvc】这里有你想要的SpringMVC的REST风格的四种请求方式

    概述 之前的文章springmvc使用注解声明控制器与请求映射有简单提到过控制器与请求映射,这一次就详细讲解一下SpringMVC的REST风格的四种请求方式及其使用方法. 你能get的知识点 1.什 ...

  9. 【linux】【windows】查看你想访问的电脑Ip 和 端口是否 通畅

    常用查看IP是否通畅: 使用ping命令 ping 117.173.218.23 既想看IP又想看端口:使用telnet命令 telnet 117.173.218.23 9000 注意格式!!!

随机推荐

  1. Spring Boot Starters 列表

    Spring Boot application starters 名称 描述 Pom spring-boot-starter 核心starter,包括自动配置支持,日志和YAML Pom spring ...

  2. 20165235 祁瑛 2018-4 《Java程序设计》第七周学习总结

    20165235 祁瑛 2018-4 <Java程序设计>第七周学习总结 教材学习内容总结 MySQL数据管理系统 MySQL数据管理系统,简称MySQL,是世界上流行的数据管理系统. M ...

  3. 我今天遇到的条件语句Integer类型的

    两个Integer类型的值进行比较时,应该用equals进行判断,用"=="判断是错误的,后来想了一下就明白了,Integer毕竟是对象, 而不是int基本数据类型,可以直接比较, ...

  4. NSL:CPK_NN神经网络实现预测哪个样本与哪个样本处在同一层,从而科学规避我国煤矿突水灾难—Jason niu

    load water_data.mat attributes = mapminmax(attributes); P_train = attributes(:,1:35); T_train = clas ...

  5. Jquery操作一遍过

    什么是jQuery对象? jQuery 对象就是通过jQuery包装DOM对象后产生的对象.jQuery 对象是 jQuery 独有的. 如果一个对象是 jQuery 对象, 那么它就可以使用 jQu ...

  6. Tomcat v9.0 Could not publish to the server. java.lang.IndexOutOfBoundsException

    今天使用Tomcat启动一个java项目,出现报错: Could not publish to the server. java.lang.IndexOutOfBoundsException 众寻之下 ...

  7. mybatis之级联关系(一对一、一对多)

    0. 表结构 1. 准备工作 1.1 配置文件等信息,请参考  myBatis之入门示例 1.2 entity 1.2.1 TPersonInfo.java package com.blueStarW ...

  8. python数据结构之队列(二)

    书接上文,双端队列区别于单队列为:双端队列可以对队列头和尾部同时进行操作,单队列不行 #coding:utf-8 class DoubleQueue(object): def __init__(sel ...

  9. 那些天使用AWS填过的坑和注意事项

    一直在找免费的GPU云端,在某乎上看到AWS提供免费的,就上去试了下,结果那个免费一年的只有CPU,并没有GPU,GPU还是需要付费的,相关背景就说这些,下面放几个相关教程,里面会说怎么使用,看了这几 ...

  10. Hello 2019 (D~G)

    目录 Codeforces 1097 D.Makoto and a Blackboard(DP 期望) E.Egor and an RPG game(思路 LIS Dilworth定理) F.Alex ...