论文阅读 | Penetration Testing Active Reconnaissance Phase – Optimized Port Scanning With Nmap Tool

发布时间 2023-07-11 18:30:21作者: laolao

我们可以使用 TCP 端口扫描对物联网设备进行分类吗?https://ieeexplore.ieee.org/document/8913346

1 介绍

在[10]中,我们根据统计属性(如活动周期,端口号,信令模式和密码套件)来表征物联网流量。此外,提出了一个多阶段机器学习模型,使用从配备特殊硬件加速(例如NetFlow)的网络交换机中提取的流级属性对设备进行分类。

虽然上述所有工作都对基于被动监控技术的设备分类做出了重要贡献,但它们需要特殊的网络中盒基础设施、特殊的硬件加速器或监控物联网设备网络流量的检查引擎。此外,这些解决方案需要大量数据来“学习”每个设备的唯一指纹。这些是高度复杂的解决方案,非常适合对设备进行持续监控,并可能在设备上线后快速发现新设备。

但是,在故障排除或偶尔设备识别等方案中,网络管理员可能需要一个简单而轻量级的 IoT 工具,该工具可以在各种 IoT 设备上使用最少的先验知识来识别和分类 IoT 设备。此外,它需要高度便携,并且可以在不对网络基础设施进行任何更改的情况下进行操作。在大多数情况下,大型网络的管理员可能无法完全了解设备映射和基础结构。因此,他们可能希望使用端点 IP 地址“主动”探测连接的设备,以发现单个设备的类型。

据我们所知,主动设备发现仍处于起步阶段。在本文中,我们研究了几种主动分类物联网设备的可能方法。

A. Mac 地址中的 Oui 前缀

从 MAC 地址的组织唯一标识符 (OUI) 前缀获取的供应商信息可用于对设备进行分类。但是,它可能不够准确,因为:(a)物联网设备制造商通常使用第三方供应商提供的 NIC,因此 MAC 地址的 OUI 前缀可能不会传达有关物联网设备的任何信息;(b)即使 OUI 提供了供应商的正确详细信息,也无法区分来自同一供应商的不同设备类型。


表1 为物联网设备打开 TCP 端口

B. DHCP 主机名

在DHCP协商期间,很少有设备使用主机名字段向DHCP服务器通告其名称(例如,三星SmartThings设备通过主机名字段将自己宣布为“SmartThings”)。这可用于识别网络中的某些设备。但是,DHCP主机名存在许多问题:(a)许多物联网设备没有在其DHCP请求中设置主机名选项 - 事实上,我们发现我们研究的物联网设备中约有一半没有显示其主机名;(b)即使物联网设备暴露了其主机名,也可能并不总是有意义的(例如,iHome PowerPlug使用“hap-29D71D”作为其主机名),最后;(c) 某些设备(例如 HP 打印机)允许用户将主机名自定义为任意值。

C. 服务发现协议

一些服务发现协议(例如SSDP,Bonjour,Alljoyn和IoTivity)用于将设备提供的服务通告给其对等方[11]。这些协议中的大多数旨在响应在组播地址空间中生成的发现/搜索数据包。这是侦察网络上的设备及其提供的服务的完美解决方案。但是,到目前为止,只有有限数量的设备采用了发现协议来标识自己。使用服务发现协议的另一个缺点是,在典型的网络配置中,组播发现数据包可能无法到达其他子网中的设备。因此,它可能只允许在扫描程序所在的子网内发现设备,除非启用了多播转发。


图1 跨物联网设备的 TCP 端口直方图

D. 解析服务banner

某些设备使用banner进行响应,以请求它们公开的服务。有时,banner可能包含有关设备的详细信息,以帮助检测和分类它们。例如,HTTP 服务可能会显示服务器版本、主机操作系统类型或主机名等详细信息。传统上,网络管理员使用此技术来映射其网络上的系统清单。此外,流行的物联网设备搜索引擎,如Shodan[12],[13]使用机器人来解析这些banner和索引设备,如网络摄像头,SCADA系统和网络路由器。 同时,由于这些信息可以被网络入侵者用来缩小一些适用的漏洞,一些制造商开始限制服务banner中显示的细节。除此之外,当设备不在标准端口上公开服务(例如,在自定义端口号上运行Web服务器而不是使用标准端口80)时,将很难获得banner。

上面提到的方法各有利弊。每种方法都能够识别不同的设备集。尽管如此,仍有一些设备在任何这些发现技术下都看不到。因此,我们提出了一种通过关注设备端的开放TCP端口来对物联网设备进行分类的技术。本文旨在找到这种方法的可行性。

本文的贡献是:

  • 提出了一种技术,根据从物联网设备收集的先验知识,通过探测其开放的TCP端口来确定物联网的类型。使用分层端口扫描方法来执行最佳扫描,而不会在网络上造成不必要的拥塞。
  • 通过19种不同的物联网设备来评估我们的方法。设备集包括相机、灯泡、电源插头、语音助手和家用电器。

图2. 用于对物联网设备进行分类的分层 TCP 扫描

2 使用端口扫描进行设备发现

由于大多数物联网设备是为特定(和有限的)任务而制造的,因此它们公开了在特定于其制造商选择的设备的端口号上运行的不同服务集[14]。与传统的非物联网设备不同,在典型场景下,用户定制的可能性较小。我们在之前的工作[15]中发现了在各种设备上运行的开放端口的独特组合,该工作评估了物联网设备的安全性。这启发了我们e用于区分一系列设备的 TCP 端口签名清单。

