Tải bản đầy đủ (.pdf) (30 trang)

BÁO CÁO KẾT THÚC HỌC PHẦN AN TOÀN MẠNG Chủ đề: ZMap

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.26 MB, 30 trang )

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG
KHOA CƠNG NGHỆ THƠNG TIN I

BÁO CÁO KẾT THÚC HỌC PHẦN
AN TỒN MẠNG
Chủ đề: ZMap

Giảng viên hướng dẫn:

TS. Đặng Minh Tuấn

Sinh viên thực hiện:

Phạm Tuấn Hiệp

Mã sinh viên:

B18DCAT079

Mã mơn học:

INT1482 Nhóm 1

Mã lớp:

D18-007

Hà Nội, 12/2021


MỤC LỤC


DANH SÁCH CÁC THUẬT NGỮ TIẾNG NƯỚC NGOÀI VÀ VIẾT TẮT ...............4
DANH MỤC HÌNH VẼ ..................................................................................................5
LỜI CẢM ƠN ..................................................................................................................6
LỜI MỞ ĐẦU .................................................................................................................7
CHƯƠNG I: GIỚI THIỆU CHUNG ...............................................................................8
1. Nguyên tắc truyền thơng TCP ..................................................................................8
1.1. Cấu tạo gói tin TCP ...........................................................................................8
1.2. Quá trình một phiên làm việc TCP với Server ..................................................9
2. Internet Scanning .....................................................................................................9
2.1. Giới thiệu về Internet Scanning .........................................................................9
2.2. Mục đích Internet Scanning ...............................................................................9
2.3. Tình trạng Internet Scanning hiện nay.............................................................10
2.4. Phạm vi Scan ...................................................................................................10
2.5. Một số các kiểu Scanning thông dụng .............................................................10
2. Nguyên tắc quét cổng trên một hệ thống ...............................................................11
2.1. TCP Scan .........................................................................................................11
2.2. UDP Scan .........................................................................................................14
2. Giới thiệu về công cụ rà quét ZMap ......................................................................14
CHƯƠNG II: HƯỚNG DẪN CÀI ĐẶT VÀ SỬ DỤNG ZMAP .................................16
1. Hướng dẫn cài đặt ..................................................................................................16
2. Hướng dẫn sử dụng ................................................................................................17
CHƯƠNG III: CÁC BÀI LAB, KỊCH BẢN DEMO ...................................................20
1. Thực hiện rà quét với các ví dụ cơ bản ..................................................................20
1.1. Qt Internet để tìm các máy chủ trên TCP/80 và xuất ra stdout ....................20
1.2. Tìm 5 HTTP Servers với tốc độ quét là 10Mb/s .............................................21
1.3. Quét 2 subnets trên cổng TCP/80 ....................................................................21
1.4. Quét các địa chỉ 14.46.101.40 và 129.76.63.19...............................................22
2. Thực hiện quét mạng LAN ....................................................................................22
CHƯƠNG IV: SO SÁNH, ĐÁNH GIÁ, KẾT LUẬN ..................................................24
1. So sánh ZMap với Nmap .......................................................................................24


2


2. Kết luận ..................................................................................................................29
CHƯƠNG V: TÀI LIỆU THAM KHẢO ......................................................................30

3


DANH SÁCH CÁC THUẬT NGỮ TIẾNG NƯỚC NGOÀI VÀ VIẾT TẮT
Connection-oriented: Hướng kết nối.
Fullduplex: Truyền và nhận dữ liệu cùng một lúc.
Sequencing: Cơ chế đánh số gói tin.
Acknowledgement: Cơ chế báo nhận.
TCP (Transmission Control Protocol): Giao thức điều khiển truyền vận
UDP (User Datagram Protocol): Giao thức dữ liệu người dùng.
IP: Giao thức Liên mạng (Internet Protocol)
ICMP: Giao thức điều khiển thông điệp Internet (Internet Control Message Protocol)
IGMP: Giao thức quản lý nhóm (Internet Internet group management protocol)
FTP: Giao thức chuyển tập tin (File Transfer Protocol)
XML: Ngôn ngữ đánh dấu mở rộng (Extensible Markup Language)
NSE: Công cụ tập lệnh Nmap (Nmap Script Engine)
ARP: Giao thức tìm địa chỉ (Address Resolution Protocol)
TTL: Thời gian sống (Time To Live)
SMTP: Giao thức truyền tải thư tín đơn giản (Simple Mail Transfer Protocol)
HTTP: Giao thức truyền tải siêu văn bản (HyperText Transfer Protocol )
Port: Cổng

4



