You are on page 1of 69

BAN CƠ YẾU CHÍNH PHỦ

HỌC VIỆN KỸ THUẬT MẬT MÃ

BÁO CÁO BÀI TẬP LỚN


Nghiên cứu tìm hiểu bộ công cụ Nmap trong
dò quét mạng
Ngành: An toàn thông tin
Sinh viên thực hiện:
Nguyễn Đức Dương AT180113
Nguyễn Việt Anh AT180105
Nguyễn Thị Huyền AT180126
Nguyễn Minh Tuấn AT180149
Giảng viên hướng dẫn:
TS. Nguyễn Mạnh Thắng
Khoa An toàn thông tin – Học viện Kỹ thuật mật mã
MỤC LỤC
LỜI MỞ ĐẦU……………………………………………………………………….
CHƯƠNG I. QUY TRÌNH TẤN CÔNG HỆ THỐNG
MẠNG………………….1
1.1 Khái niệm hệ thống mạng………………………..……………………………
1
1.2 Tổng quan bài toán tấn
công………………………………………………….3
1.2.1. Cyber kill chain……………………………………………………………
5
1.2.2. Mitre ATT&CK kill chain…………………………………………………
8
Kết luận Chương
I………………………………………………………………….9
CHƯƠNG II. SỬ DỤNG NMAP TRONG DÒ QUÉT MẠNG…………………
10
2.1 Tổng quan bộ công cụ Nmap…………………………………………………
10
2.1.1. Khái niệm Nmap…………………………………………………………
10
2.1.2. Tính năng của Nmap……………………………………………….……
10
2.1.3. Ứng dụng của Nmap……………………………………………….
…….11
2.1.4. Giao thức TCP…………………………………………………….
……..11
2.1.5. Nguyễn tắc quét cổng trên một hệ thống…………………………..……
14
2.2 Tiến trình của Nmap Scan……………………………………………………
19
2.3 Trạng thái quét của Nmap……………………………………………………
24
2.4 Cách sử dụng Nmap cơ
bản…………………………………………………..26
2.4.1. Xác định mục tiêu cần
quét……………………………………………...26
2.4.2. Kỹ thuật về phát hiện máy chủ (Host Discovery)………………………
26
2.5 Các tùy chọn quét và kỹ thuật chọn cổng……………………………………
29
2.5.1. Các tùy chọn quét của Nmap….
………………………………………...29
2.5.2. Kỹ thuật quét cổng mà Nmap hỗ trợ...
………………………………….31
2.5.3. Kỹ thuật lựa chọn cổng khi quét……..
………………………………….34
2.6 Nmap Script Engine (NSE)
…………………………………………………..35
2.6.1. Giới thiệu NSE…………………………………….
…………………….35
2.6.2. Các lệnh cơ bản NSE…………………………….
……………………...36
2.6.3. Sử dụng NSE trong quét CVE…………………...
……………………...41
Kết luận Chương II……………………………………………………………….41
CHƯƠNG III. TRIỂN KHAI THỰC
NGHIỆM………………………………..45
3.1 Đặc tả chương
trình…………………………………………………………..45
3.2 Dựng phòng thí nghiệm………………………………………………………
45
3.3 Triển khai thực nghiệm………………………………………………………
48
3.3.1. Phát hiện máy chủ (Host Discovery)……………………………………
48
3.3.2. Quét cổng (Scan Port)
…………………………………………………...51
3.3.3. Sử dụng Nmap Script Engine trong dò quét lỗ
hổng…………………..56
Kết luận Chương III………………………………………………………………
57
KẾT LUẬN………………………………………………………………………..58
TÀI LIỆU THAM
KHẢO………………………………………………………...59
BẢNG PHÂN CÔNG CÔNG VIỆC

STT Họ và tên Công việc Ghi chú

1 Nguyễn Đức Dương Triển khai thực nghiệm và tìm


hiểu cách sử dụng python trong dò
quét. Thuyết trình

2 Nguyễn Việt Anh Tìm hiểu về cách sử dụng Nmap


cơ bản; Các cách chọn và kỹ thuật,
tổng quan về NSE và lệnh cơ bản
của NSE. Thuyết trình

3 Nguyễn Thị Huyền Tìm hiểu về bài toán tấn công;


Nmap, tiến trình và các trạng thái.
Trình bày Word và Slide. Thuyết
trình

4 Nguyễn Minh Tuấn Triển khai thực nghiệm và tìm


hiểu cách sử dụng python trong dò
quét. Thuyết trình
DANH MỤC MINH HỌA
Hình 1. Cấu tạo gói tin TCP...................................................................................12

Hình 2. Quá trình Client khởi tạo kết nối TCP với Server........................................13

Hình 3. Quá trình Client kết thúc phiên làm việc TCP với Server.............................14

Hình 4. SYN Scan.................................................................................................15

Hình 5. FIN Scan...................................................................................................15

Hình 6. NULL Scan...............................................................................................16

Hình 7. XMAS Scan..............................................................................................16

Hình 8. TCP Connect Scan.....................................................................................17

Hình 9. TCP ACK Scan.........................................................................................17

Hình 10. Cấu trúc gói tin UDP................................................................................18

Hình 11. Nmap OS Detection.................................................................................21

Hình 12. Nmap Traceroute.....................................................................................22

Hình 13. Nmap Script Scanning.............................................................................22

Hình 14. Nmap Output...........................................................................................23

Hình 15. Nmap TEXT Output................................................................................24

Hình 16. Script Systems Info trên Windows 10.......................................................36


Hình 17. Nmap Script Engine HTML-tiltle.............................................................38

Hình 18. Nmap Script Engine Ms-sql-info..............................................................39

Hình 19. Nmap Script Engine Nbstat......................................................................39

Hình 20. Nmap Script Engine Whois......................................................................40

Hình 21. Thư mục chứa Nmap Scripts....................................................................41

Hình 22. Cài đặt Metasploitable 2…………………………………………………….45


Hình 23. Khởi động Metaspoitable 2…………………………………………………..46
Hình 24. Hoàn tất cài đặt Metaspoitable 2……………………………………………..46
Hình 25. Màn hình đăng nhập………………………………………………………….47
Hình 26. Kết quả lấy IP máy mục tiêu………………………………………………….47
Hình 27. Ping tới máy chủ ảo Metaspoitable……………………………………………48
Hình 28. Kỹ thuật TCP SYN Ping………………………………………………………48
HÌnh 29. Kỹ thuật TCP ACK Ping……………………………………………………...49
Hình 30. Kỹ thuật ICMP Ping…………………………………………………………..49
Hình 31. Kỹ thuật UDP Ping……………………………………………………………50
Hình 32. ARP Scan 1 trang web………………………………………………………...50
Hình 33. ARP Scan máy cùng mạng…………………………………………………….51
Hình 34. Scan hệ điều hành bằng Nmap……………………………………..………….51
Hình 35. Kỹ thuật SYN Scan……………………………………………………………52
Hình 36. Kỹ thuật TCP FIN Scan………………………………………………………..52
Hình 37. TCP FIN Scan một dải mạng…………………………………………………..53
Hình 38. Code Host Discovery…………………………………………………………..53
Hình 39. Kết quả code Host Discovery………………………………………………….54
Hình 40. Code Quét cổng………………………………………………………………..55
Hình 41. Kết quả code Quét cổng………………………………………………………..56
Hình 42. Kết quả thu được với tùy chọn --script…………………………………………56
Hình 43. Code dò quét lỗ hổng…………………………………………………………...57
Hình 44. Kết quả code dò quét lỗ hổng…………………………………………………..57

DANH MỤC BẢNG


Bảng 1.1. Xác định mục tiêu cần quét………………………………………………26

Bảng 2.1 Tùy chọn khi quét mục tiêu……………………………………………….26

Bảng 3.1 Host Discovery Techniques……………………………………………….27

LỜI MỞ ĐẦU
 Lý do chọn đề tài:
Đi kèm với sự phát triển của ngành công nghệ mạng hiện nay là những tiềm
ẩn, rủi ro trong vấn đề bảo mật. Để giúp ích cho các chuyên gia bảo mật và các nhà
quản trị mạng trong việc kiểm tra rà soát hệ thống mạng của mình để sớm phát hiện
các tác nhân gây hại cũng như những lỗ hổng bảo mật ẩn chứa bên trong, vô số các
công cụ giám sát tiên tiến đóng vai trò là những trợ thủ đắc lực có khả năng lập sẵn
bản đồ hệ thống mạng và kiểm soát bảo mật được cho ra đời. Và mặc dù Với tính
chất có mã nguồn mở, đa nền tảng và đặc biệt là miễn phí – ưu điểm nổi bật của
Nmap giúp nhiều đối tượng dễ dàng tiếp cận và sử dụng, Nmap vẫn luôn là một
trong những lựa chọn tốt nhất của các chuyên gia bảo mật và các nhà quản trị mạng.
Từ những lý do trên, nhóm em đã quyết định lựa chọn đề tài “Nghiên cứu tìm
hiểu bộ công cụ Nmap trong dò quét mạng.” làm đề tài báo cáo cho nhóm.

 Mục tiêu
