You are on page 1of 50

BAN CƠ YẾU CHÍNH PHỦ

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


¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

ĐỀ CƯƠNG 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:


Đàm Công Ngọc AT160434
Lê Mạnh Thành AT160444
Mai Thị Tâm AT160443
Thiều Mạnh Đức AT160414
Vũ Thị Hoa AT160421

Người 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ã

Hà Nội - 2022
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. ................................................................... 2
1.2.1. Cyber kill chain. ................................................................................. 3
1.2.2. Mitre ATT&CK kill chain. ................................................................. 5
1.2.3. So sánh hai phương pháp tấn công. ................................................. 7
Kết luận Chương I........................................................................................... 7
CHƯƠNG II. SỬ DỤNG NMAP TRONG DÒ QUÉT MẠNG .................. 8
2.1 Tổng quan bộ công cụ Nmap. ................................................................ 8
2.1.1. Khái niệm Nmap. ............................................................................... 8
2.1.2 Tính năng của Nmap. ........................................................................ 8
2.1.3 Ứng dụng của Nmap. ......................................................................... 9
2.1.4 Giao thức TCP.................................................................................... 9
2.1.5 Nguyên tắc quét cổng trên một hệ thống. ....................................... 12
2.2 Tiến trình của Nmap Scan. .................................................................. 15
2.3 Trạng thái quét của Nmap. .................................................................. 20
2.4 Cách sử dụng Nmap cơ bản. ................................................................ 21
2.4.1 Xác định mục tiêu cần quét. ............................................................ 21
2.4.2 Kỹ thuật về phát hiện máy chủ (Host Discovery). .......................... 21
2.5 Các tùy chọn quét và kỹ thuật chọn cổng. .......................................... 24
2.5.1 Các tùy chọn quét của Nmap........................................................... 24
2.5.2 Kỹ thuật quét cổng mà Nmap hỗ trợ. .............................................. 25
2.5.3 Kỹ thuật lựa chọn cổng khi quét. .................................................... 27
2.6 Giới thiệu Nmap Script Engine.............................................................. 28
2.7 Các lệnh cơ bản NSE............................................................................... 29
Kết luận Chương II ....................................................................................... 33
CHƯƠNG III. TRIỂN KHAI THỰC NGHIỆP NMAP............................ 34
3.1 Đặc tả chương trình. ............................................................................. 34
3.2 Triển khai thực nghiệm. ......................................................................... 34
3.2.1 Phát hiện máy chủ (Host Discovery). ............................................. 34
3.2.2 Quét cổng (Scan Port)...................................................................... 37
Kết luận Chương III ..................................................................................... 42
KẾT LUẬN .................................................................................................... 43
TÀI LIỆU THAM KHẢO ............................................................................ 44

BẢNG PHÂN CÔNG CÔNG VIỆC


STT Họ và tên Công việc Ghi chú
1 Đàm Công Ngọc Tìm hiểu về bài toán tấn công, trình
bày slide.
2 Lê Mạnh Thành Tìm hiểu code python cho công cụ
Nmap về phát hiện máy chủ, thuyết
trình.
3 Mai Thị Tâm Tìm hiểu về Nmap, tiến trình và các
trạng thái, cách sử dụng Nmap cơ bản,
thuyết trình.
4 Thiều Mạnh Đức Tìm hiểu code python cho công cụ
Nmap về quét cổng, thuyết trình.
5 Vũ Thị Hoa Tìm hiểu về các cách chọn và kỹ
thuật, tổng quan về NSE và lệnh cơ
bản của NSE, trình bày word.
DANH MỤC MINH HỌA
Hình 1. Cấu tạo gói tin TCP ................................................................................ 10
Hình 2. Quá trình Client khởi tạo kết nối TCP với Server ................................. 11
Hình 3. Quá trình Client kết thúc phiên làm việc TCP với Server ..................... 11
Hình 4. SYN Scan ............................................................................................... 12
Hình 5. FIN Scan ................................................................................................. 12
Hình 6. NULL Scan ............................................................................................ 13
Hình 7. XMAS Scan............................................................................................ 13
Hình 8. TCP Connect Scan ................................................................................. 13
Hình 9. TCP ACK Scan ...................................................................................... 14
Hình 10. Cấu trúc gói tin UDP ............................................................................ 15
Hình 11. Nmap OS Detection ............................................................................. 17
Hình 12. Nmap Traceroute .................................................................................. 18
Hình 13. Nmap Script Scanning.......................................................................... 18
Hình 14. Nmap Output ........................................................................................ 19
Hình 15. Nmap TEXT Output ............................................................................. 19
Hình 16. Script Systems Info trên Windows 10.................................................. 29
Hình 17. Nmap Script Engine HTML-tiltle ........................................................ 31
Hình 18. Nmap Script Engine Ms-sql-info ......................................................... 31
Hình 19. Nmap Script Engine Nbstat .................................................................. 32
Hình 20. Nmap Script Engine Whois .................................................................. 32
Hình 21. Thư mục chứa Nmap Scripts................................................................ 33
Hình 22. Kỹ thuật TCP SYN Ping ...................................................................... 34
Hình 23. Kỹ thuật TCP ACK Ping ...................................................................... 35
Hình 24. Kỹ thuật ICMP Ping ............................................................................. 35
Hình 25. Kỹ thuật UDP Ping............................................................................... 35
Hình 26. ARP Scan một trang web ..................................................................... 36
Hình 27. ARP Scan máy cùng mạng................................................................... 36
Hình 28. Scan hệ điều hành bằng Nmap ............................................................. 37
Hình 29. Kỹ thuật SYN Scan .............................................................................. 37
Hình 30. Kỹ thuật TCP FIN Scan. ...................................................................... 38
Hình 31. TCP FIN Scan một dải mạng ............................................................... 38
Hình 32. Code host .............................................................................................. 39
Hình 33. Kết quả code Host ................................................................................ 39
Hình 34. Code Quét Cổng ................................................................................... 41
Hình 35. Kết quả code quét cổng ........................................................................ 41