DANH MỤC HÌNH VẼ
Hình 1-1: Cấu tạo gói tin TCP .........................................................................................8
Hình 1-2: TCP SYN Scan..............................................................................................11
Hình 1-3: FIN Scan .......................................................................................................12
Hình 1-4: NULL Scan ...................................................................................................12
Hình 1-5: XMAS Scan ..................................................................................................12
Hình 1-6: TCP Connect Scan ........................................................................................13
Hình 1-7: TCP ACK Scan .............................................................................................13
Hình 1-8: Cấu tạo gói tin UDP ......................................................................................14
Hình1-9: Logo ZMap ....................................................................................................14
Hình 1-10: Kiến trúc ZMap ...........................................................................................15
Hình 2-1: Cài đặt ZMap trên Kali Linux .......................................................................16
Hình 2-2: Hướng dẫn sử dụng ZMap ............................................................................18
Hình 2-2: Hướng dẫn sử dụng ZMap (tiếp theo)...........................................................19
Hình 3-1: Kết quả quét máy chủ trên TCP/80 và xuất ra stdout ...................................20
Hình 3-2: Kết quả tìm 5 HTTP Servers với tốc độ quét là 10Mb/s ..............................21
Hình 3-3: Quá trình quét 2 subnets trên cổng TCP/80 ..................................................21
Hình 3-4: Cảnh báo mất mát gói tin của ZMap .............................................................21
Hình 3-5: Kết quả quét các địa chỉ 14.46.101.40 và 129.76.63.19 ...............................22
Hình 3-6: Kết quả quét mạng LAN khi chưa chỉnh sửa tệp blacklist.conf ...................22
Hình 3-7: Tệp blacklist.conf mặc định ..........................................................................22
Hình 3-8: Tệp blacklist.conf đã chỉnh sửa.....................................................................23
Hình 3-9: Kết quả quét mạng LAN ...............................................................................23
Hình 4-1: So sánh ZMap và Nmap ................................................................................24
Hình 4-2: Thời gian SYN đến SYN-ACK ....................................................................25
Hình 4-3: Top 10 Certificate Authorities ......................................................................27
Hình 4-4: HTTPS Adoption ..........................................................................................28
Hình 4-5: Top 10 TCP ports ..........................................................................................28


5


LỜI CẢM ƠN
Đầu tiên, em xin gửi lời cảm ơn chân thành đến Học viện Cơng nghệ Bưu chính
viễn thơng đã đưa mơn học An Tồn Mạng vào chương trình dạy. Đặc biệt em xin gửi
lời cảm ơn Thầy Đặng Minh Tuấn đã hướng dẫn và truyền đạt kiến thức cho em trong
suốt thời gian học vừa qua. Thầy đã giúp em hiểu tầm quan trọng của mơn An Tồn
Mạng và cách áp dụng đó vào thực tiễn của chuyên ngành. Bên cạnh đó thầy cịn chỉ
dạy thêm nhiều kiến thức khác ngồi lề, có ích cho tất cả các ngành trong trường. Mơn
học này giúp em có thêm kiến thức chuyên môn về chuyên ngành mà em đang học và
kiến thức về việc làm một bài báo cáo tốt nghiệp điều này là rất cần thiết đối với một
sinh viên năm cuối như em.
Lời cuối cùng, em xin kính chúc thầy luôn khỏe mạnh, thành công và hạnh phúc!
Hà Nội, ngày 22 tháng 12 năm 2021
SINH VIÊN

Phạm Tuấn Hiệp

6


LỜI MỞ ĐẦU
Trong thời đại ngày nay, vai trò của Công nghệ thông tin và Internet ngày càng
quan trọng. Điều này kéo theo phần lớn các ngành kinh tế phụ thuộc vào máy vi tính.
Chính vì vậy, nhiều ý đồ phá hoại đã nhắm vào các hệ thống này và cũng không loại trừ
khả năng đối thủ cạnh tranh nhau. Do đó, để đảm bảo máy tính hoạt động trơn tru liên
tục đòi hỏi hệ thống phải trang bị những cơng cụ, những biện pháp phịng thủ, những hệ
thống cảnh báo bảo mật nhằm chống lại tin tặc. Chúng ta biết rằng hacker có 2 loại là

