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

1243
Thufir

Während Webbrowser unter anderem die User-AgentZeichenfolge senden, verfügt das Telnet-Protokoll über eine ähnliche Methode, um etwas über den Client zu ermitteln, der eine Verbindung dazu herstellt? OS? Spezieller Telnet-Client? Usw.

9

1 Antwort auf die Frage

14
grawity

There is no User-Agent, but there exist a few Telnet protocol options for sending client information:

  • TERMINAL TYPE – shows the used terminal type (e.g. xterm, urxvt, screen-256color...) You can't really get rid of this without breaking things. Same goes for NAWS which reports the window size (columns × rows).

  • OLD-ENVIRON and NEW-ENVIRON – can reveal some specific environment variables; some clients also reveal their FQDN in a fake $DISPLAY variable. Sending your configured system locale ($LANG, $LC_*) or timezone ($TZ) is also not uncommon.

  • XDISPLOC – similar to above, some clients send your FQDN as the X11 display location.

  • If any of the authentication features are enabled, they can reveal your OS username.

  • Finally, the whole set of recognized options varies between implementations and can be used as a rough Panopticlick-style fingerprint.

frost$ echo $DISPLAY :0 frost$ telnet telnet> set options Will show option processing. telnet> open m-net.arbornet.org Trying 162.202.67.157... Connected to m-net.arbornet.org. Escape character is '^]'. SENT DO SUPPRESS GO AHEAD SENT WILL TERMINAL TYPE SENT WILL NAWS SENT WILL TSPEED SENT WILL LFLOW SENT WILL LINEMODE SENT WILL NEW-ENVIRON SENT DO STATUS SENT WILL XDISPLOC RCVD DO AUTHENTICATION SENT WONT AUTHENTICATION RCVD WILL SUPPRESS GO AHEAD RCVD DO TERMINAL TYPE RCVD DO NAWS SENT IAC SB NAWS 0 95 (95) 0 46 (46) RCVD DO TSPEED RCVD DO LFLOW RCVD DO LINEMODE SENT 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; EC 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 DO NEW-ENVIRON RCVD WILL STATUS RCVD DO XDISPLOC RCVD WILL ENCRYPT SENT DONT ENCRYPT RCVD DO OLD-ENVIRON SENT WONT OLD-ENVIRON RCVD IAC SB TERMINAL-SPEED SEND SENT IAC SB TERMINAL-SPEED IS 38400,38400 RCVD IAC SB X-DISPLAY-LOCATION SEND SENT IAC SB X-DISPLAY-LOCATION IS "frost.nullroute.eu.org:0" RCVD IAC SB NEW-ENVIRON SEND SENT IAC SB NEW-ENVIRON IS VAR "DISPLAY" VALUE "frost.nullroute.eu.org:0" RCVD IAC SB TERMINAL-TYPE SEND SENT IAC SB TERMINAL-TYPE IS "XTERM-256COLOR" RCVD DO ECHO SENT WONT ECHO RCVD WILL ECHO SENT DO ECHO RCVD IAC SB TOGGLE-FLOW-CONTROL OFF RCVD IAC SB TOGGLE-FLOW-CONTROL RESTART-XON RCVD DONT 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) login: 
ausgezeichnete antwort. Wenn ich "man telnet" lese, ist der einzige aufgelistete Fehler: "Der Quellcode ist nicht nachvollziehbar." Neugierig, ob jemand jemals einen aktuellen Client in etwas anderem als C geschrieben hat. Thufir vor 8 Jahren 2
Das würde nicht viel nützen, 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 und netkit-telnet. grawity vor 8 Jahren 3
In einem verwandten Hinweis hat SSH * jedoch eine Benutzeragentenzeichenfolge. grawity vor 8 Jahren 1
@ grawity telnet sieht jedoch noch viel Gebrauch, z. B. für die Diagnose. Dank der Verbreitung von TLS wird dies etwas seltener (zugunsten von OpenSSL `-connect`), aber es gibt immer noch viele gültige Verwendungen für eine vernünftige Bare-Bones-Textverbindung, so wie es Telnet Ihnen beim Aufruf gegen ein Nicht-Telnet gibt Server. Natürlich ist es nach wie vor wichtig, dass Telnet nicht einfach Software, sondern ein Protokoll ist. Es ist ein bisschen so, als würde man einen Webbrowser HTTP nennen. a CVn vor 8 Jahren 1
@ MichaelKjörling Wenn der Telnet-Befehl jedoch zum Debuggen der Netzwerkkommunikation verwendet wird, spricht er eigentlich nicht das Telnet-Protokoll. Mit dem Telnet-Client habe ich gerade getestet, indem ich ihm einfach mitteilte, mit welcher Port-Nummer er sich verbinden soll. kasperd vor 8 Jahren 1
@ MichaelKjörling: Dafür hast du "nc", "ncat", "socat" und so weiter. grawity vor 8 Jahren 0
Telnet wird immer noch häufig für MUDs (MOOs, MUSHs usw.) verwendet. blubberdiblub vor 7 Jahren 0