“伪基站”即假基站,设备一般由主机和笔记本电脑或手机组成,通过短信群发器、短信发信机等相关设备能够搜取以其为中心、一定半径范围内的手机卡信息,利用2G移动通信的缺陷,通过伪装成运营商的基站,冒用他人手机号码强行向用户手机发送诈骗、广告推销等短信息。近两年BAT3在国内搭建了强大的伪基站监控系统,在打击犯罪上贡献不少。

最近数年来,随着伪基站、黄貂鱼(IMSI-catcher)技术的快速发展,大家的手机很容易被这类设备信号劫持。它们可以精确定位手机、窃听通信、发送垃圾信息甚至远程植入木马。

IMSI-catcher

近期泄漏数据和公开请求记录显示,美国政府在巴尔的摩、密尔沃基、纽约、塔科马、阿纳海姆、图森等多个城市的执法行动中使用过黄貂鱼,放在机动车或者飞机上来识别和定位嫌疑犯。这类强大的监控装置长期处于司法监督空白区域,为了提高透明度和问责制度,我们应该关心谁使用了、用了多久、何时使用等信息。SeaGlass是由华盛顿大学的安全研究人员设计的系统,用于观测城市中的伪基站、黄貂鱼的活动情况。SeaGlass硬件以上为背景介绍,下边我们来看SeaGlass的硬件部分,主要是传感器。传感器收集所有基站信号数据并上传至服务器,它利用算法去识别可能存在的黄貂鱼信号。

传感器部件

  • 1.Raspberry Pi电脑
  • 2.蜂窝调制解调器扫描细胞频谱
  • 3.全球定位系统
  • 4.诱饵手机
  • 5.移动热点上传数据

传感器部件

SeaGlass传感器采用现成的零件,装在箱子里,并安装到车子的后备箱。当车子在城市行驶时,传感器会不断收集和上传发射塔信号数据到云端。

这些传感器比手机更具有优势,因为它们有专门的蜂窝扫描组件和外部天线,用于接收到更多的信息。虽然手机上装个应用也可以看到当前连接基站的有限信息,但传感器一次可以观测数百个无线频道和接收数十个广播属性。

全市收集

我们在西雅图、密尔沃基两个城市内进行尝试,在两个月内收集了数百万次观测。

西雅图和密尔沃基的测量范围如下图,热图颜色表示每平方公里的测量次数,动图显示两个月内扫描到的所有基站位置。

西雅图(图像放大到市中心)

密尔沃基(图像放大到市中心)

每个基站都有不同位置的数百或数千个测量结果,这让我们可以准确地对潜在基站进行建模。在西雅图共找到了超过1400个不同的基站,在密尔沃基找到了600多个。

西雅图Lake Union地区某个基站在两个月内周围信号的变动如下所示:

红色为较强信号,蓝色为弱信号

通过对每个基站的典型行为进行建模,SeaGlass能找出存在异常行为的基站。

算法

黄貂鱼的监控行为非常隐蔽,但如果你有足够密度的城市蜂窝网络分布图视图,便能够检测到相关的异常行为。

我们设计了检测方法,可以在项目收集的数据上自动标记异常点。SeaGlass项目对这几个异常特征进行检测:

欺骗信号

为了以正常蜂窝网络相同的频率进行信号广播,黄貂鱼可以模拟合法基站的可识别属性(MCC、MNC、基站ID等)。黄貂鱼通常会使用更强的信号广播来劫持手机,并远离模拟的真基站,以避免干扰到真基站的运作。

为每个基站建立模型,显示出基站信号的位置分布,可以很容易识别出与正常信号分布不符的信号。如图所示,在基站7843的信号分布图上,较暗的颜色代表更强的信号,较大尺寸代表统计观测到的异常结果,请注意底部的大圆点。

异常频道

为避免干扰基础网络,黄貂鱼假冒附近基站时,会在不同频率/频道上广播信号。大多数基站只在一个或两个频道传输信号,如果某个基站总是不停地换频道,那么很可能是附近有人在用黄貂鱼。

如图显示了某个基站ID在6个频道上进行广播,位置是西雅图南部的地方单位公民和移民服务(USCIS)大楼附近。可以比较的是,本次数据中没有发现有任何其它基站在超过3个频道上传输的,96%以上的基站仅在单个频道上传输。图中不同颜色代表不同频道,尺寸代表接收信号强度。请注意USCIS大楼附近的异常颜色区域。

异常信号属性

每个基站都会广播自身的配置属性,以便手机调整信号、通报基站支持的功能。这些属性是独特的,但同一城市、同一运营商下基站的大部分属性都相同。SeaGlass项目在收集两个城市不同运营商广播信号时,会统计相关属性分布。

黄貂鱼必须广播自己是某运营商网络的基站,除非窃听者将它配置为完全仿照模式(所有属性和该网络基站一致),否则它是可识别的。

继续看图,如图显示了西雅图塔科马国际机场附近某个基站ID的观测数据,在两个月内它被观测到2千多次,属性信息非常稳定,和该网络下其它基站一致。但有一次信号异常,属性信息远超出西雅图网络内所有基站的预期范围,即图中红点,出现四种异常的BCCH属性(MSTXPWR, RXACCMIN, CRH, T3212)。

时间变化