hacker mũ trắng và hacker, mũ đen, hacker, mũ đen là những tay tinh quái và thông
minh vô cùng. Họ không chỉ giỏi về khả năng lập trình mà cịn giỏi về cả mạng, giao
thức mạng. Họ có thể lợi dụng những lỗi nhỏ nhất được khai thác từ đó tấn cơng hệ
thống máy chủ gây thiệt hại lớn nếu đó là một doanh nghiệp lớn, một tập đoàn lớn hay
ngân hàng... Quả thật thiệt hại do hacker gây ra quá lớn, ảnh hưởng nghiêm trọng đến
người dùng máy tính. Vì vậy nhằm chống lại những hacker mũ đen, những hacker mũ
trắng không ngừng nâng cao kiến thức cũng như sự nhạy bén, cẩn thận, tư duy sáng tạo
không ngừng nhằm ngăn chặn bảo vệ người dùng máy tính, tạo nơi người dùng sự tin
cậy, cũng như những thông tin tài khoản, kế hoạch, dự án của họ sẽ được hoàn toàn
được bảo mật tuyệt đối. Và dù là hacker mũ đen hay hacker mũ trắng thì thứ mà bài báo
cáo này em đề cập đến là một trong những công cụ đắc lực giúp các chuyên gia bảo mật
hay cả tin tặc thực hiện mục đích của mình. Đó chính là bộ cơng cụ ZMap.
ZMap là công cụ mã nguồn mở được thiết kế để quét dịch vụ mạng trên phạm vi
rộng. ZMap có thể qt tồn bộ dãy địa chỉ IPv4 trong một khoảng thời gian ngắn. Công
cụ này được sử dụng trong nhiều mục đích khác nhau như: tìm nhanh các IP đang bị
nhiễm mã độc, các lỗ hổng bảo mật; đánh giá, liệt kê các thiết bị mạng đang sử dụng…

7


CHƯƠNG I: GIỚI THIỆU CHUNG
1. Nguyên tắc truyền thông TCP
1.1. Cấu tạo gói tin TCP
TCP Là giao thức hướng kết nối (connection-oriented) nghĩa là khi muốn truyền
dữ liệu thì phải thiết lập kết nối trước. Kết nối TCP hỗ trợ cơ chế fullduplex (truyền và
nhận dữ liệu cùng một lúc). Ngồ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.


Hình 1-1: Cấu tạo gói tin TCP
Ở đây ta chỉ để ý tới các thiết lập Flag trong gói tin TCP nhằm mục đích sử dụng để
Scan Port:
− Thông số SYN để yêu cầu kết nối giữa hai máy tính.
− Thơng số ACK để trả lời 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 q 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).
8


− 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.
Tồn bộ các thơng số này trong gói tin nó chỉ thể hiện là 1 hoặc 0. Nếu là 0 thì
gói tin TCP khơng thiết lập thơng số này, nếu là 1 thì thơng số nào đó được thực hiện
nó sẽ lần lượt trong 8 bits trong phần Flag.
1.2. Quá trình một phiên làm việc TCP với Server
Khi Client muốn thực hiện một kết nối TCP với Server:
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:
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à q trình ngắt kết nối giữa Server
và Client được thực hiện.

2. Internet Scanning
2.1. Giới thiệu về Internet Scanning
Internet Scanning là một kỹ thuật mạnh mẽ được sử dụng bởi các nhà nghiên cứu
để nghiên cứu và đo lường Internet hoặc cũng có thể được sử dụng bởi các hacker với
mục đích tìm kiếm những lỗ hổng và khai thác chúng với ý đồ xấu . Mục đích của việc
Scanning the Internet là thu thập mọi thông tin cần thiết để phục vụ cho việc nghiên cứu
đối với những người vận hành mạng hay phục vụ cho mục đích tấn cơng đối với những
hacker. Những thông tin thu thập được bằng việc Scanning the Internet ở đây có thể là
những dịch vụ đang chạy trên Internet, thông tin về hệ điều hành của các máy chủ, những
cổng đang mở trên Internet với các dịch vụ tương ứng, những host cịn đang chạy trên
Internet,...
2.2. Mục đích Internet Scanning
Internet Scanning giúp ta thu thập mọi thông tin có trên internet nhưng về cơ bản
có hai lý do chính để thực hiện Scanning. Thứ nhất là để tìm kiếm lỗ hổng để khai thác
hoặc nghiên cứu an ninh. Thứ hai là thống kê, để cung cấp cái nhìn tổng quan về các
vấn đề trên Internet. Ngoài ra, nhiều tổ chức đang tiến hành những dự án mà ở đó
Scanning khơng dùng để nghiên cứu cũng khơng dùng để khai thác lỗ hổng mà sử dụng
để khám phá, trinh sát phục vụ các hoạt động quân sự.

9


Ví dụ: Khi một lỗ hổng mới được cơng bố trên Internet. Sử dụng Internet
Scanning giúp ta thống kê được những host nào bị dính lỗ hổng, những host nào đã được
vá lỗi hay những dịch vụ nào trên các host bị dính lỗi này.
2.3. Tình trạng Internet Scanning hiện nay
Theo thống kê, gần 80% lượng quét đều nhắm tới hơn 1% không gian địa chỉ
IPV4. Trước đây Scanning the Internet với số lượng địa chỉ IP lớn như vậy là một q
trình chậm chạp và tốn nhiều cơng sức. Chẳng hạn, trong năm 2010 Electronic Frontier
Foundation đã tiến hành quét để thu thập dữ liệu về việc sử dụng mã hóa trực tuyến.

