让操作系统指纹识别再次强大起来!
大家好!最近我发布了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地址的前3个字节添加到其TCP SYN\ACK指纹中,瞧!一个普通的Linux指纹变成了独特的东西:
|
|
或者一个普通的Android指纹变成:
|
|
通过这种方式,我们能够检测到设备的确切型号!使用这种类型的指纹,Intercepter可以在几秒钟内检测到许多设备。我们需要做的就是尽可能多地收集指纹。我不想创建新格式,这就是为什么我选择了Satori的格式,它很好且清晰,因此,经过微小更改后,Intercepter的数据库也适用于Satori。还有一些通用指纹,例如:
|
|
或
|
|
如果Intercepter没有通过MAC找到确切值,它会使用这些通用指纹。
有4种收集指纹的方法:
-
Android版Intercepter中的内置按钮。 它生成你自己设备的指纹。只需确保MAC随机化已关闭。
-
新的X-Scan模式显示远程设备的指纹。它需要至少一个开放的TCP端口。
-
所有未知指纹在网络扫描期间作为额外信息出现。
-
我已将原始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)