Tương tự với SSH nhưng dữ liệu không được mã hóa và chạy ở port 23.
Info
Đối với giao thức Telnet, khi người dùng bấm một phím thì sẽ có một gói tin TCP tương ứng được gửi đi.
Structure
Cấu trúc gói tin của Telnet (kết quả từ Scapy):
###[ Ethernet ]###
dst = 02:42:0a:09:00:69
src = 02:42:0a:09:00:05
type = IPv4
###[ IP ]###
version = 4
ihl = 5
tos = 0x10
len = 53
id = 49532
flags = DF
frag = 0
ttl = 64
proto = tcp
chksum = 0x651a
src = 10.9.0.5
dst = 10.9.0.6
\options \
###[ TCP ]###
sport = 51554
dport = telnet
seq = 4004003512
ack = 2330620592
dataofs = 8
reserved = 0
flags = PA
window = 249
chksum = 0x1444
urgptr = 0
options = [('NOP', None), ('NOP', None), ('Timestamp', (1551771165, 1622443594))]
###[ Raw ]###
load = 'a'Có thể thấy, bản chất của gói tin Telnet là một gói tin TCP.
Unencrypted Data
Important
Dữ liệu trao đổi thông qua Telnet không được mã hóa.
Xét ví dụ kết nối đến MACHINE_IP như sau:
pentester@TryHackMe$ telnet MACHINE_IP
Trying MACHINE_IP...
Connected to MACHINE_IP.
Escape character is '^]'.
Ubuntu 20.04.3 LTS
bento login: frank
Password:
Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-84-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Fri 01 Oct 2021 12:24:56 PM UTCGói tin trao đổi giữa hai máy có dạng như bên dưới:

Chữ màu đỏ là dữ liệu của server hiển thị trên terminal và chữ màu xanh là dữ liệu mà ta nhập vào. Có thể thấy, khi nhập password, dữ liệu không được mã hóa và có thể bị bắt bởi các ứng dụng bắt gói tin chẳng hạn như Wireshark.
Port Connection
Chúng ta có thể kết nối đến port bất kỳ, chẳng hạn như port 80 (port của HTTP), của máy mục tiêu mà không cần sử dụng username và password:
telnet MACHINE_IP 80Sau đó chúng ta nhập vào các dòng sau:
GET / HTTP/1.1
host: telnetVà Enter hai lần để gửi đi request.
Giải thích:
- Dòng đầu tiên là để mô tả GET request đến đường dẫn
/với phiên bản của HTTP là1.1. Chúng ta có thể request trang web khác chẳng hạn như/page.html. - Dòng thứ hai là để mô tả tên host (bắt buộc).
Output nhận được có thể là:
HTTP/1.1 200 OK
Date: Sat, 24 Jun 2023 07:15:04 GMT
Server: Apache/2.4.10 (Debian)
Last-Modified: Mon, 30 Aug 2021 12:09:24 GMT
ETag: "15-5cac5b436ddfa"
Accept-Ranges: bytes
Content-Length: 21
Content-Type: text/htmlTừ output trên ta biết được server đang chạy là Apache với phiên bản là 2.4.10 và hệ điều hành là Debian.