Truyền thông với TCP – UDP
Trong phạm vi bài viết tôi chỉ xin phép chỉ trình bày về các
thiết lập flag (cờ) trong gói tin TCP. Bạn có thể tìm hiểu thêm các
kiến thức về TCP/IP tại đây: http://www.faqs.org/rfcs/rfc793.html. Các thông số Flag trong TCP
- Thông số SYNchronize: Yêu cầu kết nối giữa 2 máy.
- Thông số ACKnowledgement: Trả lời kết nối giữa 2 máy có thể bắt đầu thực hiện
- Thông số FINal: Kết thúc quá trình kết nối giữa 2 máy.
- Thông số RST (reset): Khởi động lại kết nối.
- Thông số PSH ( push): Thực hiện chức năng đẩy trong bộ đệm trong TCP – thường sử dụng cho các gói tin ưu tiên.
- Thông số URG (Urgent): Thông số nhằm thiết lập độ ưu tiên cần xử lý ngay cho gói tin.
Các thông số này trong TCP Header có giá trị là 0 (Không thiết lập) hoặc 1 (Được thiết lập) và nằm trong 8 bít trong phần Flag của TCP Header.
1. Thực hiện bắt tay 3 bước
- Bước 1: Host A gửi một gói tin SYN. Host B nhận gói tin SYN
- Bước 2: Host B gửi về Host Amột gói tin SYN/ACK. Host A nhận gói tin SYN/ACK
- Bước 3: Host A gửi gói tin ACK tới Host B. Host B nhận gói tin ACK
- Kết nối TCP được thiết lập.
|
 |
2. Kết thúc một kết nối
- Bước 1: Client gửi đến Server một gói tin FIN ACK
- Bước 2: Server gửi lại cho Client một gói tin ACK
- Bước 3: Server lại gửi cho Client một gói FIN ACK
- Bước 4: Client gửi lại cho Server gói ACK và quá trình ngắt kết nối giữa Server và Client được thực hiện.
|
 |
