telnet

Eine telnet Session

* Einführung (Index)

Eine telnet-Session läuft auf den TCP/IP Schichten 5-7 (Session, Presentation,
Application) und für gewöhnlich über Port 23 ab. telnet ist im --|> RFC 854 definiert
und dient dazu über TCP/IP eine Terminalsitzung zu eröffnen.

telnet wird für gewöhnlich mittels telnet rechner port eröffnet, wobei
die Portangabe für eine gewöhnliche telnetsession nicht notwendig ist.
telnet kann durch Angabe des Ports auch mit anderen Servern kommunizieren.

* Ablauf (Index)

Durch den telnet-Befehl eröffnet der Client eine Session mit dem telnetd auf
dem Server. Der telnetd sorgt dafür das Anwendungsprogramme (wie z.B. vi) über
einen Pseudoterminaltreiber an ihn gebunden werden, so dass es sich für die
Anwendungen wie ein gewöhnliches Terminal anfühlt, sie aber in Wirklichkeit vom
telnetd auf das entfernte Login weitergeleitet werden.


Abbildung 1: telnet.png
Schema einer telnet-session

Um telnetsessions auch zwischen verschiedenen Betriebssystemen zu ermöglichen
sind die direkten Vorgaben des telnetprotokolls sehr gering, es wurde das direkte
Nachrichtenformat definiert und der Rest kann zwischen dem beteiligten Server und
Client ausgehandelt werden.
Dazu definiert telnet ein sogenanntes Network Virtual Terminal (NVT) welches nur
definierte Zeichen erzeugen und anzeigen kann, somit ist dessen Funktionsumfang
festgelegt. Das NVT wird übrigens auch in ftp und SMTP verwendet.
Schematisch betrachtet definiert das VNT somit den Umfang der TCP/IP Schicht 6
(Presentation). Obwohl die Session Full Duplex ist, arbeitet das VNT Half Duplex
im line-buffered Modus.

* Optionen (Index)

Die Optionen der telnetsitzung werden zu Beginn zwischen Client/Server ausgehandelt
und von 4 Protokollzeichen (DO, DON'T, WILL und WON'T) gekennzeichnet.
DO und WILL gelten als Angebot bzw. Aufforderung eine Option anzuschalten, WILL
und WON'T als das entsprechende Gegenteil.
Gleiche Aufforderungen bzw. Angebote von beiden Seiten werden automatisch als
Antworten behandelt.
eine telnetsession mit Anzeige der Verhandlungen:
stefan@ArwenOfRivendell:~ $ telnet
telnet> toggle options
Will show option processing.
telnet> open connect6.
Trying 163.44.121.47...
Connected to connect6.
Escape character is '^]'.
SENT WILL AUTHENTICATION
SENT DO ENCRYPT
SENT WILL ENCRYPT
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
RCVD DO TERMINAL TYPE
RCVD DO TSPEED
RCVD DO XDISPLOC
SENT WONT XDISPLOC
RCVD DO NEW-ENVIRON
RCVD DONT AUTHENTICATION
RCVD WONT ENCRYPT
RCVD DONT ENCRYPT
RCVD WILL SUPPRESS GO AHEAD
RCVD DO NAWS
SENT IAC SB NAWS 0 113 (113) 0 43 (43)
RCVD DO LFLOW
RCVD DONT LINEMODE
RCVD WILL STATUS
RCVD IAC SB TERMINAL-SPEED SEND
SENT IAC SB TERMINAL-SPEED IS 9600,9600
RCVD IAC SB NEW-ENVIRON SEND
SENT IAC SB NEW-ENVIRON IS VAR "USER" VALUE "stefan"
RCVD IAC SB TERMINAL-TYPE SEND
SENT IAC SB TERMINAL-TYPE IS "XTERM"
RCVD DO ECHO
SENT WONT ECHO
RCVD WILL ECHO
SENT DO ECHO
Password:
Man sieht hier sehr schön die angebotenen (SENT) und die empfangenen (RCVD)
Verhandlunspunkte und das setzen einiger Umgebungsvariablen (SENT NEW-ENVIRON)

