Trong bài viết này tôi trình bày với các bạn các nguyên tắc Scan Port cơ bản trên hệ thống, những kỹ thuật scan từ đó chúng ta biết trên một hệ thống đang sử dụng những Port nào. Từ những khái niệm về Scan tôi cũng trình bày với các bạn giải pháp ngăn cấm Scan trên hệ thống. Nội dung trong bài viết gồm
1. Nguyên tắc truyền thông tin TCP/IP
2. Các Nguyên tắc và Phương thức Scan Port
3. Sử dụng phần mềm Nmap
để Scan Port
I. Nguyên tắc truyền thông tin TCP/IP
1. Cấu tạo gói tin TCP
Trong bài viết này tôi chỉ chú trọng tới các thiết lập Flag trong gói tin TCP nhằm mục đích sử dụng để Scan Port:
- Thông số SYN để yêu cầu kết nối giữa hai máy tính
- Thông số ACK để trả lời kết nối giữa hai máy có thể bắt đầu được thực hiện
- Thông số FIN để kết thúc quá trình kết nối giữa hai máy
- Thông số RST từ Server để nói cho Client biết rằng giao tiếp này bị cấm (không thể sử dụng)
- Thông số PSH sử dụng kết hợp với thông số URG
- Thông số URG sử dụng để thiết lập độ ưu tiên cho gói tin này.
à Thật ra toàn bộ các thông số này trong gói tin nó chỉ thể hiện là 1 hoặc 0 nếu là 0 thì gói tin TCP không thiết lập thông số này, nếu là 1 thì thông số nào đó được thực hiện nó sẽ lần lượt trong 8 bits trong phần Flag.
2. Khi Client muốn thực hiện một kết nối TCP với Server đầu tiên:
+ Bước I: Client bắn đến Server một gói tin SYN
+ Bước II: Server trả lời tới Client một gói tin SYN/ACK
+ Bước III: Khi Client nhận được gói tin SYN/ACK sẽ gửi lại server một gói ACK – và quá trình trao đổi thông tin giữa hai máy bắt đầu.
3. Khi Client muốn kết thúc một phiên làm việc với Server
+ Bước I: Client gửi đến Server một gói tin FIN ACK
+ Bước II: Server gửi lại cho Client một gói tin ACK
+ Bước III: Server lại gửi cho Client một gói FIN ACK
+ Bước IV: 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.
II. Nguyên tắc Scan Port trên một hệ thống.
1. 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 của bài viết tôi đã trình bày với các bạn 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 tôi 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.
- 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ủ.
2. 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 Scan port 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.
Nếu một port 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.
III. Scan Port với Nmap.
Nmap là một tool scan port rất mạnh và đã nổi danh từ lâu được giới hacker tin dùng. Nó hỗ trợ toàn bộ các phương thức scan port, ngoài ra nó còn hỗ trợ các phương thức scan hostname, service chạy trên hệ thống đó….
Nmap hiện giờ có cả giao diện đồ hoạ và giao diện command line cho người dùng, chạy trên cả môi trường .NIX và Windows.
Phần mềm nmap miễn phí các bạn download tại địa chỉ:
Dưới đây là cách sử dụng Nmap để scan
Các dạng Scan nmap hỗ trợ.
Code:
Nmap –sT: trong đó chữ s – là Scan, còn chữ T là dạng TCP scan
Nmap –sU: đó là sử dụng UDP Scan
Nmap –sP: sử dụng Ping để scan
Nmap –sF: sử dụng FIN Scan
Nmap –sX: sử dụng phương thức XMAS Scan
Nmap –sN: sử dụng phương thức NULL Scan
Nmap –sV: sử dụng để Scan tên các ứng dụng và version của nó
Nmap –SR /I RPC sử dụng để scan RPC
b. Các option cao cấp kết hợp với các dạng Scan trong Nmap.
- O: sử dụng để biết hệ điều hành chạy trên máy chủ ví như ta dùng Nmap sử dụng phương thức scan là XMAS Scan và đoán biết hệ điều hành của: ta dùng câu lệnh: nmap –sX –o
- P: giải port sử dụng để scan
- F: Chỉ những port trong danh sách scan của Nmap
- V: Sử dụng Scan hai lần nhằm tăng độ tin cậy và hiệu quả của phương thức scan nào ta sử dụng.
- P0: không sử dụng ping để Scan nhằm mục đích giảm thiểu các quá trình quét ngăn chặn scan trên các trang web hay máy chủ.
Ví như tôi muốn một Scan trang web bằng phương thức UDP Scan số port tôi sử dụng là từ 1 tới 1024 và sử dụng hai lần để nâng cao hiệu quả, khi scan sẽ không ping tới trang này:
Nmap –sU –P ‘1-1024’ –V –P0
Ngoài ra nmap còn hỗ trợ tính năng scan ẩn nhằm tránh những quá trình quét trên server như sử dụng:
-Ddecoy_host1, decoy2… để sử ẩn quá trình Scan.
-6: Scan IPv6
Ngoài ra nmap còn cho chúng ta những options để output kết quả ra nhiều định dạng file khác nhau
Nguồn: VNexpert