Nghiên cứu, tìm hiểu công cụ Nmap trong việc xác định các thiết bị và dịch
vụ đang hoạt động trên mạng, cung cấp thông tin về hệ điều hành và phát hiện các
nguy cơ bảo mật. Qua đó, người quản trị có những thông báo và hành động kịp thời
giúp người dùng tăng cường an ninh mạng và phát hiện các lỗ hổng bảo mật trên hệ
thống
Mục tiêu mà nhóm mong muốn đạt được sau khi hoàn thành báo cáo đó là:
- Nắm cơ bản khái niệm, đặc điểm, cách thức hoạt động của bộ công cụ
Nmap trong dò quét mạng.
- Demo sử dụng Nmap trong việc dò quét một số lỗ hổng
CHƯƠNG I. QUY TRÌNH TẤN CÔNG HỆ THỐNG MẠNG
1.1. Khái niệm hệ thống mạng
Hệ thống mạng hay còn gọi là mạng máy tính (tiếng Anh: computer network
hay network system) là sự kết hợp của một nhóm các máy tính và thiết bị ngoại vi
kết nối với nhau thông qua các thiết bị nối kết mạng và phương tiện truyền thông
(giao thức mạng, môi trường truyền dẫn) theo một cấu trúc nào đó và các máy tính
này có thể trao đổi thông tin dữ liệu qua lại với nhau.
Mạng máy tính có rất nhiều ích lợi:

 Tiết kiệm được tài nguyên phần cứng.

 Giúp trao đổi dữ liệu dễ dàng.

 Chia sẻ ứng dụng.

 Tập trung dữ liệu, dễ bảo mật, dễ sao lưu.

 Sử dụng internet…
Các loại mạng máy tính thông dụng:
 Mạng cục bộ:

 Mạng LAN hay còn gọi là mạng cục bộ (Local Area Network) là một nhóm
các máy tính và thiết bị truyền thông mạng được kết nối với nhau trong một
khu vực nhỏ như tòa nhà cao ốc, trường đại học, khu giải trí...

 Mạng LAN có các đặc điểm:

 Băng thông lớn để có khả năng chạy các ứng dụng trực tuyến như xem
phim, giải trí, hội thảo qua mạng.

 Kích thước mạng bị giới hạn bởi thiết bị.

 Chi phí thiết kế, lắp đặt mạng LAN rẻ

1
 Quản trị đơn giản.
 Mạng đô thị:

 Mạng đô thị MAN (Metropolitan Area Network) gần giống như mạng LAN
nhưng giới hạn kích thước của nó là một thành phố hay một quốc gia. Mạng
MAN kết nối các mạng LAN lại với nhau thông qua môi trường truyền dẫn
và các phương thức truyền thông khác nhau.

 Mạng MAN có các đặc điểm sau:

 Băng thông ở mức trung bình, đủ để phục vụ các ứng dụng cấp thành
phố hay quốc gia như chính phủ điện tử, thương mại điện tử, các ứng
dụng của các ngân hàng…

 Do MAN kết nối nhiều LAN nên việc quản trị sẽ gặp khó khăn hơn,
đồng thời độ phức tạp cũng tăng theo.

 Chi phí các thiết bị MAN tương đối đắt tiền.


 Mạng diện rộng:

 Mạng diện rộng WAN (Wide Area Network) có phạm vi bao phủ một vùng
rộng lớn, có thể là quốc gia, lục địa hay toàn cầu. Mạng WAN thường là
mạng của các công ty đa quốc gia hay toàn cầu.

 Mạng WAN lớn nhất hiện nay là mạng Internet. Mạng WAN là tập hợp của
nhiều mạng LAN và MAN được nối lại với nhau thông qua các phương tiện
như vệ tinh, sóng vi ba, cáp quang, điện thoại ….

 Mạng WAN có các đặc điểm sau:

 Băng thông thấp, dễ mất kết nối, thường chỉ phù hợp với các ứng dụng
online như e – mail, ftp, web….

 Phạm vi hoạt động không giới hạn.

2
 Do kết nối nhiều LAN và MAN với nhau nên mạng rất phức tạp và các
tổ chức toàn cầu phải đứng ra quy định và quản lý.

 Chi phí cho các thiết bị và công nghệ WAN rất đắt, chú ý là việc phân
biệt mạng thuộc loại LAN, MAN hay WAN chủ yếu dựa trên khoảng
cách vật lý và chỉ máng tính chất ước lệ.
1.2. Tổng quan bài toán tấn công
1.2.1. Cyber kill chain
Cyber Kill Chain là một chuỗi các bước theo dõi những giai đoạn của một
cuộc tấn công mạng (cyberattack), được bắt đầu tính từ giai đoạn thu thập thông tin
(reconnaissance) cho đến khi thực hiện đánh cắp dữ liệu.
Cyber Kill Chain giúp các quản trị viên có thể hiểu thêm về ransomware, vi
phạm bảo mật, tấn công APT, cũng như cách ngăn chặn chúng.
Để thực hiện Cyber kill chain trải qua 7 giai đoạn chính bao gồm:

 Reconnaissance (Trinh sát – Thu thập thông tin).


Giai đoạn quan sát và thu thập thông tin: Các hacker sẽ thường đánh giá tình
hình theo chiều từ ngoài vào trong, nhằm xác định cả mục tiêu lẫn chiến thuật cho
cuộc tấn công.
Trong giai đoạn này, các hacker sẽ tìm kiếm những thông tin có thể bị tiết lộ
về các lỗ hổng bảo mật hay điểm yếu xuất hiện bên trong hệ thống. Các thông tin
này có thể xuất hiện từ nhiều nguồn khác nhau: có thể qua nhân viên bên trong hệ
thống tiết lộ, qua mạng xã hội, hay sử dụng các tool công cụ tìm kiếm.
Đối tượng mà các hacker nhắm đến thường là server, firewall, các hệ thống
IPS hay tài khoản mạng xã hội đều được nhắm làm mục tiêu để thu thập thông tin.

 Weaponization (Vũ khí hóa).

3
Sau khi trải qua giai đoạn thu thập thông tin, các tin tặc đã nắm được cơ bản về
các lỗ hổng của mục tiêu, chúng sẽ tiến hành bắt đầu phát triển các loại công cụ
dùng để sử dụng tấn công nạn nhân.
Đây là giai đoạn mà những kẻ tấn công tạo ra một cách cẩn thận một công cụ
mạng lý tưởng chẳng hạn như payload hoặc phần mềm độc hại có thể gây sát
thương tối đa cho nạn nhân.
Quá trình này hoàn toàn diễn ra âm thầm ở phía kẻ tấn công mà không liên
quan đến nạn nhân.

 Delivery (Vận chuyển).


Trong giai đoạn vận chuyển phân tán, những kẻ tấn công tiến hành gửi payload
độc hại hoặc phần mềm nguy hiểm vào cho nạn nhân bằng mọi phương tiện xâm
nhập có thể dùng đến.
Có một số phương pháp mà tin tặc thường hay sử dụng để phân phối payload
đến cho nạn nhân chẳng hạn như gửi email lừa đảo, link liên kết web độc hại, chèn
SQL, XSS, tấn công phiên, tấn công man-in-the-middle….
Đây là giai đoạn khởi nguồn tấn công khi đã có sự can thiệp vào máy nạn nhân
của các tin tặc.

 Exploitation (Khai thác lỗ hổng).


Sau khi tiến hành bước phân tán mã độc vào máy nạn nhân, tin tặc tiến hành
khai thác các lỗ hổng bảo mật, phát tán mã độc vào trong hệ thống thể thuận lợi hơn
cho tấn công.
Trong đó, các hacker có thể xâm nhập vào hệ thống, cài đặt thêm một số công
cụ bổ sung, sửa đổi các chứng chỉ bảo mật và tạo các file script mới phục vụ cho
backdoor và các mục đích phạm pháp khác.

 Installation (Cài đặt phần mềm độc hại).

4
Lúc này tin tặc đã đánh bại hệ thống bảo mật của máy mục tiêu, chúng có thể
bắt đầu cài đặt phần mềm độc hại và các tệp độc hại khác trong môi trường của nạn
nhân.
Đây là giai đoạn tùy chọn trong các cuộc tấn công mạng và chỉ xuất hiện khi
kẻ tấn công sử dụng phần mềm độc hại cài đặt trên hệ thống của mục tiêu.
Tùy vào ý nghĩa của các cuộc tấn công mà tin tặc nhắm đến để chúng cài đặt
những phần mềm độc hại khác nhau gây ảnh hưởng trực tiếp đến hệ thống nạn
nhân.

 Command & Control (Giành quyền kiểm soát).