A. 开放端口的设备签名

我们现在解释了两种考虑开放TCP端口的物联网设备指纹识别方法。可以使用两种不同的模式探测 TCP 开放端口:1) SYN 隐身(也称为半开放)扫描和 2) TCP 连接扫描。

1) 合成器隐形扫描
这是最快的扫描方法,因为它仅通过 SYN 数据包探测端口,而不是尝试建立完整的 TCP 连接。SYN 隐形扫描程序在收到 SYN/ACK 数据包作为针对端口的 SYN 请求的响应时将端口标记为打开,当她从设备收到 RST(重置)时,将端口标记为关闭。此外,如果多次尝试后未从远程设备收到响应,她会注意到已筛选的端口。过滤的端口主要是由于基于主机的防火墙阻止回复数据包。

2) TCP 连接扫描
在此方法中,扫描程序尝试在每个端口上建立成功的 TCP 连接。TCP 连接扫描程序在完成三次握手后成功建立连接时将端口确定为打开。否则,她将其标记为已关闭。

TCP 连接模式比 SYN 隐形扫描更可靠,因为 TCP 连接扫描程序报告的所有端口都应映射到准备建立连接的服务。因此,我们使用TCP连接模式来扫描我们的设备。在这项工作中,我们使用Nmap扫描测试平台中每个设备的端口。

表 I 显示了通过扫描整个端口范围(即 1 到 65535)识别的物联网设备上的开放端口列表(即签名)。总的来说,我们发现 42 个独特的开放 TCP 端口构成了 19 个设备的集合。虽然我们看到每个设备的开放端口组合不同,但我们发现一些相似之处,特别是来自同一供应商的设备(例如,Google Chromecast 和 Google Home 都使用端口 8008、8009 和 9000)。图 1 显示了跨物联网设备的 TCP 端口的直方图。可以看出,TCP 端口 80(即 HTTP)是 9 个(共 19 个)设备中的主要端口号,其次是 TCP 端口 443、554 和 8080。此外,我们看到仅由一台设备使用的几个唯一端口。

B. 使用分层端口扫描进行设备识别

现在,我们提出了一种有效的机制,根据我们之前提取的开放TCP端口指纹来识别未知设备类型。我们建议以分层方式逐个扫描端口,而不是扫描设备中的整个端口范围并使用TCP开放端口指纹进行映射。

我们使用自动脚本从设备的指纹构建分层树,如图 2 所示。此树描述了基于前一个端口的状态的连续探测顺序,是打开(由绿色链接指示)还是关闭(由红色链接指示)。最初,脚本选择首先探测最常用的端口号,在本例中为端口 80。如果端口打开,则会消除使端口 80 保持关闭状态的设备。然后,它会尝试第二个最常用的端口号(在本例中为端口 8080)。以类似的方式,我们消除设备,直到我们确认设备的指纹(由蓝色节点显示)。在这里,黑色节点表示没有已知的指纹可供进一步探测。

3 评估

在本节中,我们将评估建议的分层扫描的效率和优势。

A. 所需探头数量

为了通过探测整个端口范围(1-65535)来识别给定设备将是一项非常耗时的任务。此外,密集端口扫描通过探测数据包为网络提供沉重的负载,从而影响网络性能。探测至少一个设备使用的端口集合可以减少每个设备要探测的端口数,而不是扫描整个端口范围。在我们的例子中,它仍然需要每个设备42个端口探测器。每台设备需要检查的端口数量可能会随着指纹清单中的设备数量的增加而急剧增加。

图2显示,基于分层树的扫描方法平均只需要6个端口即可对19个物联网设备进行分类和确认。此外,我们注意到,许多设备可以分类在几个探针中,而无需检查通过指纹识别的所有端口。但是,我们建议确认完整的指纹,而不是修剪树木以减少误报。例如,探测前 3 个端口(80、8080、443)足以将 HP 打印机与其他设备进行分类。但是,探测其余 6 个端口将确认它是真正的 HP 打印机,而不是错误地标记未包含在指纹清单中的设备。这表明我们的方法可以通过最少的探测对物联网设备进行分类。此外,可以通过平衡分支或手动确定大量设备的优先级来进一步优化此树。

B. 包括 UDP 端口
与 TCP 扫描相比,扫描 UDP 端口通常更慢(且更复杂)。UDP 端口扫描的挑战是 UDP 协议不会交换任何握手数据包来启动连接。由于这个原因,大多数情况下打开的UDP端口不会响应使用空或任意有效负载制作的探测数据包。很难准确识别开放端口。同时,关闭的 UDP 端口响应 ICMP 端口无法访问错误消息。但是,默认情况下,许多设备将 ICMP 端口无法访问错误消息限制为每秒一条。它使扫描过程非常慢。因此,在这项工作中,我们将端口指纹识别限制为仅TCP端口

4 结论

在连接到企业或园区规模网络的数千台智能设备中了解物联网正在成为网络运营商的一项繁琐任务。现有的物联网设备检测框架主要依赖于被动流量监控技术和/或需要额外的特殊基础设施。此外,活动设备发现方法适用于一组非常有限的设备。在这项工作中,我们分析了使用分层端口扫描方法的活动设备分类技术的可行性。初步结果表明,该技术可用于对探测次数最少的设备进行分类。

2 相关工作

3

4 实验

5 总结

6 代码