Q trình qt kéo dài hơn 3 tháng. Tuy nhiên trong vài năm vừa qua với sự ra đời của
hai công cụ quét tốc độ cao là ZMap và Masscan đã tác động không nhỏ đến Internet
Scanning. Thời gian quét đã giảm đáng kể từ vài tuần xuống chỉ còn vài tiếng. Tiến bộ
mới trong chức năng quét tốc độ cao đã làm thay đổi cảnh quan an ninh, làm cho những
kẻ tấn cơng có thể hồn thành việc Scanning với quy mô lớn chỉ trong vài giờ. Nhưng
ngược lại, khả năng quét nhanh chóng và tiết kiệm chi phí cũng mở ra một cơ hội hấp
dẫn cho ngành nghiên cứu Internet.
2.4. Phạm vi Scan
Horizontal scan: Mô tả quá trình quét cùng một cổng trên nhiều địa chỉ IP. Một
ví dụ điển hình của Horizontal scan là qt tồn bộ khơng gian địa chỉ IPV4 trên một
cổng duy nhất. Horizontal scan thường được sử dụng bởi những kẻ tấn công để phát
hiện các cổng mở trên một số lượng lớn các máy chủ qua đó khai thác lỗ hổng của các
ứng dụng đang lắng nghe trên cổng đó. Hoặc cách quét đó cũng có thể sử dụng để quét
kiểm tra an ninh. Chẳng hạn như việc thống kê sự phân bố của một lỗ hổng có trên
internet.
Vertical scan: Mô tả chức năng quét nhiều cổng trên cùng một địa chỉ IP. Ví dụ
như qt tồn bộ các cổng thông dụng của một máy chủ. Quét như vậy chủ yếu là để
phát hiện lỗ hổng trên một hệ thống duy nhất.
Block scan: Phạm vi quét là sự kết hợp của hai kiểu quét trên – quét nhiều cổng
trên nhiều địa chỉ khác nhau. Đối với những khối lớn thì khả năng mở rộng là rất hạn
chế. Trên thực tế thì ta cũng chỉ quét một số lượng nhỏ các cổng thơng dụng chứ khơng
qt tồn bộ các cổng của một máy chủ. Quét như vậy thích hợp với những chuyên gia
nghiên cứu an ninh mạng toàn cầu hoặc những kẻ tấn công nhằm vào nhiều lỗ hổng khác
nhau.
Trong bài viết này ta chủ yếu nghiên cứu về loại Horizontal scan và các dịch vụ
thường được nhắm đến khi thực hiện một cuộc Scanning the Internet trên quy mô lớn.
2.5. Một số các kiểu Scanning thông dụng
2.5.1. Port scanning
Port scanning là một quá trình kết nối các cổng (TCP và UDP) trên internet nhằm
xác định xem dịch vụ nào đang chạy hoặc đang trong trạng thái nghe. Xác định các cổng

nghe là một công việc quan trọng nhằm xác định được loại hình hệ thống và những ứng
dụng đang được sử dụng. Mỗi dịch vụ hay ứng dụng máy tính đều được kết hợp với một
số cổng thơng dụng.
10


2.5.2. Network scanning
Network scanning là một quy trình để xác định máy chủ đang hoạt động trên
mạng, hoặc để tấn công chúng hoặc là đánh giá an ninh mạng. Máy chủ được xác định
bởi IP cá nhân của chúng. Các công cụ network-scanning cố gắng xác định tất cả các
máy chủ trực tiếp hoặc trả lời trên mạng và địa chỉ IP tương ứng của chúng. Khi đã chắc
chắn những địa chỉ nào có host đang chạy ta sẽ thực hiện quét cổng chỉ những địa chỉ
này nhằm giảm bớt lượng host cần quét ngoài việc giúp tiết kiệm chi phí cịn giúp giảm
thời gian qt rất đáng kể.
2.5.3. Vulnerability scanning
Vulnerability scanning là quá trình chủ động xác định các lỗ hổng của các mục
tiêu trên internet. Thông thường, một máy quét lỗ hổng đầu tiên xác định các hệ điều
hành và số phiên bản, bao gồm các gói dịch vụ có thể được cài đặt. Sau đó, máy quét lỗ
hổng xác định các điểm yếu, lỗ hổng trong hệ điều hành. Một hệ thống phát hiện xâm
nhập (IDS) hay một mạng an ninh tinh vi chuyên nghiệp với các cơng cụ thích hợp có
thể phát hiện các hoạt động port-scanning. Các cơng cụ dị qt cổng TCP/IP tìm kiếm
các cổng mở và địa chỉ IP, và lỗ hổng thường có thể bị phát hiện, vì các máy qt phải
tương tác với các mục tiêu trên mạng
2. Nguyên tắc quét cổng trên một hệ thống
2.1. TCP Scan
Trên gói TCP/UDP có 16 bít dành cho Port Number điều đó có nghĩa nó có tử 165535 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.
SYN Scan: Khi Client gửi gói SYN với một thơng số Port nhất định tới Server