Lúc này Payload hoặc các tệp độc hại được phân phối và cài đặt trên hệ thống
của nạn nhân bắt đầu tạo các kênh kết nối với kẻ tấn công.
Sau đó, những kẻ tấn công có thể điều khiển từ xa các hệ thống và thiết bị bị
nạn thông qua mạng và có thể chiếm quyền kiểm soát toàn bộ hệ thống bị ảnh
hưởng từ chủ sở hữu là quản trị viên thực sự.

 Actions on objectives (Hành động theo mục tiêu).


Khi các hacker đã truy cập được vào hệ thống, họ có thể bắt đầu thực hiện giai
đoạn lây lan lân cận trong hệ thống để có được quyền cao hơn, nhiều dữ liệu hơn,
hay có được nhiều quyền truy cập hơn vào hệ thống.
Các hacker sẽ tìm kiếm những dữ liệu quan trọng, các thông tin nhạy cảm,
quyền truy cập của admin và email server. Thông thường, giai đoạn này sử dụng
các công cụ như PowerShell để gây ra được những thiệt hại lớn nhất.
Trong giai đoạn này kẻ tấn công được hưởng các quyền như một quản trị viên
hệ thống và có thể tiến hành các cuộc đánh cắp hoặc hủy hoại tài nguyên dẫn đến
hậu quả rất khó kiểm soát.
1.2.2. Mitre ATT&CK kill chain

5
Mitre ATT & CK là viết tắt của Mitre Adversarial Tactics, Techniques, and
Common Knowledge (ATT & CK). Mitre ATT & CK là một cơ sở kiến thức và mô
hình quản lý hành vi về kẻ đe dọa trên mạng, phản ánh các giai đoạn khác nhau của
vòng đời tấn công của kẻ thù và các nền tảng mà chúng nhắm mục tiêu.
Sự đa dạng hóa các chiến thuật và kỹ thuật trong mô hình, cung cấp các hành
động cho từng nhóm đe dọa riêng biệt, theo chiến thuật tấn công và phòng thủ của
an ninh mạng. Nó cung cấp một bảng phân loại theo mức độ đối với hành động của
đối thủ và các cách phòng thủ cụ thể, để chống lại nó.
Mitre ATT & CK chứa một tập hợp các kỹ thuật mà các hacker sử dụng, để đạt
được một mục tiêu cụ thể. Các mục tiêu được trình bày từ thời điểm do thám, đến
mục tiêu cuối cùng là đánh cắp, sao chép dữ liệu hoặc “tác động”.
Nhìn vào mô hình ATT & CK cho doanh nghiệp bao gồm: Windows, MacOS,
Linux, AWS, GCP, Azure, Azure AD, Office 365, SaaS và môi trường mạng, thì
các chiến thuật của hacker được phân loại như sau:

 Reconnaissance (Thăm dò):


Đây là giai đoạn thu thập thông tin về tổ chức mà các tin tặc hướng đến, lên kế
hoạch hoạt động để đạt mục tiêu đề ra.

 Resource Development (Phát triển tài nguyên):


Trong giai đoạn này hacker sẽ phát triển các nguồn lực như cơ sở hạ tầng và
mô hình kiểm soát, để hỗ trợ hoạt động cho các bước tiếp theo.

 Initial Access (Tiếp cận ban đầu):


Lúc này các tin tặc sẽ cố gắng truy cập vào hệ thống mạng của nạn nhân tiến
hành thực hiện trò lừa đảo trực tuyến.

 Execution (Thực thi sau xâm nhập):


Sau khi truy cập thì tin tặc sẽ thử chạy các mã độc hại như chạy một công cụ
từ xa.

6
 Persistence (Thường trú để chạy lại):
Tin tặc cố gắng duy trì sự tồn tại bên trong máy nạn nhân như thay đổi cấu
hình hiện tại. Sự hiện diện của tin tặc sẽ qua mặt lớp bảo mật và hiện hưu như một
phần trong máy nạn nhân.

 Privilede Escalation (Nâng quyền):


Lúc này, tin tặc sẽ cố gắng đạt được cấp cao hơn với nhiều quyền lợi hơn bên
trong hệ thống. Để làm được điều này, sẽ cần phải tận dụng các lỗ hổng bảo mật để
tiến hành nâng quyền.

 Defense Evasion (Ẩn nấp):


Tin tặc sử dụng phần mềm độc hại nhưng ngụy trang dưới dạng một phần
mềm hợp pháp hoạt động trong máy nạn nhân để cố gắng tránh bị phát hiện.

 Credential Access (Lấy cắp thông tin đăng nhập):


Tin tặc sẽ tận dụng mã độc để lấy cắp tên tài khoản, mật khẩu như ghi lại
thông tin đăng nhập ngay trên máy nạn nhân.

 Discovery (Khám phá):


Hacker sẽ cố gắng tìm kiếm thêm các lỗ hổng bảo mật trên hệ thống của nạn
nhân để có thể nắm nhiều quyền kiểm soát hệ thống.

 Lateral Movement (Lây lan bên trong):


Lúc này, tin tặc sử dụng thông tin đăng nhập hợp pháp ở trên để tiến hành
đăng nhập sâu vào bên trong hệ thống để truy cập nhiều tài nguyên hơn.

 Collection (Thu thập):


Tin tặc sẽ thu thập dữ liệu quan trọng trong việc lưu trữ đám mây để nhắm đến
gây thiệt hại cho mục tiêu.

 Command and Control (Thực hiện lệnh và điều khiển):

7
Lúc này, hacker sẽ sử dụng các hệ thống bị xâm nhập như lưu lượng web để
kết nối với mạng nạn nhân.

 Exfiltration (Truyền tải dữ liệu đi):


Sau khi tiến hành các bước trên thì kẻ tấn công sẽ đánh cắp dữ liệu và chuyển
dữ liệu sang tài khoản đám mây.

 Impact (Tác động):


Hoàn tất các công đoạn trên kẻ tấn công sẽ thao túng, làm gián đoạn hoặc phá
hủy hệ thống và dữ liệu như mã hóa dữ liệu bằng ransomware
1.2.3. So sánh hai phương pháp tấn công
Để so sánh giưa Mitre ATT&CK với tấn công Cyber Kill Chain thì có thể rút ra
được hai điểm khác biệt rõ nét và tiêu biểu nhất:
Đầu tiên, MITER ATT & CK đi vào phân tích chuyên sâu mỗi giai đoạn, được tiến
hành thông qua các kỹ thuật ATT & CK. MITER ATT & CK thường xuyên được
cập nhật thông tin đầu vào của ngành, để theo kịp các kỹ thuật mới nhất, giúp các
nhóm bảo mật cập nhật các phương pháp thực hành của riêng họ và mô hình tấn
công thường xuyên.
Thứ hai, Cyber Kill Chain không ảnh hưởng đến các chiến thuật và kỹ thuật khác
nhau của một cuộc tấn công trên nền tảng đám mây, như đã thảo luận ở trên. Cyber
Kill Chain giả định rằng, kẻ thù sẽ cung cấp một tải trọng, chẳng hạn như phần
mềm độc hại, đến môi trường mục tiêu, đây là một phương pháp ít liên quan trên
đám mây.

8
Kết luận Chương I
Dựa trên những gì đã tìm hiểu ở phần trên, có thể nhận thấy rằng một cuộc tấn
công trước khi được thực hiện đều trải qua rất nhiều công đoạn tỉ mỉ khác nhau từ
khâu chuẩn bị, do thám cho đến cài đặt payload độc hại rồi triển khai xâm nhập
khai thác tài nguyên, phá hủy cơ sở dữ liệu bên trong hệ thống nạn nhân.
Mỗi một công đoạn đều có một vai trò cực kì thiết yếu và có sự liên kết với
các khâu trong cuộc tấn công tạo nên một chuỗi công việc hoàn chỉnh. Chính vì
điều này nên chỉ cần thiếu xót hay một khâu chưa được chuẩn bị kĩ đều có thể dẫn
đến thất bại trong cuộc tấn công.
Và trong số đó, một bước cực kì quan trọng mà trước mỗi cuộc tấn công thì kẻ
tấn công luôn giành thời gian để nghiên cứu kĩ lưỡng đó là khâu thăm dò, thu thập
thông tin từ máy nạn nhân.
Chính vì lẽ đó, sự xuất hiện của bộ công cụ Nmap đã đóng góp vai trò thu thập
dữ liệu vô cùng lớn, góp phần xây dựng cái nhìn tổng quan đến hệ thống một cách
rõ ràng nhất và là một phần thiết yếu không thể thiếu trong mỗi cuộc tấn công.

9
CHƯƠNG II. SỬ DỤNG NMAP TRONG DÒ QUÉT MẠNG
2.1 Tổng quan bộ công cụ Nmap
2.1.1. Khái niệm Nmap
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 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.
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).
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 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).
2.1.2. Tính năng của Nmap

