前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用Wireshark与Geolite地址库进行IP定位、地图分布可视化及特征报文深入分析

利用Wireshark与Geolite地址库进行IP定位、地图分布可视化及特征报文深入分析

原创
作者头像
RokasYang
发布2024-08-09 09:46:31
2564
发布2024-08-09 09:46:31
举报
文章被收录于专栏:RokasYang

一、前言

网络扫描和DDoS攻击等行为频繁出现,对网络安全构成严重威胁。为了更好地应对这些安全挑战,我们需要对网络流量来源分布和行为进行深入分析,从而识别潜在的威胁。本文将介绍如何使用MaxMind地址库(包括GeoLite2 ASN、GeoLite2 City和GeoLite2 Country)结合Wireshark进行IP地理位置信息的解析与分析,以及通过Wireshark内置的26个Geo相关字段如何精准过滤我们想要的特征报文,并让它们呈现在地图分布上。

二、获取MaxMind地址库

MaxMind官网注册并登录账号后,在GeoIP地址库下载页面下载地址库压缩包:

主要下载三个文件:

地址库

描述

GeoLite2 ASN

AS号地址库

GeoLite2 City

城市地址库

GeoLite2 Country

国家地址库

想要保持相对更为准确的地址库数据,建议定期更新一次地址库。

三、配置地址库及字段解读

1.配置地址库

打开wireshark,在编辑(edit) -> 首选项(Preferences) -> Name Resolution选项中,启用IP geolocation,并编辑地址库目录,设置地址库存放的目录:

目录下放置MaxMind三个地址库文件:

2.字段解读

之后任意打开一个报文,如果已经打开过报文,点击reload重载报文:

此时任意点开一个含有外网IP的IP头部,可以看到会附带一系列GeoIP地址库数据:

字段含义如下:

字段

含义

GeoIP City

城市

GeoIP Contry

国家

GeoIP ISO Two Letter Country Code

ISO 3166-1标准定义的两字母国家代码

GeoIP AS Number

AS号

GeoIP AS Organization

管理对应AS号的组织机构

GeoIP Latitude

纬度

GeoIP Longitude

经度

私网IP网段不涉及地理位置信息,因此不会解析私网IP。

3.应用为列

为了比较直观的看出IP地理位置信息,上面任意字段都能设置为列,比如我们筛选源端发过来的SYN包:

代码语言:bash
复制
tcp.flags.syn==1 &&tcp.flags.ack==0

之后把源IP国家设置为列(右击国家字段-->应用为列):

应用为列后可以看到最右边将展示源IP所在国家,其它字段同理设置。

四、查看可视化地图分布

1.查看地图分布

统计(Statistics) --> 端点(Endpoints) 里面可以看到IP端点默认会展示上面所述的6个字段,即国家、城市、经纬度、AS号、AS号组织机构:

同时还能生成一份地图分布数据,点击左上角的 地图(Map) --> 在浏览器打开(Open in browser)

并且单独点击每个IP可以查看详细属性信息,AS号、AS所在组织机构、国家、包量、传输字节数:

2.拷贝为CSV/YAML/JSON格式

同样在统计(Statistics) --> 端点(Endpoints)这里,支持将这些数据拷贝为CSV、YAML、三种格式:

CSV:

代码语言:bash
复制
Address,Packets,Bytes,Tx Packets,Tx Bytes,Rx Packets,Rx Bytes,Country,City,Latitude,Longitude,AS Number,AS Organization
35.195.38.218,1,68,0,0,1,68,"Belgium","Brussels",50.8534,4.347,396982,"GOOGLE-CLOUD-PLATFORM"
35.195.39.34,1,68,0,0,1,68,"Belgium","Brussels",50.8534,4.347,396982,"GOOGLE-CLOUD-PLATFORM"
35.195.39.63,1,68,0,0,1,68,"Belgium","Brussels",50.8534,4.347,396982,"GOOGLE-CLOUD-PLATFORM"

YAML:

代码语言:yaml
复制
---
-
 - Address: 44.204.2.151
 - Packets: 1
 - Bytes: 64
 - Tx Packets: 1
 - Tx Bytes: 64
 - Rx Packets: 0
 - Rx Bytes: 0
 - Country: United States
 - City: Ashburn
 - Latitude: 39.0469
 - Longitude: -77.4903
 - AS Number: 14618
 - AS Organization: AMAZON-AES

JSON:

代码语言:json
复制
[
    {
        "AS Number": "1680",
        "AS Organization": "Cellcom Fixed Line Communication L.P",
        "Address": "93.173.35.146",
        "Bytes": "68",
        "City": "Tel Aviv",
        "Country": "Israel",
        "Latitude": "32.0803",
        "Longitude": "34.7805",
        "Packets": "1",
        "Rx Bytes": "68",
        "Rx Packets": "1",
        "Tx Bytes": "0",
        "Tx Packets": "0"
    }
]

