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.

Thufir
quelle

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: 
user1686
quelle
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