Nmap là một công cụ quét mạng mạnh mẽ để kiểm tra bảo mật và kiểm tra thâm nhập. Đây là một trong những công cụ thiết yếu được quản trị viên mạng sử dụng để khắc phục sự cố kết nối mạng và quét port .
Nmap cũng có thể phát hiện địa chỉ Mac, loại hệ điều hành , version của service, v.v.
Bài viết này giải thích những điều cơ bản về cách sử dụng lệnh nmap để thực hiện các tác vụ mạng khác nhau.
Cài đặt Nmap
Nmap là một chương trình đa nền tảng có thể được cài đặt trên tất cả các hệ điều hành chính. Ban đầu nó được phát hành như một công cụ chỉ dành cho Linux, sau đó nó được chuyển sang các hệ thống khác như BSD, Windows và macOS.
Nếu bạn thích GUI hơn dòng lệnh, Nmap cũng có giao diện đồ họa được gọi là Zenmap .
Các file binary có sẵn để tải xuống từ trang tải xuống Nmap .
Quy trình cài đặt rất đơn giản và thay đổi tùy theo hệ điều hành của bạn.
Cài đặt Nmap trên Ubuntu và Debian
Nmap có sẵn từ kho lưu trữ Ubuntu và Debian mặc định. Để cài đặt nó, hãy chạy:
sudo apt update sudo apt install nmap -y
Cài đặt Nmap trên CentOS và Fedora
Trên CentOS và các dẫn xuất Red Hat khác chạy:
sudo dnf install nmap
Cài đặt Nmap trên macOS
Người dùng macOS có thể cài đặt Nmap bằng cách tải xuống gói cài đặt “.dmg” từ trang Nmap hoặc qua Homebrew:
brew install nmap
Cài đặt Nmap trên Windows
Phiên bản Windows của Nmap có một số hạn chế và thường chậm hơn một chút so với phiên bản UNIX.
Tùy chọn dễ nhất để cài đặt Nmap trên Windows là tải xuống và chạy tệp exe tự cài đặt.
Bạn có thể chạy Nmap trên Windows từ dòng lệnh hoặc bằng cách khởi chạy chương trình Zenmap. Để biết thêm thông tin về cách sử dụng Nmap trên Windows, hãy xem hướng dẫn sử dụng sau cài đặt .
Sử dụng Nmap
Nmap thường được sử dụng để kiểm tra an ninh mạng, lập bản đồ mạng, xác định các port đang mở và tìm kiếm các thiết bị trực tuyến.
Cú pháp đơn giản của lệnh nmap như sau:
nmap [Options] [Target...]
Ví dụ cơ bản nhất của việc sử dụng Nmap là quét một mục tiêu như một người dùng tiêu chuẩn mà không chỉ định bất kỳ tùy chọn nào:
nmap scanme.nmap.org
Khi được gọi với tư cách là người dùng không phải root không có đặc quyền , hãy chạy nmap quét kết nối TCP. Dấu ( -sT
) được bật theo mặc định ở chế độ không đặc quyền.
Đầu ra sẽ giống như thế này, bao gồm thông tin cơ bản về quá trình quét và danh sách các port TCP đang mở và được filter.
Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-16 20:19 CET Nmap scan report for cast.lan (192.168.10.121) Host is up (0.048s latency). Not shown: 981 closed ports PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 25/tcp open smtp 53/tcp open domain 80/tcp open http 110/tcp open pop3 143/tcp open imap 443/tcp open https 587/tcp open submission 993/tcp open imaps 995/tcp open pop3s 1025/tcp open NFS-or-IIS 1080/tcp open socks 8080/tcp open http-proxy 8081/tcp open blackice-icecap Nmap done: 1 IP address (1 host up) scanned in 1.78 seconds
Tùy chọn quét phổ biến nhất là TCP SYN scan ( -sS) nhanh hơn tùy chọn kết nối và hoạt động dựa trên tất cả các ngăn xếp TCP tuân thủ.
-sS được bật theo mặc định khi nmap được gọi là người dùng có đặc quyền quản trị:
sudo nmap 192.168.10.121
Để có kết quả chi tiết hơn, hãy sử dụng tăng độ dài bằng -v hoặc -vv :
sudo nmap -vv 192.168.10.121
Để thực hiện quét UDP, hãy gọi lệnh với -sU tùy chọn ( ) với tư cách là người dùng root:
sudo nmap -sU 192.168.10.121
Để có danh sách đầy đủ các phương pháp quét port, hãy truy cập trang tài liệu Nmap .
Nmap cũng hỗ trợ địa chỉ IPv6. Để chỉ định một máy chủ IPv6, hãy sử dụng -6 tùy chọn:
sudo nmap -6 fd12:3456:789a:1::1
Chỉ định Máy chủ Mục tiêu
Nmap xử lý tất cả các đối số không phải là tùy chọn làm máy chủ đích.Các đối số được coi là tùy chọn nếu chúng bắt đầu bằng dấu gạch ngang đơn hoặc dấu gạch đôi ( – , — ).
Tùy chọn đơn giản nhất là chuyển một hoặc nhiều địa chỉ đích hoặc tên miền:
nmap 192.168.10.121 host.to.scan
Bạn có thể sử dụng ký hiệu CIDR để chỉ định phạm vi mạng:
nmap 192.168.10.0/24
Để chỉ định một phạm vi octet, hãy sử dụng ký tự gạch ngang. Ví dụ, để quét 192.168.10.1
, 192.168.11.1
và 192.168.12.1
:
nmap 192.168.10-12.1
Một ký tự khác mà bạn có thể sử dụng để xác định mục tiêu là dấu phẩy. Lệnh sau nhắm mục tiêu đến các máy chủ giống như máy chủ ở trên:
nmap 192.168.10,11,12.1
Bạn có thể kết hợp tất cả các hình thức:
nmap 10.8-10.10,11,12.0/28 192.168.1-2.100,101
Để đảm bảo bạn đã chỉ định đúng máy chủ trước khi quét, hãy sử dụng tùy chọn quét danh sách ( -sL ), tùy chọn này chỉ liệt kê các mục tiêu mà không chạy quét:
nmap -sL 10.8-10.10,11,12.0/28 192.168.1-2.100,101
Nếu bạn muốn loại trừ các mục tiêu được bao gồm trong phạm vi bạn đã chỉ định, hãy sử dụng tùy chọn –exclude :
nmap 10.8-10.10,11,12.0/28 --exclude 10.10.12.12
Chỉ định và quét các port
Theo mặc định, Nmap thực hiện quét nhanh 1000 port phổ biến nhất. Các port này không phải là 1000 port liên tiếp đầu tiên mà là 1000 port được sử dụng phổ biến nhất từ 1 đến 65389.
Để quét tất cả các port từ 1 đến 65535, hãy sử dụng tùy chọn -p- :
nmap -p- 192.168.10.121
Mỗi port có thể ở một trong các trạng thái sau:
- open – Chương trình chạy trên port phản hồi yêu cầu.
- close – Không có chương trình nào chạy trên port và máy chủ trả lời các yêu cầu.
- filtered – Máy chủ lưu trữ không trả lời yêu cầu.
port và phạm vi port được chỉ định với tùy chọn -p .
Ví dụ, để chỉ quét port 443, bạn sẽ sử dụng lệnh sau:
nmap -p 443 192.168.10.121
Để chỉ định nhiều port, hãy phân tách các port đích bằng dấu phẩy:
nmap -p 80,443 192.168.10.121
Phạm vi port có thể được chỉ định bằng biểu tượng gạch ngang. Ví dụ: để quét tất cả các port UDP từ 1 đến 1024, bạn sẽ chạy:
sudo nmap -sU -p 1-1024 192.168.10.121
Tất cả kết hợp:
nmap -p 1-1024,8080,9000 192.168.10.121
port cũng có thể được chỉ định bằng cách sử dụng tên port. Ví dụ: để quét port 22, ssh, bạn có thể sử dụng:
nmap -p ssh 192.168.10.121
Quét Ping
Để thực hiện quét ping hoặc khám phá máy chủ, hãy gọi nmap lệnh với -sn :
sudo nmap -sn 192.168.10.0/24
Các -sn
tùy chọn cho Nmap chỉ để khám phá host online và không nên làm một port quét. Điều này hữu ích khi bạn muốn nhanh chóng xác định máy chủ lưu trữ được chỉ định nào đang hoạt động.
Tắt phân giải tên DNS
Hoạt động mặc định của Nmap là thực hiện phân giải DNS ngược cho từng máy chủ được phát hiện, điều này làm tăng thời gian quét.
Khi quét các mạng lớn, bạn nên tắt tính năng phân giải DNS ngược và tăng tốc độ quét. Để làm điều đó, hãy gọi lệnh với tùy chọn -n:
sudo nmap -n 192.168.10.0/16
Phát hiện hệ điều hành, service và version
Nmap có thể phát hiện hệ điều hành máy chủ từ xa bằng cách sử dụng dấu vân tay ngăn xếp TCP / IP. Để chạy phát hiện hệ điều hành, hãy gọi lệnh với -O tùy chọn:
sudo nmap -O scanme.nmap.org
Nếu Nmap có thể phát hiện ra hệ điều hành máy chủ, nó sẽ in ra một thứ như sau:
... Device type: general purpose Running: Linux 5.X OS CPE: cpe:/o:linux:linux_kernel:5 OS details: Linux 5.0 - 5.4 Network Distance: 18 hops OS detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 26.47 seconds
Thông thường, các dịch vụ hệ thống lắng nghe trên các port tiêu chuẩn và được dành riêng cho chúng. Ví dụ: nếu port 22 tương ứng với dịch vụ SSH đang mở, bạn sẽ giả định rằng một máy chủ SSH chạy trên máy chủ. Tuy nhiên, bạn không thể chắc chắn tuyệt đối vì mọi người có thể chạy dịch vụ trên bất kỳ port nào họ muốn.
Với tính năng phát hiện phiên bản và dịch vụ, Nmap sẽ hiển thị cho bạn những gì chương trình lắng nghe trên port và phiên bản chương trình.
Để quét dịch vụ và phiên bản, hãy sử dụng tùy chọn -sV:
sudo nmap -sV scanme.nmap.org
... PORT STATE SERVICE VERSION 19/tcp filtered chargen 22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.13 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.4.7 ((Ubuntu)) 135/tcp filtered msrpc 139/tcp filtered netbios-ssn 445/tcp filtered microsoft-ds 9929/tcp open nping-echo Nping echo 31337/tcp open tcpwrapped Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel ...
Bạn cũng có thể quét hệ điều hành, phiên bản và chạy theo dõi trong một lệnh bằng cách sử dụng -A:
sudo nmap -A 192.168.10.121
Nmap Output
Theo mặc định, Nmap in thông tin ra đầu ra chuẩn (stdout).
Nếu bạn quét một mạng lớn hoặc cần thông tin để sử dụng sau này, bạn có thể lưu kết quả đầu ra vào một tệp.
Nmap cung cấp một số loại đầu ra. Để lưu đầu ra ở định dạng bình thường, hãy sử dụng -oN theo sau là tên tệp:
sudo nmap -sU -p 1-1024 192.168.10.121 -oN output.txt
Tùy chọn phổ biến nhất là lưu đầu ra ở định dạng XML. Để làm như vậy, hãy sử dụng -oX :
sudo nmap -sU -p 1-1024 192.168.10.121 -oX output.xml
Một định dạng hữu ích là sản phẩm Grepable, có thể được phân tích với các công cụ Unix chuẩn như grep
, awk
và cut
. Đầu ra có thể chuẩn hóa được chỉ định với -oG tùy chọn:
sudo nmap -sU -p 1-1024 192.168.10.121 -oG output
Nmap Scripting Engine
Một trong những tính năng mạnh mẽ nhất của Nmap là công cụ kịch bản của nó. Nmap có hàng trăm tập lệnh và bạn cũng có thể viết các tập lệnh của riêng mình bằng ngôn ngữ Lua.
Bạn có thể sử dụng các tập lệnh để phát hiện phần mềm độc hại và backdoor, thực hiện các cuộc tấn công vét cạn, v.v.
Ví dụ: để kiểm tra xem một máy chủ nhất định có bị xâm phạm hay không, bạn có thể sử dụng:
nmap -sV --script http-malware-host scanme.nmap.org
Phần kết luận
Nmap là một công cụ mã nguồn mở được các quản trị viên mạng chủ yếu sử dụng để khám phá máy chủ và quét các port.
Xin lưu ý rằng ở một số quốc gia, việc quét mạng mà không được phép là không hợp pháp.
Nếu bạn có bất kỳ câu hỏi hoặc nhận xét nào, vui lòng để lại bình luận bên dưới.