10
Bộ công cụ Nmap có những tính năng sử dụng rất hữu ích 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.
2.1.3. Ứng dụng của Nmap
Chính vì tác dụng mà Nmap mang lại nên bộ công cụ này thường được ứng
dụng vào các công việc điển hình như:

 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 ly tài sản.

 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ụ

2.1.4. Giao thức TCP


11
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.

 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.

12
Hình 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.
 Quá trình một phiên làm việc TCP với Server.

13
Hình 2. Quá trình Client khởi tạo kết nối TCP với Server

Khi Client muốn thực hiện một 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 3. 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.

14
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
2.1.5. Nguyên tắc quét cổng trên một hệ thống

 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 4. 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 đó.

15
Hình 5. FIN Scan

 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 6. 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.

16
Hình 5. 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.

Hình 6. 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.

17
Hình 7. 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.

 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 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).

18
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 8. 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ề 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.
2.2 Tiến trình của Nmap Scan.
Trong các giai đoạn thực hiện của Nmap scan thì mỗi giai đoạn được hoàn
thiện trước khi giai đoạn kế tiếp bắt đầu. Dựa vào từng giai đoạn khác nhau có thể
nhận thấy Nmap có nhiều công dụng hơn là chỉ đơn thuần quét cổng như mọi người
thường nghĩ:

19
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, 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

20
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 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.

“nmap -O dantri.com.vn”

21
Hình 9. 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:
“nmap --traceroute 8.8.8.8”

Hình 10. 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
22
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 11. Nmap Script Scanning

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:

23
Hình 12. Nmap Output

Còn đây là nội dung được ghi lại trong file text.

Hình 13. Nmap TEXT Output

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

24
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.3. 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 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ở.

25
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.4 Cách sử dụng Nmap cơ bản.
2.4.1. Xác định mục tiêu cần quét.
Việc đầu tiên trước khi bắt đầu sử dụng Nmap, tin tặc sẽ phải làm công việc đó
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 1.1. Xác định mục tiêu cần quét

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

26
-iR <num hosts>: Chọn mục tiêu ngẫu nhiên.

--exclude <host1[,host2] Bỏ qua các host.


[,host3],...>

--excludefile <exclude_file> Chọn danh sách bỏ qua.

Bảng 2.1 Tùy chọn khi quét mục tiêu

2.4.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 Câu lệnh thực thi (viết in hoa)

TCP SYN PING -PS<port-list>

TCP ACK PING -PA<port-list>

UDP PING -PU<port-list>

ICMP Ping Type -PE, -PP, -PM

IP Protocol Ping -PO<protocol-list>

ARP Scan -PR

Bảng 3.1 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<port-list>)

27
 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<port-list>)
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<port-list>)

 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
28
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
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<protocol-list>)

 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).

29
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)
Một trong những môi trường sử dụng Nmap nhiều nhất là LAN. Khi nmap thử
gửi raw IP như là ICMP echo request, OS phải xác định được địa chỉ ARP của
target IP do đó --send-ip chỉ định nmap gửi gói tin ở cấp độ IP (chứ không phải raw
ethernet) ngay cả khi ta ở trong mạng local.
2.5 Các tùy chọn quét và kỹ thuật chọn cổng.
2.5.1. Các tùy chọn quét của Nmap.
-v (giống như –verbose): Nmap thường chỉ đưa ra hoạt động đáp ứng tới host.
source-port <portnum> (giống với -g): thiết lập một cổng nguồn không đổi
cho việc ping scan (TCP và UDP). Một vài người quản trị đã vô tình mở cổng 53
(DNS) hoặc cổng 20(FTP-DATA). Tất nhiên mở cổng này đủ để nmap có thể quét
thăm dò thông tin của máy đích.
-n, -R: Với –n lựa chọn này sẽ disable phân giải tên miền DNS giúp cho việc
Scan trở nên nhanh chóng hơn, trong khi lệnh -R sẽ enable DNS cho toàn bộ host
thậm chí cả máy đang down. Hành vi mặc định là để giới hạn tên miền DNS đối với
các host đang hoạt động.
--data-length <length>: Lựa chọn này là thêm chiều dài bytes dữ liệu đối với
mỗi gói tin, va làm việc với TCP, UDP và cả ICMP ping scan.
--ttl <value>: Thiết lập thời gian sống của gói tin nếu vượt quá sẽ tự động out,
là một biện pháp hữu ích phòng ngừa an toàn để đảm bảo một máy quét không
truyền vượt ra ngoài mạng nội bộ.
-T (-T3, -T4, -T5, vv..): Tăng tốc độ quét cho Nmap giá trị càng cao tốc độ
càng nhanh.

30
-iL <filename>, -ỉR <number>: Người sử dụng thường kết hợp với một danh
sách các địa chỉ IP được nhập vào một file với lựa chọn –PN để tránh ping-scanning
host đối với các host đang hoạt động. –iR là để chọn host ở chế độ ngẫu nhiên từ
một khoảng địa chỉ IP.
Output (-oA, -oN, -oG, -oX …): Kết quả Nmap sau khi quét sẽ được lưu dưới
các dạng như normal, grepable và XML.
--randomize-hosts: xáo trộn thứ tự quét máy chủ lưu trữ với tùy chọn này có
thể làm cho quá trình quét ít bị chú ý, mặc dù nó cũng có thể làm cho sản lượng
quét một chút khó khăn.
--reason: Nmap bình thường đầu ra cho biết máy chủ đang up hay down
nhưng không mô tả các host kiểm tra yêu cầu.
--packet-trace: Khi muốn nhiều thông tin chi tiêt hơn –reason. Lựa chọn này
sẽ đưa ra thông tin các gói được gửi và nhận bởi Nmap, bao gồm các chi tiết như
sequence numbers, giá trị TTL, và TCP flags.
-D <decoy1, decoy2, …>: Decoy được hỗ trợ đầy đủ cho phép đặc quyền quét
IPv4, để ngụy trang những kẻ thực sự tấn công.
-6: TCP kết nối dựa trên ping scan –PS hỗ trợ giao thức IPv6, bao gồm chế độ
đa cổng như –PS22,80,113.
-S <source IP address>, -e <sending device name> : Như với các chức năng
khác của Nmap, địa chỉ nguồn và thiết bị gửi có thể là lựa chọn đặc biệt.
2.5.2. Kỹ thuật quét cổng mà Nmap hỗ trợ.
TCP SYN Scan (-sS): SYN scan là mặc định và phổ biến nhất tùy chọn quét
cho lý do tốt. Nó có thể được thực hiện một cách nhanh chóng, quét hàng ngàn cổng
mỗi giây trên một mạng nhanh không bị cản trở bởi hạn chế tường lửa. Nó cũng
tương đối kín đáo và tàng hình vì nó không bao giờ hoàn thành kết nối TCP. Nó

31
cũng cho phép rõ ràng, sự khác biệt đáng tin cậy giữa các trạng thái open, closed và
filtered.
TCP Connect Scan (-sT): TCP Connect scan là là kiểu scan TCP mặc định
khi SYN Scan không phải là một lựa chọn. Đây là trường hợp khi một người dùng
không có đặc quyền gói dữ liệu raw. Thay vì viết gói dữ liệu raw như hầu hết các
loại scan khác làm, Nmap yêu cầu hệ điều hành cơ bản thiết lập kết nối với các máy
tính mục tiêu và cổng bằng cách phát hành các cuộc gọi kết nối hệ thống.. Nó là
một phần của một giao diện lập trình được gọi là Berkeley Sockets API. Thay vì
đọc phản ứng gói liệu khỏi liên kết, Nmap sử dụng API này để có được thông tin
trạng thái trên mỗi lần thử kết nối. Kiểu scan này dễ bị phát hiện bởi quản trị viên vì
nó sẽ thực hiện một loạt các nỗ lực kết nối từ một hệ thống duy nhất sẽ được lưu lại
trong lịch sử được xem như là đang bị scan.
UDP Scan (-sU): Trong khi hầu hết các dịch vụ phổ biến trên Internet chạy
trên giao thức TCP, dịch vụ UDP được triển khai rộng rãi. DNS, SNMP, và DHCP
(đăng ký cổng 53, 161/162, và 67/68) là ba trong số phổ biến nhất. Bởi vì UDP scan
thường chậm hơn và khó khăn hơn so với TCP, một số kiểm toán viên an ninh bỏ
qua các cổng này. Đây là một sai lầm, như các dịch vụ khai thác UDP là khá phổ
biến và kẻ tấn công chắc chắn không bỏ qua toàn bộ giao thức.
SCTP INIT Scan (-sY): SCTP là một lựa chọn tương đối mới với giao thức
TCP và UDP, kết hợp hầu hết các đặc điểm của giao thức TCP và UDP và cũng có
thêm các tính năng mới như multi-homing và đa luồng. Nó là chủ yếu được sử dụng
cho các dịch vụ liên quan / SIGTRAN SS7 nhưng có tiềm năng được sử dụng cho
các ứng dụng khác. SCTP INIT scan là SCTP tương đương với một TCP SYN scan.
Nó có thể được thực hiện một cách nhanh chóng, scan hàng ngàn cổng mỗi giây
trên một mạng nhanh không bị cản trở bởi hạn chế tường lửa. Giống như SYN scan,
INIT quét tương đối kín đáo và tàng hình, vì nó không bao giờ hoàn thành các liên