BẢNG DỮ LIỆU

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


Bảng 2.1 Tùy chọn khi quét mục tiêu ................................................................. 21
Bảng 3.1 Host Discovery Techniques ................................................................. 22
LỜI MỞ ĐẦU
❖ Lí do chọn đề tài
Hiện nay có rất nhiều công cụ giám sát tiên tiến đóng vai trò là những trợ thủ
đắc lực giúp đỡ các nhà quản trị mạng trong việc quét cổng và phát hiện các lỗ
hổng mạng nhưng Nmap vẫn được coi là một công cụ chuẩn mực, phổ biến nhất.
Các chuyên gia bảo mật và các nhà quản trị mạng đã, đang và sẽ phải đối
mặt với một trận chiến không bao giờ kết thúc trên chiến trường an ninh mạng.
Họ phải liên tục kiểm tra rà soát hệ thống mạng của 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. Trong
khi hiện nay có không ít các công cụ giám sát có sẵn hỗ trợ cho các chuyên gia
trong việc việc lập bản đồ hệ thống mạng và kiểm soát bảo mật nhưng Nmap vẫn
luôn là sự lựa chọn số một về tính linh hoạt và khả năng vận hành của nó. Chính
những ưu điểm vượt trội này đã làm cho Nmap trở thành một công cụ quét cổng
và lỗ hổng bảo mật tiêu chuẩn được thừa nhận rộng rãi trên toàn thế giới.
Vì những nguyên do trên nên nhóm 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.
❖ Mục tiêu.
Nghiên cứu, tìm hiểu bộ công cụ Nmap phục vụ trong việc quét cổng và phát
hiện lỗ hổng mạng. Qua đó, người quản trị có những thông báo và hành động kịp
thời khi phát hiện mói nguy hại tiềm ẩn.
Tên đề tài: “Nghiên cứu tìm hiểu bộ công cụ Nmap trong dò quét mạ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 một số trường hợp cơ bản.
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ẻ.
+ 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…

1
+ 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.
+ 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.
Như đã tìm hiểu ở phần trên, hệ thống mạng bao gồm một số lượng các thiết
bị ngoại vi, máy tính có sự liên kết với nhau tạo thành cho nên việc kiểm soát và
đảm bảo vấn đề an ninh là một việc vô cùng cấp thiết trước các mối đe dọa tấn
công bên ngoài.
Các tổ chức hacker dành hàng tá thời gian để tìm hiểu và có thể khai phá các
lỗ hổng bảo mật trong hệ thống từ đó xây dựng nên các kịch bản tấn công nguy
hiểm đe dọa đến tài nguyên cũng như tiến hành phá hoại cơ sở dữ kiệu trong hệ
thống mạng máy tính.
Đặc biệt có hai loại kịch bản tấn công mà kẻ tấn công thường hay sử dụng
đến đó là: Cyber kill chain và Mitre ATT&CK kill chain.

2
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).
− Weaponization (Vũ khí hóa).
− Delivery (Vận chuyển).
− Exploitation (Khai thác lỗ hổng).
− Installation (Cài đặt phần mềm độc hại).
− Command & Control (Giành quyền kiểm soát).
− Actions on objectives (Hành động theo mục tiêu).
+ 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).
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.

3
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).
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).
4
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.
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).
5
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.
− 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).
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).

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

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

8
− 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.
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.

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

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

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

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.

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

Hình 7. 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 8. 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
13
nếu nhận được gói là Host Unreachable thì Client sẽ biết port đó trên
server đã bị lọc.

Hình 9. 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).
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:

14
Hình 10. 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ĩ:
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

