让操作系统指纹识别重焕新生:基于MAC地址的精准设备识别技术

本文详细介绍Intercepter-NG工具如何通过结合MAC地址前三位字节与TCP SYN/ACK指纹数据,实现精准的操作系统和设备型号识别。文章涵盖技术原理、指纹数据库构建方法、四种指纹收集方式,以及工具在Android平台的最新功能升级。

拦截全球!让操作系统指纹识别重焕新生!

2020年5月10日 星期日

让操作系统指纹识别重焕新生!

大家好!最近我发布了Android版Intercepter-NG的新版本,今天想讨论其中的一个功能特性。

多年来,即使在原始Windows版本中,Intercepter一直使用简单的方法来检测和区分不同操作系统。首先,通过发送ICMP请求检查TTL值,如果存在至少一个开放的TCP端口,则同时检查TTL和TCP窗口大小。

通过这种方式,我能够获得以下结果:

  • Linux 2.4.x\2.6.x
  • Linux 3.x\Android
  • FreeBSD\MacOS X
  • FreeBSD
  • OpenBSD
  • HP-UX
  • Windows 2000\XP SP2
  • Windows XP
  • Windows 2003
  • Windows 7\8\10
  • Cisco IOS
  • Solaris

尽管这个列表非常简短,但总比没有好…

当你听到"操作系统检测"时,会想到什么?没错,nmap…但这意味着你需要能够连接到目标主机并花费时间进行分析。

如果你只有网络抓包数据呢?你会说被动操作系统指纹识别…是的,我们有Satori和p0f。

Satori及其数据库是唯一"最新"的工具,我决定将其集成到Intercepter中。但在我深入研究后很快发现了问题:它包含许多不同系统的相同TCP指纹——这总体上是有用且好的。但我需要只选择一个结果并在网络扫描时显示。

Satori、p0f和其他被动操作系统指纹识别工具旨在处理任何类型网络的抓包或实时流量,因此从未考虑MAC地址。而在我的案例中,Intercepter仅在以太网区域工作,直接访问具有唯一MAC地址的网络设备。

现在,主要思路是将已知设备MAC地址的前三位字节添加到其TCP SYN\ACK指纹中,这样普通的Linux指纹就变成了唯一标识:

1
2
3
4
C8D3A3;5792:64:1:60:M1460,S,T,N,W1:ZAT=Linux 2.4 ; D-Link DSL-2740U
F81A67;5792:64:1:60:M1460,S,T,N,W1:ZAT=Linux 2.6 ; TP-Link WR842ND
CC5D4E;5792:64:1:60:M1460,S,T,N,W1:ZAT=Linux 2.6 ; ZYXEL Keenetic Giga
8CEA1B;5792:64:1:60:M1460,S,T,N,W1:ZAT=Edge-Core ECS2100 ; Switch

或者普通的Android指纹变成:

1
2
3
4
F8C39E;65535:64:1:60:M1460,S,T,N,W8:ZAT=Android 9 ; Honor 9 Lite
2047DA;65535:64:1:60:M1460,S,T,N,W8:ZAT=Android 9 ; Xiaomi Redmi Note 5
08CC27;65535:64:1:60:M1460,S,T,N,W8:ZAT=Android 9 ; Motorola E6 Plus
8C3AE3;65535:64:1:60:M1460,S,T,N,W8:ZAT=Android 5 ; LG G2

通过这种方式,我们能够检测设备的确切型号!使用这种类型的指纹,Intercepter可以在几秒钟内检测大量设备。我们需要做的就是尽可能多地收集指纹。我不想创建新格式,因此选择了Satori的格式,它清晰明了。通过少量修改,Intercepter的数据库也适用于Satori。还有一些通用指纹,例如:

1
000000;8192:128:1:60:M1460,N,W8,S,T:AT=Windows 7 / 8 / 2008 / 2012 / 2016 ;

1
000000;65535:64:1:60:M1460,S,T,N,W8:ZAT=Android 5-10+ ;

当Intercepter未通过MAC找到精确匹配时,会使用这些通用指纹。

收集指纹的四种方式:

  1. Android版Intercepter内置按钮 生成您自己设备的指纹。请确保关闭MAC地址随机化功能。

  2. 新的X-Scan模式 显示远程设备的指纹。需要至少一个开放的TCP端口。

  3. 网络扫描中的未知指纹 所有未知指纹在网络扫描期间会作为额外信息显示。

  4. 原始Intercepter-NG更新至1.0+版本 显示网络上每个设备的指纹——更容易收集大量记录。

您已经看到了一些示例,如果您想帮助我,请收集指纹并设置"操作系统版本"和/或"设备型号",然后通过邮件发送给我:intercepter.mail@gmail.com。

对于普通计算机和笔记本,仅操作系统信息就很有价值。

您的帮助不仅对Intercepter或Satori有用,也对其他工具如NetworkMiner有益。贡献或消亡!

当前版本的数据库发布在此处:https://github.com/intercepter-ng/intercepter-ng.github.io/blob/master/intercepter_fingerprints_database.txt

联系方式:

  • 网站:sniff.su
  • 镜像:https://github.com/intercepter-ng/intercepter-ng.github.io
  • 邮箱:intercepter.mail@gmail.com
  • Twitter:twitter.com/IntercepterNG
  • 论坛:intercepterng.boards.net
  • 博客:intercepter-ng.blogspot.ru

Satori:https://github.com/xnih/satori

2.6版本更新日志:

  • 自动保存和恢复路由规则和iptables
  • 预加载最后一次扫描结果 + 启动时预扫描
  • 手势调整文本大小,滑动切换标签页,振动反馈
  • 基于Satori格式的操作系统指纹识别系统
  • 端口扫描升级为带EternalBlue检查器的X-Scan
  • 大幅改进扫描引擎
  • 改进的sslstrip HSTS欺骗功能
  • 自我诊断用于故障排除
  • 大量其他修复和改进

  • 更新UI
  • 不再依赖SuperSU和Busybox → 使用Magisk
  • 支持Android 4.4至10+(x86, ARM, ARMv8)

作者:Intercepter 时间:17:23

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计