32
kết SCTP. Nó cũng cho phép rõ ràng, sự khác biệt đáng tin cậy giữa trạng thái
open, closed, và filtered.
TCP FIN, Xmas, và NULL Scan (-sF, -sX. -sN): Kiểu quét mục đích đặc biệt
vượt qua firewall để khai thác hệ thống đằng sau chúng. Tiếc là chúng trả lời trên
các hành vi mục tiêu đối với một vài hệ thống (đặc biệt đối với các biến thể
window) không thể hiện. Ba loại scan này (khai thác một lỗ hổng tinh tế trong TCP
RFC để phân biệt giữa các cổng open và closed.

 Null scan (-sN): Không thiết lập bất kỳ bit (cờ header TCP là 0)

 FIN scan (-sF): Chỉ thiết lập bit TCP FIN

 Xmas scan (-sX): Thiết lập cờ FIN, PSH, và URG, chiếu sáng các gói lên
như một cây thông Noel (Xmas).
Ba loại scan đều giống hệt nhau trong hành vi ngoại trừ những lá cờ TCP thiết
lập trong các gói tin thăm dò. Nếu một gói tin RST được nhận, các cổng được xem
là closed, trong khi không có phản ứng có nghĩa là nó được open|filtered.
TCP ACK Scan (-sA): ACK scan được sử dụng phổ biến đối với các luật của
firewall. Nó giúp hiểu luật firewall là statefull hoặc không. Nhược điểm là nó không
phân biệt được là các cổng mở hay đóng.
TCP Window Scan (-sW): Window scan là chính xác giống như ACK scan
ngoại trừ việc nó khai thác một chi tiết thực hiện hệ thống nhất định để phân biệt
các cổng open từ những cổng closed, chứ không phải là luôn luôn in unfiltered khi
một RST được trả về. Nó làm điều này bằng cách kiểm tra các trường TCP Window
của các gói tin RST trở lại. Kiểu scan này dựa vào một chi tiết hoạt động một số của
các hệ thống trên Internet, do đó chúng ta có thể không phải luôn luôn tin tưởng nó.
Các hệ thống không hỗ trợ nó thường sẽ trở lại tất cả các cổng closed.
TCP Maimon Scan (-sM): Maimon scan được đặt tên bởi đã tìm ra nó, Uriel
Maimon. Ông mô tả kỹ thuật này trên tạp chí Phrack vấn đề # 49 (tháng 11 năm

33
1996). Nmap, trong đó bao gồm kỹ thuật này, được phát hành hai vấn đề sau. Kỹ
thuật này là chính xác giống như NULL, FIN, và quét Xmas, ngoại trừ việc thăm dò
là FIN / ACK.
TCP Idle Scan (-sI <zombie host>): Phương pháp quét tiên tiến này cho phép
một cổng TCP thực sự mù quét các mục tiêu (có nghĩa là không có gói tin được gửi
đến mục tiêu từ địa chỉ IP thực của chúng ta). Thay vào đó, một pha đối mặt với
kênh riêng khai thác dự đoán được IP phân mảnh tạo chuỗi ID trên host zombie để
thu thập thông tin về các cổng mở trên mục tiêu. Hệ thống IDS sẽ hiển thị quá trình
quét là đến từ các máy zombie mà chúng ta chỉ định (mà phải được lập và đáp ứng
các tiêu chí nhất định). Bên cạnh đó là cực kỳ lén lút (do tính chất mù của nó), kiểu
quét này cho phép lập bản đồ ra các mối quan hệ tin tưởng dựa trên IP giữa các
máy. Danh sách cổng cho thấy cổng đang mở từ góc nhìn của các máy chủ zombie.
Vì vậy, chúng ta có thể thử quét một mục tiêu sử dụng zombie khác nhau mà mọi
người nghĩ có thể được tin cậy (thông qua quy tắc router/packet filter).
IP protocol Scan (-sO): Protocol scan xác đinh các giao thức IP như (TCP,
ICMP, IGMP, vv..) được hỗ trợ bởi các máy mục tiêu. Đây không phải là một kỹ
thuật quét cổng, thông qua các giao thức chứ không phải là số cổng TCP hay UDP.
Vẫn sử dụng lựa chọn –p để chọn số giao thức được quét, báo cáo kết quả với một
bảng định dạng các cổng, và sử dụng quét cơ bản như phương thức quét cổng thực.
TCP FTP bounce Scan (-b <FTP bounce proxy>): Phản đối quét thủ thuật
máy chủ FTP vào thực hiện quét cổng bằng proxy. Hầu hết FTP server bây giở
được vá để ngăn cản điều này. Nhưng nó là cách tốt để vượt qua tường lửa khi nó
làm việc.
2.5.3. Kỹ thuật lựa chọn cổng khi quét
-p 22: Quét cổng đơn trong trường hợp này là cổng 22.
-p ssh: Tên cổng có thể tốt hơn là dạng số. Lưu ý một tên có thể thay thể cho
nhiều cổng.
34
-p 22, 25, 80: Nhiều cổng được cách nhau bởi dấu phẩy. Nếu một TCP scan
như SYN scan (-sS) là đặc biệt, cổng TCP 22, 25, và 80 được quét. Tương ứng với
các dịch vụ SSH, SMTP, và HTTP. Nếu là UDP scan thì được chọn (-sU).
-p 80-85, 443, 8000-8005, 8080-8085: Đó là một giải cổng được quét được
cách nhau bởi dấu phẩy.
-p-100, 6000-: Chúng ta có thể bỏ qua cổng bắt đầu của một giải cổng, được
bắt đầu từ cổng 1, hoặc cổng cuối là 65535 đối với TCP và UDP, 225 đối với giao
thức quét.
-p-: Bỏ qua cổng bắt đầu và kết thúc để quét toàn bộ giải cổng (không bao
gồm cổng Zero).
-pT: 21, 23, 110, U: 53, 111, 137, 161: Một danh sách cổng TCP và UDP có
thể được đưa ra với T: (cho TCP) hoặc U. Đây giống quét 3 cổng TCP (FTP,
Telnet, và POP3), và 4 dịch vụ UDP (DNS, rpcbind, NetBIOS, và SNMP).
-p http*: Có thể sử dụng để phù hợp với tên tương tự. vi dụ như http (80),
http-mgmt (280), https (443), và http-proxy (8080).
2.6 Nmap Script Engine (NSE)
2.6.1. Giới thiệu NSE
Nmap script engine (NSE) là một trong những chức năng mạnh và linh hoạt
của nmap. Nó cho phép người sử dụng viết những script đơn giản để tự động mở
rộng nhiệm vụ của mạng. Script sau đó được thực hiện song song với tốc độ và hiệu
quả mà chúng ta mong đợi từ nmap. Những đoạn script có thể sử dụng để phát hiện
các lỗ hổng hoặc thậm chí khai thác các lỗ hổng. Các file script .nse có sẵn nằm
trong thư mục script khi cài đặt nmap, người dùng có thể tùy biến chỉnh sửa, thêm
các scirpt khác. Để thực hiện chức năng này của nmap sử dụng tùy chọn:
–script <filename>|<category>|<directory>|<expression>[…]
Các chức năng chính của NSE:

35
Script NSE linh hoạt với những nhiệm vụ sau:

 Network discovery: Tìm kiếm toàn bộ dữ liệu dựa trên Domain của máy
mục tiêu, truy vấn ARIN, RIPE, hoặc APNIC đối với IP máy mục tiêu để
xác định quyền sở hữu, thực hiện các tra cứu các cổng mở, các truy vấn
SNMP và NFS/SMB/RPC đối với các dịch vụ có sẵn.

 Phát hiện nhiều phiên bản phức tạp hơn: Hệ thống phát hiện phiên bản
bằng Nmap Script Enginecó thể công nhận diện hàng trăm dịch vụ khác
nhau khi thăm dò và thường xuyên phát hiện chữ ký dựa trên hệ thống,
Nhưng không có lẽ là nó có thể nhận diện mọi thứ.

 Phát hiện điểm yếu (Vulnerability detection): Khi một điểm


yếu mới trong hệ thống được phát hiện, chúng ta thường muốn quét mạng của
mình nhanh để xác định điểm yếu của hệ thống trước khi nguy cơ xấu có thể
xảy ra. Trong khi Nmap không phải là công cụ quét toàn diện thì NSE đủ
mạnh để giúp xử lý kiểm tra những điểm yếu đang đe dọa. Nhiều script phát
hiện điểm yếu thực sự có sẵn.

 Phát hiện Backdoor: Nhiều hacker và một vài worms tự động