3. UDP
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ỏ.
Nguyên tắc quét cổng dịch vụ trên hệ thống
Trên gói TCP/UDP có 16 bit dành cho Port Number điều đó có nghĩa nó sẽ có từ 1 – 65535 cổng. Các cổng cổng thường chia thành 3 phạm vi
- Well Known Ports (0 – 1023): các cổng phổ biến, đã
biết, nó thường đi kèm với các chuẩn dịch vụ trên hệ thống. Ví dụ:
telnet (23/tcp), www-http (80/tcp), ftp (21), ssh (22/tcp)…
- Registered Ports (1024 – 49151): Các cổng được sử
dụng riêng cho từng chương trình, dịch vụ cụ thể. Radius - RADIUS
Authentication Protocol (1812), Microsoft Internet Name Server
- Dynamic and/or Private Ports (49152 – 65535): Các cổng động hoặc không công khai.
Kỹ thuật đơn giản nhất của quét các cổng từ 1 -> 65535 và
lấy ra các cổng đã mở. Thông thường chúng ta sẽ không quét toàn bộ
65535 mà chỉ tập trung vào các cổng phổ biến hoặc các phạm vi quét cổng
hẹp hơn.
Sau
đây tôi sẽ trình bày các kỹ thuật quét cổng cơ bản đi kèm với các ví dụ
sẽ được thực hiện cùng với công cụ Nmap, bạn có thể thực hành để hiểu
rõ hơn. Chúng ta sẽ sử dụng 2 khái niệm chính là kẻ tấn công (người
scan, máy scan) và mục tiêu (máy mục tiêu).
Download Nmap tại đây: http://nmap.org/download.html
TCP Connect() Scan
Trong kiểu scan này, kẻ tấn công sẽ gửi một gói tin SYN đến tất cả
các cổng của máy mục tiêu.nếu một hoặc nhiều cổng được mở nó sẽ trả về
một gói tin SYN|ACK, và kẻ tấn công sẽ hoàn thành một quá trình bắt tay
bằng việc gửi lại gói tin ACK, Nếu các cổng đều đóng thì mục tiêu sẽ trả
về gói tin RST để khởi động lại kết nối.
[root@localhost ~]# nmap -sT 192.168.1.22
SYN Scan
Đây là một kiểu scan khác với TCP Connect() Scan vì quá trình
bắt tay 3 bước sẽ không được hoàn thành. Kẻ tấn công sẽ gửi một gói tin
SYN đến tất cả các cổng của mục tiêu. Trong trường hợp các cổng tương
ứng mở nó sẽ gửi trả lại một gói tin SYN | ACK. Tại điểm này kẻ tấn công sẽ kết thúc bằng một gói tin RST. Nếu cổng đóng mục tiêu sẽ gửi trở lại một gói tin RST. Trong cả 2 trường hợp quá trình bắt tay 3 bước đều sẽ không được hoàn thành.
[root@localhost ~]# nmap -sS 192.168.1.22
FIN Scan
Kẻ tấn công sẽ gửi một gói tin với cờ FIN tới
tất cả các cổng của mục tiêu. Với các cổng được mở, mục tiêu sẽ bỏ qua
gói tin và không phản hồi về cho kẻ tấn công. Các cổng đóng sẽ gửi về
gói tin RST để khởi tạo kết nối.
[root@localhost ~]# nmap -sF 192.168.1.22
XMAS Scan
Gần giống như FIN scan nhưng trong kiểu scan này kẻ tấn công sẽ gửi một gói tin FIN|URG|PSH.
[root@localhost ~]# nmap -sX 192.168.1.22
NULL Scan
Kiểu scan này tương tự như FIN scan và XMAS scan nhưng kẻ tấn
công sẽ gửi một gói tin mà không thiết lập bất cứ cờ nào trong Header
của TCP.
[root@localhost ~]# nmap -sX 192.168.1.22
UDP Scan
Đây là kiểu scan để phát hiện một cổng UDP đang mở. Gói tin UDP
sẽ được gửi tới tất cả các cổng của mục tiêu, nếu cổng mở mục tiêu sẽ
không gửi lại gì, nếu cổng là đóng mục tiêu sẽ gửi lại một gói tin ICMP
Port Unreachable.
[root@localhost ~]# nmap -sU 192.168.1.22
Một số kỹ thuật quét cổng nâng cao
Decoy Scan
Decoy Scan là một kỹ thuật thực hiện một IP Spoofing (giả mạo).
Mục đích nhằm ấn địa chỉ thực sự của kẻ tấn công (scanner). Ta xét ví
dụ sau.
[root@localhost ~]# nmap -sS 192.168.1.22 -D 1.2.3.4, 5.6.7.8
Sau tham số “-D” là các giá trị IP cụ thể, với
mỗi cổng khi scan mục tiêu sẽ nhận đồng thời 3 gói tin (một từ kẻ tấn
công, một từ IP: 1.2.3.4, và một từ IP: 5.6.7.8). Kết quả là mục tiêu sẽ
phản hồi với cả 3 địa chỉ IP và có sẽ nghĩ rằng cả 3 IP đang scan mình.
Tuy nhiên, khi ta tăng giá trị IP lên hàng trăm IP thì việc tìm ra kẻ
tấn công thực sự là rất khó khăn.
Idle Scan
Idel Scan là một kỹ thuật phức tạp cho phép ẩn hoàn toàn kẻ tấn công. trong Scan này sẽ có 3 thành phần: 1 là kẻ tấn công, một Zombie (một máy bị kẻ tấn công lợi dụng) và một là mục tiêu cần quét cổng. Điều kiện là máy Zombie không thực hiện các hoạt động khác ngoại trừ việc giao tiếp với Kẻ tấn công.
IPID: Mỗi IP packet được gửi trên mạng có một số duy nhất được gọi là fragment identification (hay gọi là IPID)
- Kẻ tấn công sẽ gửi một gói tin SYN|ACK đến một cổng của Zombie và sẽ phản hồi một gói tin RST chứa 1 IP ID
- Kẻ tấn công tiếp tục gửi một gói tin SYN giả mạo IP của Zombie đến cổng của mục tiêu.
- Nếu cổng đó đóng mục tiêu sẽ phản hồi đến Zombie một RST packet và zombie sẽ không tăng giá trị IP ID, nếu cổng là mở, mục tiêu sẽ gửi một gói tin SYN|ACK đến zombie và zombie sẽ tăng giá trị IP ID lên 1.
- Kẻ tấn công sẽ gửi một gói tin SYN|ACK khác tới Zombie và kiểm tra nếu IP ID tăng hoặc không tăng tương ứng với cổng được mở hoặc đóng trên Mục tiêu.
Bài viết sau tôi sẽ giới thiệu các công cụ phổ biến và hướng dẫn sử
dụng Nmap cho việc quét cổng và pentest hệ thống. Nếu có bất kỳ câu hỏi,
góp ý nào cho bài viết, mời bạn để lại comment bên dưới.
Theo securitydaily
Post a Comment
Click to see the code!
To insert emoticon you must added at least one space before the code.