车联网安全进阶之跨境传输检测方法与脚本
2023-05-16 11:47:31   来源: 桥的断想   评论:0 点击:

  在车联网安全基础知识系列外,新开了一个系列 车联网安全进阶,主要分享一些车联网安全的进阶的知识,包括但不限于自动化检测脚本分享,其他的等想好了再说??。

  5月5日发布的《汽车整车信息安全技术要求》(征求意见稿) 在10节 车辆数据代码安全要求 中对数据跨境传输提出了要求——车辆不得直接向境外传输数据。

  10.7 车辆不得直接向境外传输数据。

  注:用户使用浏览器访问境外网站、使用通信软件向境外传递消息、自主安装可能导致数据出境的第三方应用等不受本条款限制。

  并在A.7.7 防数据直接出境测试方法给出了测试方法,使用抓包工具开始抓包,然后模拟测试车辆各项预装的数据传输功能,最后分析数据包中是否包含境外IP地址。

  测试人员应按照如下测试方法,检验测试车辆是否满足正文10.7的要求:

  a) 开启车辆全部移动蜂窝通信网络、WLAN通信网络,依次模拟测试车辆各项预装的数据传输功能

  b) 使用网络数据抓包工具进行不少于3600秒的数据抓包,解析通信报文数据,分析目的IP地址中是否包含境外IP地址,并记录测试结果,应不包含境外IP地址。

  标准中只说了应不包含境外IP地址,没有给出数据包的分析方法,今天和大家分享一下我采用的检测方法和脚本。

  数据包抓取

  不同场景下使用适合的抓包工具,如使用 tcpdump 在TBOX中抓取移动蜂窝通信网络通信数据。

  tcpdump -i any -w tbox.pcap

  跨境检测脚本编写

  使用 Python 脚本提取出数据包中的 IP,从中过滤出公网IP,然后使用公开的接口查询 IP 地址的所在地,提取出境外的IP。

  1.使用 scapy 提取出数据包中的公网 IP

  packets = rdpcap(pcap)

  ip_list = []

  for pkt in packets:

  if IP in pkt:

  src_ip = pkt[IP].src

  2.使用 ipaddress 过滤检测是否是公网IP地址

  判断IP是否为公网IP地址,过滤掉内网地址、本地换回地址、广播地址、保留地址。

  # 检查是否公网IP,是则返回真

  def is_public_ip(ip):

  ip = ipaddress.ip_address(ip)

  if ip.is_private or ip.is_loopback or ip.is_multicast or ip.is_reserved:

  return False

  else:

  return True

  3.公开的接口查询 IP 地址的所在地

  有很多公开的IP地址接口可以使用。这里我采用 百度数据开放平台提供的 API 查询 IP 的所在地。百度数据开放平台查询国内IP返回地址以省名/直辖市开头,国外的IP只显示国家。

  

  根据返回地址特性,筛选出不是以省名/直辖市打头的地址,过滤出境外IP。

  # 检查IP,如果是境外IP则返回所在地址

  def cross_border_addr(ip):

  # 百度IP信息查询API

  query_api = "https://opendata.baidu.com/api.php?co=&resource_id=6006&oe=utf8&query="

  homeland = ["中国","北京","天津","河北","山西","内蒙古","辽宁","吉林","黑龙江","上海","江苏","浙江","安徽","福建","江西","山东","河南","湖北","湖南","广东","广西","海南","重庆","四川","贵州","云南","西藏","陕西","甘肃","青海","宁夏","新疆"]

  response = requests.get(query_api+ip)

  location = json.loads(response.content.decode())["data"][0]["location"]

  if location[0:2] not in homeland:

  return location

  else:

  return False

  4.将前面的代码组合起来,就是一个跨境检测的脚本

  完整脚本见 https://github.com/delikely/Automotive-Security-Toolkit,或点击文末 "阅读原文" 直达。

  检测脚本使用

  E:\Code\Automotive> python 'cross-border checker.py' -h

  usage: PROG [options]

  流量包跨境传输检查

  optional arguments:

  -h, --help           show this help message and exit

  -f FILE, --file FILE pcap file

  使用 -f 选项指定需要分析的流量包。使用实例如下图,在tbox.pcap 中检测出了 4 个跨境的 IP地址。

  

  注意事项

  测试机接入到车辆网络中,对外通信通过TBOX传输,测试机的流量可能会污染抓取的流量,影响检测的准确性。

  在查询 IP 地址的所在地中,如对数据较为敏感,则可采用私有化部署(如 rapiddns 私有化部署)的数据进行查询。

  参考

  《汽车整车信息安全技术要求》(征求意见稿)

相关热词搜索:车联网安全

上一篇:车联网前装搭载率破70%,本土供应商抢下半壁江山
下一篇:车联网安全基础知识之UDS刷写前置基础知识

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306116;邮箱:aet@chinaaet.com。
分享到: 收藏