chuyển backdoor tới và một vài trong số chúng có thể phát hiện bằng Nmap
dựa trên nhiều phiên bản phát hiện.
 Khai thác điểm yếu (Vulnerability exploitation): NSE có thể được
sử dụng để khai thác điểm yếu hơn là để tìm chúng. Khả năng thêm kịch bản
khai thác điểm yếu có thể có giá trị với một số người.
2.6.2. Các lệnh cơ bản NSE.
Nmap Script Engine có những lệnh cơ bản
Smb-security-mode: kiểm tra các chế độ bảo mật trên máy.
Smb-enum-shares: được dùng để kiểm tra những thông tin được chia sẻ trên
máy.

36
Smb-enum-users: liệt thông tin về các user khi đăng nhập trên máy.
Smb-enum-sessions: kiểm tra thông tin người dùng.
Smb-enum-processes: liệt kê các tiến trình đang chạy trên một máy từ xa. đọc
file HKEY_PERFORMAINCE_DATA registry ẩn, và phân tích các dữ liệu tìm
thấy trong đó. Chỉ dùng được với Windows 2000.
Smb-system-info: thông tin chi tiêt về hệ điều hành chỉ khả dụng trên
Windows 2000. Hình 16 chúng ta có thể thấy khi test Scan trên Windows 10 sẽ báo
lỗi.

Hình 14. Script Systems Info trên Windows 10

Smb-check-vulns: giúp người quản trị tìm các lỗi hệ điều hành MS08-067. Là
lỗ hổng nghiêm trọng trong windows vào tháng 10 năm 2008. Phát hiện conficker
worm khi khai thác điểm yếu.
Smb-brute: nỗ lực đăng nhập vào một tài khoản SMB bằng việc đoán
username và password. Mã và thuật toán được thiết kế để tận dụng lợi thế của giao
thức SMB trong nhiều cách khác nhau để khám phá mà người dùng tồn tại và có
hay không thể xác định mật khẩu, mục đích của smb-brute là để thực hiện kiểm tra
nhanh đối với các password phổ biến, không khởi động một brutefore đầy đủ. Phần
lớn sức mạnh của nó đến từ một sự hiểu biết sâu sắc của giao thức SMB.
Smb-pwdump: đưa ra thông tin danh sách hashes từ hệ thống từ xa của người
dùng.
Smb-os-discovery: đưa ra thông tin về hệ điều hành, tên máy tính, domain,
workgroup, thời gian hiện tại trên giao thức SMB.
37
Asn-query: đưa ra thông tin số hiệu mạng và quốc gia. Sử dụng script này khi
quét sẽ được lưu lại trên máy chủ mục tiêu bao gồm địa chỉ ip máy và số hiệu mạng
của một máy chủ DNS (máy chủ DNS mặc định của bạn). Cấu trúc tập lệnh:
“nmap --script asn-query [--script-args dns=<DNS server>] <target>”
Auth-owners: Cố gắng tìm chủ sở hữu của một cổng TCP. Cấu trúc tập lệnh:
“nmap -sV -sC <target>”
Auth-spoof: Kiểm tra đáp ứng máy chủ bằng việc trả lời trước khi gửi truy
vấn. Cấu trúc tập lệnh:
“nmap -sV --script=auth-spoof <target>”
Daytime: lấy ngày và thời gian. Cấu trúc tập lệnh:
“nmap -sV --script=daytime <target>”
Dns-random-srcport: kiểm tra máy chủ DNS. Giúp phát hiện lỗ hổng cổng
nguồn máy chủ DNS để tấn công đầu độc bộ nhớ cache (CVE-2008-1447). Kịch
bản này có khả năng ghi lại bởi một hoặc nhiều máy chủ DNS. Ngoài ra địa chỉ ip
của chúng ta sẽ được gửi đi cùng với các truy vấn porttest đến máy chủ DNS đang
chạy trên mục tiêu. Cấu trúc tập lệnh:
“nmap -sV --script=dns-random-srcport <target>”
Dns-recursion: kiểm tra nếu máy chủ DNS cho phép truy vấn cho tên của bên
thứ ba. Cấu trúc tập lệnh:
“nmap -sV -sC <target>”
Dns-zone-transfer: yêu cầu một zone transfer(AXFR) từ máy chủ DNS.
Script sẽ gửi một truy vấn AXFR tới một máy chủ DNS. Cấu trúc tập lệnh:
“Nmap --script dns-zone-transfer.nse\--script-args
dns-zone-transfer. domain=<domain>”
Finger: lấy một danh sách tên người dùng sử dụng dịch vụ finger. Cấu trúc tập
lệnh:
38
“nmap -sV -sC –script=finger <target>”
Ftp-bounce: kiểm tra xem một máy chủ FTP có cho phép quét cổng bằng cách
sử dụng phương thức FTP bounce.
Html-title: hiện title của một trang mặc định của một web server

Hình 15. Nmap Script Engine HTML-tiltle

Http-auth: lấy xác thực và các lĩnh vực của một dịch vụ web
Http-open-proxy: kiểm tra HTTP proxy mở.
Http-passwd: kiểm tra nếu một web server bị lỗ hổng đối với một vài thư mục
/etc/passwd hoặc \boot.ini.
Http-trace: Gửi yêu cầu HTTP TRACE và hiện các trường header được chỉnh
sửa.
Iax2-version: Xác định dịch vụ UDP IAX2. Script sẽ gửi một Inter-Asterisk
eXchange yêu cầu và kiểm tra cho một đáp ứng thích hợp. Giao thức này sử dụng
để cho phép các kết nối VoIP giữa các máy chủ cũng như giao tiếp clientserver.
Irc-info: Thông tin từ một IRC server.
Ms-sql-info: Xác định chính xác thông tin từ cở sở dữ liệu Microsoft SQL.

39
Hình 16. Nmap Script Engine Ms-sql-info

Mysql-info: Kết nối máy chủ MySQL và in các thông tin như về giao thức và
số version, thread ID, status, capabilities và password salt.
Nbstat: Xác định tên NetBIOS và địa chỉ MAC. Script hiển thị tên máy tính
và loged-in user. Cấu trúc tập lệnh:
“sudo nmap -sU --script nbstat.nse -p137 <host>”

nma
Hình 17. Nmap Script Engine Nbstat

Pop3-brute: Thử đăng nhập vào tài khoản POP3 bằng username guesing và
password.
Sql-injection: Tìm kiếm các URL có chứa các lỗ hổng do một cuộc tấn công
SQL injection. Tìm kiếm một máy chủ HTTP cho các URL có chứa các truy vấn,
sau đó nó tiến hành kết hợp với các lệnh SQL crafted với URL nhạy cảm để có
được các lỗi. Các lỗi được phân tích để xem nếu URL là dễ bị tấn công. Điều này
sử dụng hình thức cơ bản nhất của SQL injection. Cấu trúc tập lệnh:
“nmap -sV --script=sql-injection <target>”

40
Whois: Truy vấn dịch vụ WHOIS của Regional Internet Registries (RIR) và
xác định các thông tin về địa chỉ IP. Cấu trúc tập lệnh:
“nmap –script=whois target”

Hình 18. Nmap Script Engine Whois

Xampp-default-auth: Kiểm tra nếu XAMP hoặc XAMPP FTP server sử dụng
tên và password mặc định.
Trên đây là một số những script trong Nmap, ta có thể tìm thấy tất cả các script
được lưu trong thư mục cài đặt của Nmap:
C:\Program Files(x86)\Nmap\script

41
Hình 19. Thư mục chứa Nmap Scripts

2.6.3. Sử dụng NSE trong quét CVE


- CVE là viết tắt của Common Vulnerabilities and Exposures, đó là một danh
sách các lỗ hổng bảo mật và các mở rộng của phần mềm và hệ thống máy tính. Nó
được quản lý bởi National Cyber Security Centre (NCSC) của Mỹ và cung cấp
mã số duy nhất cho mỗi lỗ hổng để cho phép tìm kiếm và tham chiếu nhanh chóng.
- CVE được công bố công khai và hoàn toàn miễn phí tới người dùng. Từ đó, giúp
các chuyên gia về bảo mật tìm ra những giải pháp ngăn chặn sự tấn công từ những
yếu tố độc hại. Điều này nhằm nâng cao bảo mật, loại bỏ chung các lỗ hổng có thể
xảy ra.
- Nmap-vulners, vulscan và là những tập lệnh phát hiện CVE phổ biến nhất trong
Nmap. Các tập lệnh này cho phép bạn khám phá thông tin quan trọng về các lỗi bảo
mật hệ thống.
a) Nmap-vulners
Một trong những trình quét lỗ hổng nổi tiếng nhất là Nmap-vulners. Hãy xem cách
thiết lập công cụ này cũng như cách chạy quét CVE cơ bản. Công cụ tập lệnh Nmap
tìm kiếm các phản hồi HTTP để xác định CPE cho tập lệnh nhất định.
- Cài đặt

