HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG
KHOA CƠNG NGHỆ THƠNG TIN
Học phần: An tồn mạng
Bài báo cáo:
MASSCAN
Giảng viên hướng dẫn: TS. Đặng Minh Tuấn
Sinh viên thực hiện:
Nhóm 1
Nguyễn Ngọc Bảo – B18DCAT017
Hà Nội 2021
Mục lục
Lời mở đầu............................................................................................................................ 2
Chương I: Giới thiệu .............................................................................................................. 3
1.
Giới thiệu về Internet Scanning ........................................................................................... 3
2.
Mục đích Internet Scanning ................................................................................................. 3
3.
Tình trạng Internet Scanning hiện nay................................................................................. 3
Chương II: Masscan ............................................................................................................... 4
1.
Masscan là gì? ...................................................................................................................... 4
2.
Những đặc điểm chính ......................................................................................................... 4
3.
Masscan dành cho ai ............................................................................................................ 5
4.
Lưu ý khi sử dụng ................................................................................................................. 5
Chương III: Sử dụng Masscan ................................................................................................ 6
1.
Cài đặt .................................................................................................................................. 6
2.
Hướng dẫn sử dụng ........................................................................................................... 11
3.
Ví dụ ................................................................................................................................... 16
Chương IV: Các bài Lab ........................................................................................................ 21
Lab 1: Tự kiểm tra ..................................................................................................................... 21
Lab 2: Quét Google IP, lấy biểu ngữ & kết quả đầu ra .............................................................. 23
Lab 3: Tạm dừng & Tiếp tục Quét ............................................................................................. 26
Lab 4: Loại trừ các địa chỉ cụ thể và các tùy chọn khác ............................................................ 29
Lab 5: Kết hợp tất cả lại với nhau trong một cấu hình tùy chỉnh .............................................. 34
Chương V: So sánh Masscan với Nmap ................................................................................ 35
1.
Tổng quát ........................................................................................................................... 35
2.
Chi tiết ................................................................................................................................ 36
Kết luận............................................................................................................................... 37
Tài liệu tham khảo ............................................................................................................... 38
Lời cảm ơn .......................................................................................................................... 39
1
Lời mở đầu
Nếu ví rằng cơng việc Pentesting như là một cuộc chiến, thì Information
Gathering có lẽ là q trình trinh sát. Nó đại diện cho triết lý vơ cùng quan trọng
"Biết địch biết ta, trăm trận trăm thắng". Thành công cũng ở đây, thất bại cũng ở
đây. Càng nắm vững được thông tin của mục tiêu, bạn càng tăng cơ hội chiếm
quyền điều khiển mục tiêu. Và ở bài báo cáo này tôi sẽ giới thiệu về Masscan, một
công cụ sử dụng phương pháp Internet Scanning để thu thập thông tin.
2
Chương I: Giới thiệu
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. 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ự. 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.
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
quá 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 công cụ quét tốc độ cao là 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
3
đổ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.
Chương II: Masscan
1. Masscan là gì?
Masscan là một trình quét mạng mã nguồn mở có thể quét nhanh các mạng
lớn. Đặc biệt, nó có thể qt tồn bộ Internet IPv4 trong vịng chưa đầy 5 phút [3] ,
từ một máy tính duy nhất, khi được cung cấp đủ băng thông mạng (20-gbps) cho
Internet.
So với các máy quét mạng phổ biến khác, chẳng hạn như Nmap tập trung vào việc
quét một vài mục tiêu theo chiều sâu, thì máy quét Masscan tập trung vào việc
quét nhẹ nhiều mục tiêu.
Masscan được đưa vào các phần mềm hack như Kali Linux, cũng như nhiều bản
phân phối Linux. Nó thường được sử dụng bởi tội phạm ransomware. Nó phổ
biến trong số các hậu vệ để quét mạng của họ một cách nhanh chóng.
Khi các lỗ hổng mới lớn được phát hiện, những người bảo vệ thường sẽ sử dụng
masscan kết hợp với một tập lệnh khác để nhanh chóng tìm ra lỗ hổng đó trên
mạng. Ví dụ, sau khi lỗ hổng BlueKeep được Microsoft tiết lộ, những người bảo vệ
đã sử dụng máy quét khối và một tập lệnh để nhanh chóng phát hiện các thiết bị
bị ảnh hưởng trên mạng của họ. Người bảo vệ thường phải chạy đua với những kẻ
tấn cơng để tìm và sửa chữa các máy chủ công cộng của họ trước.
2. Những đặc điểm chính
• Khơng đồng bộ : Đây là một thiết kế khơng đồng bộ. Nó có các luồng truyền và
nhận riêng biệt mà phần lớn độc lập với nhau. Đó là cùng một loại thiết kế
được tìm thấy trong scanrand, unicornscanvà ZMap. Bởi vì nó khơng đồng bộ,
nó chạy nhanh như tốc độ truyền gói bên dưới cho phép.
• Ngẫu nhiên hóa: Một điểm khác biệt chính giữa Masscan và các máy quét khác
là cách nó ngẫu nhiên hóa các mục tiêu.
4
•
•
•
•
Nguyên tắc cơ bản là có một biến chỉ số duy nhất bắt đầu từ 0 và được tăng
thêm một cho mỗi đầu dò. Trong mã C, điều này được biểu thị như sau:
for (i = 0; i < range; i++) {
scan(i);
}
Khả năng mở rộng : Có lẽ tính năng quan trọng nhất của Masscan là khả năng
truyền tải tới 10 triệu gói tin mỗi giây thơng qua kiến trúc khơng đồng bộ của
nó.
Tính di động : Phần mềm có thể được biên dịch và chạy trên cả ba hệ điều
hành chính: Windows, MacOS và Linux.
Kiểm tra biểu ngữ : Ngồi việc chỉ thực hiện qt cổng, cơng cụ này cịn có thể
hồn thành các kết nối TCP để tìm nạp thơng tin biểu ngữ cơ bản.
Khả năng tương thích của Nmap : Masscan được phát triển với mục tiêu làm
cho việc sử dụng và đầu ra của công cụ càng giống với Nmap càng tốt. Điều này
cho phép người dùng dịch kiến thức Nmap của họ một cách nhanh chóng.
Mặc dù có rất nhiều khả năng tương thích với Nmap, nhưng có một số điểm khác
biệt đáng nói là tách Masscan khỏi Nmap:
- Khơng có cổng mặc định để quét bằng Masscan
- Masscan chỉ hỗ trợ địa chỉ IP và phạm vi đơn giản (trong khi Nmap cũng hỗ trợ
tên DNS)
3. Masscan dành cho ai
Masscan hữu ích cho những người thực hiện nghiên cứu tấn công (như thử
nghiệm thâm nhập) cũng như những người và các nhà quản lý CNTT thực hiện
nghiên cứu phịng thủ (như tìm kiếm các vectơ tấn cơng trong mạng của họ).
Masscan cũng hữu ích cho cả người mới bắt đầu và người dùng nâng cao. Nó
khơng khó sử dụng và cung cấp chức năng có giá trị cho các nhà nghiên cứu thực
hiện các cuộc điều tra lớn hơn.
4. Lưu ý khi sử dụng
• Cách sử dụng (thơng số, đầu ra) của nó tương tự như nmap, máy quét cổng
nổi tiếng nhất. Khi nghi ngờ, hãy thử một trong những tính năng đó .
5
• Các tính năng hỗ trợ quét rộng rãi trên nhiều máy được hỗ trợ, trong khi quét
chuyên sâu các máy đơn lẻ thì khơng.
• Bên trong, nó sử dụng truyền tải không đồng bộ, tương tự như máy quét cổng
như scanrand, unicornscan, và ZMap. Nó linh hoạt hơn, cho phép các phạm vi
cổng và địa chỉ tùy ý.
• Masscan sử dụng ngăn xếp TCP / IP đặc biệt của riêng nó . Bất kỳ điều gì khác
ngồi việc qt cổng đơn giản có thể gây ra xung đột với ngăn xếp TCP / IP cục
bộ. Điều này có nghĩa là bạn cần sử dụng --src-ip tùy chọn chạy từ một địa chỉ
IP khác hoặc sử dụng --src-port để định cấu hình cổng nguồn nào mà masscan
sử dụng, sau đó cũng định cấu hình tường lửa nội bộ (như pfhoặc iptables) để
tường lửa các cổng đó từ phần cịn lại của hệ điều hành.
• Hiểu tốc độ truyền:
Ngăn xếp mạng của bạn đôi khi cần được điều chỉnh. Môi trường ảo hóa có thể
giới hạn tốc độ ở mức 10.000 gói / giây. Linux bình thường thường chỉ cung cấp
300.000 gói mỗi giây. Linux được điều chỉnh tốt cho 1.000.000 gói mỗi giây. Các
trình điều khiển mạng chun biệt như PF_RING là cần thiết để chạy nhanh hơn,
nhằm đạt được 10.000.000 gói mỗi giây.
Nếu bạn khơng nhận được kết quả như mong đợi, đó là do masscan gửi các gói
nhanh hơn mức mà mạng có thể xử lý. Cơng cụ này không chỉ nhấn mạnh đến
băng thông mạng thô mà cịn cả khả năng chuyển tiếp gói tin trên giây của thiết
bị, cũng như các bộ định tuyến để xử lý các tuyến đường mới trên giây.
Chương III: Sử dụng Masscan
1. Cài đặt
• Cơ bản
Bước đầu tiên là cài đặt một số phần mềm cần thiết:
root@kali:~# apt update
root@kali:~# apt upgrade
6
root@kali:~# apt install git gcc make libpcap-dev
Tiếp theo, chúng tôi sao chép repo chính thức và biên dịch phần mềm:
root@kali:~# git clone />root@kali:~# cd masscan
root@kali:~# make
Bạn có thể nhận được 1 hoặc 2 cảnh báo trong quá trình biên dịch, nhưng nếu
phần mềm được biên dịch thành công, bạn sẽ thấy đầu ra như:
• Phiên bản web
Việc cài đặt MASSCAN cũng vô cùng đơn giản và dễ hiểu. Đầu tiên bạn cần lấy mã
nguồn của MASSCAN tại trang github: và cài đặt library.
root@kali:~# apt-get install apache2 php5 php5-mysql mysql-server
7
root@kali:~# systemctl start mysql
root@kali:~# systemctl start apache2
root@kali:~# git clone />root@kali:~# mv masscan-web-ui/* /var/www/html/
root@kali:~# cd /var/www/html/
Sau đó thực hiện tạo CSDL MYSQL
root@kali:/var/www/html# mysql -u root -p
Enter password:
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database masscan;
Query OK, 1 row affected (0.01 sec)
mysql> CREATE USER 'masscan'@'localhost' IDENTIFIED BY 'changem3';
Query OK, 0 rows affected (0.00 sec)
mysql>GRANT ALL PRIVILEGES ON masscan.* TO 'masscan'@'localhost';
Query OK, 0 rows affected (0.01 sec)
mysql> exit
Bye
root@kali:/var/www/html# mysql -u root -p masscan < db-structure.sql
Enter password:
8
root@kali:/var/www/html# rm db-structure.sql README.md
Bước cuối cùng bạn sẽ phải cập nhật lại cấu hình cài đặt mysql vào file config
vi includes/config.php
define('DB_DRIVER', 'MySQL');
define('DB_HOST', 'localhost');
define('DB_USERNAME', 'masscan');
define('DB_PASSWORD', 'changem3');
define('DB_DATABASE', 'masscan');
Sau khi hoàn thành xong các bước cài đặt. Bạn có thể sử dụng masscan để scan
mục tiêu. Hoặc cũng có thể xem thêm link sau
[ />GitHub page.)
masscan 10.0.0.0/8 -p80,21,53 --banners --source-ip 10.0.0.2 --max-rate 100000 -oX scan01.xml
Kết quả
root@kali:/var/www/html# ls -l scan*
-rw-r--r-- 1 root root 212929324 Dec 1 13:23 scan-01.xml
-rw-r--r-- 1 root root 700816226 Dec 1 13:55 scan-02.xml
root@kali:/var/www/html# php import.php scan-01.xml
Do you want to clear the database before importing (yes/no)?: yes
9
Clearing the db
Reading file
Parsing file
Processing data (This may take some time depending on file size)
Summary:
Total records:738279
Inserted records:738279
Took about:3 minutes,18 seconds
root@kali:/var/www/html# php import.php scan-02.xml
Do you want to clear the database before importing (yes/no)?: no
Reading file
Parsing file
Processing data (This may take some time depending on file size)
Summary:
Total records:2411974
Inserted records:2411974
Took about:9 minutes,41 seconds
root@kali:/var/www/html#
Việc scan port cũng như IP giờ trở nên thật dễ dàng. Hoặc bạn cũng có thể sử dụng
phiên bản web ui bằng cách truy cập link GitHub project page.
10
Đây là phiên bản web ui để các bạn tham khảo.
2. Hướng dẫn sử dụng
2.1 Dạng câu lệnh
Câu lệnh sử dụng Masscan sẽ có dạng như sau:
masscan <ip addresses/ranges> -p ports options
2.2 Các options
•
<ip/range>: bất kỳ thứ gì trên dịng lệnh khơng có tiền tố ´-´ được coi là địa
chỉ IP hoặc dải địa chỉ.
Có ba định dạng hợp lệ. Đầu tiên là một địa chỉ IPv4 duy nhất như
"192.168.0.1". Thứ hai là một phạm vi như "10.0.0.1-10.0.0.100". Thứ ba là
địa chỉ CIDR, như "0.0.0.0/0". Ít nhất một mục tiêu phải được chỉ định. Nhiều
11
•
•
•
•
•
•
•
•
•
mục tiêu có thể được chỉ định. Điều này có thể được chỉ định là nhiều tùy
chọn được phân tách bằng dấu cách hoặc có thể được phân tách bằng dấu
phẩy như một tùy chọn duy nhất, chẳng hạn như 10.0.0.0/8,192.168.0.1 .
--range <ip/range>: giống như thông số phạm vi mục tiêu được mô tả ở trên,
ngoại trừ tham số được đặt tên thay vì tham số chưa được đặt tên.
-p
: Chỉ định cổng để được quét. Một cổng duy nhất có
thể được chỉ định, như -p80. Một loạt các cổng có thể được chỉ định như-p 2025. Danh sách các cổng / phạm vi có thể được chỉ định, như -p80,20-25 . Các
cổng UDP cũng có thể được chỉ định, như – ports U: 161, U: 1024-1100 .
--banners: chỉ định rằng các biểu ngữ nên được lấy, như phiên bản máy chủ
HTTP, HTML trường tiêu đề, v.v. Chỉ một số giao thức được hỗ trợ.
--rate : chỉ định tốc độ truyền gói tin mong muốn. Đây
có thể là những con số rất nhỏ, chẳng hạn như 0,1 để truyền các gói với tốc độ
cứ 10 giây một lần , cho những số rất lớn như 10000000, cố gắng truyền với
tốc độ 10 triệu gói / giây. Theo kinh nghiệm của tơi, Windows và có thể thực
hiện 250 nghìn gói mỗi giây và các phiên bản mới nhất của Linux có thể thực
hiện 2,5 triệu gói mỗi giây. Trình điều khiển PF_RING là cần thiết để đạt 2,5
triệu gói / giây.
-c <filename>, --conf <filename>: đọc trong tệp cấu hình. Định dạng của tệp
cấu hình được mơ tả bên dưới.
--resume <filename>: giống như --conf , ngoại trừ một số tùy chọn được đặt
tự động , chẳng hạn như --append-output . Định dạng của tệp cấu hình được
mơ tả bên dưới.
--echo: khơng chạy, nhưng thay vào đó kết xuất cấu hình hiện tại vào một tệp.
Sau đó, tệp này có thể được sử dụng với tùy chọn -c . Định dạng của đầu ra này
được mô tả bên dưới trong tập tin ´CONFIGURATION FILE´.
-E <ifname> , --adapter <ifname> : sử dụng giao diện mạng thô được đặt tên,
chẳng hạn như "eth0" hoặc "dna1". Nếu không được chỉ định, giao diện mạng
đầu tiên được tìm thấy với cổng mặc định sẽ được sử dụng.
--adapter-ip <ip-address>: gửi gói tin bằng địa chỉ IP này. Nếu khơng được chỉ
định, thì địa chỉ IP đầu tiên liên kết với giao diện mạng sẽ được sử dụng. Thay
vì một địa chỉ IP, một dải ơ có thể được chỉ định. LƯU Ý: Kích thước của phạm
vi phải là lũy thừa chẵn của 2, chẳng hạn như địa chỉ 1, 2, 4, 8, 16, 1024, v.v.
12
• --adapter-port : gửi các gói sử dụng số cổng này làm nguồn. Nếu không
được chỉ định, một cổng ngẫu nhiên sẽ được chọn trong phạm vi 40000 đến
60000. Cổng này phải được lọc bởi tường lửa máy chủ (như iptables) để ngăn
ngăn xếp mạng máy chủ can thiệp vào các gói đến. Thay vì một cổng duy nhất,
một phạm vi có thể được chỉ định, chẳng hạn như 40000-40003 . LƯU Ý: Kích
thước của phạm vi phải là lũy thừa chẵn của 2, chẳng hạn như ví dụ trên có
tổng cộng 4 địa chỉ.
• --adapter-mac <mac-address>: gửi các gói tin sử dụng nó làm địa chỉ MAC
nguồn. Nếu khơng được chỉ định, thì địa chỉ MAC đầu tiên liên kết với giao
diện mạng sẽ được sử dụng.
• --router-mac <mac address>: gửi các gói đến địa chỉ MAC này làm đích. Nếu
khơng được chỉ định, thì địa chỉ cổng của giao diện mạng sẽ được ARPed.
• --ping: chỉ ra rằng quá trình quét nên bao gồm một yêu cầu ICMP echo. Điều
này có thể được bao gồm với tính năng quét TCP và UDP.
• --exclude <ip/range>: danh sách đen một địa chỉ IP hoặc dải ơ, ngăn khơng
cho nó bị quét. Điều này ghi đè bất kỳ thông số kỹ thuật mục tiêu nào, đảm
bảo rằng địa chỉ / phạm vi này sẽ khơng được qt. Điều này có cùng định
dạng với đặc tả mục tiêu bình thường.
• --excludefile <filename>: đọc trong danh sách các phạm vi loại trừ, ở cùng
định dạng mục tiêu được mô tả ở trên. Các phạm vi này ghi đè bất kỳ mục tiêu
nào, ngăn khơng cho chúng bị qt.
• --append-output: khiến đầu ra thêm vào tệp, thay vì ghi đè tệp.
• --iflist: liệt kê các giao diện mạng có sẵn, sau đó thốt.
• --retries: số lần gửi thử lại, ở các khoảng thời gian 1 giây. Lưu ý rằng vì điều
này máy qt khơng trạng thái, các thử nghiệm được gửi đi bất kể đã nhận
được câu trả lời hay chưa .
• --nmap: trợ giúp in các lựa chọn thay thế tương thích nmap cho các tùy chọn
này.
• --pcap-payloads: đọc các gói từ tệp libpcap có chứa các gói và trích xuất các tải
trọng UDP, đồng thời liên kết các tải trọng đó với cổng đích. Các trọng tải này
sau đó sẽ được sử dụng khi gửi các gói UDP với cổng đích phù hợp. Chỉ một
trọng tải sẽ được ghi nhớ trên mỗi cổng. Tương tự với --nmap-payloads .
13
• -nmap-payloads <filename>:đọc trong tệp có cùng định dạng với tệp nmap
nmap-payloads . Điều này chứa tải trọng UDP, để chúng tơi có thể gửi các gói
UDP hữu ích thay vì các gói trống. Tương tự với --pcap-payloads.
• --http-user-agent <user-agent>: thay thế trường user-agent hiện có bằng giá
trị được chỉ định khi thực hiện các yêu cầu HTTP.
• --open-only: chỉ báo các cổng đang mở, không báo các cổng đã đóng.
• --pcap <filename>: lưu các gói đã nhận (nhưng khơng phải gói được truyền)
vào tệp định dạng libpcap.
• --packet-trace: in tóm tắt các gói được gửi và nhận. Điều này hữu ích ở tốc độ
thấp, chẳng hạn như một vài gói mỗi giây, nhưng sẽ áp đảo thiết bị đầu cuối ở
tốc độ cao
• --pfring: buộc sử dụng trình điều khiển PF_RING. Chương trình sẽ thốt nếu
khơng có bộ xử lý DNA PF_RING.
• --resume-index: điểm trong q trình qt tại thời điểm nó bị tạm dừng.
• --resume-count: số lượng đầu dị tối đa cần gửi trước khi thốt. Điều này rất
hữu ích với --resume-index để cắt một bản quét và chia nó thành nhiều trường
hợp, mặc dù tùy chọn --shards có thể tốt hơn.
• --shards <x>/<y>: phân chia q trình quét giữa các phiên bản. x là id cho lần
quét này, trong khi y là tổng số phiên bản. Ví dụ: --shards 1/2 yêu cầu một
phiên bản gửi mọi gói tin khác, bắt đầu bằng chỉ mục 0. Tương tự như vậy, -shards 2/2 gửi mọi gói tin khác , nhưng bắt đầu bằng chỉ mục 1, để nó khơng
trùng lặp với ví dụ đầu tiên.
• --rotate <time>: xoay tệp đầu ra, đổi tên tệp bằng dấu thời gian hiện tại,
chuyển nó vào một thư mục riêng biệt. Thời gian được chỉ định bằng số giây,
chẳng hạn như "3600" cho một giờ. Hoặc, đơn vị thời gian có thể được chỉ
định, chẳng hạn như "hàng giờ" hoặc "6 giờ" hoặc "10 phút". Thời gian được
căn chỉnh trên một ranh giới chẵn, vì vậy nếu "hàng ngày" được chỉ định, thì
tệp sẽ được xoay hàng ngày vào lúc nửa đêm.
• --rotate-offset <time>: một khoảng thời gian. Điều này là để điều chỉnh các
múi giờ.
• --rotate-dir <directory>: khi xoay tệp, điều này chỉ định thư mục sẽ chuyển tệp
đến. Một thư mục hữu ích là / var / log / masscan .
• --seed <integer>: một số nguyên tạo ra số ngẫu nhiên. Việc sử dụng một hạt
giống khác sẽ khiến các gói được gửi theo một thứ tự ngẫu nhiên khác. Thay vì
14
•
•
•
•
•
•
•
•
•
•
một số nguyên, thời gian chuỗi có thể được chỉ định, tạo ra bằng cách sử dụng
dấu thời gian cục bộ, tự động tạo ra một thứ tự quét ngẫu nhiên khác nhau.
Nếu khơng có hạt giống nào được chỉ định, thời gian là mặc định.
--regress: chạy kiểm tra hồi quy, trả về ´0´ khi thành công và ´1´ nếu thất bại.
--ttl <num>: chỉ định TTL của các gói gửi đi, mặc định là 255.
--wait <seconds>: chỉ định số giây sau khi truyền xong để đợi nhận gói trước
khi thốt khỏi chương trình. Mặc định là 10 giây. Chuỗi mãi mãi có thể được
chỉ định để khơng bao giờ kết thúc.
--offline: khơng thực sự truyền gói tin. Điều này rất hữu ích với tốc độ thấp và -packet-trace để xem những gói nào có thể đã được truyền. Hoặc, nó hữu ích
với --rate 100000000 để đánh giá mức độ truyền nhanh sẽ hoạt động như thế
nào (giả sử một trình điều khiển trên không). PF_RING chậm hơn khoảng 20%
so với kết quả điểm chuẩn từ chế độ ngoại tuyến.
-sL: điều này khơng thực hiện qt mà thay vào đó tạo ra một danh sách các
địa chỉ ngẫu nhiên. Điều này rất hữu ích để nhập vào các cơng cụ khác. Các tùy
chọn --shard , --resume-index và --resume-count có thể hữu ích với tính
năng này.
--interactive: hiển thị kết quả trong thời gian thực trên bàn điều khiển. Nó
khơng có tác dụng nếu được sử dụng với --output-format hoặc --outputfilename.
--output-format <fmt>: cho biết định dạng của tệp đầu ra, có thể là xml ,
binary , grepable , list hoặc JSON. Tùy chọn --output-filename phải được chỉ
định.
--output-filename <filename>: tệp để lưu kết quả. Nếu tham số --outputformat khơng được chỉ định, thì giá trị mặc định của xml sẽ được sử dụng.
-oB <filename>: ặt định dạng đầu ra thành nhị phân và lưu đầu ra trong tên
tệp đã cho . Điều này tương đương với việc sử dụng các tham số --outputformat và --output-filename. Tùy chọn --readscan sau đó có thể được sử dụng
để đọc tệp nhị phân. Nhị phân các tệp có dung lượng nhỏ hơn so với các tệp
tương đương XML của chúng, nhưng yêu cầu một bước riêng để chuyển đổi
trở lại thành XML hoặc một định dạng có thể đọc được khác.
-oX <filename>: đặt định dạng đầu ra thành XML và lưu đầu ra trong tên tệp
đã cho . Điều này tương đương với việc sử dụng các tham số --output-format
xml và --output-filename
15
• -oG <filename>: đặt định dạng đầu ra thành grepable và lưu đầu ra trong tên
tệp đã cho . Điều này tương đương với việc sử dụng các tham số --outputformat grepable và --output -filename.
• -oJ <filename>: đặt định dạng đầu ra thành JSON và lưu đầu ra trong tên tệp
đã cho . Điều này tương đương với việc sử dụng các tham số json --outputformat và --output-filename .
• -oL <filename>: đặt định dạng đầu ra thành định dạng danh sách đơn giản và
lưu đầu ra trong tên tệp đã cho. Điều này tương đương với việc sử dụng danh
sách --output-format và --output-filename.
• --readscan <binary-files>: đọc các tệp được tạo bởi tùy chọn -oB từ q trình
qt, sau đó xuất chúng ở một trong các định dạng khác, tùy thuộc vào các
tham số dịng lệnh. Nói cách khác, nó có thể lấy phiên bản nhị phân của đầu ra
và chuyển đổi nó sang định dạng XML hoặc JSON.
3. Ví dụ
- Quét cổng IP đơn
Thử nghiệm đầu tiên của tôi là quét một IP và một cổng duy nhất của một IP
quảng cáo độc hại mà chúng tôi đang theo dõi.
./masscan 198.134.112.244 -p443
16
Công cụ xác nhận rằng cổng 443 thực sự đang mở tại IP đã chọn.
- Quét cổng nâng cao với nhiều cổng
Q trình qt nâng cao có thể được thực hiện để phân tích nhiều cổng hoặc
một loạt các cổng trên mạng con IP. Tơi sẽ chia sẻ các ví dụ cho cả hai và đầu ra
cho phân tích đa cổng.
./masscan 198.134.112.240/28 -p80,443,25 #multiple ports
./masscan 198.134.112.240/28 -p1000-9999 #range of ports
Máy qt cho tơi biết có bao nhiêu máy chủ (16) đã được tìm thấy, sau đó hiển
thị cổng nào đang mở trên địa chỉ IP nào.
- Quét các cổng trên cùng
Đây là một tính năng thú vị khác: Người dùng Masscan có thể quét các cổng
phổ biến nhất bằng cách sử dụng tùy chọn 'top-port' từ lệnh Nmap với Masscan.
17
Cú pháp rất đơn giản, chỉ cần thêm “–top-port X”, thay thế X bằng một số cổng
phổ biến, ví dụ 10 hoặc 100, là những cổng phổ biến nhất được các nhà nghiên
cứu bảo mật sử dụng.
Vì vậy, cú pháp đầy đủ sẽ giống như sau:
masscan 192.168.1.105 ‐‐top-ports 10
Điều này giúp bạn tiết kiệm thời gian vì bạn đang tập trung vào các cổng quan
trọng nhất từ số liệu thống kê quét Nmap.
- Quét mạng con
Bây giờ, hãy sử dụng Masscan hết khả năng của nó, bằng cách chạy quét trên
mạng con lớn hơn và với tốc độ nhanh hơn, tìm kiếm các cổng 100 hàng đầu.
./masscan 198.134.112.0/20 --top-ports 100 --rate 100000 > outpu
t.txt
Tôi chuyển các kết quả của quá trình qt này vào một tệp để chúng tơi có thể lưu
trữ các kết quả của quá trình quét. Kết quả cho thấy 4096 máy chủ đã được tìm
thấy và trong số đó, chúng tơi tìm thấy một số chi tiết thú vị. Bên cạnh các cổng
thông thường là 80/443, một số địa chỉ IP có các cổng mở như: 21, 23, 53, 111,
427 và 514.
Một điều quan trọng cần lưu ý về Masscan là tất cả các quá trình quét chạy theo
mặc định ở chế độ “SYN Stealth Scan”. Trang web Nmap giải thích điều này như
sau:
“SYN scan là tùy chọn quét mặc định và phổ biến nhất vì lý do chính đáng. Nó có
thể được thực hiện nhanh chóng, qt hàng nghìn cổng mỗi giây trên một mạng
nhanh chóng mà khơng bị cản trở bởi tường lửa xâm nhập. SYN qt tương đối
kín đáo và lén lút, vì nó khơng bao giờ hồn thành các kết nối TCP. Nó cũng hoạt
động dựa trên bất kỳ ngăn xếp TCP tuân thủ nào thay vì phụ thuộc vào đặc quyền
riêng của các nền tảng cụ thể như FIN / NULL / Xmas, Maimon và quét nhàn rỗi
của Nmap. Nó cũng cho phép phân biệt rõ ràng, đáng tin cậy giữa các trạng thái
mở, đóng và lọc. ”
Tính năng này sẽ giải thích lý do tại sao máy qt cổng có thể quét qua rất nhiều
địa chỉ IP mà không bị cấm bởi các bức tường lửa cơ bản. Tuy nhiên, với phần
18
mềm bảo vệ tiên tiến hơn, chúng tôi nghi ngờ rằng ngay cả kiểu quét này cũng có
thể bị chặn.
- Loại trừ các mục tiêu khỏi quá trình quét của bạn
Đôi khi bạn cần giảm số lượng máy chủ sẽ được quét. Để bỏ qua một số trong
số chúng, tùy chọn 'loại trừ mục tiêu' có thể hữu ích.
Masscan cho phép bạn tạo tệp loại trừ, vì vậy bạn có thể sử dụng tham số –
excludefile cho bất kỳ bản quét nào của mình. Cú pháp sẽ như thế này:
masscan 192.168.1.105 ‐‐top-ports 10 ‐‐excludefile exclude-list.tx
t
Sau khi bạn chạy quá trình quét, một cảnh báo sẽ được nhìn thấy khi bắt đầu q
trình qt:
exclude-list.txt: excluding 1 range from file
- Qt tồn bộ Internet bằng Masscan
Như tơi đã nói trước đây, Masscan được chế tạo tập trung là tốc độ. Nó được
chuẩn bị để chạy một lượng lớn các lần quét cổng trên các mạng. Do đó, ở đây
bạn có một vài ví dụ về cách qt tồn bộ Internet, cho một cổng cụ thể hoặc cho
tất cả 65535 cổng cho mỗi máy chủ.
Lưu ý quan trọng: Hãy nhớ rằng điều này có thể mang lại rất nhiều kết quả và
quan trọng nhất, bạn có thể đang thăm dị các địa chỉ IP liên quan đến máy chủ
của chính phủ, honeypots và bẫy kỹ thuật số mà bạn có thể khơng bao giờ muốn
dính vào.
Làm cách nào để quét Internet cho một cổng cụ thể?
Chỉ cần sử dụng cú pháp này, ở tốc độ tối đa (10 triệu p / s).
masscan 0.0.0.0/0 -p22 --rate 10000000 #see footnote below [1]
Điều này sẽ kích hoạt một q trình qt lớn trên tồn bộ internet, ở cổng 22.
Làm cách nào tơi có thể qt Internet để tìm tất cả các cổng hiện có?
19
masscan 0.0.0.0/0 -p0-65535 --rate 10000000 #see footnote below
[1]
[1] Khả năng truyền tải lên đến 10 triệu gói / giây yêu cầu mua sản phẩm thương
mại. Khả năng quét tiêu chuẩn là khoảng 1,5-2 triệu gói mỗi giây, theo tài liệu.
- Tinh chỉnh đầu ra Masscan
Đầu ra ở trên không hữu ích lắm ở định dạng hiện tại, nhưng Masscan cung
cấp 5 tùy chọn đầu ra thiết thực hơn để phân tích dữ liệu ở những nơi khác:
1. xml: -oX <filename>dành cho các tệp XML
2. nhị phân: định dạng dựng sẵn, tạo ra các tệp nhỏ hơn. Nội dung có thể
được đọc với--readscan
3. grepable: -oG <filename>đầu ra có thể được phân tích cú pháp bởi các cơng
cụ dịng lệnh khác
4. json: -oJ <filename>dành cho tệp JSON
5. list: -oL <filename>một phiên bản tốt hơn của đường dẫn đến tệp văn bản
liệt kê một cặp máy chủ và cổng trên mỗi dòng
- Kiểm tra thêm
Lệnh –help trở nên hữu ích để có được bức tranh toàn cảnh về tiềm năng đầy
đủ của Masscan, nơi bạn có thể tìm thấy nhiều tùy chọn cho các kỹ thuật quét
nâng cao, như bạn thấy bên dưới:
20
Chương IV: Các bài Lab
Lab 1: Tự kiểm tra
Trong Lab này, tôi kiểm tra xem việc cài đặt masscan đã đúng chưa. Trong trường
hợp bạn chưa cài đặt kali mới nhất hoặc masscan chưa được cài đặt, hãy tham
khảo trang chủ của công cụ
Command: masscan --regres
Phần trên sẽ kiểm tra xem việc cài đặt có phù hợp hay khơng.
21
Chọn lọc hàng loạt
Bây giờ chúng tôi cũng sẽ kiểm tra hiệu suất.
Command: masscan 0.0.0.0/4 -p80 --rate 100 --offline
Thao tác này sẽ quét toàn bộ mạng con địa chỉ IP nhưng không truy cập
internet. Điều này sẽ không tạo ra bất kỳ kết quả xứng đáng nào nhưng hãy xem
thời gian cần thiết để quét khi tốc độ là 100 gói / giây.
masscan-perfomance
Bây giờ, hãy tăng dần tỷ lệ lên 1000, 100000 một lần và xem mức độ hoạt động
của mạng và hệ thống của bạn. So sánh thời gian cần thiết cho tất cả.
Command: masscan 0.0.0.0/4 -p80 --rate 10000000 --offline
22
masscan-hi-perfomance
Lưu ý: Đừng quên bao gồm tùy chọn – offline, nếu không bạn sẽ gặp rắc rối.
Lab 2: Quét Google IP, lấy biểu ngữ & kết quả đầu ra
Trong Lab này, tơi qt một loạt các IP google có sẵn cơng khai. Đầu tiên, chúng
tơi tìm hiểu xem google giải quyết IP nào và sau đó chúng tơi thực hiện quét cổng
trên phạm vi cụ thể trên cổng 80 & 443.
Command: host google.com
Điều này cung cấp cho IP của máy chủ web google.com. Điều này có thể khác
nhau tùy thuộc vào vị trí bạn đang ở.
google-ip
Tiếp theo, chúng tơi thay thế IP được tìm thấy bằng phạm vi của nó.
Ví dụ: Nếu IP chúng tôi thu được là 216.58.196.12, chúng tôi sử dụng
216.58.196.0/24 để quét các IP 216.58.196.1-254
Command: masscan 216.58.196.0/24 -p80,443
23
quét hàng loạt-cơ bản
Đây là thao tác quét cơ bản nhất trong masscan. Bạn có thể sử dụng nó để quét
bất kỳ IP nào. Thay vì cung cấp giá trị mạng con, bạn có thể cung cấp dải IP
(216.58.196.1-50) giống như bạn cung cấp trong nmap.
Bây giờ tôi cố gắng lấy các biểu ngữ từ các IP mà chúng tôi qt. Đối với điều này,
tơi có thể gặp một vấn đề. Vì masscan sử dụng ngăn xếp tùy chỉnh nên hệ điều
hành có thể từ chối gói tin. Điều này được giải thích rõ ràng trong trang chủ của
cơng cụ. VẬY bây giờ chúng ta cần chỉ định một địa chỉ IP riêng biệt trong cùng
một mạng con.
Hiện tại, My kali có địa chỉ IP 192.168.1.4. Vì vậy, chúng ta cần chỉ định một IP
nguồn trong dải 192.168.1.0/24.
Command: masscan 23.92.56.53IP> -p 80,443 --banners --source-ip 192.168.1.200
24