TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO MÔN HỌC
HỆ PHÂN TÁN
ĐỀ TÀI:
Tìm hiểu bộ công cụ Nmap
Sinh viên thực hiện
Giảng viên
: DƯƠNG PHƯƠNG NAM
: MAI QUANG VINH
: TS. NGÔ HẢI ANH
Chuyên ngành
: QUẢN TRỊ AN NINH MẠNG
Lớp
: D11_QTANM
Hà Nội , tháng 05 năm 2019
LỜI CẢM ƠN
1
Trước tiên, chúng em xin gửi lời cám ơn chân thành tới thầy TS. Ngô Hải
Anh đã nhiệt tình giảng dạy và truyền đạt những kiến thức nền tảng quý báu về
môn học “Hệ phân tán” và đưa ra những nhật xét góp ý để chúng em có thể
hoàn thành báo cáo. Dưới đây là bài báo cáo phục vụ kiểm tra hết môn “Hệ
phân tán” của chúng em. Trên ý tưởng là “Tìm hiểu về cách thức hoạt động
của Nmap”.
Mặc dù có nhiều cố gắng trong quá trình học tập cũng như trong thời gian
thực hiện báo cáo, nhưng với lượng kiến thức hạn hẹp nên báo cáo của chúng
em không thể tránh khỏi thiếu sót. Chúng em rất mong nhận được sự góp ý quý
báu của tất cả các thầy, các cô cũng như tất cả các bạn để báo cáo của chúng em
được hoàn thiện hơn.
Chúng em xin chân thành cảm ơn!
Trân trọng!
Hà Nội, tháng 05 năm 2019
Sinh viên thực hiện:
Dương Phương Nam
Mai Quang Vinh
2
MỤC LỤC
LỜI CẢM ƠN......................................................................................................2
TÓM TẮT VỀ NỘI DUNG ĐỀ TÀI..................................................................1
LỜI NÓI ĐẦU.....................................................................................................2
CHƯƠNG 1: GIỚI THIỆU CHUNG................................................................3
1.1. Giao thức TCP............................................................................................3
1.1.1. Cấu tạo gói tin TCP...............................................................................3
1.1.1. Quá trình một phiên làm việc TCP với Server..................................5
1.2. Nguyên tắc quét cổng trên một hệ thống.................................................6
1.2.1. TCP Scan..............................................................................................6
1.2.2. UDP Scan..............................................................................................9
1.3. Giới thiệu bộ công cụ Nmap....................................................................10
CHƯƠNG II: CÁC TÍNH NĂNG VÀ CÁCH SỬ DỤNG NMAP................13
2.1. Các giai đoạn của Nmap Scan.................................................................13
2.2. Các trạng thái quét của Nmap.............................................................18
2.3. Cách sử dụng Nmap cơ bản....................................................................19
2.3.1. Xác định mục tiêu cần quét...............................................................19
2.3.2. Kỹ thuật về phát hiện máy chú (Host Discovery)........................20
2.4. Các tùy chọn quét và kỹ thuật chọn cổng..............................................23
2.4.1. Các tùy chọn quét của Nmap............................................................23
2.4.2. Kỹ thuật quét cổng mà Nmap hỗ trợ...............................................24
2.4.3. Kỹ thuật lựa chọn cổng khi quét......................................................27
CHƯƠNG III: NMAP SCRIPT ENGINE.......................................................29
3.1. Giới thiệu Nmap Script Engine..............................................................29
3.2. Các lệnh cơ bản NSE...............................................................................30
CHƯƠNG IV : DEMO SỬ DỤNG NMAP VỚI MỘT SỐ TRƯỜNG HỢP 36
4.1. Demo sử dụng Nmap..................................................................................36
4.1.1. Phát hiện máy chủ (Host Discovery)..................................................36
4.1.2. Quét cổng (Scan Port)..........................................................................40
4.1.3. Nmap Script Engine (NSE).................................................................43
CHƯƠNG V: TỔNG KẾT................................................................................47
3
TÓM TẮT VỀ NỘI DUNG ĐỀ TÀI
Đề tài:
Tìm hiều bộ công cụ Nmap.
Mục tiêu – Yêu cầu:
Tìm hiểu về bộ công cụ Nmap.
Tìm hiểu về cách hoạt động, cách sử dụng công cụ Nmap.
Tìm hiểu về những cách thức Scan Port của Nmap.
Demo sử dụng bộ công cụ Nmap, Zenmap vào trường hợp cụ thể, thực tế.
Kết quả đạt được:
Hiểu về nguồn gốc, công dụng của bộ công cụ Nmap.
Biết cách sử dụng, ứng dụng bộ công cụ Nmap.
Hoàn thành báo cáo, thuyết trình.
4
LỜI NÓI ĐẦU
Trong thời đại công nghiệp 4.0 hiện nay, thì vai trò của Công nghệ Thông
tin nói chung và Internet nói riêng ngày càng vô cùng quan trọng. Điều này kéo
theo đa phần các doanh nghiệp, công ty hay các tổ chức đều phải phụ thuộc vào
máy vi tính. Chính vì vậy, luôn có nhiều ý đồ phá hoại đã nhắm vào hệ thống
này, và yếu tố từ những sự cạnh tranh trên thị trường chính là một trong những
nguyên nhân phổ biến khiến các hệ thống của các công ty tổ chức đó được nhắm
đến. Do vậy để bảo đảm rằng các hệ thống, máy tính hoạt động trơn tru, liên tục
đòi hỏi hệ thống phải trang bị những công cụ, những biện pháp phòng thủ,
những hệ thống cảnh báo, bảo mật cao nhằm chống lại những tin tặc. Một trong
những bộ công cụ được các chuyên gia an ninh mạng sử dụng và đề xuất đến đó
chính là bộ công cụ Nmap (Network Mapped) một công cụ bảo mật được dùng
để giám sát mạng, nó được phát triển bởi Flydor Vaskovich và công bố lần đầu
tiên vào tháng 9 năm 1997. Nó đã và đang ngày cảng trở nên nổi tiếng. Và để
hiểu rõ hơn về các tính năng cũng như cách thức áp dụng công cụ này thì trong
bài báo cáo này chúng em sẽ mang đến cái nhìn tổng quan cũng như tác dụng rõ
ràng và kèm đó là hướng dẫn sử dụng một cách cơ bản và dễ hiểu nhất về bộ
công cụ Nmap – để chúng ta có thể làm chủ bộ công cụ này. Chúng em xin chân
thành cảm ơn!
5
CHƯƠNG 1: GIỚI THIỆU CHUNG
1.1.
Giao thức TCP
TCP (Transmission Control Protocol - "Giao thức điều khiển truyền
vận") là một giao thức mạng cơ bản và quan trọng được sử dụng trong việc
truyền dữ liệu qua một mạng nào đó Sử dụng TCP, các ứng dụng trên các máy
chủ được nối mạng có thể tạo các "kết nối" với nhau, mà qua đó chúng có thể
trao đổi dữ liệu hoặc các gói tin (packet).
Là một trong các giao thức cốt lõi của bộ giao thức TCP/IP.
Giao thức này đảm bảo chuyển giao dữ liệu tới nơi nhận một cách đáng
tin cậy và đúng thứ tự. TCP còn phân biệt giữa dữ liệu của nhiều ứng dụng
(chẳng hạn, dịch vụ Web và dịch vụ thư điện tử) đồng thời chạy trên cùng một
máy chủ.
TCP hỗ trợ nhiều giao thức ứng dụng phổ biến nhất trên Internet và các
ứng dụng kết quả, trong đó có WWW, thư điện tử và Secure Shell.
1.1.1. Cấu tạo gói tin TCP
TCP là giao thức hướng kết nối (connection-oriented) nghĩa là khi muốn
truyền dữ liệu thì phải thiết lập kết nối trước.
Kết nối TCP hỗ trợ cơ chế full-duplex (truyền và nhận dữ liệu cùng một
lúc).
Ngoài ra, nó còn cung cấp cơ chế đánh số gói tin (sequencing): để ráp các
gói tin cho đúng ở điểm nhận, cung cấp cơ chế báo nhận (Acknowledgement) và
đặc biệt là nó có thể phục hồi dữ liệu không may bị mất trên đường truyền.
6
Hình 1.1: Cấu tạo gói tin TCP
Ở đây ta chỉ để ý tới các thiết lập Flag trong gói tin TCP nhằm mục đích sử
dụng để Scan Port:
Thông số SYN để gửi yêu cầu kết nối giữa hai máy tính.
Thông số ACK để trả lời, cho phép kết nối giữa hai máy có thể bắt đầu
được thực hiện.
Thông số FIN để kết thúc quá trình kết nối giữa hai máy.
Thông số RST từ Server để nói cho Client biết rằng giao tiếp này bị cấm
(không thể sử dụng).
Thông số PSH sử dụng kết hợp với thông số URG.
Thông số URG sử dụng để thiết lập độ ưu tiên cho gói tin này.
Toàn bộ các thông số này trong gói tin nó chỉ thể hiện là 1 hoặc 0 nếu là
0 thì gói tin TCP không thiết lập thông số này, nếu là 1 thì thông số nào
đó đã được thực hiện nó sẽ lần lượt trong 8 bits trong phần Flag.
1.1.1. Quá trình một phiên làm việc TCP với Server
Khi Client muốn thực hiện một kết nối TCP với Server:
7
Hình 1. 1. Quá trình Client khởi tạo kết nối TCP với Server
Bước 1: Host A gửi cho B một gói tin có cờ SYN được bật lên.
Bước 2: Host B nhận được gói tin thì B gửi lại gói tin có cờ SYN được bật
lên, kèm theo đó là cờ ACK (để xác nhận).
Bước 3: Sau khi kết nối đã được thiết lập thì A gởi tin để đáp ứng nhu cầu
của B. Và chỉ có cờ ACK được bật lên bởi gói tin bước 3 được dùng để báo nhận
cho gói tin bước 2.
Khi Client muốn kết thúc một phiên làm việc với Server:
Hình 1. 2. Quá trình Client kết thúc phiên làm việc TCP với Server
Bước 1: Client gửi đến Server một gói tin FIN ACK.
Bước 2: Server gửi lại cho Client một gói tin ACK.
Bước 3: Server lại gửi cho Client một gói FIN ACK.
Bước 4: Client gửi lại cho Server gói ACK và quá trình ngắt kết nối giữa
Server và Client được thực hiện.
1.2.
Nguyên tắc quét cổng trên một hệ thống
8
1.2.1. TCP Scan
Trên gói TCP/UDP có 16 bít dành cho Port Number điều đó có nghĩa nó
có tử 1-65535 port. Không thể một hacker nào lại scan toàn bộ các port trên hệ
thống, chúng chỉ scan những port hay sử dụng nhất thường chỉ sử dụng từ port 1
tới port 1024. Dựa vào nguyên tắc truyền thông TCP ta có thể biết được trạng
thái các port trên hệ thống máy mục tiêu.
Dựa vào các nguyên tắc truyền thông tin của TCP chúng ta có thể Scan
Port nào mở trên hệ thống bằng nhưng phương thức sau đây:
- SYN Scan: Khi Client gửi gói SYN với một thông số Port nhất định tới
Server nếu Server gửi về gói SYN/ACK thì Client biết Port đó trên Server
được mở. Nếu Server gửi về cho Client gói RST/SYN thì biết port đó trên
Server đóng.
Hình 1. 3. SYN Scan
- FIN Scan: Khi Client chưa có kết nối tới Server nhưng vẫn tạo ra gói FIN
với số port nhất định gửi tới Server cần scan. Nếu Server gửi về gói ACK
thì Client biết port đó đang được mở trên Server. Nếu Server gửi về gói
RST thì Client biết Server đang đóng port đó.
Hình 1. 4. FIN Scan
9
- NULL Scan: Client sẽ gửi tới Server những gói TCP với số port nhất định
cần scan mà không chứa các thống số Flag như : FIN, URG, PSH, nếu
Server gửi lại gói RST thì biết port đó trên Server bị đóng.
Hình 1. 5. NULL Scan
- XMAS Scan: Client sẽ gửi những gói tin TCP với số port nhất định cần
scan chứa nhiều thông số Flag như: FIN, URG, PSH. Nếu Server trả về
gói RST tôi biết port đó trên Server bị đóng.
Hình 1.6: XMAS Scan
- TCP Connect: Phương thức này rất thực tế nó gửi đến Server những
gói tin yêu cầu kết nối thực tế tới các port cụ thể trên Server. Nếu Server
trả về gói SYN/ACK thì Client biết port đó mở, nếu Server gửi về gói
RST/ACK thì Client biết port đó trên Server bị đóng.
10
Hình 1.7. TCP Connect Scan
- ACK Scan: dạng Scan này nhằm mục đích tìm những Access Controll
List trên Server cố gắng kết nối tới Server bằng gói ICMP nếu nhận được
gói là Host Unreachable thì Client sẽ biết port đó trên server đã bị lọc.
Hình 1.8. TCP ACK Scan
Ngoài ra còn có các loại scan trong TCP scan dễ bị tấn công như:
- RPC Scan: Cố gắng kiểm tra xem hệ thống có mở port cho dịch vụ RPC
không.
- Windows Scan: Tương tự như ACK Scan, nhưng nó có thể chỉ thực hiện
trên một số port nhất định.
- FTP Scan: Có thể sử dụng để xem dịch vụ FTP có được sử dụng trên
Server hay không.
1.2.2. UDP Scan
Nếu như gói tin truyền bằng TCP để đảm bảo sự toàn vẹn của gói tin sẽ
luôn được truyền tới đích. Gói tin truyền bằng UDP sẽ đáp ứng nhu cầu truyền
11
tải dữ liệu nhanh với các gói tin nhỏ. Với quá trình thực hiện truyền tin bằng
TCP kẻ tấn công dễ dàng Scan được hệ thống đang mở những port nào dựa trên
các thông số Flag trên gói TCP.
UDP là loại giao thức connectionless (nghĩa là có gói tin nào là đẩy ngay
vào đường truyền mà không cần thiết lập các kết nối trước).
UDP không đảm bảo tính tin cậy khi truyền dữ liệu và không có cơ chế
phục hồi dữ liệu (nó không quan tâm gói tin có đến đích hay không, không biết
gói tin có bị mất mát trên đường đi hay không).
Cấu trúc gói tin UDP:
Hình 1.9: Cấu trúc gói tin UDP
Như ta thấy gói UDP không chứa các thông số Flag, cho nên không thể sử
dụng các phương thức Scan port của TCP sử dụng cho UDP được. Tuy vậy, hầu
hết hệ các thống đều cho phép gói ICMP.
Nếu một port bị đóng, khi Server nhận được gói ICMP từ client nó sẽ cố
gắng gửi một gói ICMP type 3 code 3 port với nội dung là "unreachable" về
12
Client. Khi thực hiện UDP Scan chúng ta hãy chuẩn bị tinh thần nhận được các
kết quả không có độ tin cậy cao.
1.3.
Giới thiệu bộ công cụ Nmap
Nmap (Network Mapper) là một công cụ quét, theo dõi và đánh giá bảo
mật một hệ thống mạng được phát triển bởi Gordon Lyon (hay còn được biết
đến với tên gọi Fyodor Vaskovich) được công bố lần đầu tiên vào tháng 9 năm
1997. Kết hợp hàng chục kĩ thuật tiên tiến, dễ dàng vượt qua các bộ lọc từ hệ
thống như các bộ lọc IP, tường lửa, bộ định tuyến và một số bộ lọc khác. Bao
gồm cả cơ chế quét port (TCP và UDP), phát hiện hệ điều hành, phát hiện phiên
bản, quét ping và có thể sử dụng để quét hệ thống mạng lớn với hàng trăm ngàn
máy tính.
Hình 1.10. Logo của công cụ Nmap
Nmap là phần mềm mã nguồn mở miễn phí, ban đầu chỉ được phát triển
trên nền tảng Linux sau đó được phát triển trên nhiều nền tảng khác nhau như
Windows, Solari, Mac OS… và phát triển thêm phiên bản giao diện người dùng
(zenmap).
Nmap đã góp phần giúp cho mạng Internet ngày càng bảo mật hơn cũng
như cung cấp cho các quản trị viên/ kiểm thử viên/ hacker có môt công cụ tiên
13
tiến để khám phá mạng của họ. Nmap tải về miễn phí, và kèm theo đó là mã
nguồn chúng ta có thể chính sửa và phân phối lại theo các điều khoản được
phép.
Nmap được trao rất nhiều giải thưởng, bao gồm cả giải “Sản phẩm bảo mật
công nghệ thông tin của năm” theo tạp chí Linux. Hàng nghìn người dùng tải về
Nmap mỗi ngày và bao gồm trên rất nhiều hệ điều hành. Nmap nằm trong Top
10 (trên tổng 30,000) phần mềm tại trang Freshmeat.Net và được hỗ trợ bởi một
cộng đồng các nhà phát triển và người dùng vô cùng lớn như Facebook và
Twitter.
Các tính năng của Nmap bao gồm:
Phát hiện máy chủ - Xác định máy chủ trên mạng. Ví dụ: liệt kê các máy
chủ đáp ứng các yêu cầu TCP và / hoặc ICMP hoặc mở một cổng cụ thể.
Quét cổng - liệt kê các cổng mở trên máy chủ đích.
Phát hiện phiên bản - Truy vấn các dịch vụ mạng trên các thiết bị từ xa để
xác định tên ứng dụng và số phiên bản.
Phát hiện hệ điều hành - Xác định đặc điểm hệ điều hành và phần cứng
của thiết bị mạng.
Tương tác có thể đọc được với mục tiêu - sử dụng Nmap Scripting
Engine (NSE) và ngôn ngữ lập trình Lua.
Nmap có thể cung cấp thêm thông tin về các mục tiêu, bao
gồm tên DNS ngược, loại thiết bị và địa chỉ MAC.
Các ứng dụng điển hình của Nmap:
Kiểm tra tính bảo mật của thiết bị hoặc tường lửa bằng cách xác định các
kết nối mạng có thể được thực hiện hoặc thông qua thiết bị.
Xác định các cổng mở trên máy chủ đích để chuẩn bị kiểm toán.
Kiểm kê mạng , lập bản đồ mạng , bảo trì và quản lý tài sản.
14
Kiểm tra tính bảo mật của mạng bằng cách xác định máy chủ mới.
Tạo lưu lượng truy cập đến máy chủ trên mạng, phân tích phản hồi và đo
thời gian phản hồi.
Tìm kiếm và khai thác lỗ hổng trong một mạng.
Truy vấn DNS và tìm kiếm tên miền phụ.
15
CHƯƠNG II: CÁC TÍNH NĂNG VÀ CÁCH SỬ DỤNG NMAP
2.1.
Các giai đoạn của Nmap Scan
Chương này sẽ đề cập đến một số ứng dụng của Nmap, chúng ta sẽ xem
sét những gì sẽ xảy ra khi Nmap chạy. Trong giai đoạn tiến hành quét, mỗi giai
đoạn hoàn thiện trước khi một giai đoạn kế tiếp bắt đầu. Theo các giai đoạn
được mô tả dưới đây, thì Nmap có thêm nhiều tác dụng hơn việc chỉ để quét
cổng.
Script pre-scanning: Các Nmap Scripting Engine (NSE) sử dụng một tập
hợp các script chuyên dụng để đạt được nhiều thông tin hơn về hệ thống từ xa.
NSE không được thực hiện trừ khi chúng ta yêu cầu với các tùy chọn như
--script hoặc -sC, và giai đoạn trước khi quét chỉ xảy ra khi các lệnh đó được
lựa chọn. Giai đoạn này để cho các script mà chỉ có thể chạy một lần mỗi khi
Nmap thực hiện chứ không phải chạy riêng biệt chống lại các mục tiêu cá nhân.
Ví dụ như phát hiện DHCP và phát hiện dịch vụ broadcast dns, truy vấn sử dụng
phát sóng để có được thông tin từ các dịch vụ mạng phổ biến.
Target enumeration: Trong giai đoạn này, Nmap nghiên cứu các máy
chủ chỉ định được cung cấp bởi người sử dụng, mà có thể là một sự kết hợp của
các tên máy chủ DNS, địa chỉ IP, ký hiệu mạng CIDR và nhiều hơn nữa. Nmap
giải quyết những chỉ định vào một danh sách các địa chỉ IPv4 hay IPv6 để quét.
Giai đoạn này không thể bỏ qua kể từ khi nó là điều cần thiết cho chức năng
quét sâu hơn, nhưng chúng ta có thể đơn giản hóa việc xử lý bằng cách chỉ các
địa chỉ IP để Nmap không phải làm độ phân giải lên phía trước. Nếu chúng ta
vượt qua các tùy chọn -n –sL (Quét mà không tra cứu DNS giúp việc quét nhanh
hơn) thì Nmap sẽ in ra các mục tiêu và không thực hiện quét thêm.
Host discovery (ping scanning): Quét mạng thường bắt đầu khi phát
hiện ra có mục tiêu trên mạng đang trực tuyến và do vậy giá trị điều tra sâu hơn.
Quá trình này được gọi là Host discovery hoặc Ping scanning. Nmap cung cấp
nhiều kỹ thuật phát hiện máy chủ, từ yêu cầu ARP nhanh chóng để xây dựng kết
hợp của TCP, ICMP, và các loại đầu dò. Giai đoạn này được chạy theo mặc định,
16
mặc dù chúng ta có thể bỏ qua nó (đơn giản giả định tất cả các IP mục tiêu đang
trực tuyến) bằng cách sử dụng (không ping) tùy chọn -Pn. Để thoát sau khi phát
hiện máy chủ, xác định -n -sn.
Reverse-DNS resolution: Khi Nmap đã xác định mà chủ để quét, nó sẽ
tra cứu những tên reverse-DNS của tất cả các host tìm thấy trực tuyến bằng cách
ping quét. Đôi khi tên của một máy chủ cung cấp manh mối về chức năng của
nó và cái tên làm các báo cáo dễ đọc hơn ngoài việc cung cấp duy nhất số IP.
Bước này có thể được bỏ qua với các tùy chọn: -n (không có phân giải) hoặc mở
rộng để bao gồm tất cả các IP đích (ngay cả những cái tắt) với -R (giải quyết tất
cả).
Port scanning: Đây là hoạt động cốt lõi của Nmap. Những thăm dò được
gửi đi và các câu trả lời (hoặc không phản ứng) với những thăm dò được sử
dụng để phân loại cổng từ xa vào các trạng thái như open, closed hoặc filtered.
Đó là mô tả ngắn gọn không bắt đầu để bao gồm nhiều loại scan của Nmap, lập
cấu hình scan và các thuật toán để cải thiện tốc độ và độ chính xác. Port
scanning được thực hiện theo mặc định, mặc dù chúng ta có thể bỏ qua nó với
tùy chọn -sn và vẫn thực hiện một số các traceroute sau và giai đoạn Nmap
Scripting Engine một phần bằng cách xác định tùy chọn dòng lệnh đặc biệt
(chẳng hạn như --traceroute và --script).
Version detection: Nếu bất kỳ cổng được tìm thấy sẽ được mở, Nmap có
thể xác định những phần mềm server đang chạy trên hệ thống từ xa. Nó làm điều
này bằng cách gửi một loạt các thăm dò đến các cổng mở và phù hợp với bất kỳ
phản ứng với một cơ sở dữ liệu của hàng ngàn của hơn 6.500 chữ ký dịch vụ
được biết đến.
OS detection: Nếu được yêu cầu với tùy chọn -O, Nmap tiến hành để
phát hiện hệ điều hành. Hệ điều hành khác nhau thực hiện các tiêu chuẩn mạng
bằng những con đường tinh vi khác nhau. Bằng cách đo những khác biệt, nó
thường có thể để xác định hệ điều hành chạy trên một máy chủ từ xa. Nmap phù
hợp phản ứng với một bộ tiêu chuẩn của thăm dò đối với một cơ sở dữ liệu của
17
hơn một ngàn phản ứng hệ điều hành được biết đến. Ví dụ về scan hệ điều hành
bằng nmap, có thể thấy tỉ lệ trùng khớp với các hệ điều hành bằng %, % càng
cao thì tỉ lệ máy chủ đang sử dụng hệ càng lớn.
Hình 2.1: Nmap OS Detection
Traceroute: Nmap có một thực hiện traceroute tối ưu hóa, kích hoạt tùy
chọn --traceroute. Nó có thể tìm ra router mạng tới nhiều host song song, sử
dụng các gói tin thăm dò có sẵn tốt nhất theo quy định của các giai đoạn phát
hiện trước đó của Nmap. Traceroute thường liên quan đến một vòng phân giải
ngược DNS cho các host trung gian. Ví dụ về traceroute đến địa chỉ 8.8.8.8 của
Google:
18
Hình 2.2: Nmap Traceroute
Script scanning: Hầu hết các script Nmap Scripting Engine (NSE) chạy
trong giai đoạn Script scanning này, chứ không phải là giai đoạn prescan và
postscan. NSE được cung cấp bởi ngôn ngữ lập trình Lua và một thư viện chuẩn
được thiết kế để thu thập thông tin mạng. Script chạy trong giai đoạn này thường
chạy một lần cho mỗi host đích và số cổng tương tác với chúng. Họ thường thực
hiện các nhiệm vụ như phát hiện lỗ hổng dịch vụ, phát hiện phần mềm độc hại,
thu thập thêm thông tin từ cơ sở dữ liệu và các dịch vụ mạng khác. Và tiên tiến
hơn là phát hiện phiên bản. NSE không được thực hiện trừ khi chúng ta yêu cầu
với các tùy chọn như --script hoặc -sC. Ví dụ NSE để xem dịch vụ được chạy
trên port 80:
Hình 2.3: Nmap Script Scanning
19
Output: Nmap thu thập tất cả các thông tin đã thu thập được và viết nó vào
màn hình hoặc vào một tập tin. Nmap có thể viết ra trong một số định dạng. Mặc
định của nó, định dạng có thể đọc được (định dạng tương tác). Nmap cũng cung
cấp một định dạng đầu ra dựa trên XML. Ví dụ câu lệnh truy xuất dữ liệu quét
được ra một file text, ở đây chính là file scan.txt:
Hình 2.4:Nmap Output
Còn đây là nội dung được ghi lại trong file text.
Hình 2.5. Nmap TEXT Output
20
Nmap cung cấp nhiều tùy chọn để kiểm soát việc của những giai đoạn này
chạy. Để quét các mạng lớn, mỗi giai đoạn được lặp đi lặp lại nhiều lần kể từ khi
giao dịch với các host trong nhóm nhỏ Nmap. Nó quét mỗi nhóm hoàn toàn và
kết quả đầu ra những kết quả, sau đó chuyển sang các đợt tiếp theo của host.
2.2.
Các trạng thái quét của Nmap
Open Port: Một ứng dụng tích cực chấp nhận kết nối các gói tin của TCP
và UDP, ngoài ra còn có cả SCTP trên cổng này. Các Open Port thường là nơi
thực hiện các Scan Port vì những kẻ tấn công thường nhằm vào các cổng đang
mở này để tấn công, song song với tấn công thì các quản trị viên cố gắng đóng
các Open Port hoặc bảo vệ người dùng hợp pháp bằng firewalls. Cổng mở thì
không an toàn bởi chúng khi bị quét sẽ thể hiện các dịch vụ đang chạy khi sử
dụng trên mạng.
Closed Port: Một cổng đóng có thể truy cập (nó nhận và phản ứng với
các gói tin thăm dò của Nmap), nhưng không có ứng dụng nào được gửi và lắng
nghe trên đó. Closed Port hữu ích trong việc cho thấy các máy chủ đang online,
sử dụng một địa chỉ IP và một phần của hệ điều hành. Closed Port có thể truy
cập nên nó có thể được quét cổng trường hợp một số cổng được mở ra. Người
quản trị có thể chặn cổng như với ứng dụng firewall.
Port filtered: Nmap không thể xác định bất kỳ cổng nào đang mở nếu gói
tin được lọc và ngăn cản trước khi tiến tới cổng. Filtering có thể từ một thiết bị
tường lửa, router rules, hoặc phần mền host-base firewall. Các cổng này làm thất
bại các kể tấn công bởi vì chúng cung cấp quá ít thông tin. Đôi khi chúng trả lời
với gói tin ICMP lỗi như kiểu 3 mã 13 (destination unreachable: communication
administratively prohibited), nhưng filter đơn giản là drop các thăm dò không trả
lời phổ biến.
Port Unfiltered: Đây là gói tin không được lọc có nghĩa là một cổng truy
cập, nhưng Nmap là không thể xác định xem nó là cổng mở hoặc cổng đóng.
Chỉ có ACK scan, được sử dụng để map firewalls rulesets và phân loại các cổng
21
trong trạng thái này. Quét cổng sử dụng các Scan Port như: Window scan, SYN
scan, hoặc FIN scan, có thể giúp giải quyết vấn đề an ninh cho dù các cổng được
mở.
Port open|filtered: Nmap đặt cổng ở trạng thái này khi nó là không thể
xác định được một cổng đang được mở hay lọc. Điều này xả ra khi các cổng mở
không đưa ra các trả lời phản hồi với các Scan Port dùng cho cổng mở. Không
trả lời phản hồi cũng có thể có nghĩa là một bộ lọc gói tin bị ngắt quãng hoặc
đáp ứng bất kỳ gợi ra. Nmap không biết chắc rằng cổng đang mở hay đang được
filtered. Scan kiểu UDP, IP protocol, FIN, NULL và Xmas là một trong những
cách để quét cổng dạng này.
Port closed|filtered: Trạng thái này được sử dụng khi Nmap là không thể
xác định liệu một cổng đang được đóng lại hay đang lọc. Nó chỉ được sử dụng
cho các IP ID idle quét để xác định tình trạng của máy chủ.
2.3. Cách sử dụng Nmap cơ bản
2.3.1. Xác định mục tiêu cần quét
Việc đầu tiên khi sử dụng Nmap là phải xác định được mục tiêu cần quét,
mục tiêu ở đây có thể là 1 domain, 1 IP, 1 dải địa chỉ IP, 1 danh sách (file) các IP
và domain. Ví dụ:
Mục tiêu cần quét
Câu lệnh thực thi
Quét 1 IP
nmap 192.168.1.1
Quét 1 dải IP
nmap 192.168.1.1/24
Quét 1 domain
nmap google.com
Bảng 2.1: Xác định mục tiêu cần quét
22
Ngoài ra có thể kết hợp thêm các tùy chọn sau để kết quả scan thu được đúng ý muốn
và có chọn lọc hơn:
Tùy chọn
Ý nghĩa
-iL <inputfilename>
Chọn danh sách mục tiêu
-iR <num hosts>:
Chọn mục tiêu ngẫu nhiên.
--exclude <host1[,host2][,host3],...>
Bỏ qua các host.
--excludefile <exclude_file>
Chọn danh sách bỏ qua.
Bảng 2.2. Tùy chọn khi quét mục tiêu
2.3.2. Kỹ thuật về phát hiện máy chú (Host Discovery)
Tại sao cần phát hiện máy chủ (Host Discovery), đối với 1 mục tiêu xác
định thì có vẻ không cần thiết nhưng đối với mục tiêu là 1 dải mạng với hàng
nghìn host, việc quét hàng nghìn port trên mỗi host sẽ tốn rất nhiều thời gian vì
vậy việc xác định các host đang chạy sẽ rút ngắn thời gian trong quá trình quét.
nmap sử dụng một số kĩ thuật sau để thực hiện host discovery:
Host Discovery Techniques
TCP SYN PING
TCP ACK PING
UDP PING
ICMP Ping Type
IP Protocol Ping
Câu lệnh thực thi (viết in hoa)
-PS
-PA
-PU
-PE, -PP, -PM
-PO
ARP Scan
-PR
Bảng 2.3.Host Discovery Techniques
Giải thích chi tiết:
Nếu chỉ định option -P... option này sẽ thay thế default discovery probe
thay vì add thêm vào.
TCP SYN PING (-PS)
23
-PS gửi đi gói tin TCP rỗng được set SYN flag. Port mặc định là 80. Bình
thường khi port closed, gói tin RST được gửi trả về. Khi port open, gói tin
SYN/ACK được gửi trả về. Khi đó, nmap sẽ đóng kết nối mới chuẩn bị mở bằng
cách gửi gói RST thay vì gói ACK để hoàn thành three-way-handshake và thiêt
lập full connection. Ở đây nmap không quan tâm port mở hay đóng. Chỉ cần biết
gói trả về là RST hay SYN/ACK để xác định target up hay down. Trên Unix, chỉ
có user privileged root mới có thể tạo gửi và nhận gói TCP raw. Với
unprivileged user, phương pháp thay thế được thực hiện bằng system call
connect() được khởi tạo với target port.
TCP ACK PING (-PA)
Giống với SYN Ping, nhưng khác ở chỗ gửi đi gói ACK để đồng ý thiết
lập kết nối, nhưng không có kết nối đó tồn tại, do đó target luôn trả lời bằng gói
RST, làm lộ diện sự tồn tại của target.
-PA sử dụng default port 80. Nếu unprivileged user thử option này, hoặc
IPv6 được chỉ định, system call connect() được thảo luận ở phía trên được sử
dụng. Phương pháp thay thế này không hoàn hảo vì connect() thực chất gửi đi
gói SYN thay vì gói ACK. Mục đích của việc cung cấp cả SYN và ACK ping
probe làm tăng cơ hội bypass fw. Hầu hết các admin cấu hình router và các fw
khác block incomming SYN ngoại trừ các dịch vụ public như website hay mail
server.
UDP Ping (-PU)
-PU gửi gói UDP rỗng (nếu không sử dụng --data-length để chỉ định độ
dài của dữ liệu) đến một port xác định. Nếu không chỉ định port, port mặc định
là 31,338. Chỉ định port cao không phổ biến được khuyến khích ở đây vì khi gửi
đến port open thường không mong muốn cho loại scan này. Dựa trên việc gửi
vào port close của target, nếu target up, nó sẽ trả về gói tin ICMP port
unreachable. Có nhiều loại ICMP error, như host/network unreachable hay TTL
exceeded chỉ ra host down hay unreachable. Việc không trả về kết quả có thể
xảy ra theo cách này, khi gửi gói tin UDP rỗng vào port open, hầu hết các
24
service sẽ ignore gói tin đó, và tất nhiên sẽ không có gói tin nào sẽ được trả về.
Lợi ích của kĩ thuật này chính là có khả năng bypass fw cũng như filter chỉ quan
tâm đến TCP.
ICMP Ping Type (-PE, -PP, -PM)
-PE nmap sẽ gửi gói tin imcp type 8 (echo request) đến target, và hy vọng
nhận về icmp type 0 (echo reply) từ host available. Nhưng nhiều host và firewall
block loại scan này, dẫn đến kết quả có thể không chính xác. Trong khi echo
request được xem như là dạng chuẩn của ICMP ping query, nhưng nmap không
dừng lại ở đây. ICMP standard (RFC 792) cũng chỉ định các loại request khác
như: timestamp request (code 13), information request (code 15), address mask
request (code 17). Nmap hiện tại chưa hỗ trợ gói tin information request vì nó
chưa được hỗ trợ rộng rãi (RFC 1122 nhấn mạnh "a host SHOULD NOT
implement these messages").
-PP sẽ gửi gói icmp timestamp request. ICMP code 14 sẽ trả về nếu host
available.
-PM sẽ gửi gói icmp address mask request. ICMP code 18 sẽ trả về nếu
host available.
IP Protocol Ping (-PO)
-PO gửi gói tin IP mà protocol number được set trong IP header. Nêu
không có protocol nào được chỉ định, mặc định sẽ gửi gói IP với ICMP (protocol
1), IGMP (protocol 2), IP-in-IP (protocol 4). Chú ý đối với ICMP, IGMP, TCP
(protocol 6), UDP (protocol 17), the packets are sent with the proper protocol
headers while other protocols are sent with no additional data beyond the IP
header (unless the --data-length option is specified).
Phương pháp này tìm kiếm những trả lời sử dùng cùng chung protocol khi
probe, hay ICMP unreachable message chỉ ra dấu hiệu protocol không được hỗ
trợ. Cả 2 dấu hiệu đó điều chỉ ra là host available.
ARP Scan (-PR)
25