nếu Server gửi về gói SYN/ACK thì Client biết Port đó trên Server được mở. Nếu Server
gửi về cho Client gói RST/SYN thì biết port đó trên Server đóng.

Hình 1-2: TCP 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
Server đó mở port. Nếu Server gửi về gói RST thì Client biết Server đó đóng port.

11


Hình 1-3: FIN Scan
NULL Scan: Client sẽ gửi tới Server những gói TCP với số port nhất định cần
scan mà không chứa các thống số Flag như : FIN, URG, PSH, nếu Server gửi lại gói
RST thì biết port đó trên Server bị đóng.

Hình 1-4: NULL Scan
XMAS Scan: Client sẽ gửi những gói tin TCP với số port nhất định cần scan
chứa nhiều thông số Flag như: FIN, URG, PSH. Nếu Server trả về gói RST tơi biết port
đó trên Server bị đóng.

Hình 1-5: XMAS Scan

12


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 1-6: TCP Connect Scan
ACK Scan: dạng Scan này nhằm mục đích tìm những Access Controll List trên
Server cố gắng kết nối tới Server bằng gói ICMP nếu nhận được gói là Host Unreachable
thì Client sẽ biết port đó trên server đã bị lọc.

Hình 1-7: TCP ACK Scan
Ngồ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.
13


2.2. UDP Scan
Nếu như gói tin truyền bằng TCP để đảm bảo sự tồn vẹn của gói tin sẽ ln
đượ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 tạo gói UDP:

Hình 1-8: Cấu tạo 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. Thật không may hầu hết

hệ 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 bạn hãy chuẩn bị tinh thần nhận được
các kết quả khơng có độ tin cậy cao.
2. Giới thiệu về công cụ rà quét ZMap
Dự án ZMap ra đời năm 2013 tại Đại học Michigan khi Zakir Durumeric, Eric
Wustrow và J. Alex Halderman phát hành máy quét ZMap gói đơn. Kể từ đó, nhà phát
triển ZMap đã xây dựng gần một tá công cụ và thư viện mã nguồn mở để thực hiện phân
tích thực nghiệm quy mơ lớn về các thiết bị Internet.

Hình1-9: Logo ZMap

14


Các cuộc điều tra mạng Internet diện rộng thu thập dữ liệu bằng cách thăm dò
các tập hợp con lớn của khơng gian địa chỉ public IP. Tính năng rà qt trên tồn Internet
có thể giúp phát hiện các loại lỗ hổng mới, theo dõi việc triển khai các biện pháp giảm
thiểu và làm sáng tỏ các hệ sinh thái phân tán không rõ ràng trước đây. Tuy nhiên,
phương pháp này dễ tiếp cận với những kẻ tấn công hơn là các nhà nghiên cứu hợp pháp,
những người không thể sử dụng quyền truy cập mạng bị đánh cắp hoặc phát tán mã tự
sao chép. Việc qt tồn diện khơng gian địa chỉ cơng khai bằng các cơng cụ có sẵn như
Nmap đòi hỏi thời gian hàng tuần hoặc nhiều máy.
Trong bài báo cáo này, em xin trình bày về ZMap, một công cụ rà quét mạng mã
nguồn mở và mô-đun được thiết kế đặc biệt để thực hiện quét nghiên cứu toàn diện trên
Internet. Một máy tầm trung duy nhất chạy ZMap có khả năng quét một cổng mở nhất
định trên tồn bộ khơng gian địa chỉ IPv4 cơng cộng trong vòng dưới 45 phút — hơn
97% tốc độ tối đa lý thuyết của gigabit Ethernet — mà không yêu cầu phần cứng chuyên
dụng hoặc nhân mô-đun. Kiến trúc mơ-đun của ZMap có thể hỗ trợ nhiều loại đầu dị
gói đơn, bao gồm qt TCP SYN, qt ICMP echo request và quét UDP dành riêng cho

