Professional Documents
Culture Documents
Hà Nội - 2022
MỤC LỤC
BẢNG DỮ LIỆU
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.
+ 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 đó.
+ 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.
+ 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.
+ 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.
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”
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:
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:
Còn đây là nội dung được ghi lại trong file text.
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
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.
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
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.
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>”
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”
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.
34
Hình 23. Kỹ thuật TCP ACK Ping
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
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.
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
Đ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ả:
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