我有一个运行一些嵌入式代码的设备(我知道那里究竟运行了什么代码)但nmap
无法识别它:
PORT STATE SERVICE VERSION
8266/tcp open unknown
我很乐意提供准确的细节,但没有提供指纹nmap
。
有没有办法强制显示指纹?还是说必须满足某些特定条件才能识别服务?(在这种情况下,没有指纹 = 无论如何都无法识别服务)
答案1
向 Nmap 提交新指纹要求 Nmap 收到对其服务探测之一的响应。如果未收到任何探测的响应,它将不会打印指纹。从您显示的输出横幅来看,您正在运行nmap -sV
发送这些服务探测,因为横幅有“VERSION”标题。因此您需要做的是确保 Nmap 发送一个探测,该探测将引发您服务的响应。
尝试此操作的一种方法是使用选项--version-all
,它是 的别名--version-intensity=9
。这可确保所有定义的服务探测都将针对未识别的服务进行尝试,即使它们不太可能引发响应。如果此方法不起作用,您可能需要自己定义服务探测。
服务探测器在文件中定义nmap-service-probes
,格式为Probe TCP nameOfProbe q|probe bytes here|
。如果您知道协议,您应该能够想出一个能够引发响应的探测器。我们对服务探测器的设计目标是:
- 不要对被探测的服务产生负面影响,例如崩溃或导致其关闭。
- 引出提供有关运行服务的软件的一些信息的响应,例如引出服务器横幅的“版本”API 请求或握手消息。
- 避免引起系统管理员关注的状态变化,例如登录尝试、利用漏洞。
如果你的新服务探测能够让 Nmap 打印服务指纹,那么请将其提交为Github 上的一个问题或发送至[电子邮件保护]邮件列表。