ứng dụng đặc thù và nó có thể giao tiếp dễ dàng với mã do người dùng cung cấp để thực
hiện các hành động tiếp theo trên các máy chủ được phát hiện, chẳng hạn như hoàn
thành một giao thức bắt tay.
ZMap sử dụng thiết kế mơ-đun để hỗ trợ nhiều loại đầu dị và tích hợp với nhiều
ứng dụng nghiên cứu khác nhau, như được minh họa trong Hình 1-9. Lõi cơng cụ qt
xử lý phân tích dịng lệnh và tệp cấu hình, tạo và loại trừ địa chỉ, giám sát tiến độ và
hiệu suất, đọc và viết gói tin mạng. Các mơ-đun thăm dị mở rộng có thể được tùy chỉnh
cho các loại đầu dò khác nhau và chịu trách nhiệm tạo các gói thăm dị và giải thích xem
các gói đến có phải là phản hồi hợp lệ hay khơng. Các trình xử lý đầu ra mơ-đun cho
phép chuyển kết quả quét đến một quy trình khác, được thêm trực tiếp vào cơ sở dữ liệu
hoặc chuyển tới mã người dùng để thực hiện thêm hành động, chẳng hạn như hoàn thành
một giao thức bắt tay.
Ở cấp độ cao, một trong những đặc điểm kiến trúc quan trọng nhất của ZMap là
việc gửi và nhận các gói diễn ra trong các chuỗi riêng biệt hoạt động độc lập và liên tục
trong suốt quá trình quét. Một số lựa chọn thiết kế đã được thực hiện để đảm bảo rằng
các quá trình này chia sẻ trạng thái ít nhất có thể.
Nhà phát triển ZMap đã triển khai ZMap trong khoảng 8.900 dòng mã nguồn
ngơn ngữ C. Nó được viết và thử nghiệm trên hệ điều hành GNU.

Hình 1-10: Kiến trúc ZMap

15


CHƯƠNG II: HƯỚNG DẪN CÀI ĐẶT VÀ SỬ DỤNG ZMAP
1. Hướng dẫn cài đặt
ZMap hoạt động trên GNU / Linux, MacOS và BSD. Có thể cài đặt phiên bản ổn
định mới nhất (v2.1.1) bằng hầu hết các trình quản lý gói hệ điều hành:
Fedora 19+ or EPEL 6+:
sudo yum install zmap


Debian 8+ or Ubuntu 14.04+:
sudo apt install zmap

Gentoo:
sudo emerge zmap

MacOS (using Homebrew):
brew install zmap

Arch Linux:
sudo pacman -S zmap

Kali Linux:
sudo apt-get install zmap

Hình 2-1: Cài đặt ZMap trên Kali Linux
Các phiên bản của ZMap được cập nhật tại: git://github.com/zmap/zmap.git

16


2. Hướng dẫn sử dụng
Trong bài viết này em sẽ demo cách sử dụng cơ bản ZMap trên Kali Linux.
Ví dụ sau đây ta sẽ quét ngẫu nhiên 1000 địa chỉ ip trên cổng 80 với tốc độ gửi
tin là 10Mbps. Kết quả quét được lưu trong file result.zmap.

Khi quá trình quét bắt đầu, Zmap sẽ hiển thị cập nhật trạng thái quét sau mỗi giây. Trạng
thái bao gồm có: thời gian qt cịn lại, số gói tin gửi đi, số gói tin nhận về, lượt truy
cập. Kết quả quét được ghi lại trong file result.zmap:


Sau đây là các tham số được sử dụng phổ biến khi tiến hành quét với zmap:
Tùy chọn chung:
-p, --target-port: Số cổng TCP để quét (Ví dụ: 80)
-o, --output-file: File lưu kết quả quét
-b, --blacklist-file: Khi quét Zmap sẽ không quét các địa chỉ nằm trong

danh sách này.
Tùy chọn quét:
-n, --max-targets: Số mục tiêu cần qt.
-N, --max-results: Thốt khỏi q trình qt sau khi nhận được số kết quả

được nhập vào tham số này
-r, --rate: Thiết lập tốc độ gửi các gói tin.
-B, --bandwidth: Thiết lập tốc độ gửi bằng bit/s

Tùy chọn mạng:
-s, --source-port: Các gói dữ liệu sẽ được gửi từ cổng này.

17


-S, --source-Ip: Các gói dữ liệu sẽ được gửi từ địa chỉ IP này. Có thể là 1 hay

nhiều địa chỉ IP.
-G, --gateway-Mac: Địa chỉ Gateway để gửi gói tin đến.
-i, --interface: Giao diện mạng sử dụng.

Tùy chọn kiểu quét:
--list-probe-modules: Danh sách module thăm dị (Ví dụ: tcp_synscan)

-M, --probe-module: Chọn kiểu module thăm dò. Mặc định là tcp_synscan

Tùy chọn bổ sung:
-C, --config: Đọc 1 tập tin cấu hình
-q, --quiet: Khơng hiển thị cập nhật trạng thái trong quá trình quét.
-g, --summary: cấu hình In và tóm tắt các kết quả vào cuối của quá trình quét.
-v, --verbosity: mức độ chi tiết log
-h, --help: trợ giúp
-V, --version: phiên bản

Hình 2-2: Hướng dẫn sử dụng ZMap

18


Hình 2-2: Hướng dẫn sử dụng ZMap (tiếp theo)

