Quét hàng triệu IP trong “nốt nhạc” với Masscan: Nhanh, mạnh và những lưu ý sống còn

Network tutorial - IT technology blog
Network tutorial - IT technology blog

Masscan: Khi tốc độ là ưu tiên số một

Bạn cần kiểm kê toàn bộ thiết bị trong dải /16 (hơn 65.000 IP) nhưng Nmap dự báo phải mất… 2 ngày mới xong? Đừng cố quá sức với Nmap trong trường hợp này. Masscan được sinh ra để giải quyết bài toán quy mô lớn với tốc độ kinh hoàng.

Hãy thử cài đặt và chạy lệnh dưới đây trên Ubuntu để thấy sự khác biệt:

sudo apt update && sudo apt install masscan -y
# Quét cổng 80 trên dải mạng nội bộ với tốc độ 1000 gói/giây
sudo masscan 192.168.1.0/24 -p80 --rate 1000

Chỉ mất vài giây, danh sách các IP đang mở cổng 80 sẽ hiện ra. Tốc độ chính là vũ khí mạnh nhất của công cụ này.

Tại sao Nmap lại chậm hơn Masscan?

Nmap hoạt động theo cơ chế Synchronous (đồng bộ). Nó gửi một gói tin, đợi phản hồi, rồi mới xử lý tiếp. Dù có thể chạy song song nhiều kết nối, nhưng khi quy mô lên đến hàng triệu IP, thời gian chờ đợi (timeout) sẽ cộng dồn thành một con số khổng lồ.

Masscan thì khác. Nó sử dụng kiến trúc Asynchronous (bất đồng bộ) và tự xây dựng stack TCP/IP riêng để bỏ qua kernel hệ điều hành. Nó bắn các gói SYN đi liên tục mà không đợi phản hồi. Một module riêng biệt sẽ túc trực để ghi nhận các gói SYN-ACK quay trở lại.

Với một card mạng 1Gbps tiêu chuẩn, Masscan đủ sức quét toàn bộ Internet chỉ trong 6 phút. Tuy nhiên, sức mạnh này đi kèm rủi ro lớn.

Tôi từng chứng kiến một kỹ sư thực tập đặt --rate 1000000 (1 triệu gói/giây) trong mạng nội bộ. Chỉ sau 30 giây, hệ thống SIEM ngập lụt trong hàng trăm nghìn cảnh báo giả. Tệ hơn, bảng MAC của Core Switch bị quá tải khiến toàn bộ văn phòng mất kết nối. Hãy luôn bắt đầu với một con số khiêm tốn.

Cài đặt để đạt hiệu năng tối đa

Dù có sẵn trong repo, nhưng biên dịch từ mã nguồn sẽ giúp bạn có bản cập nhật mới nhất và chạy ổn định nhất:

sudo apt-get install git gcc make libpcap-dev
git clone https://github.com/robertdavidgraham/masscan
cd masscan
make -j

Sau khi xong, bạn nên copy file thực thi vào /usr/local/bin để gọi lệnh tiện lợi hơn.

Các tham số bạn buộc phải nắm vững

  • -p: Cổng mục tiêu (VD: -p80,443 hoặc -p1-1024).
  • --range: Dải IP cần quét.
  • --rate: Số gói tin mỗi giây. Đây là “tay ga” của bạn.
  • --exclude: Loại trừ các IP nhạy cảm như Firewall hoặc Gateway để tránh làm sập mạng.
  • --wait: Thời gian chờ phản hồi sau khi bắn hết gói tin (thường để 5-10 giây).

Kỹ thuật quét thực chiến và xử lý dữ liệu

Việc nhìn kết quả chạy trên màn hình terminal rất khó để báo cáo hay phân tích. Bạn cần đưa dữ liệu về định dạng máy có thể đọc được.

Xuất kết quả ra JSON để xử lý tự động

Nếu bạn muốn đẩy dữ liệu vào Python hoặc ELK Stack, hãy dùng tùy chọn -oJ:

sudo masscan 10.0.0.0/8 -p80,443,8080 --rate 5000 -oJ scan_results.json

Tập trung vào các cổng phổ biến

Đừng quét toàn bộ 65535 cổng nếu không thực sự cần thiết. Việc này vừa chậm vừa dễ bị hệ thống phòng thủ (IDS) chặn đứng. Hãy tập trung vào các cổng dịch vụ then chốt:

# Quét các cổng Web, SSH và Database phổ biến
sudo masscan 172.16.0.0/12 -p22,80,443,3306,8080 --rate 2000

Kinh nghiệm xương máu: Đừng để tốc độ phản tác dụng

Một lần tôi xử lý sự cố rớt gói tin (packet loss) tại chi nhánh. Sau 2 ngày tìm kiếm, nguyên nhân hóa ra là một script kiểm kê tự động dùng Masscan. Script này chạy với --rate quá cao trên đường truyền VPN băng thông hẹp. Nó chiếm dụng hết hàng đợi của router, khiến dữ liệu của người dùng bị đẩy ra ngoài.

Lời khuyên từ thực tế:

  1. Thăm dò trước: Luôn bắt đầu với --rate 100. Quan sát tải CPU và băng thông rồi mới tăng dần.
  2. Tính toán băng thông: --rate 100000 tiêu tốn khoảng 50Mbps. Hãy chắc chắn hạ tầng của bạn chịu tải được mức này.
  3. Công thức phối hợp: Hãy dùng Masscan để “quét thô” tìm IP sống. Sau đó, lấy danh sách đó đẩy vào Nmap (dùng -iL) để soi chi tiết phiên bản dịch vụ. Đây là quy trình chuẩn của các chuyên gia bảo mật.

So sánh nhanh Masscan và Nmap

Tính năng Nmap Masscan
Tốc độ Trung bình (kỹ lưỡng) Cực nhanh (bất đồng bộ)
Độ chính xác Rất cao Khá (dễ sót nếu rate quá cao)
Soi phiên bản (Banner Grabbing) Rất mạnh Hạn chế
Kịch bản quét (Scripting) Hỗ trợ NSE cực mạnh Không hỗ trợ

Lời kết

Masscan không thay thế Nmap. Nó là người bạn đồng hành. Masscan mở đường bằng cách quét diện rộng, còn Nmap sẽ đi sâu vào từng mục tiêu cụ thể. Sự kết hợp này giúp bạn quản lý hàng nghìn thiết bị mà không mất quá nhiều thời gian. Tuy nhiên, hãy luôn thông báo cho đội vận hành mạng trước khi thực hiện để tránh những hiểu lầm về bảo mật.

Share: