Kann ein Telnet-Server den über das Protokoll verwendeten Client erkennen?


9

Während Webbrowser unter anderem die User-AgentZeichenfolge senden, hat das Telnet-Protokoll eine ähnliche Methode, um etwas über den Client zu bestimmen, der eine Verbindung zu ihm herstellt? Betriebssystem? Spezifischer Telnet-Client? Usw.

Antworten:


14

Es gibt keinen User-Agent, aber es gibt einige Telnet-Protokolloptionen zum Senden von Clientinformationen:

  • TERMINAL TYPE- zeigt den verwendeten Terminaltyp (z. B. xterm, urxvt, screen-256color ...). Sie können dies nicht wirklich loswerden, ohne Dinge zu beschädigen. Gleiches gilt für NAWSdie Fenstergröße (Spalten × Zeilen).

  • OLD-ENVIRONund NEW-ENVIRON- kann einige spezifische Umgebungsvariablen aufdecken; Einige Clients geben ihren vollqualifizierten Domänennamen auch in einer gefälschten Variablen $ DISPLAY an. Das Senden Ihres konfigurierten Systemgebietsschemas ($ LANG, $ LC_ *) oder Ihrer Zeitzone ($ TZ) ist ebenfalls keine Seltenheit.

  • XDISPLOC - Ähnlich wie oben senden einige Clients Ihren vollqualifizierten Domänennamen als X11-Anzeigeort.

  • Wenn eine der Authentifizierungsfunktionen aktiviert ist, kann Ihr Betriebssystembenutzername angezeigt werden.

  • Schließlich variiert der gesamte Satz der erkannten Optionen zwischen den Implementierungen und kann als grober Fingerabdruck im Panopticlick-Stil verwendet werden.

frost $ echo $ DISPLAY
: 0

Frost $ Telnet
Telnet> Optionen einstellen
Zeigt die Optionsverarbeitung an.
telnet> öffne m-net.arbornet.org
Versuch 162.202.67.157 ...
Verbunden mit m-net.arbornet.org.
Escape-Zeichen ist '^]'.
SENT DO SUPPRESS GO AHEAD
SENDET TERMINAL TYPE
SENT WILL NAWS
SENT WIRD TSPEED
Gesendet wird fließen
SENT WILL LINEMODE
SENT WILL NEW-ENVIRON
SENT DO STATUS
SENDET XDISPLOC
RCVD DO AUTHENTICATION
GESENDET NICHT AUTHENTIFIZIERUNG
RCVD wird vorab unterdrücken
RCVD TERMINAL TYPE
RCVD DO NAWS
SENT IAC SB NAWS 0 95 (95) 0 46 (46)
RCVD TSPEED
RCVD DO LFLOW
RCVD DO LINEMODE
SENDEN IAC SB LINEMODE SLC SYNCH NOSUPPORT 0; IP VARIABLE | FLUSHIN | FLUSHOUT 3; AO VARIABLE 15; AYT NOSUPPORT 0; ABORT VARIABLE | FLUSHIN | FLUSHOUT 28; EOF VARIABLE 4; SUSP VARIABLE | FLUSHIN 26; EG VARIABLE 127; EL VARIABLE 21; EW VARIABLE 23; RP VARIABLE 18; LNEXT VARIABLE 22; XON VARIABLE 17; XOFF VARIABLE 19; FORW1 NOSUPPORT 0; FORW2 NOSUPPORT 0;
SENT DO SUPPRESS GO AHEAD
RCVD NEUE UMGEBUNG
RCVD WIRD STATUS
RCVD DO XDISPLOC
RCVD wird verschlüsseln
SENT DONT ENCRYPT
RCVD DO OLD-ENVIRON 
SENT WONT OLD-ENVIRON
RCVD IAC SB TERMINAL-SPEED SEND
SEND IAC SB TERMINAL-SPEED IST 38400,38400
RCVD IAC SB X-DISPLAY-LOCATION SENDEN
SENDE IAC SB X-DISPLAY-LOCATION IST "frost.nullroute.eu.org:0"
RCVD IAC SB NEW-ENVIRON SENDEN 
SENDEN IAC SB NEW-ENVIRON IST VAR "DISPLAY" VALUE "frost.nullroute.eu.org:0"
RCVD IAC SB TERMINAL-TYPE SEND
SEND IAC SB TERMINAL-TYPE IST "XTERM-256COLOR"
RCVD DO ECHO
SENT WONT ECHO
RCVD WIRD ECHO
SENT DO ECHO
RCVD IAC SB TOGGLE-FLOW-CONTROL OFF
RCVD IAC SB TOGGLE-FLOW-CONTROL RESTART-XON
RCVD NICHT LINEMODE
SENT WONT LINEMODE
RCVD IAC SB LINEMODE SLC IP VARIABLE | ACK | FLUSHIN | FLUSHOUT 3; AO VARIABLE | ACK 15; ABORT VARIABLE | ACK | FLUSHIN | FLUSHOUT 28; EOF VARIABLE | ACK 4; SUSP VARIABLE | ACK | FLUSHIN 26; EC VARIABLE | ACK 127; EL VARIABLE | ACK 21; EW VARIABLE | ACK 23; RP VARIABLE | ACK 18; LNEXT VARIABLE | ACK 22; XON VARIABLE | ACK 17; XOFF VARIABLE | ACK 19;

FreeBSD / i386 (m-net.arbornet.org) (pts / 5)

Anmeldung: 

2
ausgezeichnete Antwort. Wenn ich man telnetden einzigen aufgelisteten Fehler lese, ist: The source code is not comprehensible. Neugierig, ob jemand jemals einen aktuellen Client in etwas anderem als C geschrieben hat.
Thufir

3
Das wäre nicht sehr nützlich, da das Protokoll selbst ebenso wie die meisten Server veraltet ist ... SSHv2 ist der moderne Ersatz. // Beachten Sie auch, dass es mehrere verschiedene Clients gibt, die "telnet" genannt werden - unter anderem inetutils-telnet & netkit-telnet.
user1686

1
In einem verwandten Hinweis verfügt SSH jedoch über eine Benutzeragentenzeichenfolge.
user1686

1
@grawity telnet wird jedoch immer noch häufig verwendet, z. B. für die Diagnose. Es wird dank der Verbreitung von TLS (zugunsten von z. B. OpenSSL -connect) etwas seltener , aber es gibt immer noch viele gültige Verwendungszwecke für eine recht einfache Textverbindung, wie sie Telnet beim Aufrufen gegen einen Nicht-Telnet-Server bietet. Natürlich bleibt Ihr Punkt, dass Telnet nicht einfach Software ist, sondern ein Protokoll. Es ist ein bisschen wie das Aufrufen eines Webbrowsers HTTP.
Ein Lebenslauf

1
@ MichaelKjörling Aber wenn der Telnet-Befehl zum Debuggen der Netzwerkkommunikation verwendet wird, spricht er nicht das Telnet-Protokoll. Mit dem Telnet-Client, den ich gerade getestet habe, wird einfach angegeben, mit welcher Portnummer eine Verbindung hergestellt werden soll, damit sich das Verhalten ändert.
Kasperd
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.