与正常基站不同,黄貂鱼通常被设计为便携、短时间使用、对感兴趣目标的长期监听。某些情况下,当有临时需求时会需要移动真实基站去支援,比如体育赛事,不过这种情况不多见。因此,任何短时间使用传输的基站都是可疑的,应该需要调查。

在统计数据中,我们找到一些临时基站,但进一步调查显示,它们大概率只是日常维护中关闭的基站。

结果验证

研究团队正尝试通过一些二手信息源来验证结果,比如公开请求记录。SeaGlass检测到了许多可疑的信号,由于没有独立验证,现在还不能肯定说这些可疑信号就是黄貂鱼造成的。

技术细节

关于SeaGlass传感器的详细信息,传感器、数据采集系统、检测算法和结果,大家可以在研究团队发布的论文中看到。

相关代码放在Github上。

【参考】https://seaglass.cs.washington.edu/

SeaGlass:手工搭建伪基站监控系统的更多相关文章

  1. 使用monit搭建一个监控系统

    上周用monit搭建或者说定制了一个监控系统,来监控服务器发生事情.当然了主要是监控异常,因为我们的产品属于服务器类型,很多进程都daemon,要不停的运行.我们搭建监控目的不过是出现问题能够及时的知 ...

  2. 搭建前端监控系统(四)Js截图上报篇

    ===================================================================== 前端监控系统: DEMO地址  GIT代码仓库地址 ==== ...

  3. 搭建前端监控系统(三)NodeJs服务器部署篇

    ===================================================================== 监控系统预览地址: DEMO地址    GIT代码仓库地址 ...

  4. 搭建前端监控系统(二)JS错误监控篇

    ===================================================================== 前端性能监控系统: DEMO地址    GIT代码仓库地址 ...

  5. Telegraf+InfluxDB+Grafana快速搭建实时监控系统 监控postgresql

    Telegraf+InfluxDB+Grafana快速搭建实时监控系统  监控postgresql

  6. 从零开始搭建前端监控系统(三)——实现控制iframe前进后退

    前言 本系列文章旨在讲解如何从零开始搭建前端监控系统. 项目已经开源 项目地址: https://github.com/bombayjs/bombayjs (web sdk) https://gith ...

  7. 搭建前端监控系统(六)JS截屏和录屏篇

    怎样定位前端线上问题,一直以来,都是很头疼的问题,因为它发生于用户的一系列操作之后.错误的原因可能源于机型,网络环境,接口请求,复杂的操作行为等等,在我们想要去解决的时候很难复现出来,自然也就无法解决 ...

  8. 搭建前端监控系统(五)Nodejs怎么搭建消息队列

    怎样定位前端线上问题,一直以来,都是很头疼的问题,因为它发生于用户的一系列操作之后.错误的原因可能源于机型,网络环境,接口请求,复杂的操作行为等等,在我们想要去解决的时候很难复现出来,自然也就无法解决 ...

  9. 搭建zabbix监控系统详解

    搭建zabbix监控系统详解 文:warren   博文大纲:一.前言 二.zabbix监控架构三.搭建Zabbix监控服务器四.搭建过程中遇到有些服务无法正常启动的解决办法 一.前言 : 要想实时的 ...

随机推荐

  1. Unity3D windows平台视频录制录屏插件 UnityRecorder

    例子:从官方例子简单改了 using UnityEditor;using UnityEditor.Recorder;using UnityEditor.Recorder.Input;using Sys ...

  2. Vue.js系列之vue-router(上) (转载自向朔1992)

    概述 Vue非常适用于实践单页面应用程序也就是平时大家说的比较多的SPA(single page application),这点应该了解过Vue的应该都知道吧.一般的单页面应用是基于路由或页面之间的链 ...

  3. GCC、g++编译器和gcc编译器的区别

    GCC:(GNU Compiler Collection,GNU编译器套件),是由 GNU 开发的编程语言编译器.它是以GPL许可证所发行的自由软件,也是 GNU计划的关键部分. gcc:GNU的C语 ...

  4. 【lua实战摸索】在b.lua调用a.lua的函数

    需要掌握知识: lua table的使用(创建自己函数的表作为函数库) 普通函数的调用:tab.func(tab,参数) 等效于表中函数的调用tab:func(参数) 基本思路: 1.在相同目录下创建 ...

  5. vue.js中的表单radio,select,textarea的v-model属性的用法

    只要是表单元素,其值已经不会再用value来定义了,但是placeholder还是可以用来设置默认值. section1--input:type="text" type=" ...

  6. 拖拽功能-jquery

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  7. P2756 网络流解决二分图最大匹配

    P2756 飞行员配对方案问题 题目背景 第二次世界大战时期.. 题目描述 P2756 飞行员配对方案问题 英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架飞机都需要配备在航行技能和语 ...

  8. Java中的线程安全和非线程安全以及锁的几个知识点

    1. 线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用.不会出现数据不一致或者数据污染. 线程不安全就是不提供 ...

  9. 查询mysql所有表数据、字段信息

    根据库名获取所有表的信息 SELECT * FROM information_schema.`TABLES` WHERE TABLE_SCHEMA = 'erp'; 根据库名获取所有表名称和表说明 S ...

  10. 枚举(enum)的使用

    在开发中我们经常会遇到一些特殊的字段,比如订单状态.支付状态.类型等,这些特殊字段在编码开发的时候,可以写成枚举类型.接下来还是看Demo吧! public enum AuditState { Wai ...