Wie bereits angesprochen kann der Telnetclient auch mit anderen Dameons
(also Servern) als dem telnetd kommunizieren, man kann so z.B. Banner Grabbing
betreiben in dem man per telnet z.B. an einen WWW-Server connected um herauszufinden
was für eine Software eingesetzt wir, oder man kann auch per telnet auf einen
SMTP oder NNTP Server eMails bzw. News lesen und schreiben, dies geschieht
mittels Angabe der gewünschten Portnummer:
stefan@ArwenOfRivendell:~ $ telnet news.XXXYYYZZZ.de 119
Trying 123.456.789.90...
Connected to news.XXXYYYZZZ.de.
Escape character is '^]'.
200 news.XXXYYYZZZ.de InterNetNews NNRP server INN 2.3.2 ready (posting ok).  
Hier sieht man eine telnetverbindung zu einem NNTP Server (INN 2.3.2.), man
kann nun z.B. mit list alle Newsgroups auf diesem Server anzeigen lassen.
stefan@ArwenOfRivendell:~ $ telnet localhost 22
Trying ::1...
Connected to localhost.
Escape character is '^]'.
SSH-1.99-OpenSSH_3.2.3p1 
Hier erfolgte ein telnet auf Port 22, den sshdaemon. Anhand des Banners erkennt
man welche OpenSSH-Version gefahren wird und ob diese z. B. exploited ist.

* Kommandos (Index)

Telnet-Kommandos bestehen aus 2 oder 3 Bytes, desweiteren gibt es Kommandos zur Aushandlung von Optionen (Subnegotiation)
Mnemonic Kommando Dez
Transmit Binary 0
Echo 1
Supress Go-Ahead 3
Status 5
Timing Mark 6
Erase Character EC 247
Erase Line EL 248
Interrupt Process IP 244
Abort Output AO 245
Are You There AYT 246
Break BRK 243
Go Ahead GA 249
No Operation NOP 241
Data Mark DM 242
WILL 251
WONT 252
DO 253
DONT 254
Subnegotiation Begin SB 250
Subnegotiation End SE 240
Extended Options List 255

* Fazit (Index)

Man sollte heute telnet auf keinen Fall mehr für Remote Logins verwenden, da
hier aller Netzwerkverkehr unverschlüsselt übertragen wird (insbesondere Account
und Password). Ausserdem ist der telnetd auch exploited und sollte daher nicht
installiert werden. Als Alternative bieten sich OpenSSH (was auch nebenbei mehr kann
als telnet) oder per SSL verschlüsselte telnets wie z. B. AiSSLtelnet einseten.
Der telnetclient kann aber weiterhin von Nutzen sein, um z. B. Banner zu grabben
oder zu überprüfen ob ein angebotener Dameon auch läuft.

* tcpdump einer telnet-Verbindungsaufnahme: (Index)

root@AragornOfArathorn {2} tcpdump -vvv
tcpdump: listening on ex0
23:36:14.966138 Aragorn.65489 > gtso1.dnscache.mediaways.net.domain: [udp sum ok]  60420+ PTR? 1.2.
168.192.in-addr.arpa. (42) (ttl 64, id 63441, len 70)
23:36:15.029011 gtso1.dnscache.mediaways.net.domain > Aragorn.65489: [udp sum ok]  60420 NXDomain* 
q: PTR? 1.2.168.192.in-addr.arpa. 0/0/0 (42) (DF) (ttl 55, id 0, len 70)
23:36:15.029619 Aragorn.65431 > 192.168.2.1.telnet: S [tcp sum ok] 2742987470:2742987470(0) win 327
68 <mss 1460,nop,wscale 0,nop,nop,timestamp 0 0> (DF) (ttl 64, id 63442, len 60)
23:36:15.029822 192.168.2.1.telnet > Aragorn.65431: S [tcp sum ok] 1153664721:1153664721(0) ack 274
2987471 win 32768 <mss 1460,nop,wscale 0,nop,nop,timestamp 0 0> (DF) (ttl 64, id 58101, len 60)
23:36:15.029858 Aragorn.65431 > 192.168.2.1.telnet: . [tcp sum ok] 1:1(0) ack 1 win 33580 <nop,nop,
timestamp 0 0> (DF) (ttl 64, id 63443, len 52)
23:36:15.030960 Aragorn.65431 > 192.168.2.1.telnet: P 1:37(36) ack 1 win 33580 <nop,nop,timestamp 0
 0> [telnet WILL AUTHENTICATION, DO ENCRYPT, WILL ENCRYPT, DO SUPPRESS GO AHEAD, WILL TERMINAL TYPE
, WILL NAWS, WILL TSPEED, WILL LFLOW, WILL LINEMODE, WILL NEW-ENVIRON] (DF) (ttl 64, id 63444, len 
88)
23:36:15.083919 192.168.2.1.telnet > Aragorn.65431: P [tcp sum ok] 1:4(3) ack 37 win 33544 <nop,nop
,timestamp 0 0> [telnet DO AUTHENTICATION] (DF) [tos 0x10]  (ttl 64, id 58103, len 55)
23:36:15.280031 Aragorn.65431 > 192.168.2.1.telnet: . [tcp sum ok] 37:37(0) ack 4 win 33580 <nop,no
p,timestamp 0 0> (DF) (ttl 64, id 63445, len 52)
23:36:15.280190 192.168.2.1.telnet > Aragorn.65431: P 4:58(54) ack 37 win 33580 <nop,nop,timestamp 
1 0> [telnet SB AUTHENTICATION SEND SE, WILL ENCRYPT, DO ENCRYPT, SB ENCRYPT SUPPORT DES_CFB64 0x2 
SE, WILL SUPPRESS GO AHEAD, DO TERMINAL TYPE, DO NAWS[|telnet]] (DF) [tos 0x10]  (ttl 64, id 58104,
 len 106)
