Có ba cách để thực hiện subdomain enumeration:
- OSINT (Open-Source Intelligence)
- Brute force
- Virtual host
Chỉ có OSINT là phương pháp thu thập thông tin thụ động (passive reconnaissance).
OSINT
SSL/TLS Certificates
Các Certificate Authorities (CA) lưu trữ danh sách các chứng chỉ đã cấp cho một domain. Chúng ta có thể sử dụng danh sách này để tìm các subdomain.
Search Engines
Sử dụng Google Dorking để tìm các subdomain, ví dụ:
site:*.domain.com -site:www.domain.com
DNS
DNS Dumpster
Các công cụ như nslookup
và dig
không liệt kê các subdomain. DNS Dumpster là một công cụ hữu ích để tìm subdomain, phân giải IP và xác định vị trí địa lý.
Shodan.io
Shodan.io là một công cụ tìm kiếm các thiết bị kết nối internet. Chúng ta có thể tìm kiếm thông tin về hosting, vị trí, loại server, và các lỗ hổng đã biết.
product:Apache
hostname:tryhackme.com
vuln:CVE-2014-0160
Sublist3r
Sublist3r là một công cụ tự động hóa việc tìm kiếm subdomain từ nhiều nguồn khác nhau.
./sublist3r.py -d acmeitsupport.thm
Subfinder
Subfinder là một công cụ OSINT khác để tìm kiếm subdomain.
subfinder -d DOMAIN
Brute Force
Brute force là một phương pháp thu thập thông tin chủ động (active reconnaissance). Thay vì brute force hoàn toàn, chúng ta nên sử dụng wordlist để tránh bị phát hiện.
DNS Recon
Sử dụng dnsrecon:
dnsrecon -d acmeitsupport.thm -t brt
-t brt
chỉ định kiểu quét là brute force.
Knockpy
Knockpy cũng là một công cụ quét subdomain sử dụng wordlist.
python3 knockpy.py domain.com
Virtual Host
Web server có thể host nhiều trang web trên cùng một IP. Server sẽ dựa vào header Host
để xác định trang web cần trả về. Bằng cách thay đổi header này, chúng ta có thể khám phá các subdomain khác.
Công cụ Ffuf có thể tự động hóa quá trình này:
ffuf -w /path/to/wordlist.txt -H "Host: FUZZ.domain.com" -u <URL>
FUZZ
là placeholder cho các từ trong wordlist.-fs
có thể được dùng để lọc các response có kích thước nhỏ.
Kiểm tra Domains
Không phải tất cả các subdomain đều là web service. Chúng ta có thể dùng HTTPX để kiểm tra:
cat hosts.txt | httpx
Lệnh này sẽ trả về các URL của các domain đang chạy web service.
Liên quan
list
from outgoing([[Subdomain Enumeration]])
sort file.ctime asc