让操作系统指纹识别再次强大:Intercepter-NG的MAC增强技术

本文介绍了Intercepter-NG如何通过结合MAC地址前三位字节与TCP SYN/ACK指纹来提升操作系统和设备型号识别的精确度,包括指纹收集方法和数据库共享。

拦截全球!:让操作系统指纹识别再次强大!

嗨,朋友们!最近我发布了Intercepter-NG的Android新版本,今天我想讨论其中一个功能。

多年来,即使在原始的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的前3个字节添加到其TCP SYN\ACK指纹中,瞧!一个常见的Linux指纹变成了独特的东西:

  • 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指纹变成:

  • 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。还有通用指纹,例如:

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

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

如果Intercepter没有通过MAC找到精确值,它会使用这些通用指纹。

有4种方式收集指纹:

  1. Intercepter Android版本中的内置按钮。它生成您自己设备的指纹。只需确保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)

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