I. CỔNG 2
a. Khái niệm 2
b. Quy ước và hoạt động của các loại cổng 3
c. Ứng dụng 5
II. QUÉT CỔNG 6
1. Khái niệm 6
2. Nguyên tắc quét cổng trên một hệ thống 7
3. Cài đặt thuật toán 9
III. KẾT LUẬN 10
1
I. CỔNG
a. Khái niệm.
Trong mạng máy tính, một cổng là một phần mềm ứng dụng cụ thể hay quá trình
cụ thể xây dựng phục vụ như một thiết bị thông tin liên lạc đầu cuối trong hệ thống máy
chủ điều hành của máy tính. Cổng được liên kết với một địa chỉ IP của máy chủ, cũng
như các loại giao thức được sử dụng để giao tiếp. Mục đích của cổng là để nhận diện
các ứng dụng khác nhau hoặc các tiến trình đang chạy trên một máy tính duy nhất và do
đó cho phép chúng chia sẻ một kết nối vật lý đơn lẻ với một mạng chuyển mạch gói như
Internet.
Trong giao thức TCP và UDP, cổng là số nguyên 16 bit được chèn vào phần đầu
(header) của mỗi gói tin, còn được gọi là số cổng. Số cổng, được thêm vào địa chỉ IP
của máy tính, hoàn thành địa chỉ đích cho một phiên truyền thông. Đó là, các gói dữ liệu
được chuyển qua mạng đến một địa chỉ IP đích cụ thể, và sau đó, khi tới máy đích, tiếp
tục chuyển đến quá trình cụ thể ràng buộc với số cổng đích. Chẳng hạn, phía người
dùng (client) có thể yêu cầu một máy chủ nào đó trên Internet cung cấp dịch vụ chia sẻ
tập tin (file) qua máy chủ FTP. Để đáp ứng yêu cầu này, lớp phần mềm TCP trên máy
của bạn phải nhận diện được port số 21 (đăng ký sẵn cho dịch vụ FTP) trong số các port
16 bit số nguyên được ghép theo gói tin yêu cầu của bạn. Tại máy chủ, lớp TCP sẽ đọc
port 21 và chuyển tiếp yêu cầu đến máy chủ FTP.
Hay nói cách khác, với một địa chỉ IP, chúng ta chỉ có thể xác định được một máy
tính duy nhất trên mạng, tuy nhiên khi một máy tính chạy nhiều dịch vụ khác nhau thì
chúng phải được phân biệt bởi khái niệm port. Ví dụ, máy chủ A (Server A) có dịch vụ
web, DNS và FTP server, có địa chỉ IP là 210.245.126.14. Các máy tính khác khi muốn
đến Server A thì cần đến địa chỉ IP (hay tên miền), nhưng để phân biệt dịch vụ là web,
DNS hay FTP, cần xác định thêm port. Chẳng hạn, khi máy B muốn truy nhập dịch vụ
web trên server A, trong gói tin gửi đi, IP đích sẽ là 210.245.126.14 và port đích sẽ là
80. Cùng lúc đó có máy C truy nhập đến dịch vụ DNS trên server A thì trong gói tin IP
gửi đi, IP đích vẫn là 210.245.126.14 nhưng port đích sẽ là 53. Tương tự, máy D truy
cập đến dịch vụ FTP trên server A, IP đích sẽ là 210.245.126.14 và port là 21. Thông
2
thường các ứng dụng thường ẩn các port này để giảm tính phức tạp của giao thức
TCP/IP.
Có tất cả 65535 cổng (port) và được chia thành 3 đoạn: Well Known Port (WKP),
Registered Port (RP) và Dynamic/Private Port (D/PP). WKP gồm các port từ 0 đến 1023
và được giữ cho các ứng dụng phổ biến như web (port 80), mail (port 25), ftp (port
21) RP gồm các port từ 1024 đến 49151. Còn D/PP là các port từ 49152 đến 65535.
IANA qui định WKP và RP phải được đăng ký với IANA (iana.org) trước khi sử dụng.
b. Quy ước và hoạt động của các loại cổng
i. Cổng phổ biến (Well Known Port 0-1023)
Trong tầm từ 0-1023, hầu hết các port đã được đăng ký. Trong đó, nổi bật có các
port phổ biến được liệt kê theo danh sách bên dưới. Với mạng cá nhân, muốn triển khai
được các dịch vụ, chẳng hạn web server, ftp server hệ thống của bạn phải mở các port
tương ứng. Ứng với mỗi thiết bị định tuyến (router) của từng hãng, bạn sẽ có cách mở
port khác nhau. Để dễ dàng mở các port cũng như hướng dẫn chi tiết trên từng router,
bạn có thể vào trang portforward.com để tìm đúng router đang có. Trang web này luôn
cập nhật danh sách router mới nhất của nhiều hãng.
Một điều cần lưu ý trước khi mở port là bạn nên kiểm tra lại hệ thống đã mở sẵn
cổng này chưa bằng cách vào trang (nhớ tắt firewall trên Windows)
hoặc dùng lệnh netstat -an để biết máy của bạn đang sử dụng và "lắng nghe" những port
nào.
Danh sách các cổng thông dụng
20 TCP File Transfer - FTP data
21 TCP File Transfer - FTP control
22 TCP/UDP SSH Remote Login Protocol/ pcAnywhere
23 TCP Telnet
25 TCP Simple Mail Transfer Protocol (SMTP)
38 TCP UDP Route Access Protocol (RAP)
3
42 UDP Host Name Server - Microsoft WINS
45 TCP Message Processing Module (receive)
46 TCP Message Processing Module (send)
50 TCP UDP Remote Mail Checking Protocol (RMCP)
66 TCP UDP Oracle SQL*NET
69 TCP UDP Trivial File Transfer Protocol (TFTP)
88 TCP UDP Kerberos Network Authentication Service
101 TCP UDP Network Information Center (NIC) Hostname Server
110 TCP UDP Post Office Protocol (POP) Version 3
118 TCP UDP SQL Services
119 TCP UDP Network News Transfer Protocol
130 TCP UDP Cisco FNATIVE
143 TCP UDP Internet Message Access Protocol (IMAP) Mail Server
161 TCP UDP SNMP
211 TCP UDP Texas Instruments 914C/G Terminal
280 TCP UDP http-mgmt
314 TCP UDP Opalis Robot
333 TCP UDP Texar Security Port
742 TCP UDP Network Revision Control System
747 TCP UDP Fujitsu Device Control
749 TCP UDP Kerberos Administration
767 TCP UDP Phonebook
777 TCP UDP Multiling HTTP
800 TCP UDP MDBS Daemon, Remotely Possible (Remote Control)
4
989 TCP UDP FTP Data Over TLS/SSL
990 TCP UDP FTP Control Over TLS/SSL
991 TCP UDP Netnews Administration System
992 TCP UDP Secure Telnet (over TLS/SSL)
993 TCP UDP Secure IMAP4 (over TLS/SSL)
994 TCP UDP Secure IRC (over TLS/SSL)
995 TCP UDP Secure POP3 (over TLS/SSL)
996 TCP Vsinet / Central Point Software Xtree License Server
ii. Cổng đăng ký (Registered port: 1024–49151)
Các cổng TCP và UDP có số từ 1024 đến 49151 được gọi là các cổng đăng ký
(registered ports). IANA quản lý danh sách các dịch vụ sử dụng các port trong tầm số
này để giảm thiểu việc sử dụng trùng nhau. Không giống nhu các port có số thấp hơn (0-
1023), những nhà phát triển dịch vụ TCP/UDP mới có thể chọn một số mới để đăng ký
với IANA thay vì dùng trùng số đã đăng ký.
iii. Cổng động/Cổng riêng (Dynamic/ Private Port: 49152–65535)
Các cổng TCP và UDP có số bắt đầu từ 49152 đến 65535 được gọi là port động
(dynamic port), port riêng (private port) hay port tạm (ephemeral port). IANA không
quản lý Dynamic port cũng như không giới hạn việc sử dụng của người dùng. Các dịch
vụ có thể chọn một hoặc vài port ngẫu nhiên miễn phí trong tầm số này khi cần truyền
trên nhiều socket.
c. Ứng dụng
Hãy tưởng tượng, chiếc máy tính giống như ngôi nhà của bạn và port sẽ giống
như các cửa ra vào. Bạn muốn mời một người nào đó vào nhà, nghĩa là phải chỉ cho họ
biết lối vào (địa chỉ nhà) và mở sẵn cửa đón khách. Tương tự với máy tính, bạn phải cho
5
biết server đang lắng nghe (listening) ở port nào để client biết và gửi yêu cầu. Router
trong mô hình bên dưới giữ vai trò như một người gác cổng. Nó sẽ mở các port dịch vụ
trong mạng.
II. QUÉT CỔNG
1. Khái niệm
"Quét cổng" là thuật ngữ kỹ thuật để xác định cổng mở và các dịch vụ có sẵn trên
một máy chủ mạng. Nó có thể được sử dụng bởi các chuyên gia an ninh để kiểm toán
6
các mạng máy tính cho các lỗ hổng có khả năng. Nó cũng có thể được sử dụng bởi
những kẻ tấn công để kiểm tra các host/hosts có thể để khai thác.
2. Nguyên tắc quét cổng trên một hệ thống
a. TCP scan
Trên gói TCP/UDP có 16 bit dành cho Port Number điều đó có nghĩa nó có từ 1 –
65535 port. Không một hacker nào lại scan toàn bộ các port trên hệ thống, chúng chỉ
scan những port hay sử dụng nhất thường chỉ sử dụng scan từ port 1 tới port 1024 mà
thôi.
Phần trên tôi đã trình bày về nguyên tắc tạo kết nối và ngắt kết nối giữa hai máy
tính trên mạng. Dựa vào các nguyên tắc truyền thông tin của TCP, có thể Scan Port nào
mở trên hệ thống bằng những phương thức sau đây:
- SYN Scan: Khi Client bắn gói SYN với một thông số Port nhất định tới
Server nếu server gửi về gói SYN/ACK thì Client biết Port đó trên Server được mở.
Nếu Server gửi về cho Client gói RST/SYN tôi biết port đó trên Server đóng.
- FIN Scan: Khi Client chưa có kết nối tới Server nhưng vẫn tạo ra gói FIN
với số port nhất định gửi tới Server cần Scan. Nếu Server gửi về gói ACK thì Client
biết Server mở port đó, nếu Server gửi về gói RST thì Client biết Server đóng port
đó.
- NULL Scan Sure: Client sẽ gửi tới Server những gói TCP với số port cần
Scan mà không chứa thông số Flag nào, nếu Server gửi lại gói RST thì tôi biết port
đó trên Server bị đóng.
- XMAS Scan Sorry: Client sẽ gửi những gói TCP với số Port nhất định cần
Scan chứa nhiều thông số Flag như: FIN, URG, PSH. Nếu Server trả về gói RST tôi
biết port đó trên Server bị đóng.
- TCP Connect: Phương thức này rất thực tế nó gửi đến Server những gói tin
yêu cầu kết nối thực tế tới các port cụ thể trên server. Nếu server trả về gói
SYN/ACK thì Client biết port đó mở, nếu Server gửi về gói RST/ACK Client biết
port đó trên Server bị đóng.
7
- ACK Scan: dạng Scan này nhằm mục đích tìm những Access Controll List
trên Server. Client cố gắng kết nối tới Server bằng gói ICMP nếu nhận được gói tin
là Host Unreachable thì client sẽ hiểu port đó trên server đã bị lọc.
- Có vài dạng Scan cho các dịch vụ điển hình dễ bị tấn công như:
- RPC Scan: Cố gắng kiểm tra xem hệ thống có mở port cho dịch vụ RPC
không.
- Windows Scan tương tự như ACK Scan, nhưng nó có thể chỉ thực hiện trên
một số port nhất định.
- FTP Scan: Có thể sử dụng để xem dịch vụ FTP có được sử dụng trên
Server hay không
- IDLE cho phép kiểm tra tình trạng của máy chủ.
b. UDP scan
Nếu như gói tin truyền bằng TCP để đảm bảo sự toàn vẹn của gói tin sẽ luôn
được truyền tới đích. Gói tin truyền bằng UDP sẽ đáp ứng nhu cầu truyền tải dữ liệu
nhanh với các gói tin nhỏ. Với quá trình thực hiện truyền tin bằng TCP kẻ tấn công dễ
dàng Scan được hệ thống đang mở những port nào dựa trên các thông số Flag trên gói
TCP.
Cấu tạo gói UDP:
Như ta thấy gói UDP không chứa các thông số Flag, cho nên không thể sử dụng
các phương thức quét cổng của TCP sử dụng cho UDP được. Thật không may hầu hết
hệ thống đều cho phép gói ICMP.
8
Nếu một cổng bị đóng, khi Server nhận được gói ICMP từ client nó sẽ cố gắng
gửi một gói ICMP type 3 code 3 port với nội dung là "unreachable" về Client. Khi thực
hiện UDP Scan bạn hãy chuẩn bị tinh thần nhận được các kết quả không có độ tin cây
cao.
3. Cài đặt thuật toán
- Tư tưởng thuật toán:
+ Tạo một lớp socket với giao thức TCP
+ Kết nối tới địa chỉ IP và cổng cần quét
+ Nếu kết nối thành công → cổng mở
+ Ngược lại → cổng đóng.
- Giao diện chính của chương trình:
9
III. KẾT LUẬN
Việc quét cổng có ý nghĩa quan trọng trong việc kiểm tra, thăm dò máy chủ. Nó
có ý nghĩa cả đối với các quản trị viên và những kẻ tấn công. Các quản trị viên dựa vào
đó để có các chính sách an ninh mạng đối với hệ thống. Còn đối với những kẻ tấn công
dựa vào đó để khai thác lỗ hổng, tấn công mạng.
Mặc dù đã cố gắng, cùng với sự hướng dẫn tận tình của thầy Nguyễn Quang Uy,
song vì thời gian còn hạn chế, kiến thức và kinh nghiệm còn chưa nhiều nên chương
trình của chúng em không tránh khỏi những thiếu sót. Chúng em rất mong nhận được
sự chỉ dẫn của thầy và sự góp ý của các bạn để chương trình được hoàn thiện hơn.
10