我有一個運行一些嵌入式程式碼的設備(我知道那裡到底運行什麼)但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 上的一個問題或將其發送至[電子郵件受保護]郵件清單。