Scanning là quá trình thu thập thông tin về các hệ thống đang “sống”. Phát hiện máy chủ nào đang “sống” được coi là nhiệm vụ và mục đích chính trong quy trình dò quét mạng. Để thực hiện quét toàn bộ và xác định các port và dịch vụ đang mở, cần phải kiểm tra các hệ thống đang hoạt động. Phần này mình sẽ hướng dẫn các bạn cách kiểm tra các hệ thống đang hoạt động trong mạng bằng các kỹ thuật ping scanning khác nhau.
Host Discovery Techniques
ARP Ping Scan
Các gói ARP được gửi đi để thăm dò tất cả các thiết bị đang hoạt động trong phạm vi IPv4. Thông thường, trong mạng, nhiều IP không được sử dụng, cụ thể là trong các dải địa chỉ private của mạng LAN. Do đó, khi attacker gửi các gói IP như ICMP echo request đến mục tiêu thì hệ điều hành phải xác định ARP tương ứng với IP mục tiêu để xử lý chính xác ethernet frame.
Với mục đích này, một loạt các ARP request được đưa ra. ARP scanning được sử dụng để hiển thị địa chỉ MAC của cổng mạng (interface) trên thiết bị và cũng có thể hiển thị địa chỉ MAC của tất cả các thiết bị chia sẻ cùng một địa chỉ IPv4 trên mạng LAN. Nếu IP và MAC tương ứng đang hoạt động, thì phản hồi ARP sẽ được gửi về. Nói cách khác, khi attacker gửi thăm dò ARP request đến máy mục tiêu, nếu chúng nhận được phản hồi ARP nào, thì máy chủ đó đang hoạt động.
Attacker thường sử dụng công cụ Nmap để thực hiện quét ARP ping để khám phá các máy chủ trực tiếp trong mạng. Trong Zenmap, tùy chọn -PR
được sử dụng để thực hiện quét ping ARP.
Lưu ý: -sn
là lệnh Nmap để tắt tính năng quét port. Vì Nmap sử dụng quét ping ARP làm quét ping mặc định, để tắt nó và thực hiện các quét ping khác, bạn có thể sử dụng -- disable-arp-ping
.
- ARP Ping Scan được coi là hiệu quả và chính xác hơn các kỹ thuật khám phá khác.
- Nó tự động xử lý các yêu cầu ARP, truyền lại và hết thời gian chờ theo quyết định riêng của nó.
- ARP Ping Scan rất hữu ích cho việc khám phá hệ thống có các không gian địa chỉ IP lớn.
- ARP Ping Scan có thể hiển thị thời gian phản hồi hoặc độ trễ của thiết bị đối với gói ARP.
UDP Ping Scan
UDP ping scan tương tự như TCP ping scan. Port mặc định được Nmap sử dụng để quét ping UDP là 40, 125. Hoặc ta có thể chỉ định port khác bằng DEFAULT_UDP_PROBE_PORT_SPEC trong compile time của Nmap.
Attacker gửi các gói UDP đến máy mục tiêu và nếu có phản hồi UDP có nghĩa là máy mục tiêu đang hoạt động. Nếu máy đích đang offline hoặc không thể truy cập được, thì sẽ trả về các cảnh báo như không thể truy cập được hoặc vượt quá TTL (time-to-live). Trong Zenmap, tùy chọn -PU
được sử dụng để thực hiện quét ping UDP.
ICMP ECHO Ping Scan
Attacker sử dụng ping ICMP scan để gửi các gói ICMP đến hệ thống đích để thu thập tất cả thông tin cần thiết. Điều này rất hữu ích khi ta cần xác định máy nào trong mạng đang chạy bằng cách ping tất cả đến chúng. Quét ping ICMP ECHO liên quan đến việc gửi ICMP ECHO request đến máy chủ. Nếu máy chủ còn sống, nó sẽ trả lời ICMP ECHO. Việc scan này rất hữu dụng vì ta có thể biết được các thiết bị đang hoạt động hay không hoặc xác định xem gói ICMP có đi qua tường lửa hay không.
Nmap sử dụng tùy chọn -P
để scan ICMP mục tiêu. Ta có thể tăng số lượng ping song song bằng tùy chọn -L
hay điều chỉnh giá trị thời gian chờ ping bằng tùy chọn -T
. Trong Zenmap, tùy chọn -PE
được sử dụng để thực hiện quét ping ICMP ECHO. Máy đang hoạt động được hiển thị là “Host is up” như trong hình bên dưới:
ICMP ECHO Ping Sweep
Ping sweep (còn được gọi là ICMP sweep) là một kỹ thuật quét mạng cơ bản được áp dụng để xác định dải địa chỉ IP ánh xạ tới máy chủ trực tiếp (máy tính). Mặc dù một lần ping sẽ cho người dùng biết máy đó có có tồn tại trên mạng hay không, một lần scan ping bao gồm các yêu cầu ICMP ECHO được gửi đến nhiều máy. Nếu một máy nào đó đang hoạt động, nó sẽ trả về ICMP ECHO reply. Ping scanning là một trong những phương pháp lâu đời nhất và chậm nhất được sử dụng để dò quét mạng.
Để hiểu rõ hơn về ping, trước hết cần phải hiểu rõ gói TCP/IP. Khi một hệ thống ping, nó sẽ gửi một gói duy nhất qua mạng đến một địa chỉ IP cụ thể. Gói này chứa 64 byte (56 bytes dữ liệu và 8 bytes header). Sau đó, người gửi sẽ đợi hoặc lắng nghe gói tin trả về từ đích. Nếu kết nối bình thường và máy tính mục tiêu “còn sống”, thì sẽ có gói tin trả về. Attacker sẽ tính subnet mask để xác định số lượng máy có trong subnet. Sau đó, họ sử dụng ping sweep để tạo kho lưu trữ các hệ thống đang hoạt động trong mạng con.
ICMP ECHO Ping Sweep sử dụng công cụ Nmap
Nmap giúp attacker thực hiện ping sweep để xác định các máy từ một dải địa chỉ IP. Trong Zenmap, tùy chọn -PE
theo sau là danh sách IP được sử dụng để thực hiện quét ping ICMP ECHO.
ICMP Timestamp Ping Scan
Bên cạnh ping ICMP ECHO truyền thống, còn có một số loại kỹ thuật ping ICMP khác như ICMP timestamp ping scan và ICMP address mask ping scan, mà attacker có thể áp dụng trong các điều kiện cụ thể. ICMP timestamp ping scan là một loại ping ICMP mà attacker truy vấn timestamp message để lấy thông tin liên quan đến thời gian hiện tại từ máy mục tiêu. Máy mục tiêu phản hồi bằng câu trả lời timestamp cho mỗi truy vấn nhận được. Tuy nhiên, phản hồi từ máy đích là có điều kiện và nó có thể hoặc không thể phản hồi với giá trị thời gian tùy thuộc vào cấu hình của quản trị viên. ICMP timestamp pinging này thường được sử dụng để đồng bộ hóa thời gian.
Phương pháp ping như vậy có hiệu quả trong việc xác định xem máy chủ đích có đang hoạt động hay không, cụ thể là trong điều kiện quản trị viên chặn các yêu cầu ping ICMP ECHO truyền thống. Trong Zenmap, tùy chọn -PP
được sử dụng để thực hiện ICMP timestamp ping scan.
ICMP Address Mask Ping Scan
ICMP address mask ping là một giải pháp thay thế khác cho ping ICMP ECHO truyền thống, trong đó attacker gửi truy vấn ICMP address mask đến máy đích để lấy thông tin liên quan đến subnet mask. Tuy nhiên, phản hồi address mask từ máy đích là có điều kiện và nó có thể hoặc không thể phản hồi với giá trị subnet phù hợp tùy vào cấu hình của người quản trị. Loại phương thức ping này cũng hiệu quả trong việc xác định các máy chủ đang hoạt động tương tự như ICMP timestamp ping, đặc biệt khi quản trị viên chặn ping ICMP Echo truyền thống. Trong Zenmap, tùy chọn -PM
được sử dụng để thực hiện ICMP address mask ping scan.
TCP Ping Scan
TCP SYN Ping Scan
TCP SYN ping là một kỹ thuật host discovery để thăm dò các port khác nhau nhằm xác định xem port đó có mở hay không và để kiểm tra xem có tường lửa đứng trước hay không. Trong kỹ thuật này, attacker sử dụng công cụ Nmap để bắt tay ba bước bằng cách gửi cờ TCP SYN trống đến máy mục tiêu. Sau khi nhận được SYN, máy mục tiêu xác nhận việc nhận bằng cách gửi cờ ACK. Sau khi nhận được cờ ACK, attacker sẽ biết máy mục tiêu đang hoạt động và sẽ chấm dứt kết nối bằng cách gửi cờ RST đến máy mục tiêu.
Port 80 được sử dụng làm port đích mặc định. Ta có thể chỉ định port khác bằng cách sử dụng tùy chọn -PS
và số port (ví dụ: PS22-25,80,113,1050,35000), việc thăm dò sẽ được thực hiện song song với từng port. Trong Zenmap, tùy chọn -PS
được sử dụng để thực hiện quét ping TCP SYN.
Một số ưu điểm của phương pháp này:
- Vì quét song song nên quá trình quét không bao giờ gặp lỗi time-out trong khi chờ phản hồi.
- TCP SYN ping có thể được sử dụng để xác định xem máy có hoạt động hay không mà không cần tạo kết nối. Do đó, không ghi log lại ở cấp hệ thống hoặc mạng, cho phép attacker không để lại dấu vết.
TCP ACK Ping Scan
TCP ACK ping tương tự như TCP SYN ping. TCP ACK ping cũng sử dụng port mặc định là port 80. Trong kỹ thuật TCP ACK ping, attacker gửi trực tiếp một gói TCP ACK trống đến máy mục tiêu. Vì không có kết nối trước đó giữa attacker và mục tiêu nên sau khi nhận được gói ACK, máy mục tiêu sẽ phản hồi bằng cờ RST để chấm dứt yêu cầu. Việc tiếp nhận gói RST này, attacker có thể xác định rằng máy đích đang hoạt động. Trong Zenmap, tùy chọn -PA
được sử dụng để thực hiện quét ping TCP ACK.
Cả hai gói SYN và gói ACK đều có thể được sử dụng để vượt qua tường lửa. Tuy nhiên, tường lửa hầu hết được cấu hình để chặn các gói ping SYN, vì đây là kỹ thuật ping phổ biến nhất. Trong những trường hợp như vậy, thăm dò bằng ACK có thể được sử dụng một cách hiệu quả để vượt qua tường lửa dễ dàng.
IP Protocol Ping Scan
IP Protocol Ping Scan là phương pháp discovery mới nhất. Trong phương pháp này, ta gửi các gói tin khác nhau bằng các giao thức IP khác nhau. Nhiều gói IP cho ICMP (giao thức 1), IGMP (giao thức 2) và IP-in-IP (giao thức 4) được gửi mặc định. Để chỉ định giao thức mặc định, các bạn có thể sửa giá trị DEFAULT_PROTO_PROBE_PORT_SPEC trong file nmap.h. Đối với các giao thức cụ thể như ICMP, IGMP, TCP (giao thức 6) và UDP (giao thức 17), các gói sẽ được gửi với header phù hợp và đối với các giao thức còn lại, chỉ IP header được gửi cùng với gói tin.
Tóm lại, attacker gửi các gói thăm dò khác nhau của các giao thức IP khác nhau đến máy mục tiêu. Trong Zenmap, tùy chọn -PO
được sử dụng để thực hiện IP protocol ping scan.
Công cụ Ping Sweep
Các công cụ Ping sweep sẽ ping toàn bộ dải địa chỉ IP để xác định các hệ thống kết nối trực tiếp.
Angry IP Scanner
Angry IP Scanner là một công cụ dò quét IP và port. Nó có thể quét các trong bất kỳ phạm vi nào cũng như bất kỳ port nào của chúng. Nó sẽ ping từng IP để kiểm tra xem nó tồn tại hay không. Sau đó, nó tự động phân giải hostname, xác định địa chỉ MAC, quét port, … IP Angry có các tính năng nâng cao như thông tin về NetBIOS (computer name, workgroup name, và currently logged in Windows user), … Công cụ này còn cho phép chúng ta lưu kết quả thành các định dạng CSV, TXT, XML hoặc IP-Port.
Để tăng tốc độ quét, Angry IP Scanner sử dụng phương pháp đa luồng, một luồng riêng biệt được sử dụng để quét cho từng IP.
Để hiểu thêm về cách sử dụng công cụ này, các bạn có thể đọc thêm [CEH Tiếng Việt] Module 3 – Phần 3 – Scan host với nmap và Angry IP Scanner.
Một số công cụ khác
Các bạn có thể tìm hiểu thêm các công cụ:
- SolarWinds Engineer’s Toolset
- NetScanTools Pro
- CoIa soft Ping Tool
- Visual Ping Tester
- OpUtils
Tổng kết
Mình tóm tắt lại một số kiến thức bên trên như sau:
ARP Ping Scan:
nmap -sn -PR <IP>
UDP Ping Scan:
nmap -sn -PU <IP>
ICMP ECHO Ping Scan:
nmap -sn -PE <IP>
ICMP Timestamp Ping Scan:
nmap -sn -PP <IP>
ICMP Address Mask Ping Scan:
nmap -sn -PM <IP>
TCP SYN Ping Scan:
nmap -sn -PS <IP>
TCP ACK Ping Scan:
nmap -sn -PA <IP>
IP Protocol Ping Scan:
nmap -sn -PO <IP>
Đọc thêm về CEH Tiếng Việt tại đây.
Comments 5