Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 82

BỘ CÔNG AN

TRƯỜNG ĐẠI HỌC KỸ THUẬT - HẬU CẦN CAND


--------------

BÁO CÁO CHUYÊN ĐỀ


TÌM HIỂU CÔNG CỤ NMAP

Nhóm 1
Các thành viên : VŨ ĐỨC DŨNG
PHAN TIẾN HẢI
DƯƠNG THANH HUYỀN
PHAN NGUYỄN THUẬN HÒA
PHAN HỮU BÌNH
VŨ THÀNH ĐẠT

Bắc Ninh, tháng 4 năm 2023


MỤC LỤC
MỤC LỤC.................................................................................................................2
PHÂN CÔNG NHIỆM VỤ.....................................................................................5
LỜI MỞ ĐẦU...........................................................................................................7
DANH SÁCH CÁC THUẬT NGỮ TIẾNG ANH VÀ VIẾT TẮT......................8
CHƯƠNG 1: TỔNG QUÁT VỀ CÔNG CỤ NMAP..........................................10
1.1 Giới thiệu........................................................................................................10
1.2 Tổng quan.......................................................................................................11
1.3 Các khái niệm cơ bản trong Nmap.................................................................11
1.3.1 Giới thiệu về quét cổng...........................................................................11
1.3.2 Các giai đoạn quét trong Nmap...............................................................13
CHƯƠNG 2: CÁC CHỨC NĂNG CỦA NMAP....................................................15
2.1 Target specification........................................................................................15
2.2 Discovering Hosts..........................................................................................17
2.3 TCP/ UDP scan..............................................................................................20
2.3.1 Các dạng TCP Scan.................................................................................21
2.3.2 UDP Scan................................................................................................23
2.4 Service/ OS detection.....................................................................................25
2.4.1 Service and version dectection................................................................25
2.4.2 OS detection............................................................................................27
2.5 Nmap for scanning Ipv6 target.......................................................................30
2.5.1 IPv6 Scan.................................................................................................30
2.5.2 So sánh quét IPv6 và IPv4.......................................................................31
2.6 NSE Nmap và quét lỗ hổng bảo mật b...........................................................33
CHƯƠNG 3: ĐÁNH GIÁ NMAP VÀ MỘT SỐ TOOL NMAP.......................37
3.1 Điểm mạnh.....................................................................................................37
3.2 Điểm yếu........................................................................................................39
3.3 Zenmap và các tool từ Nmap.........................................................................40

2
3.3.1 Zenmap....................................................................................................40
3.3.2 Ncat, Ndiff và Nping...............................................................................45
CHƯƠNG 4: THỰC HÀNH MỘT SỐ CÂU LỆNH NMAP.............................49
Câu lệnh quét Null Scan với địa chỉ IP 192.168.10.0/24.................................49
Kiểm tra xem máy chủ với tên miền google.com có bị xâm phạm hay không?
(kiểm tra xem phát hiện phần mềm độc hại, backdoor,…) ?...........................50
Câu lệnh quét tất cả các dịch vụ đang chạy trên teestphp.vulnweb.com với tính
năng tắt phân giải tên miền..............................................................................50
Tấn công vào máy chủ Windows 7 trên phần mềm máy chủ ảo Vmware
Workstation Pro................................................................................................51
Quét host trên IP public của máy.....................................................................53
Định cấu hình nmap để quét mục tiêu 104.193.19.59......................................54
Câu lệnh nmap -p (tên cổng) (địa chỉ ip):.........................................................55
nmap -sn (địa chỉ ip):........................................................................................56
câu lệnh nmap -packet-trace:............................................................................56
Hiện thị máy chủ và tuyến đường nmap: nmap – iflist (địa chỉ ip)..................57
Quét nhiều mục tiêu nmap – vv -n (địa chỉ ip1) (địa chỉ ip 2).........................58
Quét một máy chủ sử dụng UDP scan bằng nmap..........................................59
Quét một máy chủ sử dụng IP protocol scan bằng nmap.................................60
Dùng NSE script để kiểm tra xem máy tính có bị lỗ hổng Heartbleed trên
một host với các tùy chọn khác nhau..............................................................62
Sử dụng NSE scripts để quét các lỗ hổng bảo mật trên một dải IP trong Nmap
..........................................................................................................................64
Lệnh nmap dùng để quét các cổng TCP mở trên địa chỉ IP 172.67.156.185...65
Lệnh nmap dùng để quét bằng kỹ thuật SYN (half-open) trên địa chỉ IP
172.67.156.185?...............................................................................................66
Sự khác biệt giữa lệnh nmap -sS và lệnh nmap -sT là:....................................66
Lệnh nmap dùng để quét các cổng TCP phổ biến nhất trên địa chỉ IP
172.67.156.185?...............................................................................................67

3
Lệnh nmap dùng để quét các cổng TCP mở trên một máy chủ và lưu kết quả
vào một tệp tin có tên là scan.txt......................................................................67
Lệnh nmap nào dùng để quét hệ thống mà khôn cần biết địa chỉ IP?..............68
Câu lệnh `nmap --script=ssh-auth-methods,ssh-hostkey scanme.nmap.org`...69
Câu lệnh `nmap 192.168.94.135-140`..............................................................70
Câu lệnh `nmap -F -Pn 72.167.218.138`..........................................................71
Câu lệnh `nmap -sV 54.236.230.133`..............................................................72
Câu lệnh `nmap -sP scanme.nmap.org --script=auth`......................................73
Thực hiện quét một danh sách các địa chỉ IP từ tập tin ips.txt:........................73
Quét 1 danh sách các địa chỉ IP từ 1 tập tin, sau đó lưu kết quả quét vào 1 file:
nmap -iL Desktop/ips.txt -oN Desktop/result.txt.............................................75
Câu lệnh nmap -sS -p -A -O 44.228.249.3 -oN Desktop/kq.txt.......................77
Câu lệnh nmap -sP -PS ––reason 192.168.2.1-4..............................................77
Câu lệnh nmap --scanflags SYNURG 44.228.249.3........................................78
KẾT LUẬN.............................................................................................................79
Tài liệu tham khảo.................................................................................................80

4
PHÂN CÔNG NHIỆM VỤ

- Leader
VŨ ĐỨC DŨNG
- Chương 1, 2, 3 trong báo cáo chuyên đề
- Thực hành bài báo cáo đầu
- Thực hiện quét một danh sách các địa chỉ IP
từ tập tin ips.txt: nmap -iL ips.txt
- Quét 1 danh sách các địa chỉ IP từ 1 tập tin,
sau đó lưu kết quả quét vào 1 file: nmap -iL
Desktop/ips.txt -oN Desktop/result.txt
- Câu lệnh nmap -sS -p -A -O 44.228.249.3 -oN
Desktop/kq.txt
- Câu lệnh nmap --scanflags SYNURG
44.228.249.3
- Câu lệnh nmap -sP -PS ––reason 192.168.2.1-
4

PHAN TIẾN HẢI - Thực hành bài báo cáo đầu


- Câu lệnh nmap -p (tên cổng) (địa chỉ ip):
- Câu lệnh nmap -sn (địa chỉ ip):
- câu lệnh nmap -packet-trace:
- Hiện thị máy chủ và tuyến đường nmap: nmap
– iflist (địa chỉ ip)
- Quét nhiều mục tiêu nmap – vv -n (địa chỉ
ip1) (địa chỉ ip 2)

DƯƠNG THANH HUYỀN - Thuyết trình


- Câu lệnh quét Null Scan với địa chỉ IP
192.168.10.0/24
- Kiểm tra xem máy chủ với tên miền
google.com có bị xâm phạm hay không?
(kiểm tra xem phát hiện phần mềm độc hại,
backdoor,…) ?
- Câu lệnh quét tất cả các dịch vụ đang chạy
trên teestphp.vulnweb.com với tính năng tắt
phân giải tên miền
- Tấn công vào máy chủ Windows 7 trên phần
mềm máy chủ ảo Vmware Workstation Pro.
- Quét host trên IP public của máy
- Định cấu hình nmap để quét mục tiêu
104.193.19.59

5
PHAN NGUYỄN THUẬN HÒA - Làm powerpoint
- Lệnh nmap dùng để quét các cổng TCP mở
trên địa chỉ IP 172.67.156.185
- Lệnh nmap dùng để quét bằng kỹ thuật SYN
(half-open) trên địa chỉ IP 172.67.156.185
- Lệnh nmap dùng để quét các cổng TCP phổ
biến nhất trên địa chỉ IP 172.67.156.185
- Lệnh nmap dùng để quét các cổng TCP mở
trên một máy chủ và lưu kết quả vào một tệp
tin có tên là scan.txt
- Lệnh nmap dùng để quét hệ thống mà khôn
cần biết địa chỉ IP

PHAN HỮU BÌNH - Tìm kiếm lí thuyết cho powerpoint


- Quét một máy chủ sử dụng UDP scan bằng
nmap
- Quét một máy chủ sử dụng IP protocol scan
bằng nmap
- Quét một máy chủ sử dụng SCTP COOKIE
ECHO scan bằng nmap
- Dùng NSE script để kiểm tra xem máy tính có
bị lỗ hổng Heartbleed trên một host với các
tùy chọn khác nhau
- Sử dụng NSE scripts để quét các lỗ hổng bảo
mật trên một dải IP trong Nmap

VŨ THÀNH ĐẠT - Tìm kiếm lí thuyết cho powerpoint


