Wie kann man über das Terminal einen tatsächlich auf einem Port eines Remote-Servers laufenden Dienst identifizieren?

Wie kann man über das Terminal einen tatsächlich auf einem Port eines Remote-Servers laufenden Dienst identifizieren?

Ich habe nmap auf meinem Zielserver verwendet, das die folgenden Dienste zurückgibt

PORT     STATE SERVICE       VERSION
53/tcp   open  domain?
80/tcp   open  http          Microsoft IIS httpd 10.0
88/tcp   open  kerberos-sec  Microsoft Windows Kerberos (server time: 2021-03-17 07:07:34Z)
135/tcp  open  msrpc         Microsoft Windows RPC
139/tcp  open  netbios-ssn   Microsoft Windows netbios-ssn
389/tcp  open  ldap
443/tcp  open  https?
445/tcp  open  microsoft-ds?
464/tcp  open  kpasswd5?
593/tcp  open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
636/tcp  open  tcpwrapped
3268/tcp open  ldap
3269/tcp open  tcpwrapped
3389/tcp open  ms-wbt-server Microsoft Terminal Services

Die Frage ist, wie man den tatsächlichen Dienst identifiziert, der auf einem Port läuft, den Nmap möglicherweise fälschlicherweise identifiziert hat. Wie kann ich beispielsweise auf Port 53 über ein Terminal sicherstellen, dass dort ein DNS-Dienst läuft?

Welche Technik kann ich verwenden? Ich habe keinen Zugriff auf den Zielserver und kann daher die auf dem Server laufenden Prozesse nicht sehen.

Antwort1

Wie Steffen erläutert, können Sie feststellen, ob Server X auf Port Y auf Host Z läuft, indem Sie einen Client ausführen, der dasselbe Protokoll wie X verwendet, und ihn auf Port Y auf Host Z richten. Um beispielsweise zu testen, ob ein bestimmter Server DNS verwendet, können Sie einen der vielen DNS-Clients verwenden, z. B. nslookup.

Natürlich sagt Ihnen das nichts darüber, was dort tatsächlich läuft, abgesehen davon, dass es mit dem von Ihnen verwendeten Protokoll kompatibel ist. Der Server kann fast alles sein. Beispielsweise könnte der Listener auf Port 80 (aus Ihrem Beispiel) einfach ein kleines Skript sein, das auf alle TCP-Handshakes einfach mit „HTTP 201 Kein Inhalt\r\nServer: Microsoft IIS httpd 10.0\r\n\r\n“ antwortet, was ungefähr einer gültigen HTTP-Antwort entspricht (obwohl es diese senden könnte, auch wenn der Client keine HTTP-Anforderung gesendet hat), aber es bedeutet nicht, dass der Listener in irgendeiner sinnvollen Weise ein Webserver ist, geschweige denn, dass es sich speziell um IIS 10.0 handelt.

Die integrierten Erkennungsskripte von Nmap können die meisten Server wahrscheinlich besser erkennen als Sie, sind jedoch auch sehr unflexibel und können leicht getäuscht werden, wenn jemand es versucht. Ein Mensch, der mit den betreffenden Tools und Protokollen vertraut ist, kann in ungewöhnlichen Fällen möglicherweise mehr Informationen extrahieren als die Skripte (z. B. wenn ein Server einen anderen imitiert oder ein Administrator die üblichen „Tells“, die einen Server laut Nmap identifizieren, absichtlich ausgeblendet hat). Die Vermittlung auch nur der Grundlagen dieser Art von Vertrautheit im Allgemeinen liegt jedoch außerhalb des Rahmens dieser Antwort oder dieser Site.

verwandte Informationen