19


CHƯƠNG III: CÁC BÀI LAB, KỊCH BẢN DEMO
1. Thực hiện rà quét với các ví dụ cơ bản
1.1. Quét Internet để tìm các máy chủ trên TCP/80 và xuất ra stdout
Cú pháp:
zmap -p 80

Hình 3-1: Kết quả quét máy chủ trên TCP/80 và xuất ra stdout
ZMap sẽ quét toàn bộ các máy chủ trên TCP / 80 trên Internet, do vậy, quá trình
quét mất khá nhiều thời gian.


20


1.2. Tìm 5 HTTP Servers với tốc độ quét là 10Mb/s
Cú pháp:
zmap -N 5 -B 10M -p 80

Hình 3-2: Kết quả tìm 5 HTTP Servers với tốc độ quét là 10Mb/s
1.3. Quét 2 subnets trên cổng TCP/80
Cú pháp:
zmap -p 80 14.0.0.0/8 192.148.0.0/16 -o --output-module=default

ZMap hiện đang sử dụng danh sách đen mặc định tại /etc/zmap/blacklist.conf.
Theo mặc định, danh sách đen này loại trừ các mạng có phạm vi cục bộ (ví dụ:
10.0.0.0/8, 127.0.0.1/8 và 192.168.0.0/16). Nếu bạn đang cố gắng quét các mạng cục
bộ, bạn có thể thay đổi danh sách đen mặc định bằng cách chỉnh sửa cấu hình ZMap
mặc định tại /etc/zmap/zmap.conf.

Hình 3-3: Quá trình quét 2 subnets trên cổng TCP/80
ZMap sẽ đưa ra cảnh báo mỗi khi gói tin gửi đi bị mất mát.

Hình 3-4: Cảnh báo mất mát gói tin của ZMap

21


1.4. Quét các địa chỉ 14.46.101.40 và 129.76.63.19
Cú pháp:
zmap -p 80 14.46.101.40 129.76.63.19


Hình 3-5: Kết quả quét các địa chỉ 14.46.101.40 và 129.76.63.19
2. Thực hiện quét mạng LAN
Cú pháp:
sudo zmap -p 80 10.0.2.15 -o LANresults.csv

Hình 3-6: Kết quả quét mạng LAN khi chưa chỉnh sửa tệp blacklist.conf
Như chúng ta có thể thấy ở trên, Zmap từ chối quét mạng cục bộ của vì - theo
mặc định - Zmap đưa vào danh sách đen tất cả các địa chỉ IP riêng. Chúng ta có thể khắc
phục điều đó bằng cách chỉ cần mở tệp blacklist.conf trong bất kỳ trình soạn thảo văn
bản nào và chỉnh sửa các địa chỉ IP mà chúng tôi muốn quét. Danh sách đen của Zmap
ở:
sudo mousepad /etc/zmap/blacklist.conf

Hình 3-7: Tệp blacklist.conf mặc định

22


Xóa IP riêng của mạng của bạn khỏi blacklist.conf (trong trường hợp của tơi, tơi
đã xóa dịng 14 ở tệp mặc định).

Hình 3-8: Tệp blacklist.conf đã chỉnh sửa
Bây giờ, chúng ta hãy thử quét lại mạng LAN của chúng ta.
sudo zmap -p 80 192.168.0.0/16 -o LANresults.csv

Hình 3-9: Kết quả quét mạng LAN

23



