
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.