
Rayhunter 启发式引擎详解9 个 IMSI 捕食器检测分析器的原理、事件等级与配置【免费下载链接】rayhunterRust tool to detect cell site simulators on an orbic mobile hotspot项目地址: https://gitcode.com/GitHub_Trending/ra/rayhunterRayhunter 的核心价值在于它内置的一组启发式分析器analyzers用于从热点设备捕获的 GSM/LTE 空口流量中识别 IMSI 捕食器IMSI catcher即伪基站/捕获设备的攻击特征。本篇逐一走读doc/heuristics.md中记录的每个分析器它们各自的检测逻辑、源码中的具体判定条件与事件等级以及如何通过config.toml的[analyzers]段按需启用或禁用。读完后你将能够解释 Rayhunter 每一条告警背后的协议依据并针对所在网络的误报情况调整分析器组合。分析管线Harness 与 Analyzer 抽象所有启发式共享同一个抽象层定义在 analyzer.rs 中。每个分析器实现Analyzertrait对每一条解析出的信息元素InformationElement调用analyze_information_element可选地返回一个EventHarness按AnalyzerConfig装配启用的分析器集合见 Harness::new_with_config逐包把元素分发给所有分析器每个分析器独立产出一个事件槽位。事件严重程度severity由EventType枚举定义EventType等级数值含义Informational0仅记录不触发屏幕/通知告警Low1低严重度警告Medium2中严重度警告当前各分析器未直接使用High3高严重度警告最可能是攻击特征每个分析器还通过get_version()暴露一个只增不减的版本号用于在分析报告中区分新旧逻辑报告首行的ReportMetadata会记录本次分析所用各分析器的名称、描述与版本当前报告格式版本为 2见 REPORT_VERSION。这也解释了文档中部分分析器标题后的(v2)、(v3)等标记——它们指的是启发式逻辑的修订代次例如 IMSI Requested 在文档中标注为 v3而 当前源码中get_version()返回 5说明该启发式仍在持续迭代。全部 9 个分析器总览与默认状态[analyzers]配置段与默认值定义在 AnalyzerConfig与仓库中的配置模板 config.toml.in 一致# Analyzer Configuration # Enable/disable specific IMSI catcher detection heuristics # See https://github.com/EFForg/rayhunter/blob/main/doc/heuristics.md for details [analyzers] imsi_requested true # IMSI Requested connection_redirect_2g_downgrade true # Connection Release/Redirected Carrier 2G Downgrade lte_sib6_and_7_downgrade true # LTE SIB6/7 Downgrade null_cipher true # Null Cipher (RRC EEA0) nas_null_cipher true # NAS Null Cipher incomplete_sib true # Incomplete SIB test_analyzer false # Test Analyzer默认禁用 diagnostic_analyzer true # Diagnostic Information no_nas_messages false # No NAS Messages默认禁用这些开关既可以通过编辑设备上的/data/rayhunter/config.toml修改也可以在 Web UI 的Analyzer Heuristic Settings中切换详见 配置指南。官方文档特别提醒部分启发式是实验性的或在某些区域网络如美国与欧洲网络中误报行为不同因此可按需关掉误报严重的分析器。IMSI Requested状态机检测“要身份、不认证、就断开”这是 Rayhunter 最重要的启发式ImsiRequestedAnalyzer。背景网络何时会合法地索要 IMSI移动网络通常在以下场景请求 IMSI 或 IMEI 身份设备初次开机尤其长时间关机后、重启后临时标识过期TMSI/GUTI 失效、长期无信号区域或飞行模式后重连、接入漫游网络、更换 SIM 卡、移动到新跟踪区/位置区后网络无法将临时标识映射到设备以及核心网重启之后。网络会周期性重新分配临时标识以增强隐私、防跟踪但通常不会为此索要 IMSI。文档同时指出真正的 IMSI 捕获攻击链是手机连接到一座新基站基站索要手机身份IMEI 或 IMSI认证Authentication没有发生基站要求手机断开连接。监控这条事件链比单纯监控“任何一次 IMSI/IMEI 上行”误报率低得多——这正是商用 IMSI 捕获器执法使用的采用的攻击方式。已知残余误报场景飞机降落阶段设备长时间断连后飞越无法路由回归属网络的基站仍可能触发告警。源码中的状态机分析器维护六个状态Unattached、AttachRequest、IdentityRequest、AuthAccept、Disconnect、LikelyValidAttachReject见 State 枚举。关键输入是 NAS/RRC 消息EMMAttachRequest、RrcConnectionRequest等进入AttachRequestEMMIdentityRequest进入IdentityRequestEMMAttachComplete/EMMAuthenticationResponse进入AuthAcceptRrcConnectionRelease、Detach、Service Reject 等进入Disconnect。告警判定transition 方法事件链等级告警文案节选认证完成后又收到身份请求HighIdentity requested after auth request未先连接基站就索要身份HighIdentity requested without Attach Request索要身份后直接断开、且属于归属网络HighDisconnected after Identity Request without Auth Accept on home network!索要身份后直接断开、但疑似漫游Low附 Tower/UE/SIM 三方 PLMN 对比信息无效 SIM 的合理 Attach RejectLow提示“除非你的 SIM 是有效套餐否则可能是误报”身份请求后 50 个包内无认证跟进InformationalIdentity request happened without auth request followup两个值得注意的设计细节归属网络加权分析器会比对基站 SIB1 广播的 PLMN 与 UE 附着请求中的旧 TAI PLMN 及 SIM 卡中的归属 PLMNhome_plmn来自 EF_HPLMNwAcT由 Harness 在装配时注入。同样是“要身份→不认证→断开”发生在归属网络上比发生在漫游网络严重得多前者报 High、后者降为 Low 并给出三方 PLMN 便于人工研判。注释明确说明“宁可误报 High 也不漏报”因为归属网络上的严重度更高。超时计数器进入IdentityRequest后每处理一个包计数器加 1达到 TIMEOUT_THRESHHOLD 50 仍无认证跟进则发一条 Informational 提示任何认证成功会清零计数器。文档还说明在非可疑情形下每次身份被发送到网络时该启发式也会发一条通知用途是诊断diagnostic。Connection Release/Redirected Carrier 2G Downgrade该分析器检测基站释放你的连接并把设备重定向到 2G 基站的场景。部分 IMSI 捕获器的工作方式就是把连接降级到 2G从而在 GSM 上实施中间人MitM攻击。实现极为直接ConnectionRedirect2GDowngradeAnalyzer只关注 DL-DCCH 中的RrcConnectionRelease消息解出 r8 扩展里的redirected_carrier_info若重定向目标是Geran即 GSM 载频列表立即返回High事件 Detected 2G downgrade其他 RAT 的重定向信息则降级为 Informational 记录便于排查。源码注释表明该启发式参考了 HITBSecConf 上 Lin Huang 的报告《Forcing a targeted LTE cellphone into an eavesdropping network》。LTE SIB6/7 Downgrade (v2)SIBSystem Information Block是 eNodeB 向所有设备广播的未加密、未认证的无线配置信息。攻击者可借此伪造系统信息把本应停留在 4G 的设备驱赶到更不安全的 2G进而窃取 IMSI 或实施 MitM——即“降级攻击”。SIB6 用于向 CDMA2000 小区重选现代手机大多不支持因此 SIB6 消息较少见SIB7 提供向 GSM/EDGE 重选的信息畸形 SIB7 在现实中更常见。实现LteSib6And7DowngradeAnalyzer基于 Shinjo Park《Why We Cannot Win》中的启发式 T7的工作方式是优先级对比跟踪lte_priority从 SIB3同频重选优先级和 SIB5LTE 异频频点列表中的优先级中取最大值跟踪legacy_priority从 SIB6UTRA FDD/TDD 频点列表和 SIB7GSM 频点列表中取最大值每当遇到一条新的 SIB1视为一次新的广播周期重置两个计数器并做判定legacy_priority lte_priority且 LTE 邻居存在 →High文案形如 LTE cell advertised a legacy (3G/2G) cell for priority X reselection over LTE neighbors at priority Ylegacy_priority lte_priority但从未见到 LTE 邻居 → Informational。文档强调一个行为良好的基站总是把其他 4G 邻居的广告优先级放在 2G/3G 邻居之上这一版本v2针对早期版本误报多的问题做了修正即使在 2G 仍普遍的国家也适用。Null CipherRRC 层建议关闭加密正常商用网络中几乎从不使用空密码null cipher即 EEA0——它基本只存在于实验室调试环境加密协商失败或法规特批的应急场景是仅有的例外。而 IMSI 捕获器恰恰常用空密码因为它没有合法密钥建立不了安全上下文诱骗设备走未加密链路可大幅降低窃听难度。NullCipherAnalyzer 监听 DL-DCCH 中的两类 RRC 消息检查其中任何一处密码算法字段是否为EEA0RRCConnectionReconfiguration覆盖三个位置——r8 扩展中的security_config_ho站内 LTE 或 Inter-RAT 切换两种分支、v1250 扩展中 SCG 配置的ciphering_algorithm_scg_r12SCG 分支以及 v1530 扩展的security_config_ho_v1530Intra5GC / 5GC↔EPC 三个分支SecurityModeCommandRRC 层检查security_config_smc的密码算法。任一处为 EEA0 即返回High事件 Cell suggested use of null cipher。注意该分析器只看 RRC 层NAS 层的空密码由下一个分析器负责。NAS Null CipherMME 在安全模式命令中要求 EEA0NasNullCipherAnalyzer 检查 NAS 层的EMM Security Mode Command若nas_sec_algo中的ciph_algo为EPSEncryptionAlgorithmEEA0Null返回High事件 NAS Security mode command requested null cipher。这一事件比 RRC 空密码更“诡异”安全模式命令通常发生在设备已经成功完成与 MME 的认证之后此时刻意要求空密码几乎不应发生。文档给出的可能解释包括攻击者借助 SS7 从 HLR 获取了密钥材料从而能完成认证、伪基站通过与政府及电信运营商合作接入 MME/HLR或极少数情况下运营商自身的配置/合规问题例如某些国家禁止加密。无论哪种都值得一查。Incomplete SIBSIB1 的“不完整链条”合法的 SIB1 应包含完整的时间调度表覆盖至少两个后续 SIBSIB3/4/5 最常见而伪基站常常懒得发送 SIB1、SIB2 之外的内容。实现IncompleteSibAnalyzer检查每条 SIB1 的scheduling_info_list长度小于 2 时返回Informational事件 SIB1 scheduling info list was malformed。文档明确单独看它可能只是配置错误的基站野外只在可疑场景见过但结合IMSI Requested等其他启发式同时触发时就是恶意的强信号。Diagnostic InformationIMSI 暴露类消息的“记录仪”DiagnosticAnalyzer 不参与判定而是把可能暴露 IMSI 的消息逐条记录下来供分析可疑 PCAP 时使用。判定依据是 Marlin 论文归纳的 IMSI 暴露消息清单源码注释写明 Based on the list of IMSI exposing messages identified in the Marlin paper包括一切EMMIdentityRequestIMSI/IMEI/IMEISV带特定原因的EMMTrackingAreaUpdateReject、EMMAttachReject、EMMServiceReject如 IllegalUE、EPSServicesNotAllowed、TrackingAreaNotAllowed、RoamingNotAllowedInThisTrackingArea 等非 IMSI Detach 类型的EMMDetachRequestMO/MT。每条命中都产生 Informational 事件Diagnostic: EMM Attach Reject (…) 等文档建议在没有低/中/高严重度告警出现前这些 informational 警告可以安全忽略。No NAS Messages默认禁用实验性这个分析器解决的是“SIM 根本没在工作”的问题设备持续 5 分钟只有诊断流量、却没有任何 NASNon-Access Stratum设备与核心网之间的信令层消息时说明 SIM 可能缺失、欠费停用、配置不当或接触不良——此时捕获虽然还能记录广播消息但绝大多数依赖 SIM 信令的启发式都已失效整段录制的价值大打折扣。实现NoNasMessagesAnalyzer的几个关键机制与文档描述一一对应用录制时间戳而非设备墙钟窗口基于 QMDL 消息自带的时间戳测量超时常量NAS_TIMEOUT为 5 分钟保证重新分析reanalysis时结果可复现不可解码的消息也推进时钟report_skipped_packet被 Harness 在跳过包时调用保证“收不到任何 NAS”的判断不被解析失败干扰时钟跳变防护时间戳回退、或单次前跳 ≥ 5 分钟典型如 NITZ/GPS 校时都被视为不连续窗口重新开始计时见 不连续检测逻辑只警告一次一旦超时发出 Low 事件 No NAS messages seen in 5 minutes, SIM possibly not working或一旦观察到任何一条 NAS 消息该录制内分析器即永久关闭完全没有任何诊断消息的录制无法触发它没有可测的 5 分钟录制进行中 Web UI 的“5 分钟无诊断消息”提示是独立功能不属于任何保存的报告。配套的单测覆盖了超时触发、NAS 消息关闭分析器、时间戳回退重开窗口、前跳重开窗口、小间隙不重开窗口等场景tests 模块可以推断该时间窗口逻辑的边界行为是经过严格测试的。文档同时声明这是实验性启发式设备能收到射频流量但所处网络不产生 NAS 流量时可能误报。Test Analyzer默认禁用用于验证 Rayhunter 安装是否工作每收到一条 SIB1基站的“信标”广播就发一条 Low 告警内容是解码出的小区标识与位置信息告警格式SIB1 received CID: {}, TAC: {}, PLMN: {}-{}MCC 固定 3 位MNC 支持 2/3 位。文档明确说明它刻意设计得非常吵闹只建议临时打开自检、不要长期开启只要它能告警就证明设备抓取与解析链路是通的。误报治理与告警组合策略综合文档与源码实际部署时的建议是以事件等级定优先级Informational不触发告警只进报告Low/Medium/High 才会体现为屏幕红线与通知。因此incomplete_sib、diagnostic_analyzer大量产生 Informational 属预期行为。组合判断单一分析器尤其 Incomplete SIB单独触发不足以定罪imsi_requestedHigh归属网络变体 空密码 不完整 SIB 同时出现则恶意概率显著上升。按网络环境裁剪配置文档指出美国与欧洲网络下各启发式误报行为存在差异imsi_requested在飞机降落场景有已知误报no_nas_messages属实验性、默认关闭。若某区域误报严重可单独关闭对应开关并留意新版版本对误报的改进分析器版本号即用于区分新旧逻辑。报告可追溯分析输出ndjson 报告首行记录各分析器名称、描述与版本后续行按包记录事件因此任何一条历史告警都能回溯到当时使用的具体启发式版本。小结Rayhunter 的检测能力来自这 9 个各司其职的分析器状态机式的 IMSI Requested 抓“要身份、不认证、就断开”的核心攻击链两级 2G 降级检测信令重定向 SIB 优先级覆盖显式与隐式降级RRC/NAS 双重空密码检测封堵“未加密链路”路径Incomplete SIB 与 Diagnostic 提供旁证与诊断No NAS Messages 与 Test Analyzer 则分别守护录制有效性与设备自身健康。所有分析器共享统一的Analyzertrait、事件等级体系与版本化报告格式并通过[analyzers]段实现细粒度启停——这套设计让启发式的每一次演进都能被报告中的版本号精确记录也为后续扩展新检测项保留了清晰的接口。核心参考文件分析器总览、抽象层与 Harness、IMSI 请求分析器、2G 信令降级、SIB6/7 优先级降级、RRC 空密码、NAS 空密码、不完整 SIB、诊断分析器、无 NAS 分析器、测试分析器、配置模板、配置指南。【免费下载链接】rayhunterRust tool to detect cell site simulators on an orbic mobile hotspot项目地址: https://gitcode.com/GitHub_Trending/ra/rayhunter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考