Giới thiệu
Trước khi đến vơi Nmap thì chúng ta cần tìm hiểu về một khái niệm khác đó chính là port. Hẳn là bạn đã từng truy cập vào nhiều trang web cùng một lúc như vừa nhắn tin fb vừa nhắn tin telegram và bạn đã bao giờ tự hỏi tại sao tin nhắn đến từ fb lại ko nhảy sang telegram?
Tất nhiên là không thể nhảy lộn xộn như vậy được rồi vì mỗi khi gửi đi một request thì nó sẽ tự động mở một port để đánh dấu để khi response tương ứng sẽ vào đúng port đấy luôn. Và trên mỗi máy tính có đến 65535 (2^16) port trong đó có một số port được định nghĩa sẵn như:
80: http, 443: https, 21: ftp, 22: ssh, 23: telnet, ….
Còn chức năng chính của Nmap là xác định xem những port nào đang được mở để chúng ta có thể dễ dàng khai thác. Ngoài ra qua những đoạn scripts có sẵn của Nmap, chúng ta có thể dễ dàng tìm kiếm lỗ hỏng hoặc thậm chí là khai thác trực tiếp. Cùng nhau tìm hiểu tiếp qua các phần bên dưới nhé!
Các kiểu Scan
TCP connect Scans -sT
Để hiểu được TCP connect scans, ta cần hiểu được quá trình bắt tay ba bước (three-way handshake) trong giao thức TCP.
-
Đầu tiên khi ta gửi một TCP request tới máy chủ mục tiêu với gói SYN.
-
Sau đó máy chủ xác nhận gói tin này với một phản hồi TCp có chứ SYN flag và ACK flag.
-
Cuối cùng, để hoàn thành quá trình bắt tay ba bước, máy của ta gủi một TCP request nữa tới server với ACK flag mà mình đã nhận.
TCP scan hoạt động bằng cách gửi TCP request với SYN flag tới mỗi port mình muốn của server và quan sát cách server phản hồi lại để xác định tình trạng đóng mở của port đó.
Nếu nhận được như trong bước hai của three-way handshake thì chứng tỏ port đó đang mở.
Còn nếu nhận được RST(Reset) flag thì port đó đang đóng.
Tuy nhiên có một trường hợp đặc biệt xảy ra là ta không nhận được gì hết. Nguyên nhân là do các cổng đó đang được bảo vệ bởi tường lửa của đối phương. Việc cấu hình nên tường lửa như vậy thì cực kì đơn giản nhưng lại khiến ta rất khó có thể xác định chính xác mục tiêu. Đó được coi là một nhược điểm của TCP connect Scans.
Trong trường hợp đó Nmap xác định port đó đang ở trạng thái filltered
.
SYN Scans -sS
Giống như TCP Scans, SYN Scans cũng được dùng để scan TCP port. Chỉ có một chút khác biệt là ở bước 3, thay vì gửi ACK flag lại cho server thì SYN Scan lại gửi gói tin RST.
Việc gửi RST thay vì ACK là vô cùng có lợi khi đứng ở vai trò là kẻ tấn công. Điều này giúp hacker có thể bypass được một số hệ thống phát hiện xâm nhập đời cũ bởi những hệ thống đó chỉ phát hiện khi quá trình bắt tay ba bước hoàn tất (như đã nói ở TCP Scans
).
Không chỉ vậy, SYN Scans thường không được ghi nhật kí bởi các ứng dụng đang lắng nghe trên port đang mở, vì thông thường nó chỉ ghi lại kết quả khi kết nối được thiết lập đầy đủ(hoàn thành quá trình bắt tay 3 bước). Và như vậy SYN Scans thường được gọi là stealthy
hay Half-open
Vì không cần bận tâm về việc hoàn thành và ngắt kết nối nên SYN Scans nhanh hơn đáng kể so với TCP Scans.
Lưu ý
- Khi dùng SYN Scans, chúng ta cần chạy dưới quyền sudo. Và SYN Scans cũng chính là kiểu mặc định khi ta chạy Nmap dưới quyền sudo.
- Nếu không chạy sudo thì mặc định sẽ là TCP Scans
UDP Scans -sU
Đang cập nhật …
Bài viết dựa trên: tryhackme Room