- Câu lệnh `nmap --script=ssh-auth-
methods,ssh-hostkey scanme.nmap.org`
- Câu lệnh `nmap 192.168.94.135-140`
- Câu lệnh `nmap -F -Pn 72.167.218.138
- Câu lệnh `nmap -sV 54.236.230.133`
- Câu lệnh `nmap -sP scanme.nmap.org --
script=auth`

6
LỜI MỞ ĐẦU
Trong thời đại số hóa ngày nay, nhu cầu bảo mật thông tin đã và đang trở
thành một trong những vấn đề nổi bật của xã hội. Tất cả công ty công nghệ lớn nhất
thế giới như Apple, Facebook, Google, hay Microsoft đều có những chính sách bảo
mật thông tin riêng tư cực kì tối tân. Thông tin đã và đang trở thành những nguồn
tài nguyên đáng giá nhất trong cuộc sống hiện đại. Thông tin được lưu dưới dạng
các file, nằm trong nhiều cơ sở dữ liệu trên toàn thế giới. Mỗi hệ thống thông tin
đều phải có một hệ thống cơ sở dữ liệu riêng tránh nguy cơ mất an toàn thông tin
người dùng. Do đó bảo mật hệ thống thông tin từ những mối nguy hại từ cả bên
trong và bên ngoài là rất cần thiết và cấp bách. Trong quá trình tấn công một hệ
thống thông tin, hacker luôn cố gắng tìm nhiều thông tin nhất có thể, và sàng lọc ra
những thông tin hữu ích nhằm mục đích phá hoại, hoặc đánh cắp dữ liệu hệ thống.
Từ đó nhu cầu kiểm thử hệ thống nhằm đánh giá và đưa ra các biện pháp bảo mật
thông tin ra đời.
Khi nói đến việc kiểm tra bảo mật mạng, nmap là một trong những công cụ
được sử dụng phổ biến nhất. Nmap là một phần mềm quét mạng mã nguồn mở và
miễn phí, được sử dụng để tìm kiếm các máy chủ, thiết bị kết nối mạng và các dịch
vụ được chạy trên chúng. Được phát triển bởi Gordon Lyon vào năm 1997, nmap
hiện là một trong những công cụ phổ biến nhất trong cộng đồng an ninh mạng.
Nmap được sử dụng để xác định các cổng mạng đang hoạt động và các dịch
vụ đang chạy trên chúng, cũng như các thông tin khác liên quan đến hệ thống
mạng. Bằng cách sử dụng nmap, người dùng có thể tìm kiếm các điểm yếu của hệ
thống và giải quyết chúng để tăng cường bảo mật mạng.
Trong báo cáo chuyên đề này, chúng ta sẽ tìm hiểu về nmap và cách sử dụng
nó để quét mạng, phân tích kết quả quét và giải quyết các vấn đề bảo mật mạng.
Chúng ta cũng sẽ đề cập đến các tính năng và công cụ liên quan đến nmap, cũng
như cách sử dụng nó để nâng cao bảo mật mạng.

7
8
DANH SÁCH CÁC THUẬT NGỮ TIẾNG ANH VÀ VIẾT TẮT

Từ viết tắt Thuật ngữ tiếng anh/ Giải thích Thuật ngữ tiếng việt/ Giải thích

AES Advanced Encryption Standard Chuẩn mã hóa tiên tiến

CIRD Classless Inter-Domain Routing

CPE Common Platform Enumeration Bảng liệt kê nền tảng chung

DNS Domain Name System Hệ thống phân giải tên miền

FPT File Transfer Protocol Giao thức truyền tập tin

GUI Graphical User Interface Giao diện đồ họa người dùng

Host-based intrusion detection


HIDS
system

HTTP HyperText Transfer Protocol Giao thức truyền tải siêu văn bản

ICMP Internet Control Message Protocol

IDS Intrusion detection system Hệ thống phát hiện xâm nhập

Internet Group Management


IGMP
Protocol

IPSec Internet Protocol Security An toàn giao thức Internet


Định danh duy nhất cho một thiết
MAC Media Access Control
bị mạng
MTU Maximum Transimission Unit

NAT Network address translation Biên dịch địa chỉ mạng

NSE Nmap Scripting Engine

OS Operation System Hệ điều hành

9
OUI Organizationally unique identifier

P2P Peer-to-peer network Mạng ngang hàng


Tài liệu Đề nghị duyệt thảo và
RFC Request for Comments
bình luận

Stream Control Transmission Giao thức truyền vận điều khiển


SCTP
Protocol dòng
giao thức truyền tải thư tín đơn
SMTP Simple Mail Transfer Protocol
giản

Secure Socket Layer / Transport Bộ giao thức bảo mật SSL / TLS
SSL/TLS
Layer Security

TCP Transmission Control Protocol Giao thức điều khiển truyền vận

TTL Transistor-transistor logic

UDP User Datagram Protocol Giao thức điều khiển truyền vận

XML Extensible Markup Language Ngôn ngữ đánh giấu mở rộng

10
CHƯƠNG 1: TỔNG QUÁT VỀ CÔNG CỤ NMAP
1.1 Giới thiệu
Nmap (tên đầy đủ Network Mapper) là một công cụ bảo mật được phát triển
bởi Floydor Vaskovitch. Nmap có mã nguồn mở, miễn phí, dùng để quét cổng và
lỗ hổng bảo mật. Các chuyên gia quản trị mạng sử dụng Nmap để xác định xem
thiết bị nào đang chạy trên hệ thống của họ, cũng như tìm kiếm ra các máy chủ có
sẵn và các dịch vụ mà các máy chủ này cung cấp, đồng thời dò tìm các cổng mở và
phát hiện các nguy cơ về bảo mật. Nmap là một công cụ để kiểm tra bảo mật cho
các quản trị mạng ngoài ra nó cũng có thể là một công cụ trinh sát mạnh mẽ cho
cộng đồng Black-hat (Hacker, Crackers, Script Kiddies, ...).
Nmap được viết trên nền tảng C ++ và được giới thiệu lần đầu tiên cùng với
mã nguồn trong tạp chí Phrack vào tháng 9 năm 1997. Sau đó nó được mở rộng với
C, Perl và Python.
Nmap sử dụng các gói IP thô theo những cách mới để xác định máy chủ nào
có sẵn trên mạng, dịch vụ nào (tên ứng dụng và phiên bản) mà máy chủ đó đang
cung cấp, hệ điều hành (phiên bản hệ điều hành) chúng đang chạy, loại bộ lọc gói /
tường lửa đang được sử dụng và hàng chục đặc điểm khác. Nmap có thể được sử
dụng để giám sát các máy chủ đơn lẻ cũng như các cụm mạng lớn bao gồm hàng
trăm nghìn thiết bị và nhiều mạng con hợp thành.
Trong suốt những năm qua kể từ khi ra mắt, Nmap đã được hưởng lợi từ sự
đóng góp lớn của cộng đồng người hâm mộ và các nhà phát triển đang không
ngừng tăng và giờ đây ứng dụng này sở hữu số lượt tải xuống lên tới hàng ngàn lần
mỗi ngày.
Mặc dù Nmap đã không ngừng được phát triển, cải tiến qua nhiều năm và
cực kỳ linh hoạt, nhưng nền tảng của nó vẫn là một công cụ quét cổng, thu thập
thông tin bằng cách gửi các gói dữ liệu thô đến các cổng hệ thống. Sau đó nó lắng
nghe và phân tích các phản hồi và xác định xem các cổng đó được mở, đóng hoặc

11
lọc theo một cách nào đó, ví dụ như tường lửa. Các thuật ngữ khác được sử dụng
để chỉ hoạt động quét cổng (port scanning) bao gồm dò tìm cổng (discovery) hoặc
liệt kê cổng (enumeration).
Nmap được thiết kế để quét nhanh các mạng lớn, nhưng hoạt động tốt với
các máy chủ đơn lẻ, cũng như các cụm mạng lớn bao gồm hàng trăm nghìn thiết bị
và nhiều mạng con hợp thành ... Nó chạy được trên tất cả các hệ điều hành máy
tính chính và các gói phân phối chính thức có sẵn cho Linux, Windows và Mac OS
X.
1.2 Tổng quan
Nmap (Network Mapper) là một công cụ mã nguồn mở để thăm dò mạng,
quét bảo mật và kiểm toán. Nmap được sử dụng để xác định máy chủ đang chạy và
các dịch vụ máy chủ đang chạy. Nmap là một công cụ để kiểm tra bảo mật cho các
quản trị mạng ngoài ra nó cũng có thể là một công cụ trinh sát mạnh mẽ cho cộng
đồng Black-hat (Hacker, Crackers, Script Kiddies, ...).
Nmap sử dụng các IP để xác định máy chủ nào có sẵn trên mạng, dịch vụ
(tên ứng dụng và phiên bản) mà các máy chủ đó đang cung cấp, hệ điều hành
(phiên bản HĐH) nào đang chạy, loại tường lửa đang được sử dụng, ...
Nmap được tạo bởi Gordon Lyon, một số tiện ích thường được sử dụng:
• Cung cấp cho bạn những địa chỉ ip đang được sử dụng trong mạng cục bộ.
• Cung cấp cho bạn những máy tính chạy trong mạng cục bộ.
• Cung cấp những cổng được mở trên máy tình mà chúng ta quét.
• Xem hệ thống bị nhiễm phần mềm độc hại hoặc vi rút.
1.3 Các khái niệm cơ bản trong Nmap
1.3.1 Giới thiệu về quét cổng
Mặc dù Nmap đã phát triển thêm chức năng, Quét cổng hiệu quả vẫn là
chức năng cốt lõi của nó. Lệnh nmap <target> đơn giản quét 1.000 cổng

12
TCP được sử dụng phổ biến nhất trên máy chủ <target>, trạng thái các
cổng được Nmap phân loại như sau:
• open (mở): Một ứng dụng đang tích cực chấp nhận các kết nối TCP
hoặc các gói UDP trên cổng này. Tìm kiếm những cổng này thường
là mục tiêu chính của quét cổng. Kẻ tấn công muốn khai thác các
cổng mở, trong khi các quản trị viên cố gắng đóng hoặc bảo vệ
chúng bằng tường lửa mà không cản trở người dùng hợp pháp.
• close (đóng): Một cổng đóng có thể truy cập (nó nhận và trả lời các
gói thăm dò Nmap), nhưng không có ứng dụng nào nghe trên đó.
Chúng có thể hữu ích trong việc hiển thị rằng máy chủ đang trực
tuyến và sử dụng địa chỉ IP (khám phá máy chủ hoặc quét ping) và
là một phần của phát hiện hệ điều hành
• filtered (đã lọc): Nmap không thể xác định xem cổng có mở hay
không vì lọc gói ngăn chặn các đầu dò của nó tiếp cận cổng. Việc
lọc có thể từ một thiết bị tường lửa chuyên dụng, quy tắc bộ định
tuyến hoặc phần mềm tường lửa dựa trên máy chủ
• unfiltered (chưa được lọc): Trạng thái chưa được lọc có nghĩa là
cổng có thể truy cập được, nhưng Nmap không thể xác định xem nó
là mở hay đóng.
• open|filtered (mở hoặc đã lọc): Nmap đặt các cổng ở trạng thái này
khi không thể xác định xem một cổng được mở hay được lọc. Điều
này xảy ra đối với các kiểu quét trong đó các cổng mở không có
phản hồi.
• closed|filtered (đóng hoặc chưa được lọc): Trạng thái này được sử
dụng khi Nmap không thể xác định xem một cổng được đóng hay
lọc. Nó chỉ sử dụng để quét IP ID Idle.

13
1.3.2 Các giai đoạn quét trong Nmap
Quét tiến hành theo từng giai đoạn, mỗi giai đoạn được thực hiện riêng, kết
thúc trước khi giai đoạn tiếp theo bắt đầu. Dưới đây là mô tả về các pha, Nmap
có nhiều thứ hơn là chỉ quét cổng:
• Script pre-scanning: Nmap Scripting Engine (NSE) sủ dụng một tập
hợp các lệnh có mục đính đặc biệt để có thêm thông tin về các hệ
thống từ xa. Giai đoạn này dành cho các tập lệnh chỉ phải chạy một
lần cho mỗi lần thực hiện Nmap thay vì chạy riêng cho với các mục
tiêu riêng lẻ. NSE sẽ được trình bãy sâu hơn trong chương 2.
• Target enumeration (Liệt kê mục tiêu): Trong giai đoạn này, Nmap
nghiên cứu các trình máy chủ do người dùng cung cấp, có thể là sự
kết hợp của DNS, IP, CIDR… . Nmap phân giải các chỉ định này
thành một danh sách các địa chỉ IPv4 hoặc IPv6 để quét.
• Host discovery (Phát hiện máy chủ): Quét mạng thường bắt đầu
bằng cách khám phá mục tiêu nào đang hoạt động để điều tra sâu
hơn. Quá trình này được gọi là phát hiện máy chủ hoặc quét ping.
Giai đoạn này được chạy theo mặc định, mặc dù bạn vẫn có thể bỏ
qua nó. Cụ thể sẽ được trình bày trong chương 2.
• Reverse-DNS resolution (Phân giải DNS ngược): Khi Nmap đã xác
đinh máy chủ nào sẽ quét. Nó sẽ tìm tên DNS ngược của tất cả các
máy chủ được tìm thấy trức tuyến bằng cách quét ping.
• Port scanning (Quét cổng): Đây là hoạt động cốt lõi của Nmap. Các
gói tin dò được gửi đi, các phản hồi nhận lại được sử dụng để phân
loại cổng. Chi tiết về quét cổng sẽ được trình bày trong chương 2.
• Version detection (Phát hiện phiên bản): Nếu bất kì cổng nào được
tìm thấy là mở, Nmap có thể xác định phần mềm máy chủ nào đang
chạy trên hệ thống.
14
• OS detection (phát hiện hệ điều hành): Nmap phát hiện hệ điều
hành, các hệ điều hành khác nhau thực hiện chuẩn mạng khác nhau.
Bằng cách đo lường sự khác biệt này, thường có thể xác định hệ
điều hành chạy trên máy chủ từ xa.
• Traceroute (theo dõi): Nmap có thể tìm thấy các tuyến mạng tới các
máy chủ. Traceroute thường liên quan tới một vòng phân giải DNS
ngược cho các máy chủ trung gian
• Spript scanning (Quét tập lệnh): Hầu hết các tập lệnh NSE chạy
trong giai đoạn quét tập lệnh chính này. NSE được cung cấp bởi
ngôn ngữ lập trình Lue và một thư viện tiêu chuẩn được thiết kế để
thu thập thông tin mạng. Các tập lệnh này thường chạy một lần cho
mỗi máy chủ đích và số cổng mà chúng tương tác.
• Output: Nmap hiển thị tất cả thông tin mà nó thu thập được lên màn
hình hoặc một tệp. Nmap có thể viết đầu ra trong một số định dạng.
Định dạng mặc định, có thể đọc được của con người (định dạng
tương tác) thường được trình bày trong cuốn sách này. Nmap cũng
cung cấp một định dạng đầu ra dựa trên XML, trong số những người
khác
• Script post-scanning (Kịch bản quét sau): Sau khi Nmap hoàn thành
quá trình quét và đầu ra bình thường, các tập lệnh trong giai đoạn
này có thể xử lý kết quả và cung cấp các báo cáo và thống kê cuối
cùng. Nmap chưa bao gồm bất kỳ tập lệnh nào trong giai đoạn này,
vì vậy nó chỉ chạy nếu người dùng bao gồm và thực thi các tập lệnh
quét sau của riêng họ.

15
CHƯƠNG 2: CÁC CHỨC NĂNG CỦA NMAP
2.1 Target specification
Nmap được thiết kế để quét nhiều loại mục tiêu, từ các máy chủ riêng rẽ
cho tới các mạng lớn. Nmap hỗ trợ quét các subnet dạng CIDR (Classless
Inter-Domain Routing), tên miền DNS, địa chỉ IPv4, Ipv6. Bạn có thể kết
hợp các đặc tả quét trên cùng 1 dòng lệnh.
Ví dụ 2.1: Để quét toàn bộ IP trong khối địa chỉ 192.168.0/24, 1 dải IP
192.168.100.10-25 và tên miềm DNS scanme.nmap.org có thể dùng dòng lệnh
sau:
nmap 192.168.0/24 192.168.100.10-25 scanme.nmap.org
Bạn có thể chỉ định phạm vi quét cụ thể hơn khi sử dụng dấu phẩy để
phân tách danh sách phạm vi cho mỗi octet, ví dụ:
nmap 192.168.5,10,15-16.10,20
Khi chạy câu lệnh trên nmap sẽ quét các IP dưới đây:
192.168.5.10
192.168.5.20
192.168.10.10
192.168.10.20
192.168.15.10
192.168.15.20
192.168.16.10
192.168.16.20
Nếu bạn có một lượng lớn các mục tiêu cần quét, bạn có thể liệt kê các
mục tiêu quét trong một file và truyền file đó vào câu lệnh trong nmap, mỗi
mục tiêu trong file phải được phân cách bằng dấu cách, tab hoặc dòng mới. Sử
dụng tùy chọn -iL trong câu lệnh để nmap trích xuất danh sách các mục tiêu
trong file.
16
Ví dụ 2.2: File list.txt chứa danh sách các mục tiêu như dưới đây:
192.168.10.1
192.168.10.100
192.168.10.101

Thể thực hiện quét các mục tiêu trong file list.txt, ta thực hiện câu lệnh
sau: nmap –iL list.txt
Trường hợp nếu nmap không tìm thấy file, ta có thể sửa tên file thành
đường dẫn cụ thể của file đó, ví dụ:
File được lưu ở màn hình desktop:
nmap –iL Desktop/list.txt
File được lưu ở thư mục “DS” thuộc ổ đĩa D:
nmap –iL D:/DS/list.txt
Quét ngẫu nhiên: Sử dụng tùy chọn -iR <num hosts> để quét ngẫu
nhiên một số máy chủ trên internet, Nmap sẽ tạo ngẫu nhiên một số mục tiêu
để quét chúng, đối số <num hosts> đại diện số mục tiêu mà bạn muốn quét,
nếu bạn muốn quá trình quét không bao giờ kết thúc thì sử dụng đối số 0. Ví
dụ, quét 3 mục tiêu ngẫu nhiên trên internet, ta thực hiện câu lệnh sau: nmap
-iR 3
Nếu bạn không muốn quét một số IP, địa chỉ DNS trong một mạng, bạn
có thể loại trừ nó bằng tùy chọn “--exclude” theo sau danh sách các mục
tiêu muốn loại bỏ.
Ví dụ: Không thực hiện quét 2 IP 192.168.0.10 và 12.168.0.20 trong
192.168.0/24:
nmap –exclude 192.168.0.10,12.168.0.20 192.168.0/24
Nmap cũng hỗ trợ loại bỏ các mục tiêu từ một file gồm danh sách các
mục tiêu cần loại bỏ, ví dụ:

17
nmap ––excludefile asset_database.txt 192.168.0.0/16
2.2 Discovering Hosts
Phát hiện máy chủ là một cách tuyệt vời để khám phá các thiết bị giả
mạo trên mạng. Nmap sử dụng nhiều kĩ thuật để xác định xem máy chủ có hoạt
động hay không bằng cách cố gắng có được phản hồi từ máy chủ. Cách đơn
giản nhất để xem máy chủ có hoạt động hay không là thực hiện quét ping bằng
cách truyền vào tùy chọn -sP:

nmap –sP 192.168.1.0/24

Lệnh quét ping sẽ gửi một gói yêu cầu ICMP, một gói TCP SYN đến
cổng 443, một gói TCP ACK tới cổng 80 và một yêu cầu ICMP timestamp.
Các yêu cầu gửi này lần lượt tương đương với các tham số -PE/ -PS443/
–PA80/ –PP trong câu lệnh. Nếu có mục tiêu nào trong mạng cục bộ, Nmap
sẽ mặc định sử dụng quét ARP(-PR), kết quả trả về sẽ bao gồm địa chỉ MAC
và thông tin nhà cung cấp thiết bị (OUI). Có thể tắt tùy chọn quét ARP bằng
cách thêm tùy chọn --send-ip vào câu lệnh. Với quét ping,
Nmap sẽ dừng lại sau khi xác định các máy chủ đang chạy mà không
thực hiện quét thêm các cổng nào khác
Đôi khi, quản trị viên thường sẽ thiết lập hệ thống của họ từ chối các
yêu cầu ping. Mặc định, Nmap sẽ thực hiển quét ping sau đó sẽ quét các cổng,
nếu máy chủ không trả lời ping, Nmap sẽ không thực hiện quét cổng mặc dù
máy chủ vẫn có thể hoạt động, bạn có thể thêm tùy chọn -Pn, Nmap sẽ bỏ qua
việc quét ping mà thực hiện quét cổng trên tất cả các máy chủ chỉ định, điều
này có thể làm tốn thêm thời gian quét. Nmap cung cấp nhiều phương thức
nâng cao để quét ping, bao gồm TCP SYN ping, TCP ACK ping, và UDP
ping.

TCP SYN ping (-PS):

18
Với tùy chọn này, Nmap sẽ gửi một gói TCP với cờ SYN. Theo mặc
định, Nmap sẽ gửi gói tin qua cổng 80, nhưng bạn có thể chỉ định một cổng
hoặc nhiều cổng. Chỉ định một cổng hay nhiều cổng bằng cách thêm tùy chọn
-PS<port>, ví dụ: -PS22 và –PS22-25,80,113). Nếu cổng chỉ định bị
đóng nó sẽ trả lời với gói RST, ngược lại nếu cổng mở thì nó sẽ trả lời với một
gói SYN/ACK. Nếu nhận được một trong hai phản hồi này, Nmap có thể kết
luận máy chủ đang hoạt động. Nếu không nhận được phản hồi, máy chủ có thể
không hoạt động hoặc yêu cầu bị chặn bởi tường lửa. Ví dụ:
nmap -sP -PS ––reason 192.168.2.1-4
Kết quả sau khi chạy lệnh
Starting Nmap 7.92 (https://nmap.org) at 2023-
04-10 23:27 EDT
StandardTime
Host 192.168.2.1 appears to be up, received syn-
ack.
Host 192.168.2.3 appears to be up, received
reset.
Nmap done: 4 IP addresses (2 hosts up)
scanned in 13.309 seconds.

Ví dụ này sử dụng tùy chọn --reason để hiển thị chi tiết hơn về phản
hồi của mục tiêu.

TCP ACK ping(-PA):

TCP ACK ping khá giống với TCP SYN ping vừa đề cập, điều khác là
cờ ACK được đặt thay vì vờ SYN. Cờ ACK được sử dụng để xác nhận dữ liệu
kết nối TCP đã được thiết lập, nhưng không có kết nối TCP nào tồn tại. Vậy
nên mục tiêu sẽ trả về gói RST khi nó đang hoạt động. Phương thức này rất
hữu dụng trong các tình huống mà ICMP ping hay TCP SYN ping bị chặn bởi
19
tương lửa. Cổng mặc định cho TCP ACK ping là 80, những cổng khác có thể
chỉ định bằng cách thêm số hiệu công theo sau –PA, ví dụ như –
PA22,25,80.

UDP ping(-PU):

Với UDP ping, Nmap tạo và gửi một gói UDP. Theo mặc định, Nmap
sử dụng cổng
UDP 40125 vì nó thường không được mở. Nếu gói UDP gửi đến một
cổng đóng, máy chủ mục tiêu đang hoạt động xẽ trả về gói ICMP thông báo
cổng không thể truy cập, cũng có thể sẽ nhận được một số thông báo lỗi ICMP
khác như host/network unreachables hay TTL exceeded. Tuy nhiên nếu một
cổng UDP được mở, máy chủ sẽ bỏ qua các gói và không trả lời bất kì phản
hồi nào. Đây là lý do bạn nên cố gắng gửi gói UDP tới một cổng đóng để nhận
lại gói ICMP cho biết máy chủ đang hoạt động. Ưu điểm của kiểu quét này là
nó vượt qua tường lửa và bộ lọc TCP.
Ngoài ra còn một số các tùy chọn phát hiện máy chủ khác, tất cả được
tóm tắt trong bảng 2.1:
Bảng 2. 1: Các tùy chọn Discovering host
Tùy chọn Mô tả
-sL Xuất ra danh sách mục tiêu và tên DNS
-Pn Bỏ qua bước quét phát hiện máy chủ
-sn Thực hiện quét ping
-PS/PA/PU/PY[port list] Quét TCP SYN/ACK,UDP hoặc SCTP
ping
-PE/PP/PM Phát hiện máy chủ thông qua các dạng
ICMP ping
-PO[protocol list] IP protocol ping

20
-n/-R Bật/tắt phân giải DNS
--dns-servers Chỉ định máy chủ DNS cho nmap sử
<serv1[,server2],..> dụng
--system-dns Sử dụng trình phân giải DNS hệ thống
thay vì Nmap để thực hiên tra cứu
DNS(chậm hơn và hiếm khi cần thiết
--traceroute Theo dõi đường dẫn Hop đến từng máy
chủ
--send-ip Tắt ARP ping cho mạng cục bộ(mặc
định
ARP ping được bật)

2.3 TCP/ UDP scan


Nmap hỗ trợ nhiều kiểu quét cổng cho người dùng chon lựa. Theo mặc
định, Nmap sẽ thực hiện quét TCP cơ bản trên mỗi mục tiêu. Trong một số tình
huống có thể cần phải quét TCP (hoặc UDP) một cách phức tạp hơn để cố
gắng tìm kiếm dịch vụ hoặc vượt qua tường lửa. Một trong những cân nhắc
đầu tiên khi quét cổng là sử dụng kĩ thuật nào, Nmap cung cấp hàng tá các
phương pháp như vậy và một số cách quét nâng cao sẽ được trình bày trong
phần này. Bảng 2.2 tóm tắt các tính năng được đề cập trong phần này:
Bảng 2. 2: Các tùy chọn TCP/UDP scan
Tính năng Tùy chọn

TCP SYN Scan -sS

TCP Connect Scan -sT

UDP Scan -sU

21
TCP NULL Scan -sN
TCP FIN Scan -sF
Xmas Scan -sX
TCP ACK Scan -sA
Custom TCP Scan --scanflags
IP Protocol Scan -sO
Send Raw Ethernet Packets --send-eth
Send IP Packets --send-ip

Trong Linux hay windows, bận cần đăng nhập với quyền
root/administrator (hoặc sử dụng lệnh sudo) để thực hiện các tùy chọn này.
Chú ý rằng, các kết quả Nmap có được đều dựa trên các gói tin thu thập được,
một số máy chủ không đáng tin cậy có thể gửi phản hồi gây nhầm lẫn hoặc
đánh lừa Nmap, phổ biến là các máy chủ không tuân thủ RFC. Quét FIN,
NULL và Xmas đặc biệt dễ gặp phải vấn đề này [1]. Mỗi lần quét chỉ có thể
dùng một phương thức, ngoại trừ việc quét UDP có thể kết hợp với bất kì một
trong các loại quét TCP.
2.3.1 Các dạng TCP
Scan
• TCP SYN Scan (-sS):
Đây là tùy chọn quét mặc định và phổ biến nhất phổ biến nhất. Nó có thể
thực hiện nhanh chóng, quét hàng ngàn cổng mỗi giây mà không bị cản trở bởi
tường lửa. Kỹ thuật này gọi là quét nửa mở, bạn gửi một gói SYN yêu cầu mở
kết nối và chờ phản hồi. Một phản hồi SYN/ACK chỉ ra rằng cổng đang lắng
nghe (mở), trong khi RST(reset) là biểu thị cho cổng không tiếp nhận kết nối.
Nếu không có phản hồi nào sau vài lần truyền lại, cổng được đánh dấu là đã

22
lọc. Cổng cũng được đánh dấu dã lọc nếu lỗi ICMP unreachable. Cổng coi là
mở nếu nhận được gói SYN(không có cờ ACK).
• TCP Connect Scan(-sT)
Trường hợp này được sử dụng khi người dùng không có đặc quyền.
Thay vì viết các gói thô như các kiểu quét khác, Nmap yêu cầu hệ điều hành
thiết lập kết nối với máy đích và cổng bằng cách sử dụng lời gọi hệ
thống(system call). Đây là cách thiết lập kết nối mà các trình duyệt web, P2P
và hầu hết các ứng dụng hỗ trợ mạng khác sử dụng.
• TCP NULL, FIN và Xmas scans:
Ba loại quét này khai thác lỗ hổng trong TCP RFC để phân biệt cổng mở và
đóng. Khi hệ thống quét tuân thủ RFC, bất kì gói tin nào không chứa các bít
SYN, RST hoặc ACK sẽ được phản hồi qua gói tin chứa RST nếu cổng đóng
và không phản hồi nếu cổng mở. Miễn là không có 3 bit nào trong số đó được
bao gồm, bất kì sự kết hợp nào của ba bít còn lại (FIN, PSH và URG) đều
được. Nmap khai thác điều này với 3 loại quét:
 Null scan (-sN): không đặt bất kì bít nào

 FIN scan (-sF): Chỉ đạt bít FIN

 Xmas scan (-sX): đặt bít FIN, PSH và URG

Ba loại quét này hoàn toàn giống nhau về phương thức ngoại trừ các cờ
TCP được đặt trong gói thăm dò. Nếu một phản hồi RST được nhận, cổng
được coi là đóng, nếu không có phản hồi nào cổng được đánh dấu là mở|lọc.
cổng được coi là lọc nếu lỗi không thể truy cập ICMP được nhận.
Ưu điểm của các kiểu quét này là chúng có thể nén lút qua một số tường
lửa không trạng thái và bộ định tuyến lọc gói nhất định. Nhược điểm là không
phải tất cả các hệ thống đều tuân theo RFC 793. Quét này không hoạt động với
hầu hết các hệ thống dựa trên Unix, một số hệ thống luôn phản hồi RST bất kể

23
cổng đóng hay mở như các thiết bị Cisco, BSDI và IBM OS/400. Nhược điểm
khác là các dạng quét này không thể phân biệt được các cổng mở hay lọc.
• Custom TCP scan (--scanflags):
Tùy chọn –scanflags cho phép người dùng xác định quét bằng một hoặc
nhiều cờ TCP tùy ý. Chỉ cần kết bất kì cờ nào (URG, ACK, PSH, RST, SYN
và FIN). Ví dụ:
nmap --scanflags SYNURG 10.10.1.127
•TCP ACK Scan (-sA):
Dạng quét này dùng để kiểm tra xem mục tiêu có được bảo vệ bởi tường
lửa hay không. Quy trình quét này không thể xác định được cổng mở. Khi thực
hiện quét TCP ACK, chỉ có cờ ACK được đặt(trừ khi bạn sử dụng --
scanflags), Nmap sẽ thăm dò mục tiêu và chờ RST được phản hồi. Nếu
không nhận được phản hồi hoặc nhận được thông báo lỗi ICMP, hệ thống được
đánh dấu là được lọc, nếu như hệ thống trả về một gói RST, được đánh dấu là
chưa lọc.
2.3.2 UDP Scan
Các dịch vụ UDP không đòi hỏi phải thiết lập liên kết trước khi gửi và
nhận dữ liệu, điều này làm cho việc quét chúng trở nên khác biệt hơn so với
quét cổng bình thường. Vì quét UDP thường chậm hơn và khó hơn TCP, một
số quản trị viên thường bỏ qua các cổng này. Đây là một sai lầm vì các dịch vụ
UDP có thể bị khai thác là khá phổ biến và những kẻ tấn công chắc chắn không
bỏ qua điều này. May mắn thay, Nmap có thể giúp kiểm tra các cổng UDP
này.

Quét UDP được kích hoạt với tùy chọn –sU. Nó có thể kết hợp với
loại quét TCP.

24
Quét UDP hoạt động bằng cách gửi gói UDP đến mội cổng được nhắm
mục tiêu. Đối với một số cổng phổ biến như 53 và 161, tải trọng dành riêng
cho giao thức được gửi để tăng tốc độ phản hồi, nhưng đối với hầu hết các
cổng thì một gói trống sẽ được gửi đi trừ các tùy chọn –data, --data-
string hoặc –data-length được thêm vào để quy định độ dài. Nếu lỗi
không thể truy cập cổng ICMP (loại 3, mã 3), cổng đã bị đóng. Các lỗi không
thể truy cập ICMP khác (loại 3, mã 0, 1, 2, 9, 10 hoặc 13) đánh dấu cổng là đã
lọc. Đôi khi, một dịch vụ sẽ đáp ứng với gói UDP, chứng minh rằng nó đang
mở.
Nếu không nhận được phản hồi sau khi truyền lại, cổng được phân loại
là mở|được lọc. Điều này có nghĩa là cổng có thể được mở hoặc có lẽ các bộ
lọc gói đang chặn giao tiếp. Phát hiện phiên bản (-sV) có thể được sử dụng để
giúp phân biệt các cổng thực sự mở với các cổng được lọc.
Một nhược điểm lớn đối với quét UDP là thời gian quét. Các cổng mở
và được lọc hiếm khi gửi bất kì phản hồi nào. Các cổng đóng thường là vấn đề
thậm chí còn lớn hơn.
Họ thường gửi lại lỗi không thể truy cập ICMP. Nhưng không giống như
các gói RST được gửi bởi các cổng TCP đã đóng để phản hồi với quá trình
quét, nhiều máy chủ không giới hạn tốc độ tin nhắn cổng ICMP theo mặc định.
Ví dụ, nhân Linux 2.4.20 giới hạn các tin nhắn không thể truy cập đích đến
một giây mỗi giây (trong net / ipv4 / icmp.c)[1]. Một số giải pháp có thể đưa ra
bao gồm quét song song nhiều máy chủ, quét nhanh các cổng phổ biến trước,
quét từ phía sau tường lửa và sử dụng –host-timeout để bỏ qua các máy
chủ chậm. Tuy nhiên, nó có thể kết hợp với tùy chọn –p để chọn các số giao
thức được quét.
• IP Prorocol Scan (-sO):

25
Quét giao thức IP cho phép bạn xác định giao thức IP nào (TCP, ICMP,
IGMP, …) được hỗ trợ bởi các máy mục tiêu. Về mặt kỹ thuật, đây không phải
là quét cổng, vì nó quay vòng qua các số giao thức IP thay vì số cổng TCP
hoặc UDP.
Quét giao thức hoạt động theo cách tương tự như quét UDP. Thay vì lặp
qua trường số cổng của gói UDP, nó sẽ gửi các tiêu đề gói IP và lặp qua trường
giao thức IP tám bit. Các tiêu đề thường trống, không chứa dữ liệu. Các ngoại
lệ là TCP, UDP, ICMP, SCTP và IGMP, một tiêu đề giao thức thích hợp cho
những giao thức được bao gồm vì một số hệ thống sẽ không gửi chúng theo
cách khác và vì Nmap đã có chức năng tạo chúng. Nếu Nmap nhận được bất
kỳ phản hồi nào trong bất kỳ giao thức nào từ máy chủ đích, Nmap sẽ đánh
dấu cổng đó là mở. Lỗi không thể truy cập giao thức ICMP (loại 3, mã 2)
khiến giao thức được đánh dấu là đóng trong khi cổng không thể truy cập (loại
3, mã 3) đánh dấu giao thức mở. Các lỗi không thể truy cập ICMP khác (loại 3,
mã 0, 1, 9, 10 hoặc 13) khiến giao thức được đánh dấu được lọc (mặc dù chúng
chứng minh rằng ICMP đang mở cùng lúc). Nếu không nhận được phản hồi
sau khi truyền lại, giao thức được đánh dấu là mở | đã lọc.

• Send Raw Ethernet Packets(--send-eth) và Send IP Packets(--


send-ip): Bật tùy chọn --send-eth sẽ hướng dẫn Nmap bỏ qua lớp IP
trên hệ thống của bạn và gửi gói ethernet thô trên lớp liên kết dữ liệu. Điều này
có thể được sử dụng để khắc phục vấn đề với ngăn xếp IP của hệ thống của
bạn.
Bật tùy chọn –send-ip buộc Nmap quét bằng cách sử dụng ngăn xếp
IP của hệ thống cục bộ thay vì tạo ra các gói ethernet thô. Tùy chọn --send-
eth và –send-ip được Nmap tự động sử dụng khi cần thiết, nó hiếm khi
được sử dụng trong dòng lệnh.

26
2.4 Service/ OS detection
2.4.1 Service and version dectection
Một trong những tính năng đáng chú ý nhất (cực cỳ hữu ích) của Nmap là
khả năng phát hiện hệ điều hành và dịch vụ trên máy chủ từ xa. Cơ sở dữ liệu
dịch vụ Nmap chứa khoảng 2.200 dịch vụ nổi tiếng, Nmap sẽ báo cáo rằng các
cổng đó có thể tương ứng với máy chủ thư (SMTP), máy chủ web (HTTP) và
máy chủ tên (DNS) tương ứng. Việc tra cứu này thường chính xác, phần lớn
các trình tiện ích nghe trên cổng TCP 25 trên thực tế là các máy chủ mail. Tuy
nhiên, điều này không hẳn chắc chắn, mọi người có thể chạy các dịch vụ chạy
trên các cổng lạ.
Ngay cả khi Nmap đoán đúng máy chủ đang chạy các dịch vụ SMTP,
HTTP và DNS, đó không phải là nhiều thông tin. Khi thực hiện đánh giá lỗ
hổng của các công ty hoặc khách hàng của bạn, bạn thực sự muốn biết thư và
máy chủ DNS và phiên bản nào đang chạy. Có số phiên bản chính xác giúp
xác định đáng kể việc khai thác máy chủ nào dễ bị tấn công.Tính năng phát
hiện phiên bản giúp bạn có được thông tin này. Nmap truy vấn máy chủ đích
và phân tích phản hồi, so sánh nó với các phản hồi đã biết cho nhiều loại dịch
vụ, ứng dụng và phiên bản. Nmap sẽ cố gắng xác định những điều sau đây:

• Service Protocol: Dịch vụ đang chạy trên cổng mở, như FPT, HTTP,
SMTP…
• Application Name: Ứng dụng chạy dịch vụ, như Microsoft IIS, WU-
FTDT, Sendmail…
• Version Number: Phiên bản của ứng dụng
• Hostname: Tên máy chủ
• Device Type: Loại thiết bị, như máy chủ in, bộ định tuyến…
• Operating System Family: Các hệ điều hành cơ bản như Windows,
Unix, Cisco
27
IOS, Linux (điều này có thể sai nếu thiết bị sử dụng NAT)
• Miscellaneous Details: Các chi tiết khác như thông tin kernel, số serial,
phiên bản firmware, tên người dùng và thông tin mật khẩu
• Port State: Phát hiện phiên bản cũng cố gắng để có thông tin về các cổng
UDP và
TCP, để xác định đúng trạng thái của cổng.
Giống như hầu hết các tính năng của Nmap, việc phát hiện phiên bản có
thể được kiểm soát bằng cách sử dụng một loạt các đối số được đề cập trong
phần này:

Bảng 2. 3: Các tùy chọn service detection


Lựa chọn Mô tả
-sV Cho phép phát hiện phiên bản cho các dịch vụ
và ứng dụng
-sR Kích hoạt phát hiện phiên bản RPC
(mặc định được bật khi sử dụng tùy chọn sV)
--allports Không loại trừ bất kì cổng nào từ phát hiện
phiên bản
--version intensity Đặt cường độ quét phiên bản từ 0 đến 9
<intensity>
--service-light Đặt cường độ phiên bản lên cấp 2 (-
version-intensity 2) cho việc
quét nhanh
--version-all Đặt cường độ phiên bản thành cấp 9 (--
version-intensity 9) để thử tất cả các
đầu dò

28
--version-trace In thông tin gỡ lỗi trong phát hiện phiên bản

2.4.2 OS detection
Một trong những tính năng nổi tiếng nhất của Nmap là phát hiện hệ điều
hành từ xa bằng cách sử dụng fingerprint TCP/IP. Nmap gửi một loạt các gói
TCP và UDP đến máy chủ từ xa và kiểm tra từng bit trong các phản hồi. Sau
khi thực hiện hàng chục thử nghiệm như lấy mẫu TCP ISN, IP ID và kiểm tra
kích thước cửa sổ ban đầu. Nmap so sánh kết quả với cơ sở dữ liệu nmap-os-
db của hơn 2.600 fingerprint của hệ điều hành đã biết. Mỗi dấu vân tay bao
gồm một mô tả văn bản dạng tự do của HĐH và phân loại tên nhà cung cấp (ví
dụ: Sun), HĐH cơ bản (ví dụ Solaris), và loại thiết bị (mục đích chung, bộ định
tuyến, switch, game console…). Phát hiện hệ điều hành được kích hoạt và
kiểm soát với các tùy chọn sau:
• -O (Enable OS detection):
Cho phép phát hiện hệ điều hành. Ngoài ra, bạn có thể sử dụng -A để
cho phép phát hiện HĐH cùng với những thứ khác.

• --osscan-limit (Limit OS detection to promising targets)


Phát hiện hệ điều hành hiệu quả hơn nhiều nếu tìm thấy ít nhất một cổng
TCP mở và một cổng TCP đóng. Với tùy chọn này, Nmap thậm chí sẽ không
thử phát hiện HĐH đối với các máy chủ không đáp ứng tiêu chí này. Điều này
có thể tiết kiệm thời gian đáng kể, đặc biệt là quét -Pn đối với nhiều máy chủ.
Nó chỉ quan trọng khi phát hiện hệ điều hành được yêu cầu với -O hoặc -A.

• --osscan-guess; --fuzzy (Guess OS detection results)


Khi Nmap không thể phát hiện so khớp hệ điều hành hoàn hảo. Sự so
khớp rất gần để Nmap thực hiện điều này theo mặc định. Một trong hai tùy
chọn (tương đương) này làm cho Nmap đoán mạnh hơn. Nmap vẫn sẽ cho bạn
29
biết khi nào so khớp không hoàn hảo được in và hiển thị mức độ tin cậy (phần
trăm) cho mỗi lần đoán.
• --max-os-tries (Đặt số lần phát hiện HĐH tối đa đối với mục tiêu)
Khi Nmap thực hiện phát hiện hệ điều hành đối với mục tiêu và không tìm
thấy kết quả khớp hoàn hảo, nó thường thử lại. Theo mặc định, Nmap cố gắng
năm lần nếu điều kiện thuận lợi cho việc fingerprint của hệ điều hành và hai
lần khi điều kiện không tốt.
Việc chỉ định giá trị --max-os-try thấp hơn (chẳng hạn như 1) tăng
tốc độ Nmap lên, mặc dù bạn bỏ lỡ các lần thử lại có khả năng xác định HĐH.
Ngoài ra, giá trị cao có thể được đặt để cho phép thử lại nhiều hơn khi điều
kiện thuận lợi. Điều này hiếm khi được thực hiện, ngoại trừ để tạo fingerprint
tốt hơn để gửi và tích hợp vào cơ sở dữ liệu Nmap OS.
Ví dụ 2.5: Phát hiện hệ điều hành với thông tin chi tiết( -O –v):
Nmap –O –v scanme.nmap.org

Hình 2.1: Kết quả thực hiện quét OS decection scanme.nmap.org

Trong ví dụ trên, các tùy chon –O –v khiến Nmap tạo ra các thông tin chi tết sau:

30
• Device type: Các thiết bị được phân ra thành nhiều loại như bộ định
tuyến, máy in, tường lửa hoặc mục đích chung (trong trường hợp này)
• Running: Trường này hiển thị hệ điều hành và thế hệ (trong trường hợp
này là Linux 2.6.X). Nếu có nhiều thế hệ, chúng được phân cách bằng
dấu phẩy.
• OS CPE: Hiển thị nền tảng CPE
• OS details: Dòng này cung cấp mô tả chi tiết cho từng fingerprint phù
hợp. Điều này có thể bao gồm số phiên bản chính xác hơn, kiểu thiết bị
và kiến trúc cụ thể cho một fingerprint nhất định. Trong ví dụ này, dấu
vân tay phù hợp duy nhất là Linux 2.6.20-1 (Fedora Core 5). Khi có
nhiều kết quả khớp chính xác, chúng được phân tách bằng dấu phẩy.
• Uptime guess: Cung cấp thời gian hoạt động của mục tiêu. Nmap nhận
được một số gói TCP / ACK TCP liên tiếp và kiểm tra các tiêu đề để
biết tùy chọn timestamp. Nhiều hệ điều hành sử dụng bộ đếm đơn giản
cho bộ đếm này bắt đầu từ 0 khi khởi động, sau đó tăng với tốc độ
không đổi, chẳng hạn như hai lần mỗi giây. Bằng cách xem xét một số
câu trả lời, Nmap có thể xác định các giá trị và tốc độ tăng hiện tại. Phép
ngoại suy tuyến tính đơn giản xác định thời gian khởi động.
• Network Distance: Xác định số bộ định tuyến giữa nó và mục tiêu.
Khoảng cách bằng 0 khi bạn đang quét localhost và một cho một máy
trên cùng phân khúc mạng. Mỗi bộ định tuyến bổ sung trên đường dẫn
thêm một vào số đếm hop.
2.5 Nmap for scanning Ipv6 target
2.5.1 IPv6 Scan
Từ năm 2002, Nmap đã cung cấp hỗ trợ IPv6 các cho tính năng phổ biến
nhất của nó. Đặc biệt, quét ping (Chỉ TCP), kết nối quét và phát hiện phiên bản

31
đều hỗ trợ IPv6. Tất nhiên, bạn phải sử dụng cú pháp IPv6 nếu bạn chỉ định
một địa chỉ thay vì tên máy chủ.
Một địa chỉ có thể như 3ffe: 7501: 4819: 2000: 210: f3ff: fe03: 14d0.
Ví dụ 2.6: Cho thấy một phiên quét cổng điển hình. Đầu ra trông giống
như thường lệ, với địa chỉ IPv6 trên các cổng:

Hình 2. 2: Kết quả thực hiện quét IPv6 www.eurov6.org

Mặc dù IPv6 chưa thực sự phổ biến, nhưng nó được sử dụng đáng kể ở
một số quốc gia và hầu hết các hệ điều hành hiện đại đều hỗ trợ nó. Để sử dụng
Nmap với IPv6, cả nguồn và đích quét của bạn phải được cấu hình cho IPv6.
2.5.2 So sánh quét IPv6 và IPv4
IPv6 và IPv4 là hai phiên bản khác nhau của giao thức Internet Protocol
(IP), được sử dụng để định danh và định tuyến các gói dữ liệu trong mạng
Internet.
Khi sử dụng Nmap để quét mạng IPv6 và IPv4, có một số sự khác biệt
cần lưu ý:
 Tùy chọn dòng lệnh: Để quét mạng IPv4, bạn có thể sử dụng các tùy
chọn phổ biến như -sn (ping scan), -sS (TCP SYN scan), -sU (UDP
scan), -sV (service version detection) và -O (OS detection). Tuy nhiên,
khi quét mạng IPv6, bạn cần sử dụng các tùy chọn khác như -6 để xác

32
định rằng Nmap nên sử dụng IPv6, -Pn để loại bỏ việc ping trước khi
quét, và -sN để thực hiện TCP NULL scan.
 Thời gian quét: Khi quét mạng IPv6, quá trình quét có thể mất thời gian
lâu hơn do số lượng địa chỉ IPv6 lớn hơn.
 Hỗ trợ giao thức: Nmap hỗ trợ các giao thức khác nhau để quét mạng,
bao gồm TCP, UDP, ICMP, ARP và SCTP. Tuy nhiên, khi quét mạng
IPv6, Nmap chỉ hỗ trợ ICMPv6 và TCP, do đó bạn nên chỉ sử dụng các
tùy chọn liên quan đến các giao thức này.
 Thông tin địa chỉ IP: IPv4 được sử dụng rộng rãi hơn IPv6, do đó thông
tin về các địa chỉ IP IPv4 có sẵn nhiều hơn. Trong khi đó, thông tin về
các địa chỉ IP IPv6 cần được cập nhật thường xuyên để đảm bảo việc
quét được thực hiện đầy đủ và chính xác.
Việc thực hiện quét IPv6 thay vì mặc định IPv4 thường dễ dàng hơn vì
chỉ đơn giản thêm -6 vào dòng lệnh. Một số tính năng như phát hiện hệ điều
hành và quét UDP chưa được hỗ trợ cho giao thức này, nhưng các tính năng
phổ biến nhất hoạt động. Ví dụ cho thấy sự khác biệt giữa việc quét IPv4 và
IPv6:

33
Hình 2. 3: Quét Ipv4 và Ipv6 trên www.kame.net

Lần quét đầu tiên cho thấy nhiều cổng được lọc, bao gồm các dịch vụ
thường xuyên khai thác như SunRPC, Windows NetBIOS và NFS. Tuy nhiên,
việc quét cùng một máy chủ với IPv6 cho thấy không có cổng được lọc!
SunRPC (cổng 111) khả dụng và đang chờ để được truy vấn bởi rpcinfo hỗ trợ
IPv6 hoặc phát hiện phiên bản Nmap, hỗ trợ IPv6.
2.6 NSE Nmap và quét lỗ hổng bảo mật b
Nmap NSE là một trong những tính năng tuyệt nhất của Nmap. Mỗi một
NSE là một kịch bản do người dùng lập trình cho Nmap (kiểu như module
trong Metasploit) với các mục đích khác nhau như tự động hoá các tính năng

34
như quét mạng, tấn công DoS, lấy mật khẩu và tên người dùng, thu thập thông
tin,… và cả quét lỗ hổng bảo mật.
Quét lỗ hổng bảo mật với Vulscan:
Vulscan là một phần mở rộng NSE của Nmap được lập trình để quét lỗ
hổng bảo mật. Vulscan có thể chạy trên bất kể hệ điều hành gì miễn là cài
được Nmap.
Để cài đặt vulscan và quét lỗ hổng bảo mật, bạn hãy gõ:
cd /usr/share/nmap/scripts

sudo git clone https://github.com/scipag/vulscan

nmap -sV --script vulscan/vulscan.nse [mục tiêu]

Hoặc: nmap -sV --script [đường đẫn đến tệp vulscan.nse]


[mục tiêu]
Còn với window: mở CMD hoặc PowerShell và gõ:
cd [đường dẫn đến thư mục vừa giải
nèn] nmap -sv --script vulscan.nse
[mục tiêu]

Quét lỗ hổng bảo mật với nmap-vulners


Nmap-vulners là một kịch bản NSE được lập trình lấy dữ liệu về lỗ hổng
bảo mật thông qua API của Vulners.com.
Để cài đặt nmap-vulners và quét lỗ hổng bảo mật, bạn hãy gõ:
cd /usr/share/nmap/scripts
wget
https://raw.githubusercontent.com/vulnersCom/nmap-vulners/master/vulners.nse
nmap -sV --script nmap-vulners/vulners.nse [mục
tiêu] Hoặc: nmap -sV --script [đường đẫn đến tệp
vulners.nse] [mục tiêu]
35
Còn với window: mở CMD hoặc PowerShell và gõ:
cd [đường dẫn đến thư mục vừa giải nèn]
nmap -sv --script vulners.nse [mục tiêu]
Để quét các thiết bị có trong mạng, bạn phải tìm dải địa chỉ IP của mạng
LAN trước bằng lệnh ip route:
Bạn có thể thấy dải IP của mạng LAN mà mình dùng làm thí nghiệm
chưa xin phép là 192.168.1.0/24
Sau đó quét các thiết bị có trong mạng bằng lệnh: nmap
192.168.1.0/24 hoặc nmap -sV 192.168.1.0/24

Khi thêm -sV, Nmap không chỉ quét cổng mạng mà còn hiển thị phiên
bản của phần mềm và hệ điều hành của cổng đó
Dùng vulscan để quét cái route, Địa chỉ của route là 192.168.1.1, sau đó
dùng lệnh sau để quét lỗ hổng bảo mật trên con route này với vulscan:

nmap -sV --script vulscan/vulscan.nse 192.168.1.1

Vulscan sẽ quét phiên bản phần mềm trong con route và đối chiếu với
các cơ sở dữ liệu về lỗ hổng bảo mật như ở trong hình 2.5:

36
Hình 2. 5: Kết quả quét Vulscan

Dùng nmap-vulners để quét con route này, dùng lệnh:


nmap -sV --script vulners.nse 192.168.1.1

37
Hình 2.6: Kết quả quét nmap-vulners

Không thấy có lỗ hổng nào cả? không phải không có mà là do cơ sở dữ liệu


của vulscan lớn hơn
- Quét mục tiêu ngoài mạng LAN

Dùng vulscan: nmap -sV --script vulscan/vulscan.nse -p


[tên cổng][mục tiêu]

Dùng nmap-vulners: nmap -sV --script vulners.nse -p [tên


cổng] [mục tiêu]

Dùng cả 2 thì dùng lệnh: nmap -sV --script


vulner.nse,vulscan/vulscan.nse -p [tên cổng] [mục
tiêu]

38
CHƯƠNG 3: ĐÁNH GIÁ NMAP VÀ MỘT SỐ TOOL NMAP
3.1 Điểm mạnh
• Thao tác và hoạt động trên nhiều nền tảng hệ điều hành từ Windows,
Linux, AIX, IOS.
• Nmap có thể quét các cổng mở (ít nhất là một cổng mở và một cổng
đóng trong trường hợp được quét)
• Quét các công TCP/UDP cực kì linh hoạt
• Khả năng phát hiện dịch vụ và hệ điều hành
• Có khả năng tích hợp với Zenmap GUI để tạo ra bản đồ mạng và được
lưu trữ thông tin trên máy tính cụ thể trên mạng
• Tùy chọn để chốn tránh tường lửa:
Là một trong những công cụ với tính năng lý tưởng trong việc rà quét và
kiểm thử thâm nhập tường lửa có thể cố gằng kiểm soát lưu lượng và ra trong
mạng cũng như tăng tính an toàn trong hệ thống mạng đồng thời cũng làm
giảm khả năng hoạt động lý tưởng của Nmap. Vì vậy Nmap hỗ trợ một vài kỹ
thuật trốn tránh tường lửa Ví dụ: Quét ip là 192.168.1.12
Nmap –f 192.168.1.12

-f trong quá trình quét tạo ra các gói IP nhỏ (hay các phân mảnh IP
nhỏ), chia 16 bytes cho mỗi phân mảnh nhỏ, các gỏi nhỏ này là một trong số
chúng. Khi gửi thì gửi gói nhỏ đã được phân mảnh này, tuy nhiên bây giờ thì
hầu hết các tường lửa và IDS đã phát hiện ra nên dùng cách khác
Nmap –mtu 24 192.168.1.12

-mtu cho phép chúng ta xác định được kích thước size (kích thước size
là bội của 8 như 16,24,32….)
Nmap gửi lựa chọn cho người dùng để xác định MTU (Maximum
Transmission Unit) cho gói, điều này tương tự kĩ thuật phân mảnh. Trong khi

39
scan, Nmap sẽ tạo packet với size dựa trên số mà bạn gửi. Ở đây ta đưa số liệu
là 24 gây nhầm lẫn cho tường lửa
Nmap –sS –T5 192.168.1.12 –script firewall-bypass

Kịch bản lệnh này phát hiện lỗ hổng trong các tường lửa khác nhau sử
dụng trình trợ giúp để mở các cổng động cho các giao thức như FTP và sip (kết
hợp với quét lén). Kịch bản hoạt động bằng cách giả mạo một gói từ máy chủ
đích yêu cầu mở một kết nối liên quan đến một cổng đích, sẽ được tường lửa
thực hiện thông qua cổng trình trợ giúp giao thức đầy đủ.
Máy tấn công phải nằm trên cùng phân đoạn mạng với tường lửa để hoạt
động. Kịch bản hỗ trợ trình trợ giúp FTP trên cả IPv4 và IPv6. Bộ lọc đường
dẫn thực được sử dụng để ngăn chặn các cuộc tấn công như vậy.

• Output đa dạng cho phép phân tích cũng như xử lý kết quả bằng những
chương trình khác
• Tài liệu phong phú về kĩ thuật sử lý và tập lênh: Nmap là một trong một
số công cụ bảo mật cũng như scan nổi tiếng thể giới đồng nghĩa với tính
phổ biến và nguồn tài liệu đọc,tìm hiều rất nhiều dễ dàng cho chúng ta
tìm hiều và tiếp cận một cách dễ dàng thuận tiện
• Nmap Scripting Engine (NSE) là một trong những thứ mạnh mẽ và linh
hoạt nhất của Nmap. Nó cho phép người dùng viết và chia sẻ những
đoạn script đơn giản để tự động hóa một số nhiệm vụ trên mạng. Các tập
lệnh luôn được thực thi song song với tốc độ rất cao. Người dụng có thể
tùy biến hoặc dùng những lệnh có sẵn và đa dạng trong Nmap hoặc là có
thể viết các tập lệnh cho mình tùy theo nhu cầu của bản thân
• Rà soát mạng: Rà xoát dựa trên miền đích,truy vấn ARIN,RIPE..
• Phát hiện lỗ hổng: Khi một lỗ hổng mới được phát hiện, ta muốn rà quét
mạng càng nhanh càng tôt trước khi điều tồi tệ hơn xảy ra với hệ thống,
Nmap không toàn diện về vấn đề đó. NSE lại toàn diện về vaand dề đó
40
• Phát hiện cửa hậu: Nhiều kẻ tấn công muốn tạo một cửa hậu để sau này
có thể tùy ý kích hoạt cửa hậu đó. Ta có thể phát hiện được cửa hậu theo
cách thông thường của Nmap nhưng với worms hay là cửa hậu phức tạp
thì yêu cầu các tính năng nâng cao của NSE mới có thể xử lý được. NSE
đã được dùng để phát hiện Double Pulsar NSA backdoor trong SMB …
• Khai thác lỗ hổng: Là ngôn ngữ kịch bản chung, NSE thậm chí có thể
được sủ dụng để khai thác các lỗ hổng thay vì chỉ tìm thấy chúng. Khả
năng thêm tập lện khai thác tùy chỉnh có thể rất hữu ích đặc biệt là phát
hiện và xem xét thâm nhập, điều đó không có nghĩa là sẽ biến Nmap
thành metasploit.
3.2 Điểm yếu
• Quét cổng có thể kích hoạt phát hiện xâm nhập máy chủ (HIDS và IDS)
• Có thể gây tương tác với phần mềm cài đặt trong môi trường
• Có thể bị block bởi các phần mềm antivirus trong hệ thống quét và hệ
thống được quét làm giảm hiệu quả quét đáng kể, tương tự như với
firewall nhưng firewall có cách vượt qua
• Các thiết bị được quét có thể phản hồi theo cách không mong muốn
(thiết bị y tế thiết bị mạng)
• Bảo mật có thể không cho phép vì Nmap là công cụ của có thể dùng như
1 tool hacker
• Như ta biết thì NSE khiến cho Nmap linh hoạt và mạnh mẽ như thế nào
trong việc rà quét cũng như khai thác lỗ hổng, nhưng nhược điểm của
NSE là nó được viết băng Lua thay vì những ngôn ngữ như Python hay
Ruby. Vì vậy, việc ta phải làm việc trên NSE nó khó khăn hơn rất nhiều
so với làm việc thông thường

41
3.3 Zenmap và các tool từ Nmap
3.3.1 Zenmap
Zenmap là phiên bản đồ họa (giao diện) chính thức của Nmap. Nó là
phần mềm đa nền tảng, mã nguồn mả và được thiết kế thân thiện hơn cho
người mới bắt đầu cũng như là cung cấp đủ tính năng cho những người có kinh
nghiệm.

Hình 3. 1: Giao diện Zenmap


Thực tế không một giao diện đồ họa nào có thể thay thế cho giao diện
dòng lệnh của Nmap. Và thực tế thì Zenmap sinh ra không phải để thay thế
Nmap nhưng nó khiến Nmap dễ dùng hơn, thân thiện hơn và đây là một số tình
năng lợi thế hơn so với Nmap.

• Khả năng tương tác tốt và xem kết quả dưới dạng đồ họa:
Ngoài việc kiểm tra đầu ra thông thường giống như Nmap thì Zenmap
có thể hiển thị tất cả các cổng trên host cũng như là các hosts đang chay trên
một dịch vụ nào đó. Zenmap có thể vẽ bản đồ cấu trúc liên kết của các mạng

42
được phát hiện và kết quả của nhiều lần quét có thể được kết hợp với nhau
cũng như có thể xem cùng một lúc.
• Zenmap có thể so sánh kết quả quét giữa 2 lần khác nhau xem sự thay
đổi của cùng một một lần quét giữa các ngày khác nhau, giữa 2 cổng
khác nhau, cùng một host với các option khác nhau hay những kiểu kết
hợp khác nhau… Điều này cho phép người quản trị dễ dàng theo dõi các
máy chủ cũng như là dịch vụ mới xuất hiện trọng mạng của họ.
• Zenmap luôn giữ kết quả scan của bạn cho đến khi bạn quyết định có
chọn vứt kết quả đó đi hay không. Điều đó có nghĩa là bạn xem kết quả,
và quyết định có lưu file kết quả đó hay không
• Nmap có hơn một trăm option khác nhau, khiến cho việc khám phá của
người mới khá khó khăn. Zenmap với giao diện đồ họa luôn luôn show
ra những câu lệnh nào sẽ chạy và người dùng đơn giản là chọn những
chức năng đó từ menu. Nó giúp người dùng dễ dàng hiểu được mình
đang làm gì và giúp chuyên gia biết chính xác những gì mình đang quét.
• Target và Profile selection: Ở mục Targer nhâp scanme.nmap.org,
Profile chọn Intense scan:

Thuộc tính Intense scan trong Profile chỉ là một trong một số cấu hình
kèm theo với zenmap. Ta có thể chọn thuộc tính khác trong combo box. Ta
cũng có thể scan trực tiếp dưới phần Command bằng cách nhập lệnh trực tiếp.
• Tập hợp các Scan: Zenmap có khả năng tập hợp nhiều kết quả của
những lần quét khác nhau trên cùng một khung hình:

43
Hình 3. 2 Kết quả scan với Zenmap
Có một lợi thế mà ta có thể dễ dàng nhận thấy là ta không cần phải đợi
phiên quét kết thúc trước khi bắt đầu một phiên quét khác. Ta có thể làm nó
một cách đồng thời. Mỗi phiên kết thúc kết quả sẽ lưu vào bộ nhớ và mỗi lần
quét thì các kết quả đều được lưu trong bộ nhớ.
Mỗi khi scan ta trên thanh công cụ có 5 tab và mỗi tab lại hiển một khía cạnh
khác nhau của các kết quả khác nhau:
- Nmap Output:

44
Hình 3. 3 Hiện thị tab Nmap
Output
Đây là tab hiển thị mặc định khi chúng ta thực hiện scan.Nó hiển
thị các màu khác nhau theo nghĩa của nó. Ví dụ: port đóng và mở hiển thị màu
khác nhau…
- Port/Host: Hiển thị tab khác nhau phụ thuộc vào máy chủ hoặc là dịch
vụ hiện đang được chọn. Khi mà máy chủ được chọn, nó sẽ show ra tất cả các
cổng trên máy chủ đó, cùng thông tin khả dụng.

45
Hình 3. 4: Hiển thị tạp Ports/ Hosts
- Topology: là tab hiển thị sự tương tác, sự kết nối giữa các host trong
mạng, host được sắp xếp trong các vòng tròn đồng tâm, mỗi vòng đại diện cho
một bước nhảy mạng bổ sung từ nút trung tâm. Nhấp vào một nut mạng mang
nó đế trung tâm. Bởi vì nó hiển thị đại diện của các đường dẫn mạng giữa các
máy chủ.

Hình 3. 5: Hiển thị tab Tology

- Host Details: đưa tất cả các thông tin về máy chủ duy nhất thành một
màn hình phân cấp, hiển thị tên địa chỉ của máy chủ lưu trữ,trạng thái của nó
và số lượng cổng được quét, thời gian hoạt động, hệ điều hành … và các chi
tiết liên quan khác.

46
Hình 3. 6 Hiển thị tab Host Details

3.3.2 Ncat, Ndiff và


Nping
• Ncat:
Là tiện ích có tính năng đọc và ghi dữ liệu trên mạng từ các dòng lệnh.
Ncat được viết cho Dự án Nmap nhằm cải thiện thêm tính năng cho Nmap. Nó
sử dụng cả TCP và UDP cho việc truyền tải và được thiết kế để thành một
công cụ back-end cùng cấp kết nối mạng đến các ứng dụng và người dùng
khác. Nó không chỉ làm việc trên IPv4 mà trên cả
IPv6 cũng như cung cấp cho người dùng số lượng sử dụng vô hạn. Ncat
có tính năng kết nối Ncats với nhau, chuyển hướng cả cổng TCP và UDP sang
các trang web khác, hỗ trợ SSL và kết nối proxy thông qua proxy SOCKS4
hoặc HTTP (phương thức kết nối với xác thực proxy tùy chọn). Một số nguyên
tắc chung áp dụng cho hầu hết các ứng dụng và do đó cung cấp cho bạn khả

47
năng thêm hỗ trợ mạng ngay lập tức vào phần mềm mà thông thường sẽ không
bao giờ hỗ trợ.
• Ndiff:
Là tool với mục đích so sánh kết quả các bản quét Nmap. Sự khác biệt là:
- Trang thái Host
- Trạng thái Port
- Phiên bản Serviec
- Phù hợp với hệ điều hành
- Đầu ra bản mã Script
- Tiện ích so sánh 2 bản quét cùng 1 lúc  Các tùy chọn:

-h, --help: Đưa ra thông báo trợ giúp và thoát.


-v,-- verbose: Gồm tất cả các máy chủ và cổng ở đầu ra,không chỉ
những máy chủ đã thay đổi.
--text: Viết đầu ra ở định dạng văn bản có thể đọc được.

--xml: Viết đầu ra ở định dạng xml(dưới dạng cấu trúc)

Ví dụ: Sử dụng Ndiff để so sanh 2 đầu ra của 2 lần quét Nmap


Lựa chon –F ở cả hai lệnh để quét nhanh một vài cổng

-v ở ndiff là lựa chọn để show ra các cổng không thay đổi, không có -v thì
các cổng sẽ không hiển thị.

48
Hình 3. 7 Kết quả thực hiện quét
Ndiff

• NPing:
Là một công cụ mã nguồn mở để tạo gói mạng, phân tích phản hồi và đo
thời gian đáp ứng. Nping cho phép người dùng tạo các gói mạng của một loạt
các giao thức cho phép họ điều chỉnh hầu như bất kỳ trường nào của các tiều
đề giao thức. Mặc dù Nping có thể sử dụng như một tiện ích ping đơn giản để

49
phát hiện các máy chủ hoạt động nó cũng có thể được sử dụng như một trình
tạo gói thô để kiểm tra tấn công từ chối dịch vụ, theo dõi lộ trình và các mục
đích khác…
Đầu ra của Nping là danh sách các gói đang được gửi và nhận. Mức độ
chi tiết phụ thuộc vào tùy chọn được sử dụng:
-c: để chỉ định sô lần nhắm mục tiêu vào máy chủ

--tcp: để chỉ định chế độ thăm dò TCP

-p 80,433: để chỉ định các cổng dịch vụ và sau đó là 2 tên máy chủ

50
CHƯƠNG 4: THỰC HÀNH MỘT SỐ CÂU LỆNH NMAP
Câu lệnh quét Null Scan với địa chỉ IP 192.168.10.0/24
sudo nmap -sN 192.168.10.0/24

Null Scan Là quy trình gửi đi các gói tin không chứa các bộ flag. Các phản
hồi đều tương tự với FIN và XMAS Scan. Nếu gói tin Null Scan gửi tới một port
mở, sẽ không có phản hồi. Nếu gói tin Null Scan gửi tới port đóng, nó sẽ mang
theo gói RSR. Việc thực hiện kiểu scan này tương đối dễ dàng vì không có lý do
hợp lý nào giải thích cho việc gửi đi gói tin mà không có flag nào.

51
Kiểm tra xem máy chủ với tên miền google.com có bị xâm phạm hay
không? (kiểm tra xem phát hiện phần mềm độc hại, backdoor,…) ?

nmap -sV –script http-malware-host google.com

-sV giúp cho việc khám phá các phiên bản của các ứng dụng đang chạy trên
cổng mở. Điều này có thể cho thấy một cổng đang chạy phần mềm đã lỗi thời và có
một lỗ hổng đã được phát hiện. Để thực hiện điều này, hãy sử dụng flag -sV.
- Qua đó chúng ta có thể kiểm tra, bảo mật đối với trang web hoặc có thể tìm
các lỗ hỏng backdoor để tấn công vào trang web.
Câu lệnh quét tất cả các dịch vụ đang chạy trên teestphp.vulnweb.com với
tính năng tắt phân giải tên miền

nmap -n testphp.vulnweb.com

52
Chạy Nmap thường là cách tốt nhất để khám phá “kích thước” của mạng và
số lượng thiết bị được kết nối với nó. 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.
Tuy nhiên ở những trang web có độ hoàn thiện cao, chúng ta cần sử dụng các
cú pháp để việc quét trở nên nhanh chóng hơn (-n) tắt tính năng phân giải DNS,
tránh tường lửa (-Pn), Quét Nmap “nhanh" (-F) trên phạm vi mạng có thể tạo danh
sách tất cả các địa chỉ IP thuộc về máy chủ hoạt động trên mạng, cùng với một số
thông tin bổ sung.
Kết quả trả về là trong thái 2 port mở 80, 443. Chúng ta có thể sử dụng các câu
lệnh sau để quét các port.
nmap -p 80 google.com
nmap -p 443 google.com

Tấn công vào máy chủ Windows 7 trên phần mềm máy chủ ảo Vmware
Workstation Pro.
- Kiểm tra địa chỉ IP của máy mục tiêu Windows 7.
Để xác định các thiết bị khác trên mạng cục bộ, việc tính toán phạm vi mạng
con là rất hữu ích. Đây là dải địa chỉ IP có thể được cung cấp cho các thiết bị trên
mạng và là tín hiệu cho biết rằng có thể quét qua tất cả các địa chỉ IP của các thiết
bị trên mạng.

53
Một công cụ hữu ích để làm điều này là IPcalc. Công cụ này sẽ lấy địa chỉ IP
(dễ dàng tìm thấy bằng cách nhập ifconfig hoặc ip a trong cửa sổ terminal) và tính
toán phạm vi mạng con dựa trên đó. Công cụ sẽ cung cấp một dãy số
như "192.168.0.0/24", chỉ định một dải địa chỉ IP.
ipconfig
192.168.0.184

- Tắt tường lửa trên máy tính Windows 7.


-Thông mạng giữa 2 máy tính.
ping 192.168.0.184

- Phát hiện hệ điều hành, dữ liệu máy chủ trên máy Windows 7 với IP
192.168.0.184.
Để bao gồm cả thông tin về các service đang chạy trên thiết bị đã tìm thấy,
người dùng có thể mở cửa sổ terminal và nhập lệnh sau, thêm vào phạm vi mạng
của bạn. Quá trình quét hơi chậm, vì vậy có thể sử dụng flag -F thay vì -A để thực
hiện quét nhanh hơn đối với các cổng phổ biến nhất.
Thỉnh thoảng, người dùng sẽ gặp khó khăn khi quét mạng vì ping được gửi
bởi Nmap bị chặn bởi tường lửa trên bộ định tuyến. Điều này có thể làm cho người
54
dùng lầm tưởng là không có thiết bị nào trên mạng. Để tránh điều này, bạn có thể
bao gồm flag -Pn, để đôi khi cho phép kết nối trực tiếp với các thiết bị và nhận
được phản hồi.
Nếu cần thêm thông tin về những gì đang xảy ra, có thể nhấn một phím trong
khi quá trình quét đang diễn ra để có được một số thông tin về cách tiến hành hoặc
thêm tham số -v để tăng mức độ chi tiết (lượng thông tin mà tập lệnh cung cấp).
Nói chung, bạn có thể tiếp tục thêm nhiều v vào -v tùy theo mức độ mong muốn
tìm hiểu thêm thông tin về những gì đang xảy ra.
nmap -A -v -Pn 172.20.10.2

Quét host trên IP public của máy


- Sử dụng câu lệnh curl ifconfig.me/all để tìm được địa chỉ IP public của máy.
curl ifconfig.me/all

- Phát hiện hệ điều hành, service và version.

55
Sau khi lấy địa chỉ IP và ghi chú các số cổng đang mở, tiếp theo Nmap có thể
cho thấy hệ điều hành (-O) đang được sử dụng để lưu trữ một trang web từ xa.
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 14.245.25.17

Định cấu hình nmap để quét mục tiêu 104.193.19.59


Để chạy tính năng quét cơ bản, người dùng có thể xác định địa chỉ IP mục
tiêu cụ thể để quét. Một trong những cách quét cơ bản nhưng có được nhiều thông
tin nhất là chạy Nmap, chỉ định địa chỉ IP đích và sau đó nhập -A để bật tính năng
phát hiện hệ điều hành, phát hiện phiên bản, quét tập lệnh và theo dõi.
Ngay cả đối với một mục tiêu duy nhất, một lần quét cơ bản cũng có thể
mang lại nhiều thông tin. Ở đây, ví dụ chỉ đơn giản là quét địa chỉ IP cho
domain WonderHowTo.com. Công cụ có thể chạy với một thiết bị trên mạng cục
bộ, như bộ định tuyến (router) hoặc máy chủ từ xa, như máy chủ lưu
trữ WonderHowTo.com.
sudo nmap 104.193.19.59 -A

56
Về cơ bản, ta đang chạy Nmap không có đối số, ngoại trừ flag -A. Ta sẽ thấy
output tương tự như trên, hiển thị các thiết bị được phát hiện và các service chạy
trên chúng.
Common này cho phép người dùng có thể nhận được càng nhiều thông tin
càng tốt về hệ điều hành từ bất kỳ danh sách mục tiêu nào muốn chạy, cho dù mục
tiêu là mạng nội bộ hay danh sách địa chỉ IP của trang web.
Câu lệnh nmap -p (tên cổng) (địa chỉ ip):

- Nmap là một công cụ quét mạng và lỗ hổng bảo mật được sử dụng để khám
phá các máy chủ và thiết bị trên mạng. Để quét một cổng cụ thể của một địa chỉ IP,
bạn có thể sử dụng câu lệnh sau: nmap -p [số_cổng] [địa chỉ IP]

*Ví dụ: nmap -p 80 111.65.250.2

57
Câu lệnh nmap -p 80 được sử dụng để quét cổng 80 trên một máy chủ hoặc
một thiết bị đầu cuối1. Cổng 80 là cổng mặc định cho HTTP, nghĩa là nó được sử
dụng để truy cập các trang web thông qua giao thức HTTP. Vì vậy, khi bạn sử dụng
câu lệnh này, Nmap sẽ quét cổng 80 để kiểm tra xem máy chủ hoặc thiết bị đầu
cuối có đang chạy một trang web hay không. Một trang web có thể sử dụng nhiều
giao thức khác nhau để truyền thông tin giữa máy chủ và trình duyệt của người
dùng1. Giao thức phổ biến nhất cho các trang web tham chiếu là HTTP, nhưng các
giao thức khác cũng được sử dụng như FTP để truyền file, Mailto cho email, JDBC
để truy cập cơ sở dữ liệu và các giao thức khác

nmap -sn (địa chỉ ip):

Câu lệnh “nmap” được sử dụng để quét mạng và kiểm tra các cổng mạng trên
các máy chủ. Để kiểm tra xem một máy chủ nhất định có đang trực tuyến hay
không, bạn có thể sử dụng câu lệnh “nmap -sn địa chỉ IP” hoặc “nmap -Pn địa chỉ
IP” (với tùy chọn “-sn” hoặc “-Pn” chỉ định cho Nmap chỉ quét ping và không quét
cổng).

Câu lệnh “nmap -sn địa chỉ IP” được sử dụng để thực hiện quét mạng và tìm
kiếm các thiết bị đang hoạt động trên mạng12. Tùy chọn “-sn” chỉ định cho Nmap
chỉ quét ping và không quét cổng2. Vì vậy, câu lệnh này sẽ giúp bạn tìm kiếm các
thiết bị đang hoạt động trên mạng của bạn mà không quét các cổng trên các thiết bị
này.

*Ví dụ: nmap -sn 111.65.250.2

58
câu lệnh nmap -packet-trace:

Câu lệnh nmap -packet-trace được sử dụng để hiển thị tất cả các gói tin được
gửi và nhận trong quá trình quét mạng của Nmap. Khi sử dụng tùy chọn này, Nmap
sẽ hiển thị tất cả các gói tin được gửi và nhận trong quá trình quét mạng, giúp bạn
có thể xem chi tiết hơn về quá trình quét mạng của Nmap.

Ví dụ, để sử dụng câu lệnh nmap -packet-trace để quét một máy chủ có địa chỉ
IP là bạn có thể sử dụng câu lệnh sau: nmap -packet-trace <địa chỉ ip>

Hiện thị máy chủ và tuyến đường nmap: nmap – iflist (địa chỉ ip)

Câu lệnh nmap -iflist (địa chỉ ip) được sử dụng để liệt kê tất cả các giao diện
mạng trên một máy tính cụ thể và địa chỉ IP của chúng. Các giao diện mạng trên
một máy tính là các điểm giao tiếp mạng cho máy tính của bạn. Mỗi giao diện được
59
liên kết với một thiết bị mạng vật lý hoặc ảo . Thông thường, server của bạn sẽ có một
network interface có thể cấu hình cho mỗi card Ethernet hoặc internet không dây
mà bạn có

*Ví dụ nmap -iflist 111.65.250.2

Quét nhiều mục tiêu nmap – vv -n (địa chỉ ip1) (địa chỉ ip 2)

Câu lệnh “nmap -vv -n” là câu lệnh sử dụng công cụ Nmap để quét một mạng
hoặc một máy chủ và hiển thị kết quả với độ chi tiết cao nhất (-vv) và không thực
hiện việc giải quyết tên miền (-n)

Cụ thể hơn, tùy chọn “-vv” sẽ hiển thị kết quả với độ chi tiết cao nhất, bao
gồm cả các gói tin được gửi và nhận. Tùy chọn “-n” sẽ ngăn Nmap thực hiện việc
giải quyết tên miền khi quét mạng hoặc máy chủ, điều này giúp giảm thiểu thời
gian quét, giúp người dùng có thể đạt hiệu quả cao nhất khi sử dụng.

Có thể quét nhiều địa chỉ IP với câu lệnh “nmap -vv -n” bằng cách thêm các
địa chỉ IP vào cuối lệnh. Ví dụ, để quét các địa chỉ IP từ 192.168.1.1 đến
192.168.1.255, bạn có thể sử dụng lệnh "nmap -vv -n 192.168.1.1-255.

60
Ngoài ra, bạn có thể sử dụng các tùy chọn khác của Nmap để quét nhiều địa
chỉ IP cùng một lúc như “-iL” để đọc danh sách địa chỉ IP từ một tệp tin hoặc “-D”
để giả mạo địa chỉ IP.

*Ví dụ:

Quét một máy chủ sử dụng UDP scan bằng nmap


nmap -sU 143.92.75.65
Để quét một máy chủ sử dụng UDP scan bằng Nmap, bạn có thể sử dụng tùy
chọn -sU khi chạy Nmap. Ví dụ, để quét một máy chủ có địa chỉ IP là 192.168.1.1
sử dụng UDP scan, bạn có thể sử dụng lệnh sau:
nmap -sU 192.168.1.1
61
Lưu ý rằng UDP scan có thể mất nhiều thời gian hơn các loại quét khác do
đặc điểm của giao thức UDP và bạn cần có quyền quản trị để chạy loại quét này.
Ví dụ thực hiện cú pháp: nmap -sU 143.92.75.65

Quét một máy chủ sử dụng IP protocol scan bằng nmap

Ví dụ thực hiện cú pháp: nmap -sO 103.188.251.129

62
Quét một máy chủ sử dụng SCTP COOKIE ECHO scan bằng nmap

SCTP là một giao thức truyền tải mới hơn so với TCP và UDP, kết hợp đa số
đặc điểm của TCP và UDP và cũng thêm các tính năng mới như multi-homing và
multi-streaming.
Quá trình quét này là quá trình quét SCTP nâng cao hơn. Đây là một cách
quét khá im lặng vì nó loại bỏ các gói chứa các khối Cookie Echo trên các cổng
mở, nhưng nó sẽ gửi phản hồi Hủy bỏ nếu cổng bị đóng. Quá trình quét này diễn ra
khá im lặng, mặc dù IDS được cấu hình tốt vẫn có thể phát hiện ra nó.
SCTP COOKIE ECHO scan là một loại quét SCTP nâng cao hơn. Nó tận
dụng việc các cài đặt SCTP nên im lặng bỏ qua các gói chứa COOKIE ECHO
chunks trên các cổng mở, nhưng gửi một ABORT nếu cổng đóng. Điều này có
nghĩa là khi quét một cổng bằng SCTP COOKIE ECHO scan, nếu không có phản
hồi từ máy chủ mục tiêu, cổng đó có thể được coi là mở. Nếu máy chủ mục tiêu gửi
lại một ABORT chunk response, thì cổng đó có thể được coi là đóng.
Để thực hiện quét này bằng nmap, bạn có thể sử dụng tùy chọn -sZ với tư
cách là người dùng root. Ví dụ: sudo nmap -sZ 192.168.10.121.

63
*cách thức thực hiện và mô phỏng
Để quét một máy chủ sử dụng SCTP COOKIE ECHO scan bằng Nmap, bạn
có thể sử dụng tùy chọn -sY khi chạy Nmap. Ví dụ, để quét một máy chủ có địa chỉ
IP là 192.168.1.1 sử dụng SCTP COOKIE ECHO scan, bạn có thể sử dụng lệnh
sau:
nmap -sY 192.168.1.1
Lưu ý rằng SCTP COOKIE ECHO scan chỉ hoạt động trên các hệ thống hỗ
trợ SCTP và bạn cần có quyền quản trị để chạy loại quét này.
Tiến hành mô phỏng qua cú pháp nmap -sZ 35.186.195.157

Dùng NSE script để kiểm tra xem máy tính có bị lỗ hổng Heartbleed
trên một host với các tùy chọn khác nhau

Nếu một máy chủ bị lỗ hổng Heartbleed, kẻ tấn công có thể đọc bộ nhớ của
máy chủ và lấy được thông tin nhạy cảm như khóa riêng tư SSL và thông tin
đăng nhập người dùng. Điều này có thể dẫn đến việc rò rỉ thông tin cá nhân và dữ
liệu nhạy cảm của người dùng, việc giả mạo danh tính và truy cập trái phép vào
các tài khoản người dùng, và việc thực hiện các cuộc tấn công giả mạo trung gian
(man-in-the-middle) để đánh cắp hoặc thay đổi thông tin truyền đi.
Để khắc phục lỗ hổng Heartbleed, bạn cần cập nhật phiên bản OpenSSL
mới nhất trên máy chủ của mình. Các phiên bản OpenSSL sau đây đã được vá lỗi
để khắc phục lỗ hổng Heartbleed:
OpenSSL 1.0.1g và các phiên bản mới hơn

64
OpenSSL 1.0.0 branch không bị ảnh hưởng
OpenSSL 0.9.8 branch không bị ảnh hưởng
Sau khi cập nhật phiên bản OpenSSL mới nhất, bạn nên khởi động lại các
dịch vụ sử dụng OpenSSL để đảm bảo rằng các thay đổi có hiệu lực. Ngoài ra,
bạn cũng nên xem xét việc thay đổi các khóa SSL và thông báo cho người dùng
thay đổi mật khẩu của họ để đảm bảo an toàn.
Do đó, việc khắc phục lỗ hổng Heartbleed là rất quan trọng để bảo vệ
thông tin cá nhân và dữ liệu nhạy cảm của người dùng.
Để sử dụng NSE scripts để quét các lỗ hổng bảo mật trên một dải IP trong
Nmap, bạn có thể sử dụng tùy chọn --script khi chạy Nmap. Ví dụ, để sử dụng
script vuln để quét các lỗ hổng bảo mật trên một dải IP, bạn có thể sử dụng lệnh
sau:
nmap --script vuln [dải IP]
Trong đó [dải IP] là dải IP mà bạn muốn quét. Bạn cũng có thể sử dụng các
tùy chọn khác của Nmap để tùy chỉnh quá trình quét theo nhu cầu của bạn.
Ngoài ra, bạn cũng có thể sử dụng các script khác trong thư viện NSE của
Nmap hoặc tự viết các script của riêng mình để thực hiện các tác vụ quét mạng cụ
thể.
Ví dụ thực hiện mô phỏng với cú pháp: nmap -p 443 --script ssl-heartbleed --
script-args vulns.showall -d 192.168.1.1

65
Sử dụng NSE scripts để quét các lỗ hổng bảo mật trên một dải IP trong
Nmap

Quét các lỗ hổng bảo mật trên một dải IP có thể giúp bạn phát hiện các lỗ
hổng bảo mật trên các máy chủ và thiết bị trong dải IP đó. Việc này giúp bạn đánh
giá mức độ an toàn của hệ thống mạng và có thể thực hiện các biện pháp khắc phục
kịp thời để đảm bảo an toàn cho hệ thống. Việc quét các lỗ hổng bảo mật cũng giúp
bạn phòng ngừa các cuộc tấn công từ bên ngoài và bảo vệ dữ liệu quan trọng của
bạn.
Nếu hệ thống mạng của bạn bị tấn công bởi kẻ xấu, có thể có nhiều hậu quả xấu
xảy ra. Tùy thuộc vào mục tiêu và phương thức tấn công của kẻ tấn công, họ có thể
truy cập trái phép vào dữ liệu quan trọng của bạn, gây ra sự cố cho hệ thống hoặc
thậm chí làm hỏng các thiết bị trong mạng. Điều này có thể gây ra thiệt hại về mặt
tài chính và uy tín cho tổ chức của bạn.
Vì vậy, việc quét các lỗ hổng bảo mật và thực hiện các biện pháp khắc phục
kịp thời là rất quan trọng để đảm bảo an toàn cho hệ thống mạng của bạn.
*mô phỏng thực hiện
Để sử dụng NSE scripts để quét các lỗ hổng bảo mật trên một dải IP trong
Nmap, bạn có thể sử dụng tùy chọn --script khi chạy Nmap. Ví dụ, để sử dụng
script vuln để quét các lỗ hổng bảo mật trên một dải IP, bạn có thể sử dụng lệnh
sau:
nmap --script vuln [dải IP]
Trong đó [dải IP] là dải IP mà bạn muốn quét. Bạn cũng có thể sử dụng các
tùy chọn khác của Nmap để tùy chỉnh quá trình quét theo nhu cầu của bạn
Ngoài ra, bạn cũng có thể sử dụng các script khác trong thư viện NSE của
Nmap hoặc tự viết các script của riêng mình để thực hiện các tác vụ quét mạng cụ
thể.
Thực hiện cú pháp: nmap --script=vuln 192.168.1.0/24
66
Lệnh nmap dùng để quét các cổng TCP mở trên địa chỉ IP 172.67.156.185
nmap -sT 172.67.156.185

Lệnh nmap -sT là một lệnh để thực hiện quét cổng TCP kết nối. Lệnh này sẽ gửi các
gói tin SYN đến các cổng đích và chờ phản hồi từ các máy chủ. Nếu nhận được gói tin
SYN/ACK, lệnh này sẽ gửi gói tin ACK để hoàn thành kết nối TCP và xác định cổng
đó là mở. Nếu nhận được gói tin RST, lệnh này sẽ xác định cổng đó là đóng. Nếu
không nhận được phản hồi, lệnh này sẽ thử lại hoặc bỏ qua cổng đó.
Lệnh nmap -sT có công dụng để khám phá các dịch vụ và ứng dụng chạy trên các cổng
TCP của các máy chủ trong mạng. Lệnh này cũng có thể giúp phát hiện các lỗ hổng bảo
mật, quản lý bảo trì mạng và kiểm tra chính sách tường lửa.
Lệnh nmap -sT có thể sử dụng trong các trường hợp sau:

67
- Khi bạn muốn quét cổng TCP một cách đơn giản và nhanh chóng.
- Khi bạn muốn quét cổng TCP mà không cần quyền root trên Linux hoặc quyền quản
trị trên Windows.
- Khi bạn muốn quét cổng TCP mà không quan tâm đến việc bị phát hiện bởi các máy
chủ đích hoặc các thiết bị giám sát mạng.
Lệnh nmap dùng để quét bằng kỹ thuật SYN (half-open) trên địa chỉ IP
172.67.156.185?

nmap -sS 172.67.156.185

Lệnh nmap -sT là một lệnh để thực hiện quét cổng TCP bằng cách sử dụng kỹ thuật
connect. Kỹ thuật này cho phép nmap sử dụng hàm connect() của hệ điều hành để thiết
lập kết nối TCP hoàn chỉnh với cổng đích và chờ đợi phản hồi. Nếu kết nối thành công,
nmap biết rằng cổng đó đang mở và ngắt kết nối. Nếu kết nối thất bại, nmap biết rằng
cổng đó đang đóng hoặc bị lọc.
Lợi ích của kỹ thuật này là nmap không cần quyền truy cập thấp hơn vào card mạng để
có thể tạo ra các gói TCP tùy chỉnh. Tuy nhiên, kỹ thuật này cũng có nhược điểm là
nmap phải thiết lập kết nối TCP hoàn chỉnh với máy chủ đích, do đó tăng khả năng bị
phát hiện và giảm tốc độ quét.
Trường hợp sử dụng của lệnh nmap -sS là khi bạn muốn quét cổng TCP của một máy
chủ hoặc một mạng một cách nhanh chóng và ít gây ồn ào. Ta có thể kết hợp lệnh này
với các tùy chọn khác của nmap để tùy biến quét theo ý muốn.
Sự khác biệt giữa lệnh nmap -sS và lệnh nmap -sT là:

- Lệnh nmap -sS sử dụng kỹ thuật SYN stealth, trong khi lệnh nmap -sT sử dụng kỹ
thuật connect.
- Lệnh nmap -sS cần quyền truy cập thấp hơn vào card mạng, trong khi lệnh nmap -sT
không cần.

68
- Lệnh nmap -sS ít lưu lại vết và nhanh hơn, trong khi lệnh nmap -sT dễ bị phát hiện và
chậm hơn.
Lệnh nmap dùng để quét các cổng TCP phổ biến nhất trên địa chỉ IP
172.67.156.185?

nmap --top-ports 1000 IP 172.67.156.185

Câu lệnh nmap --top-ports 1000 IP là một câu lệnh để quét các cổng mạng phổ biến
nhất trên một hệ thống từ xa. Câu lệnh này sẽ quét 1000 cổng TCP và UDP phổ biến
nhất cho mỗi giao thức quét được yêu cầu. Câu lệnh này có tác dụng để phát hiện các
cổng mở, đóng hoặc bị lọc trên hệ thống đích.
Cách sử dụng câu lệnh này là nhập vào địa chỉ IP của hệ thống muốn quét vào chỗ IP.
Ví dụ: nmap --top-ports 1000 192.168.0.1. Ta có thể sử dụng tên miền hoặc tên máy
chủ thay cho địa chỉ IP.
Dụng câu lệnh này trong những trường hợp mong muốn nhanh chóng kiểm tra tình
trạng của các cổng mạng trên một hệ thống từ xa, hoặc muốn tìm kiếm các điểm yếu
hoặc lỗ hổng bảo mật trên hệ thống đó. Tuy nhiên, chúng ta nên lưu ý câu lệnh này
không quét toàn bộ các cổng có thể có (tổng cộng là 65536 cổng cho mỗi giao thức), và
có thể bỏ sót một số cổng ít phổ biến nhưng vẫn có thể bị khai thác.
Bạn có thể quét toàn bộ các cổng, bạn có thể dùn tùy chọn -p- với câu lệnh nmap
Ví dụ nmap -p- 192.168.0.1
Tuy nhiên, quét toàn bộ các cổng sẽ mất nhiều thời gian hơn so với quét các cổng phổ
biến.
Lệnh nmap dùng để quét các cổng TCP mở trên một máy chủ và lưu kết quả
vào một tệp tin có tên là scan.txt

nmap -sT 172.67.156.185 > scan.txt

69
Câu lệnh nmap --top-ports 1000 <IPrange> là một câu lệnh để quét các cổng mạng phổ
biến nhất trên một hệ thống từ xa. Câu lệnh này sẽ quét 1000 cổng TCP và UDP phổ
biến nhất cho mỗi giao thức quét được yêu cầu. Câu lệnh này có tác dụng để phát hiện
các cổng mở, đóng hoặc bị lọc trên hệ thống đích.
Cách sử dụng câu lệnh này là nhập vào địa chỉ IP của hệ thống ta muốn quét vào chỗ
IP.
Ví dụ: nmap --top-ports 1000 192.168.0.1. Bạn cũng có thể sử dụng tên miền hoặc tên
máy chủ thay cho địa chỉ IP.
Ta có thể sử dụng câu lệnh này trong những trường hợp mong muốn nhanh chóng kiểm
tra tình trạng của các cổng mạng trên một hệ thống từ xa, hoặc ta muốn tìm kiếm các
điểm yếu hoặc lỗ hổng bảo mật trên hệ thống đó. Tuy nhiên, ta cũng nên lưu ý rằng câu
lệnh này không quét toàn bộ các cổng có thể có (tổng cộng là 65536 cổng cho mỗi giao
thức), và có thể bỏ sót một số cổng ít phổ biến nhưng vẫn có thể bị khai thác.
Lệnh nmap nào dùng để quét hệ thống mà khôn cần biết địa chỉ IP?

nmap -Pn 172.67.156.185

Câu lệnh nmap -Pn là một câu lệnh để quét một hệ thống từ xa mà không cần gửi các
gói Ping để kiểm tra sự sống còn của hệ thống. Câu lệnh này có tác dụng để bỏ qua giai
đoạn khám phá host và giả định rằng hệ thống đích luôn hoạt động.
Cách sử dụng câu lệnh này là nhập vào địa chỉ IP của hệ thống ta muốn quét sau tùy
chọn -Pn.
Ví dụ: nmap -Pn 192.168.0.1. Ta cũng có thể sử dụng tên miền hoặc tên máy chủ thay
cho địa chỉ IP.
Ta có thể sử dụng câu lệnh này trong những trường hợp mong muốn quét một hệ thống
mà ta biết chắc chắn rằng nó đang hoạt động, hoặc ta muốn quét một hệ thống mà có
thể bị chặn các gói ping bởi các thiết bị bảo vệ như tường lửa. Tuy nhiên, ta cũng nên

70
lưu ý rằng câu lệnh này có thể làm tăng thời gian quét và giảm độ chính xác của kết
quả.
Câu lệnh `nmap --script=ssh-auth-methods,ssh-hostkey scanme.nmap.org`
sử dụng hai script của Nmap là `ssh-auth-methods` và `ssh-hostkey` để quét máy chủ
`scanme.nmap.org`.
Script `ssh-auth-methods` trả về các phương thức xác thực mà máy chủ SSH hỗ trợ.
Đây được coi là một script thuộc loại "xâm nhập" vì nó bắt đầu một quá trình xác thực
với một tên người dùng có thể không hợp lệ. Kết nối bị bỏ rơi có thể sẽ được ghi lại².
Script `ssh-hostkey` hiển thị các khóa hostkey của SSH. Nó hiển thị dấu vân tay khóa
và (với độ chi tiết đủ cao) chính khóa công khai của máy chủ SSH đích. Nó ghi lại các
khóa host được phát hiện trong nmap.registry để sử dụng cho các script khác. Đầu ra có
thể được điều khiển bằng cách sử dụng đối số script ssh_hostkey. Bạn cũng có thể so
sánh khóa đã lấy được với các khóa trong tệp known-hosts của bạn bằng cách sử dụng
đối số known-hosts. Script cũng bao gồm một postrule kiểm tra các máy chủ trùng lặp
bằng cách sử dụng các khóa đã thu thập⁵.
Trường hợp sử dụng câu lệnh này có thể là để kiểm tra các phương thức xác thực và
khóa hostkey của máy chủ SSH đích.

71
Câu lệnh `nmap 192.168.94.135-140`
Câu lệnh `nmap 192.168.94.135-140` có thể được sử dụng để quét các cổng mở
trên các máy tính có địa chỉ IP từ 192.168.94.135 đến 192.168.94.140 . Điều này có thể
giúp bạn kiểm tra xem các máy tính này có đang chạy các dịch vụ nào không và liệu
chúng có đang mở cổng nào cho phép truy cập từ xa hay không.
Trường hợp sử dụng cho câu lệnh này có thể là khi bạn muốn kiểm tra xem các
máy tính trong mạng của mình có đang chạy các dịch vụ không an toàn hay không hoặc
khi bạn muốn kiểm tra xem liệu các máy tính này có đang mở cổng cho phép truy cập
từ xa hay không.

72
Câu lệnh `nmap -F -Pn 72.167.218.138`
Câu lệnh `nmap -F -Pn 72.167.218.138` sẽ quét các cổng mở trên máy tính có địa chỉ IP
là 72.167.218.138. Tùy chọn `-F` cho phép quét nhanh các cổng mở và tùy chọn `-Pn`
cho phép bỏ qua việc kiểm tra xem máy tính có đang hoạt động hay không.
Trường hợp sử dụng cho câu lệnh này có thể là khi bạn muốn kiểm tra xem máy tính
này có đang chạy các dịch vụ không an toàn hay không hoặc khi bạn muốn kiểm tra
xem liệu máy tính này có đang mở cổng cho phép truy cập từ xa hay không.

73
Câu lệnh `nmap -sV 54.236.230.133`
Câu lệnh `nmap -sV 54.236.230.133` sẽ quét các cổng mở trên máy tính có địa chỉ IP là
54.236.230.133 và cố gắng xác định phiên bản của các dịch vụ đang chạy trên các cổng
đó. Tùy chọn `-sV` cho phép Nmap thực hiện việc xác định phiên bản dịch vụ.
Trường hợp sử dụng cho câu lệnh này có thể là khi bạn muốn kiểm tra xem máy tính
này có đang chạy các dịch vụ không an toàn hay không hoặc khi bạn muốn kiểm tra
xem liệu máy tính này có đang mở cổng cho phép truy cập từ xa hay không.

74
Câu lệnh `nmap -sP scanme.nmap.org --script=auth`
Câu lệnh `nmap -sP scanme.nmap.org --script=auth` sẽ thực hiện quét ping để kiểm tra
xem máy chủ có địa chỉ là scanme.nmap.org có đang hoạt động hay không và chạy kịch
bản NSE `auth` để thu thập thông tin về xác thực trên máy chủ đó. Tùy chọn `-sP` cho
phép Nmap thực hiện quét ping và tùy chọn `--script=auth` cho phép Nmap chạy kịch
bản NSE `auth`.
Trường hợp sử dụng cho câu lệnh này có thể là khi bạn muốn kiểm tra xem máy chủ
này có đang hoạt động hay không và thu thập thông tin về các phương thức xác thực
được sử dụng trên máy chủ này.

Thực hiện quét một danh sách các địa chỉ IP từ tập tin ips.txt:
nmap -iL <đường dẫn tới file>.txt, ví dụ ta có lệnh sau
nmap -iL Desktop/ips.txt
Ta có thể thực hiện lệnh này trên máy ảo chạy hệ điều hành kali linux, quét file
dữ liệu được chia sẻ từ máy thật thông qua chia sẻ file giữ máy ảo và máy thực.
Trước hết ta cần thực hiện việc chia sẻ file từ máy ảo sang máy thật như sau:

75
Giả sử ta có 1 file danh sách các địa chỉ IP được lưu trên màn hình desktop trên máy ảo:

76
Ta thực hiện lệnh nmap -iL Desktop/ips.txt, và cho ra kết quả:

Quét 1 danh sách các địa chỉ IP từ 1 tập tin, sau đó lưu kết quả quét vào 1 file:
nmap -iL Desktop/ips.txt -oN Desktop/result.txt

Câu lệnh nmap -iL Desktop/ips.txt -oN Desktop/result.txt sử dụng công cụ quét mạng
Nmap để thực hiện quét các máy chủ được liệt kê trong tệp ips.txt và lưu kết quả quét
vào tệp result.txt trên màn hình desktop. Tệp ips.txt chứa danh sách các địa chỉ IP được
phân tách bằng dấu xuống dòng. Khi thực hiện câu lệnh này, Nmap sẽ thực hiện quét
cổng và thu thập thông tin về hệ điều hành và ứng dụng đang chạy trên mỗi máy chủ
trong danh sách. Kết quả của quá trình quét này sẽ được lưu trữ trong tệp result.txt để
sử dụng sau này hoặc để phân tích và tìm kiếm các thiết bị trong mạng.

77
Và kết quả quét sẽ được lưu ở file có đường dẫn là Desktop/result.txt như sau:

78
Câu lệnh nmap -sS -p -A -O 44.228.249.3 -oN Desktop/kq.txt
Lệnh này sẽ sử dụng công cụ quét mạng Nmap với các tham số sau:
 -sS: sử dụng kỹ thuật quét SYN để kiểm tra tình trạng các cổng mạng.
 -p: quét tất cả các cổng mạng trên máy chủ đích.
 -A: thực hiện quét nâng cao, bao gồm cả thông tin về hệ điều hành, ứng dụng và
dịch vụ đang chạy trên máy chủ đích.
 -O: thực hiện xác định hệ điều hành của máy chủ đích.
 44.228.249.3: là địa chỉ IP của máy chủ đích cần được quét.
 -oN Desktop/kq.txt: lưu kết quả quét vào tập tin kq.txt trong thư mục Desktop.
Vì vậy, lệnh này sẽ thực hiện quét các cổng mạng và thu thập thông tin về hệ điều hành,
các ứng dụng và dịch vụ đang chạy trên máy chủ có địa chỉ IP là 44.228.249.3. Kết quả
quét sẽ được lưu vào tập tin kq.txt trong thư mục Desktop của người dùng.
Câu lệnh nmap -sP -PS ––reason 192.168.2.1-4
Lệnh nmap -sP -PS --reason 192.168.2.1-4 được sử dụng để thực hiện một ping
scan trên địa chỉ IP từ 192.168.2.1 đến 192.168.2.4 và hiển thị thông tin chi tiết về kết
quả ping.
Cụ thể, các tùy chọn trong lệnh có ý nghĩa như sau:
 -sP: Thực hiện ping scan để kiểm tra xem các địa chỉ IP trong phạm vi được chỉ
định có phản hồi hay không.
 -PS: Thực hiện TCP SYN scan để kiểm tra trạng thái của các cổng TCP trên các
địa chỉ IP được chỉ định. Tùy chọn này có thể được sử dụng để xác định xem các
cổng nào đang mở trên các máy chủ.
 --reason: Hiển thị thông tin chi tiết về các gói tin ping hoặc SYN được gửi đến
các địa chỉ IP. Thông tin này bao gồm cả lý do tại sao gói tin đó được gửi và kết
quả trả về của nó.

79
Vì vậy, với lệnh nmap -sP -PS --reason 192.168.2.1-4, bạn sẽ thực hiện một ping
scan trên các địa chỉ IP từ 192.168.2.1 đến 192.168.2.4 và xác định xem các cổng TCP
nào đang mở trên các máy chủ đó. Thông tin chi tiết về kết quả ping sẽ được hiển thị để
giúp bạn phân tích và đưa ra quyết định thích hợp.
Câu lệnh nmap --scanflags SYNURG 44.228.249.3
Lệnh "nmap --scanflags SYNURG 44.228.249.3" được sử dụng để quét
cổng trên một địa chỉ IP cụ thể với các cờ TCP được chỉ định.
 "SYN" là một cờ TCP được sử dụng trong quá trình bắt tay TCP, thường
được sử dụng để bắt đầu một kết nối TCP.
 "URG" là một cờ TCP được sử dụng để đánh dấu các dữ liệu khẩn cấp.
 "RST" được sử dụng để báo hiệu rằng kết nối TCP bị đóng ngay lập tức.
 "FIN" được sử dụng để kết thúc một kết nối TCP.
Với lệnh này, nmap sẽ gửi các gói tin TCP có các cờ đã chỉ định đến địa chỉ
IP được chỉ định và quét các cổng đang mở trên máy chủ đó. Lệnh này có thể
được sử dụng để kiểm tra bảo mật hệ thống, tìm kiếm các cổng đang mở và đánh
giá khả năng tấn công của một máy chủ từ xa.
Tuy nhiên, việc quét mạng mà không được phép hoặc trái với chính sách
của tổ chức có thể dẫn đến những hậu quả không mong muốn, vì vậy hãy đảm bảo
bạn có quyền truy cập và phép lệnh để thực hiện quét này.

80
KẾT LUẬN
Tổng kết, Nmap là một công cụ rất mạnh mẽ cho việc quét mạng và xác định
các máy chủ và dịch vụ được sử dụng. Từ việc phân tích các cổng mạng đến phát
hiện các lỗ hổng bảo mật trong một hệ thống, Nmap cung cấp một phạm vi rộng
lớn các tính năng và chức năng để giúp các chuyên gia bảo mật, quản trị viên hệ
thống và các chuyên gia mạng nắm bắt và kiểm soát các hệ thống của họ.
Nmap không chỉ là một công cụ cho phép kiểm tra bảo mật mạng hiệu quả
mà còn là một công cụ phong phú cho các chuyên gia an ninh mạng. Các tính năng
như xác định hệ điều hành và ứng dụng đang chạy trên các máy chủ và thiết bị
mạng, tìm kiếm các máy chủ ẩn, phân tích chuyển mạch và định tuyến, và nhiều
tính năng khác cũng đáng được nhắc đến.
Nmap cũng được sử dụng rộng rãi trong các dự án phát triển và nghiên cứu
mạng, và đã được sử dụng để giải quyết các vấn đề trong các khu vực như IoT,
điện toán đám mây, và các hệ thống khác. Với một cộng đồng phát triển rộng lớn
và đầy nhiệt huyết, Nmap đang được cải tiến và phát triển liên tục.
Tóm lại, Nmap là một công cụ quét mạng vô cùng đa chức năng, cung cấp
cho người dùng một loạt các tính năng và chức năng để xác định, kiểm tra và quản
lý các máy chủ và dịch vụ trên mạng. Với tính linh hoạt và khả năng tùy chỉnh cao,
Nmap là một công cụ không thể thiếu trong công tác quản lý và bảo mật mạng của
các tổ chức và cá nhân.

81
Tài liệu tham khảo
[1] G. F. Lyon, “Nmap network scanning: official Nmap project guide to network
discovery and security scanning,” p. 434, 2008.
[2] N. Marsh, Nmap® Cookbook The fat-free guide to network scanning.
[3] “No Title.” [Online]. Available:
https://tools.kali.org/informationgathering/unicornscan.
[4] N. El-nazeer and K. Daimi, “Evaluation of Network Port Scanning Tools.”

82

You might also like