23:36:15.280363 Aragorn.65431 > 192.168.2.1.telnet: P 37:134(97) ack 58 win 33580 <nop,nop,timestam
p 0 1> [telnet SB AUTHENTICATION IS NULL 0 SE, SB ENCRYPT REQUEST-START SE, SB ENCRYPT SUPPORT DES_
CFB64 0x2 SE] (DF) (ttl 64, id 63446, len 149)
23:36:15.280637 192.168.2.1.telnet > Aragorn.65431: P [tcp sum ok] 58:61(3) ack 134 win 33580 <nop,
nop,timestamp 1 0> [telnet DO OLD-ENVIRON] (DF) [tos 0x10]  (ttl 64, id 58105, len 55)
23:36:15.280667 Aragorn.65431 > 192.168.2.1.telnet: P [tcp sum ok] 134:137(3) ack 61 win 33580 <nop
,nop,timestamp 0 1> [telnet WONT OLD-ENVIRON] (DF) (ttl 64, id 63447, len 55)
23:36:15.280825 192.168.2.1.telnet > Aragorn.65431: P [tcp sum ok] 61:85(24) ack 137 win 33580 <nop
,nop,timestamp 1 0> [telnet SB TSPEED SEND SE, SB XDISPLOC SEND SE, SB NEW-ENVIRON SEND SE, SB TERM
INAL TYPE SEND SE] (DF) [tos 0x10]  (ttl 64, id 58106, len 76)
23:36:15.281337 Aragorn.65431 > 192.168.2.1.telnet: P 137:262(125) ack 85 win 33580 <nop,nop,timest
amp 0 1> [telnet SB TSPEED IS 0x33 0x38 0x34 0x30 0x30 0x2c 0x33 0x38 0x34 0x30 0x30 SE] (DF) (ttl 
64, id 63448, len 177)
23:36:15.282756 192.168.2.1.telnet > Aragorn.65431: P [tcp sum ok] 85:88(3) ack 262 win 33580 <nop,
nop,timestamp 1 0> [telnet DO ECHO] (DF) [tos 0x10]  (ttl 64, id 58107, len 55)
23:36:15.282789 Aragorn.65431 > 192.168.2.1.telnet: P [tcp sum ok] 262:265(3) ack 88 win 33580 <nop
,nop,timestamp 0 1> [telnet WONT ECHO] (DF) (ttl 64, id 63449, len 55)
23:36:15.284012 192.168.2.1.telnet > Aragorn.65431: P [tcp sum ok] 88:103(15) ack 265 win 33580 <no
p,nop,timestamp 1 0> [telnet WILL ECHO, DO BINARY, SB LFLOW INFO SE, WONT ECHO] (DF) [tos 0x10]  (t
tl 64, id 58108, len 67)
23:36:15.284071 Aragorn.65431 > 192.168.2.1.telnet: P [tcp sum ok] 265:274(9) ack 103 win 33580 <no
p,nop,timestamp 0 1> [telnet DO ECHO, WILL BINARY, DONT ECHO] (DF) (ttl 64, id 63450, len 61)
23:36:15.284202 192.168.2.1.telnet > Aragorn.65431: P [tcp sum ok] 103:115(12) ack 274 win 33571 <n
op,nop,timestamp 1 0> [telnet SB LINEMODE 0x3 0x1 0 0 0xa 0x82 0x8 SE] (DF) [tos 0x10]  (ttl 64, id
 58109, len 64)
