Cách sử dụng câu lệnh nmap

4.6/5 – (1121 bình chọn)

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.