42
Để cài đặt tập lệnh Nmap-vulners, hãy điều hướng đến thư mục tập lệnh Nmap
bằng lệnh sau.
“ cd /usr/share/nmap/scripts/ ”
Bước tiếp theo là sao chép kho lưu trữ git.
“ git clone https://github.com/vulnersCom/nmap-vulners.git ”
Sau khi sao chép kho lưu trữ git, không cần phải làm gì khác để cấu hình. Công
cụ sẽ được cài đặt tự động.
- Sử dụng
Chỉ cần truyền đối số -script vào lệnh Nmap để hướng dẫn NSE script nào sẽ sử
dụng.
“ nmap -sV --script vulners [--script-args mincvss=<arg_val>] <target>”
Đừng quên truyền đối số “-sV” trong khi sử dụng các tập lệnh NSE. Nmap-
vulners sẽ không thể truy cập vào cơ sở dữ liệu khai thác lỗ hổng nếu nó không
nhận được bất kỳ thông tin phiên bản nào từ Nmap. Vì vậy, tham số -sV được yêu
cầu mọi lúc.
- Ví dụ
Cú pháp khá đơn giản. Chỉ cần gọi tập lệnh với tùy chọn “–script” và chỉ định
công cụ và mục tiêu của lỗ hổng để bắt đầu quét.
“ nmap -sV --script nmap-vulners/ <target> ”
Nếu muốn quét bất kỳ cổng cụ thể nào, chỉ cần thêm tùy chọn “-p” vào cuối lệnh
và chuyển số cổng bạn muốn quét.
“ nmap -sV --script nmap-vulners/ <target> -p80,223 ”
b) Nmap-vulscan
Vulscan là một tập lệnh NSE hỗ trợ Nmap trong việc phát hiện lỗ hổng trên các
mục tiêu dựa trên các dịch vụ và phát hiện phiên bản. vulscan giống như một mô-
đun cho Nmap biến nó thành một trình quét lỗ hổng. Tùy chọn Nmap -sV cho phép
43
phát hiện phiên bản mỗi dịch vụ, được sử dụng để xác định các khai thác tiềm năng
cho các lỗ hổng được phát hiện trong hệ thống.
- Cài đặt
Để cài đặt Vulscan, trước tiên, hãy chuyển đến thư mục tập lệnh Nmap bằng
cách sử dụng lệnh sau.
“ cd /usr/share/nmap/scripts/ ”
Bước tiếp theo là sao chép kho lưu trữ git và cài đặt tất cả các yêu cầu.
“ git clone https://github.com/scipag/vulscan.git ”
“ ln -s `pwd`/scipag_vulscan /usr/share/nmap/scripts/vulscan ”
Vulscan sử dụng các cơ sở dữ liệu được cấu hình sẵn được lưu trên máy . Để
cập nhật cơ sở dữ liệu, hãy đi tới thư mục trình cập nhật. Nhập lệnh sau vào thiết bị
đầu cuối để điều hướng đến thư mục trình cập nhật.
“cd vulscan/utilities/updater/ ”
Tiếp theo, thay đổi quyền của tệp sẽ chạy trong hệ thống.
“ chmod +x updateFiles.sh ”
Và cuối cùng, cập nhật cơ sở dữ liệu khai thác bằng lệnh bên dưới.
“ ./updateFiles.sh ”
- Sử dụng
Tập lệnh vulscan NSE có thể được sử dụng theo cách tương tự như nmap-
vulners.
“ nmap -sV --script vulscan <target> ”
Theo mặc định, Vulscan sẽ tìm kiếm đồng thời tất cả các cơ sở dữ liệu. Phải mất
rất nhiều thời gian để truy vấn thông tin bằng cách sử dụng tất cả các cơ sở dữ liệu.
Sử dụng tham số vulscandb, chỉ có thể truyền một cơ sở dữ liệu CVE tại một thời
điểm.

44
“--script-args vulscandb=database_name ”
- Ví dụ
“ nmap -sV --script vulscan --script-args vulscandb=exploit.csv <target>
-p 80,233 ”
c) Quét CVE riêng lẻ
Quét lỗ hổng riêng lẻ cũng có thể được thực hiện bằng cách sử dụng các tập
lệnh cụ thể trong mỗi danh mục.
- Ví dụ
+ Http-sherlock: Dự định khai thác lỗ hổng shellshock(CVE-2014-6271) trong
các ứng dụng web.
“ nmap -sV --script http-sherlock <target> ”
Kết luận Chương II
- Qua tìm hiểu ở phần trên có thể nhận thấy được sự đa dạng trong cách sử dụng
bộ công cụ Nmap để dò quét lỗ hổng bên trong hệ thống mạng.
- Việc sử dụng Nmap không đơn giản là chỉ dùng để quét cổng mà hơn thế nó
còn có khả năng thu thập các loại thông tin khác nhau về hệ thống nạn nhân từ đó
đem lại cái nhìn tổng quan về đặc điểm của hệ thống đó.
- Sử dụng NSE trong quét CVE để xác định điểm yếu của hệ thống trước khi
nguy cơ xấu có thể xảy ra.

45
CHƯƠNG III. TRIỂN KHAI THỰC NGHIỆM NMAP
3.1 Đặc tả chương trình.
Nmap sử dụng các IP trên các gói tin theo những cách đặc biệt khác nhau để
có thể xác định các host trên một hệ thống mạng, để rồi từ đó xác định xem những
services nào đang chạy trên hệ thống đó, hệ điều hành đang chạy, bộ lọc các gói tin
như tường lửa đang sử dụng làm gì. Từ đó để thực nghiệm Nmap ta cần:

 Chuẩn bị các thiết bị: máy ảo Kali, Window 11, ứng dụng hỗ trợ code
Python.
 Thực hiện, hiểu các câu lệnh bằng ngôn ngữ Python trong Nmap.
 Nhóm đã tiến hành thực nghiệm quét tới máy ảo có trong cùng một dải mạng.
Dựa theo các tính năng của Nmap để thăm dò các port mở, đóng trên máy
kali.
 Quét được các Port đang chạy, và không chạy.
 Sử dụng.
 Máy chủ ảo Metasploitable v2.
3.2 Dựng phòng thí nghiệm
Máy tấn công : Kali Linux trên VMware.
Máy mục tiêu : Metasploitable.
Các bước dựng máy mục tiêu:
- Tải Metasploitable ver2 về máy.
- Giải nén và mở file

46
Hình 22. Cài đặt Metaploitable 2
- Khởi động Metasploitable 2

Hình 23. Khởi động Metasploitable 2


- Chọn “I copied it”

47
Hình 24. Hoàn tất cài đặt Metasploitable 2

- Đăng nhập với User và password là msfadmin

Hình 25. Màn hình đăng nhập


- Gõ lệnh ifcofig để lấy IP của máy mục tiêu

48
Hình 26. Kết quả lấy IP máy mục tiêu

- Kiểm tra kết nối : kiểm tra xem máy tấn công có thể kết nối với mục tiêu
hay không

Hình 27. Ping tới máy chủ ảo Metasploitable

3.3 Triển khai thực nghiệm


3.3.1. Phát hiện máy chủ (Host Discovery).

49
nmap –PS scanme.nmap.org (TCP SYN Ping)
Trong hình 28 thì đây là kỹ thuật TCP SYN Ping (-PS) thì với trang web
scanme.nmap.org. Nmap đã phát hiện ra 1 máy chủ đang được bật (1 host up) và
đồng thời show ra các cổng đang được bật cũng như dịch vụ mà nó chạy.

Hình 28. Kỹ thuật TCP SYN Ping

nmap –PA scanme.nmap.org (TCP ACK Ping)


Như đã thấy trong hình 29 thì kỹ thuật được sử dụng để phát hiện máy chủ ở
đây là TCP ACK Ping, về kết quả thì tương đồng với kỹ thuật TCP SYN Ping và cơ
bản thì kỹ thuật này cũng sử dụng Port 80 như TCP SYN Ping. So với các kỹ thuật
phát hiện máy chủ còn lại thì 2 kỹ thuật TCP này cũng đồng thời show ra những
Port và các trạng thái.

Hình 29. Kỹ thuật TCP ACK Ping

nmap –PP –T5 192.168.134.137 (ICMP Ping)

50
Trong trường hợp này thì sử dụng ICMP Ping (-PP) để quét một máy trong
cùng mạng và kết quả được hiển thị khá rõ ràng tất cả các Port của máy này đang
được lọc, địa chỉ MAC của thiết bị, tên nhà sản xuất. Thông số -T5 ở đây được
thêm vào để tăng tốc độ vì kỹ thuật này là khá chậm.

Hình 30. Kỹ thuật ICMP Ping

nmap –PU scanme.nmap.org (UDP Ping)