23:36:15.284229 Aragorn.65431 > 192.168.2.1.telnet: P [tcp sum ok] 274:283(9) ack 115 win 33580 <no
p,nop,timestamp 0 1> [telnet SB LINEMODE 0x3 0x1 0x80 0 SE] (DF) (ttl 64, id 63451, len 61)
23:36:15.284429 192.168.2.1.telnet > Aragorn.65431: P 115:167(52) ack 283 win 33571 <nop,nop,timest
amp 1 0> (DF) [tos 0x10]  (ttl 64, id 58110, len 104)
23:36:15.480054 Aragorn.65431 > 192.168.2.1.telnet: . [tcp sum ok] 283:283(0) ack 167 win 33580 <no
p,nop,timestamp 1 1> (DF) (ttl 64, id 63452, len 52)
23:36:15.861210 Aragorn.65488 > gtso1.dnscache.mediaways.net.domain: [udp sum ok]  40988+ PTR? 197.
244.189.193.in-addr.arpa. (46) (ttl 64, id 63453, len 74)
23:36:15.899269 gtso1.dnscache.mediaways.net.domain > Aragorn.65488:  40988 q: PTR? 197.244.189.193
.in-addr.arpa. 1/0/0 197.244.189.193.in-addr.arpa. (88) (DF) (ttl 55, id 0, len 116)
23:36:15.900585 Aragorn.65487 > gtso1.dnscache.mediaways.net.domain: [udp sum ok]  39748+ PTR? 1.2.
168.192.in-addr.arpa. (42) (ttl 64, id 63454, len 70)
23:36:15.939370 gtso1.dnscache.mediaways.net.domain > Aragorn.65487: [udp sum ok]  39748 NXDomain* 
q: PTR? 1.2.168.192.in-addr.arpa. 0/0/0 (42) (DF) (ttl 55, id 0, len 70)
23:36:16.309995 192.168.2.1.telnet > Aragorn.65431: P [tcp sum ok] 167:174(7) ack 283 win 33580 <no
p,nop,timestamp 3 0> (DF) [tos 0x10]  (ttl 64, id 58111, len 59)
23:36:16.510049 Aragorn.65431 > 192.168.2.1.telnet: . [tcp sum ok] 283:283(0) ack 174 win 33580 <no
p,nop,timestamp 3 3> (DF) (ttl 64, id 63455, len 52)
23:36:19.199841 Aragorn.65431 > 192.168.2.1.telnet: P [tcp sum ok] 283:285(2) ack 174 win 33580 <no
p,nop,timestamp 8 3> [telnet EOF] (DF) (ttl 64, id 63456, len 54)
23:36:19.202661 192.168.2.1.telnet > Aragorn.65431: F [tcp sum ok] 174:174(0) ack 285 win 33578 <no
p,nop,timestamp 9 8> (DF) [tos 0x10]  (ttl 64, id 58112, len 52)
23:36:19.202713 Aragorn.65431 > 192.168.2.1.telnet: . [tcp sum ok] 285:285(0) ack 175 win 33580 <no
p,nop,timestamp 8 9> (DF) (ttl 64, id 63457, len 52)
23:36:19.202782 Aragorn.65431 > 192.168.2.1.telnet: F [tcp sum ok] 285:285(0) ack 175 win 33580 <no
p,nop,timestamp 8 9> (DF) (ttl 64, id 63458, len 52)
23:36:19.202909 192.168.2.1.telnet > Aragorn.65431: . [tcp sum ok] 175:175(0) ack 286 win 33577 <no
p,nop,timestamp 9 8> (DF) [tos 0x10]  (ttl 64, id 58113, len 52)
^C
33 packets received by filter
0 packets dropped by kernel

net-tex.de, Index
\$Id: telnet.html,v 1.35 2014/08/21 09:23:56 stefan Exp $


$Log: telnet.html,v $ Revision 1.35 2014/08/21 09:23:56 stefan Umlaute und Makefile clean up

Autor: Stefan Schumacher für net-tex.de/cryptomancer.de, PGP-Key 0xB3FBAE33

Bitte beachten Sie, das die Seite inhaltlich seit Ende 2007 nicht mehr gepflegt wird!
Aktuellere Informationen erhalten Sie auf Kaishakunin.com