15
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
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.
16
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”

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

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

18
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 14. Nmap Output

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

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

19
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ở.
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.

20
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
-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.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>
21
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>)
− 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
22
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 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).
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
23
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.
-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.

24
--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ó 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
25
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 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
1996). Nmap, trong đó bao gồm kỹ thuật này, được phát hành hai vấn đề sau. Kỹ

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

27
-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 Giới thiệu Nmap Script Engine.
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:
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 đủ
28
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.7 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.
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 16. 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
29
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.
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
30
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:
“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 17. 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.

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

31
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>”

Hình 19. 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>”
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 20. Nmap Script Engine Whois


32
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

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

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

33
CHƯƠNG III. TRIỂN KHAI THỰC NGHIỆP 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 7, ứ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.
3.2 Triển khai thực nghiệm.
3.2.1 Phát hiện máy chủ (Host Discovery).
nmap –PS sinhvien.epu.edu.vn (TCP SYN Ping)
Trong hình 22 thì đây là kỹ thuật TCP SYN Ping (-PS) thì với trang web
sinhvien.epu.edu.vn 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 22. Kỹ thuật TCP SYN Ping

nmap –PA sinhvien.epu.edu.vn (TCP ACK Ping)


Như đã thấy trong hình 22 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.

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

nmap –PP –T5 192.168.1.2 (ICMP Ping)


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 24. Kỹ thuật ICMP Ping

nmap –PU sinhvien.epu.edu.vn (UDP Ping)


Như đã thấy ở hình 24 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 25. Kỹ thuật UDP Ping


35
nmap –PR sinhvien.epu.edu.vn
nmap –PR 192.168.1.2
Ở 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 sinhvien.epu.edu.vn, ngược lại
khi quét một máy trong cùng một mạng ở đây cụ thể là một chiếc điện thoại
Xiaomi bắt chung Wifi 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 26. ARP Scan một trang web

Hình 27. 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 sinhvien.epu.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ử 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 sinhvien.epu.edu.vn đang sử dụng càng lớn.
Như đó có thể thấy ở hình 27 thì Nmap không đưa ra được cụ thể và dự đoán rằng
88% là hệ thống nhúng HP, 87% là hệ điều hành Windows Server 2016, 87% với
hệ điều hành Linux.

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

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


nmap –sS epu.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 Đại học Điện Lực. Đâ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 29 chúng ta có thể thấy kết quả hiện ra một cách rất trực quan
như: DNS trả về của VNPT, các port đang được mở và cách dịch vụ được chạy
trên các port đó gồm FTP port 21, IMAP port 143 v.v.. ngoài ra có 987 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.

Hình 29. Kỹ thuật SYN Scan

nmap –sU epu.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.

37
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 30 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 31.

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

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

Trên đó 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:

38
Hình 32. Code host

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

Hình 33. Kết quả code Host

Đoạn code dưới đây sử dụng các tool scan port đơn giản trong ngôn ngữ Python.

39
40
Hình 34. Code Quét Cổng

Kết quả:

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

Ngoài ra thì còn một số những kỹ thuật quét cổng khác nữa trong Nmap, nhưng
trên đây là những kỹ thuật nổi bật và thông dụng. Các kỹ thuật khác khi test cũng
đều ra những kết quả giống nhau nên chúng em chỉ Demo một vài kiểu quét ở
trên.
41
Kết luận Chương III
Qua việc thực nghiệm được hai kỹ thuật trên đó là phát triển máy chủ (Host
Discovery) và quét cổng (Scan Port). 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.

42
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:
+ Chưa tìm hiểu được phần Nmap Script Engine (NSE).
+ 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.

43
TÀI LIỆU THAM KHẢO

Những tài liệu tham khảo khi thực hiện được đề tài:
Tiếng Việt:
[1] https://viblo.asia/p/nmap-network-scanner-cong-cu-quet-
mang-va-lo-hong-bao-mat-RnB5p4bb5PG.
[2] https://vncoder.vn/tin-tuc/cong-nghe/tim-hieu-cong-cu-quet-
mang-nmap.
[3] https://quantrimang.com/tat-tan-tat-ve-nmap-157752.
[4] https://123docz.net/document/5827648-tim-hieu-ve-cong-cu-
do-quet-mang-nmap.htm.
[5] https://www.tailieudaihoc.com/3doc/2464558.html.
[6] Slide bài giảng môn Kỹ thuật lập trình – HVKTMM.

Tiếng Anh:
[7] https://nmap.org/book/man-nse.html, (Chapter 15 - Nmap
Reference Guide)
[8] https://bom.so/ug839L, (Kislay Bhardwaj, 2019)
[9] https://hackersonlineclub.com/how-to-use-nmap-open-
source-network-security-scanner/, (Subhashini Rai, 2019)

44

You might also like