CHƯƠNG IV: SO SÁNH, ĐÁNH GIÁ, KẾT LUẬN
1. So sánh ZMap với Nmap
Nhà phát triển đã thực hiện một số thử nghiệm để so sánh ZMap với Nmap trong
các ứng dụng quét trên Internet, tập trung vào vùng phủ sóng và thời gian đã qua để
hồn thành một q trình quét. Nmap và ZMap được tối ưu hóa cho các mục đích rất
khác nhau. Nmap là một cơng cụ đa năng, linh hoạt cao thường được sử dụng để thăm
dò một số lượng lớn các cổng đang mở trên một số lượng máy chủ nhỏ hơn, trong khi
ZMap được tối ưu hóa để thăm dị một cổng duy nhất trên số lượng mục tiêu rất lớn.
Nhà phát triển ZMap chọn so sánh cả hai vì các nghiên cứu bảo mật gần đây đã sử dụng
Nmap cho các cuộc khảo sát trên Internet diện rộng và bởi vì, giống như ZMap, Nmap
hoạt động từ bên trong không gian người dùng trên Linux.
Nhà phát triển ZMap đã thử nghiệm nhiều cài đặt Nmap khác nhau để tìm ra các
cấu hình hợp lý để so sánh. Tất cả đều thực hiện quét TCP SYN trên cổng 443 (-Ss -p
443). Nmap cung cấp một số giá trị mặc định được gọi là mẫu thời gian, nhưng ngay cả
với những mẫu mạnh nhất trong số này (được gắn nhãn " insane"), q trình qt trên
tồn Internet sẽ mất hơn một năm để hoàn thành. Để làm cho Nmap quét nhanh hơn
trong các cấu hình thử nghiệm của mình, nhà phát triển ZMap đã bắt đầu với mẫu
“insane” (-T5), tính năng phát hiện máy chủ bị vơ hiệu hóa và độ phân giải DNS (-Pn n) và đặt tốc độ gói tối thiểu cao (--tốc độ 10000 ). Mẫu "insane" thử lại mỗi thăm dò
một lần sau một thời gian chờ; nhà phát triển ZMap cũng đã thử nghiệm thêm cấu hình
Nmap thứ hai với tính năng thử lại bị tắt (--max-retries 0).
Nhà phát triển ZMap đã sử dụng ZMap để chọn một mẫu ngẫu nhiên gồm 1 triệu
địa chỉ IP và quét chúng để tìm các máy chủ đang nghe trên cổng 443 với Nmap trong
hai cấu hình được mơ tả ở trên và với ZMap trong cấu hình mặc định của nó và trong
một cấu hình thứ hai gửi hai đầu dị SYN đến mỗi máy chủ (-P 2). Nhà phát triển ZMap
lặp lại quá trình này trong 10 thử nghiệm trong khoảng thời gian 12 giờ và báo cáo mức
trung bình trong Hình 4-1.

Hình 4-1: So sánh ZMap và Nmap
Kết quả cho thấy ZMap quét nhanh hơn nhiều so với Nmap và tìm thấy nhiều
máy chủ đang lắng nghe hơn so với cấu hình Nmap. Các khoảng thời gian được báo cáo

cho ZMap bao gồm thời gian gửi các thăm dò gửi cũng như độ trễ cố định 8 giây sau
khi quá trình gửi hồn tất, trong đó ZMap chờ các phản hồi trễ. Suy rộng ra thời gian
cần thiết để quét trên tồn Internet, cấu hình ZMap được thử nghiệm nhanh nhất sẽ hoàn
thành nhanh hơn khoảng 1300 lần so với cấu hình Nmap nhanh nhất.

24


Để tìm hiểu lý do tại sao ZMap đạt được độ phủ cao hơn Nmap, nhà phát triển
đã khảo sát một mẫu ngẫu nhiên gồm 4,3 triệu địa chỉ trên cổng TCP 80 và đo độ trễ
giữa việc gửi SYN và nhận SYN-ACK từ các máy chủ đáp ứng. Hình 4-2 cho thấy CDF
của các kết quả. Thời gian khứ hồi tối đa là 450 giây và một số ít máy chủ phải mất hơn
63 giây để phản hồi, đây là thời gian dành cho một TCP cố gắng kết nối hết thời gian
trên Linux. 99% máy chủ phản hồi trong vòng 500 giây đã làm như vậy trong vòng
khoảng 1 giây và 99,9% máy chủ phản hồi trong vòng 8,16 giây.

Hình 4-2: Thời gian SYN đến SYN-ACK
Vì mã nhận của ZMap khơng có trạng thái đối với mã gửi, SYN-ACK hợp lệ
quay lại bất kỳ lúc nào trước khi q trình qt hồn tất sẽ được ghi lại dưới dạng máy
chủ lắng nghe. Để đảm bảo mức độ phủ sóng cao, cài đặt ZMap mặc định kết hợp độ trễ
8 giây theo kinh nghiệm sau khi đầu dò cuối cùng được gửi trước khi quá trình nhận kết
thúc.
Ngược lại, Nmap duy trì thời gian chờ cho mỗi đầu dị. Trong mẫu thời gian
“insane” Nmap mà nhà phát triển đã thử nghiệm, thời gian chờ ban đầu là 250 mili giây,
theo thời gian đó ít hơn 85% máy chủ đáp ứng trong thử nghiệm của nhà phát triển đã
phản hồi. Trong q trình qt, thời gian chờ của Nmap có thể tăng lên 300 mili giây,
tức là 93,2% đã phản hồi. Do đó, nhà phát triển mong đợi một lần quét Nmap thăm dò
đơn với các giá trị thời gian này để xem 85–93% máy chủ mà ZMap tìm thấy, gần giống
với giá trị quan sát được là 82,5%.
Với mặc định "insane" của Nmap, nó sẽ cố gắng gửi một thăm dò thứ hai sau một

thời gian chờ. Phản hồi cho SYN đầu tiên hoặc thứ hai sẽ được coi là hợp lệ cho đến khi
hết lần thứ hai, do đó, điều này có hiệu quả tăng thời gian chờ tổng thể lên 500–600 mili

25


×