Như đã thấy ở hình 31 khi sử dụng kỹ thuật UDP Ping (-PU) ở đây thì Nmap
nói rằng máy chủ dường như đang đóng nhưng thực chất nó cũng có thể đang mở
và kỹ thuật Ping này đã bị chặn dẫn đến Nmap không thể phát hiện máy chủ. Thực
tế có thể thấy kỹ thuật UDP Ping này không khả dụng cho lắm bằng hai kỹ thuật
TCP Ping ở trên.

Hình 31. Kỹ thuật UDP Ping

nmap –PR scanme.nmap.org

51
nmap –PR 192.168.134.135
Ở kỹ thuật ARP Scan (-PR) này thì sẽ test với hai trường hợp khi quét với
một mạng bên ngoài và một máy chung trong mạng thì sự khác biệt là khá rõ ràng
khi kỹ thuật này bị chặn khi Ping tới trang Web scanme.nmap.org, ngược lại khi
quét một máy trong cùng một mạng với chiếc máy có sử dụng để chạy Nmap.
Chính vì vậy mà kỹ thuật này thường được sử dụng hơn khi quét mạng nội bộ hay
mạng LAN.

Hình 32. ARP Scan một trang web

Hình 33 . ARP Scan máy cùng mạng

nmap –O sinhvien.epu.edu.vn
Ở trường hợp này sẽ thực hiện Scan trang web actvn.edu.vn thì Nmap thường
không xác định được cụ thể hệ điều hành mà máy chủ của một trang web đang sử

52
dụng , trong trường hợp này thì nó chỉ đưa ra những dự đoán theo %, % này càng
cao thì tỉ máy chủ trang actvn.edu.vn đang sử dụng càng lớn. Có thể thấy ở hình 34
thì Nmap không đưa ra được cụ thể và dự đoán rằng 97% là hệ điều hành Microsoft
Windows XP SP3 hoặc Windows 7 hoặc Windows Server 2012, 95% là hệ điều
hành Linux 3.2.

Hình 34. Scan hệ điều hành bằng Nmap

3.3.2. Quét cổng (Scan Port)


nmap –sS actvn.edu.vn
Trong trường hợp này chúng ta sẽ sử dụng kỹ thuật TCP SYN Scan (-sS) với
trang Web của trường Học viện Kỹ thuật Mật Mã. Đây là kiểu quét khá kín đáo và
được thực hiện một cách nhanh chóng, nó không bị cản trở bởi tường lửa như đã đề
cập ở trên. Trong hình 35 chúng ta có thể thấy kết quả hiện ra một cách rất trực
quan như: các port đang được mở và cách dịch vụ được chạy trên các port đó gồm
HTTP port 80, HTTPS port 443 v.v.. ngoài ra có 994 port được filter. Kết quả nhận
được từ kỹ thuật này cũng giống với những gì mà kỹ thuật Host Discovery hiển thị
ra.

53
Hình 35 . Kỹ thuật SYN Scan

nmap –sU actvn.edu.vn


Chúng ta có thể thấy kỹ thuật UDP Scan (-sU) này quét với một tốc độ chậm
hơn với kỹ thuật TCP ở trên, nhưng nhiều người quản trị thường lơ là với các cổng
này nhưng chúng ta có thể thấy giao thức UDP này vẫn được các hacker khai thác
khá nhiều.
nmap –sF 192.168.1.1/24
Trong trường hợp tiếp theo chúng em sẽ sử dụng kiểu quét với TCP FIN (-
sF). Ở đây chúng em quét với dải mạng đang sử dụng ở Modem 192.168.1.1 và kết
quả là những thiết bị được tìm thấy ở hình 36 gồm: Thiết bị của Apple, Dell,… Bao
nhiêu Port được mở hay đóng trong các thiết bị đó và những thiết bị đang tắt không
sử dụng như Laptop thì các Port đều đang đóng như hình 37.

Hình 36 . Kỹ thuật TCP FIN Scan.

54
Hình 37. TCP FIN Scan một dải mạng

Trên đây là các câu lệnh để tìm ra các cổng port đang chạy, không chạy, lỗi.
Ngoài việc sử dụng các câu lệnh đó ra thì nhóm có sử dụng thêm code bằng ngôn
ngữ Python. Dưới đây là đoạn code:

Hình 38. Code host discovery

Kết quả check được 2 IP của 2 máy ảo có 1 mở và 1 đóng

Hình 39. Kết quả code Host discovery

55
Viết trình quét cổng bằng ngôn ngữ Python < Theo dõi ở trang sau>

Hình 40 . Code quét cổng

56
Kết quả:

Hình 41. Kết quả code quét cổng

3.3.3. Sử dụng Nmap Script Engine trong dò quét lỗ hổng


nmap --script vuln -p 21 192.168.239.129

Hình 42 . Kết quả thu đươc với tùy chọn --script

Ta có thể thấy mục tiêu đang gặp lỗ hổng CVE-2011-2523 khi đang sử dụng
vsFTDd version 2.3.4
Ngoài những tập lệnh NSE có sẵn trong nmap. Ta có thể tự viết cho mình những
tập lệnh để dò quét bằng ngôn ngữ Lua được hỗ trợ bởi Nmap hoặc ngôn ngữ lập
trình Python. Hoặc sử dụng những tập lệnh đã được viết và được công khai trên
mạng Internet. Ví dụ như Nmap-Vulners hay Vulscan

57
Sử dụng ngôn ngữ Python dò quét lỗ hổng

Hình 43 . Code dò quét lỗ hổng

Hình 44 . Kết quả quét lỗ hổng

Ta có thể thấy kết quả thu được cho ta biết mục tiêu đang sử dụng SSH-2.0-
OpenSSH_4.7p1 qua đó có thể xác định được mục tiêu có thể gặp những lỗ hổng
nào và khai thác.
Kết luận Chương III
Qua việc thực nghiệm các phần trên đó là phát triển máy chủ (Host Discovery),
quét cổng (Scan Port), sử dụng NSE (Nmap Script Engine). Cùng với các hình ảnh
được đưa ra chi tiết giúp cho mọi người có cái nhìn trực quan, hiểu sâu hơn về công
cụ Nmap này.

58
KẾT LUẬN
− Thông qua quá trình tìm hiểu về bộ công cụ Nmap và các chức năng quét cổng,

nhóm đã đúc rút ra một số kết luận chung nhất về kết quả đạt được:

 Hiểu biết hơn về Nmap, cũng như các công dụng của nó mang lại trong
việc kiểm tra hệ thống mạng, website,…

 Khai thác được nhiều thông tin của hệ thống từ đó để có những đánh giá,
cái nhìn tổng quan về các vấn đề của hệ thống.

 Chạy chương trình tìm ra các port đang mở, không mở.

− Tuy nhiên bên cạnh những điểm đã thu hoạch được thì trong quá trình tìm hiểu,

do còn hạn chế về mặt kĩ năng và kiến thức nên nhóm cũng chưa đi sâu khai thác
các vấn đề về tính năng khác có trong nmap:

 Phần thực nghiệm vẫn chưa thể đi sâu, cụ thể toàn bộ vào từng vấn đề.

− Định hướng phát triển:

 Trong thời gian tới, nhóm mong muốn phát triển hơn trong bộ công cụ
Nmap để có thể đi sâu xây dựng một mô hình quét hữu dụng và có thể
thao tác sử dụng dễ dàng.
 Hoàn thiện bộ công cụ có thể quét tất cả các cổng với thời gian thực hiện
tối ưu nhất.
 Mong thầy đưa ra ý kiến có thể góp ý cho chúng em phát triển và hoàn
thiện hơn nữa.

59
TÀI LIỆU THAM KHẢO
Tiếng Việt:
[1] https://quantrimang.com/tat-tan-tat-ve-nmap-157752

[2] https://vncoder.vn/tin-tuc/cong-nghe/tim-hieu-cong-cu-quet-mang-nmap

[3] https://bkhost.vn/blog/nmap/

[4] https://blog.viettelcybersecurity.com/cve-2021-44228-lo-hong-nghiem-trong-

tren-thu-vien-apache-log4j-va-cac-van-de-lien-quan/
[5] Silde bài giảng môn Kỹ thuật lập tình

Tiếng Anh:
[1] https://securitytrails.com/blog/nmap-vulnerability-scan

[2] https://akademy.edu.vn/kali-linux/easily-detect-cves-with-nmap-scripts/

[3]https://hub.packtpub.com/discovering-network-hosts-with-tcp-syn-and-tcp-

ack-ping-scans-in-nmaptutorial/?fbclid=IwAR1n6gOXsm4bj6RQBa8UxjdK-
MTHDVHamRi-XwZahbGNDBcanePo8e8OVT0
[4]https://github.com/vulnersCom/nmapvulners?

fbclid=IwAR30VS0MnvZSj1DE0Z8xMW0AQDs2HuZuSDzAXn9k3cYbPasb
eMAiAYkMLqM

60

You might also like