五、通过地址库字段过滤报文

wireshark对于geoip功能提供了26个字段可作为过滤条件或应用为列:

过滤字段

含义

ip.geoip.asnum

源/目的IP AS号

ip.geoip.city

源/目的IP所在城市

ip.geoip.country

源/目的IP所在国家

ip.geoip.country_iso

源/目的IP所在国家ISO两字母代码

ip.geoip.dst_asnum

目的IP AS号

ip.geoip.dst_city

目的IP所在城市

ip.geoip.dst_country

目的IP所在国家

ip.geoip.dst_country_iso

目的IP所在国家ISO两字母代码

ip.geoip.dst_lat

目的IP纬度

ip.geoip.dst_lon

目的IP经度

ip.geoip.dst_org

目的IP AS所在组织机构

ip.geoip.dst_summary

目的IP的Geo汇总信息

ip.geoip.lat

源/目的IP的纬度

ip.geoip.lon

源/目的IP的经度

ip.geoip.org

源/目的IP的AS所在组织机构

ip.geoip.src_asnum

源IP AS号

ip.geoip.src_city

源IP所在城市

ip.geoip.src_country

源IP所在国家

ip.geoip.src_country_iso

源IP所在国家ISO两字母代码

ip.geoip.src_lat

源IP纬度

ip.geoip.src_lon

源IP经度

ip.geoip.src_org

源IP AS所在组织机构

ip.geoip.src_summary

源IP的Geo汇总信息

不难发现,ip.geoip.为固定格式,后面接的字段如果以src开头则表示源IP,以dst开头则表示目的IP,两者都不是则表示源或目的,紧接着则是IP地理位置的属性信息:经纬度、AS号、国家、城市、组织机构、ISO两字母代码等。

比如把源/目的IP所在国家、所在城市、AS号应用为列:

这三个列的取值,所用的过滤字段实际就是上面26个中的其中三个:

既然26个字段能被我们任意使用,那么就能可以精准过滤我们想要的符合条件特征的报文,比如下面几种场景。

1.过滤特定国家的报文

比如过滤来源IP国家为美国的报文可以是:

代码语言:bash
复制
ip.geoip.src_country == "United States"

过滤来源IP国家为美国、德国或者俄罗斯:

代码语言:bash
复制
ip.geoip.src_country in {"United States","Germany","Russia"}

当然你也可以使用或语句,效果是一样的:

代码语言:bash
复制
ip.geoip.src_country ==  "United States" || ip.geoip.src_country == "Germany" || ip.geoip.src_country == "Russia"

2.过滤特定城市的报文

过滤阿什本的报文可以是:

代码语言:bash
复制
ip.geoip.city == "Ashburn"

过滤华盛顿或者法兰克福的报文:

代码语言:bash
复制
ip.geoip.city matches "Washington|^Frankfurt"

过滤解析不到城市的报文:

代码语言:bash
复制
!ip.geoip.city

可以看到城市这个字段是空的,因为这些IP在地址库里面没有对应城市数据,其它字段反向过滤方法同理。

3.过滤特定AS号的报文

同理,过滤特定AS号的报文,并且只筛选SYN flag置1的报文:

代码语言:bash
复制
ip.geoip.asnum == 12312 && tcp.flags.syn==1

我们可以通过AS号搜索哪些网段属于这个AS内,可以看到212.172.0.0/16就在里面,可以对上,更加佐证了地址库数据准确无误:

以上演示了3个常用字段,所有26个字段过滤方式同理。

六、总结

本文详细介绍了如何利用MaxMind地址库(包括GeoLite2 ASN、GeoLite2 City和GeoLite2 Country)与Wireshark结合,对抓包捕获文件的IP地理位置信息进行深度分析。

同时进一步阐述了如何将感兴趣的字段应用为列,以便更直观地查看IP地理位置信息。此外,还展示了如何利用Wireshark内置的26个Geo相关字段进行精确的报文过滤,从而识别出符合特定地理位置特征的报文。

最后,通过实例演示了如何查看IP地址的地图分布,并将数据导出为CSV、YAML和JSON格式,以便于进一步进行数据分析和处理,极大的提升了在应对网络扫描、DDoS攻击等安全威胁时的分析效率和准确性。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、获取MaxMind地址库
  • 三、配置地址库及字段解读
    • 1.配置地址库
      • 2.字段解读
        • 3.应用为列
        • 四、查看可视化地图分布
          • 1.查看地图分布
            • 2.拷贝为CSV/YAML/JSON格式
            • 五、通过地址库字段过滤报文
              • 1.过滤特定国家的报文
                • 2.过滤特定城市的报文
                  • 3.过滤特定AS号的报文
                  • 六、总结
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档