Phần này mô tả về cả kỹ thuật liệt kê SMTP và DNS, bao gồm liệt kê SMTP, quá trình lấy danh sách user hợp lệ trên SMTP server, công cụ liệt kê SMTP, liệt kê chuyển vùng DNS, theo dõi bộ đệm DNS và DNS zone walking.
SMTP Enumeration
Các hệ thống mail thường sử dụng SMTP, POP3 và IMAP, cho phép người dùng lưu thư trong hộp thư của server và tải xuống từ server khi cần thiết. SMTP sử dụng máy chủ trao đổi thư (MX) để gửi thư trực tiếp qua DNS. Nó chạy trên port TCP 25, 2525 hoặc 587. SMTP cung cấp 3 lệnh tích hợp sau:
VRFY: xác minh người dùng
$ telnet 192.168.168.1 25
Trying 192.168.168.1...
Connected to 192.168.168.1.
Escape character is '^]'.
220 NYmailserver ESMTP Sendmail 8.9.3
HELO
501 HELO requires domain address
HELO x
250 NYmailserver Hello [10.0.0.86], pleased to meet you
VRFY Jonathan
250 Super-User <Jonathan@NYmailserver>
VRFY Smith
550 Smith... User unknown
EXPN: hiển thị địa chỉ gửi thực tế của bí danh và danh sách gửi thư
$ telnet 192.168.168.1 25
Trying 192.168.168.1...
Connected to 192.168.168.1.
Escape character is '^]'.
220 NYmailserver ESMTP Sendmail 8.9.3
HELO
501 HELO requires domain address
HELO x
250 NYmailserver Hello [10.0.0.86], pleased to meet you
EXPN Jonathan
250 Super-User <Jonathan@NYmailserver>
EXPN Smith
550 Smith... User unknown
RCPT TO: định nghĩa người nhận thư
$ telnetl 192.168.168.1 25
Trying 192.168.168.1 ...
Connected to 192.168.168.1.
Escape character is '^]’.
220 NYmailserver ESMTP Sendmail 8.9.3
HELO
501 HELO requires domain address
HELO x
250 NYmailserver Hello [10.0.0.86], pleased to meet you
MAIL FROM:Jonathan
250 Jonathan... Sender ok
RCPT TO:Ryder
250 Ryder... Recipient ok
RCPT TO: Smith
550 Smith... User unknown
Máy chủ SMTP phản hồi khác nhau đối với các lệnh VRFY, EXPN và RCPT TO đối với user hợp lệ và không hợp lệ. Nhờ đó, attacker có thể tương tác trực tiếp thông qua Telnet và thu thập danh sách user hợp lệ trên máy chủ SMTP.
Sử dụng nmap
Attacker có thể liệt kê SMTP server bằng cách sử dụng các lệnh SMTP khác nhau có sẵn tích họp trong Nmap Scripting Engine (NSE).
Liệt kê tất cả các lệnh hỗ trợ trong Nmap directory:
nmap -p 25, 365, 587 -script=smtp-commands <Target IP Address >
Xác định SMTP open relays:
nmap -p 25 -script=smtp-open-relay <Target IP Address>
Liệt kê tất cả người dùng trên máy chủ SMTP:
nmap -p 25 -script=smtp-enum-users <Target IP Address>
Sử dụng Metasploit
Attacker sử dụng Metasploit framework để liệt kê người dùng SMTP. Đầu tiên, khởi chạy Metasploit msfconsole
và chuyển sang auxiliary scanner có liên quan để bắt đầu quá trình: auxiliary/scanner/smtp/smtp_enum
.
msf > use auxiliary/scanner/smtp/smtp_enum
msf auxiliary(smtp_enum) >
Sử dụng lệnh show options
để xem toàn bộ danh sách các tùy chọn cần thiết để thực hiện liệt kê.
Sử dụng option RHOST để chỉ định IP của SMTP server mục tiêu hoặc một dải IP. Theo mặc định, Metasploit sử dụng wordlist mặc định nằm ở /usr/share/64etasploit-framework/data/wordlists/unix_users.txt
để liệt kê người dùng SMTP. Tùy chọn USER _FILE dùng để chỉ định wordlist tùy chỉnh.
msf auxiliary (smtp enum) > set USER FILE <location of wordlists file>
Chạy lệnh run
để bắt đầu:
Sử dụng NetScanTools Pro
Công cụ này rất quen thuộc, ở các module trước mình đã giới thiệu nhiều về công cụ này rồi, các bạn có thể đọc thêm ở bài viết Module 3 – Phần 1 – Network Scanning là gì? và Module 3 – Phần 5: Thực hành dò quét port. Công cụ SMTP Email Generator của NetScanTools Pro kiểm tra quá trình gửi email qua SMTP server. Attacker sử dụng NetScanTools Pro để liệt kê SMTP và trích xuất tất cả các tham số email header, bao gồm các cờ confirm/urgent. Attacker cũng có thể ghi lại email session trong file log và xem thông tin liên lạc giữa NetScanTools Pro và SMTP server trong file log đó.
smtp-user-enum
smtp-user-enum là một công cụ để liệt kê các tài khoản người dùng ở mức hệ điều hành (OS-level) trên Solaris thông qua dịch vụ SMTP (sendmail). Nó liệt kê bằng cách kiểm tra các phản hồi đối với các lệnh VRFY, EXPN và RCPT TO. smtp-user-enum cần được chuyển vào danh sách người dùng và ít nhất một mục tiêu đang chạy dịch vụ SMTP. Cú pháp sử dụng smtp-user-enum như sau:
smtp-user-enum.pl [options] (-u username|-U file-of-usernames) (- t host|-T file-of-targets)
Trong đó:
-m n
: Số tiến trình tối đa (mặc định là 5)-M mode
: Chỉ định lệnh SMTP sẽ sử dụng để đoán tên người dùng trong số EXPN, VRFY và RCPT TO (mặc định: VRFY)-u user
: Kiểm tra xem người dùng có tồn tại trên hệ thống đích hay không?-f addr
: Chỉ định địa chỉ email gửi để sử dụng cho việc đoán “RCPT TO” (mặc định: user@example.com)-D dom
: Chỉ định domain để thêm vào danh sách người dùng được cung cấp để tạo địa chỉ email (mặc định: không có)-U file
: Chọn file chứa tên đăng nhập để kiểm tra qua dịch vụ SMTP-t host
: Chỉ định server host đang chạy dịch vụ SMTP-T file
: Chọn file chứa hostname chạy dịch vụ SMTP-p port
: Chỉ định port TCP mà dịch vụ SMTP chạy trên đó (mặc định: 25)-d
: Bật debug-t n
: Đợi tối đa n giây để trả lời (mặc định: 5)-v
: Chế độ đầu ra chi tiết-h
:Trợ giúp
DNS Enumeration
Chuyển vùng DNS
DNS Zone Transfer (chuyển vùng DNS) là quá trình chuyển một bản sao của file DNS zone từ primary DNS server chính sang secondary DNS server. Trong hầu hết các trường hợp, primary DNS server cần có một server dự phòng hoặc server phụ để dự phòng, server phụ này chứa tất cả thông tin được lưu trong server chính. DNS server sử dụng chuyển vùng để phân phối các thay đổi được thực hiện đối với server chính sang (các) server phụ.
Attacker liệt kê chuyển vùng DNS để định vị máy chủ DNS và truy cập các record của mục tiêu. Nếu DNS server của mục tiêu cho phép chuyển vùng, thì attacker có thể chuyển vùng DNS để lấy tên DNS server names, hostnames, machine names, usernames, IP addresses, aliases, …
Trong kỹ thuật này, attacker cố gắng lấy một bản sao của toàn bộ file zone cho một domain từ DNS server. Chúng có thể thực hiện chuyển vùng DNS bằng các công cụ như nslookup, lệnh dig và DNSRecon.
Lệnh dig
Attacker sử dụng lệnh dig
để truy vấn DNS name server và lấy thông tin về IP, name servers, mail exchanges, …
dig ns <target domain>
Tiếp theo, attacker kiểm tra xem DNS của mục tiêu có cho phép chuyển vùng hay không bằng lệnh:
dig @<domain of name server> <target domain> axfr
Lệnh nslookup
Attacker sử dụng lệnh nslookup
trên các hệ thống chạy Windows:
nslookup
set querytype=soa
<target domain>
DNSRecon
Attacker sử dụng DNSRecon để kiểm tra tất cả các bản ghi NS của domain mục tiêu để chuyển vùng.
dnsrecon -t axfr -d <target domain>
Trong lệnh trên, tùy chọn -t
chỉ định loại liệt kê sẽ được thực hiện, axfr là loại liệt kê trong đó tất cả các máy chủ NS được kiểm tra để chuyển vùng và tùy chọn -d
chỉ định miền đích.
DNS Cache Snooping
DNS cache snooping là một loại kỹ thuật liệt kê DNS trong đó attacker sẽ truy vấn DNS server để tìm một bản ghi DNS (DNS record) được lưu trong bộ nhớ cache. Bằng cách sử dụng bản ghi được lưu trong bộ nhớ cache này, attacker xác định các trang web mà người dùng đã truy cập gần đây. Thông tin này có thể tiết lộ thêm thông tin quan trọng như tên của chủ sở hữu DNS server, nhà cung cấp dịch vụ, tên của nhà cung cấp,…
Attacker sử dụng hai phương pháp sau đây:
Phương pháp không đệ quy
Attacker gửi một truy vấn không đệ quy bằng cách đặt bit Recursion Desired (RD) trong query header thành 0. Attacker truy vấn bộ đệm DNS cho một bản ghi DNS cụ thể như A, CNAME, PTR, CERT, SRV và MX. Nếu bản ghi được truy vấn có trong bộ đệm DNS, thì DNS server sẽ phản hồi với thông tin cho biết rằng một số người dùng trên hệ thống đã truy cập một domain cụ thể. Mặt khác, DNS server phản hồi với thông tin về một DNS server khác có thể trả lời câu trả lời cho truy vấn hoặc nó trả lời bằng tệp root.hints chứa thông tin về tất cả các DNS server gốc.
dig @<IP of DNS server> <Target domain> A +norecurse
Như hình trên, status: NOERROR có nghĩa rằng truy vấn đã được chấp nhận nhưng không có câu trả lời nào được trả về, do đó chứng tỏ không có người dùng nào trong hệ thống đã truy cập trang web được truy vấn.
Phương pháp đệ quy
Trong phương pháp này, attacer gửi một truy vấn đệ quy bằng cách đặt tùy chọn +recurse
thay vì tùy chọn +norecurse
. Tương tự như phương pháp không đệ quy, attacker truy vấn bộ đệm DNS cho một bản ghi DNS cụ thể như A, CNAME, PTR, CERT, SRV và MX.
Trong phương pháp này, giá trị time-to-live (TTL) được kiểm tra để xác định khoảng thời gian mà bản ghi DNS vẫn còn trong bộ đệm. Tại đây, giá trị TTL thu được từ kết quả được so sánh với TTL được đặt ban đầu trong trường TTL. Nếu giá trị TTL trong kết quả nhỏ hơn giá trị TTL ban đầu, bản ghi sẽ được lưu vào bộ đệm, cho biết rằng ai đó trên hệ thống đã truy cập trang web đó. Tuy nhiên, nếu bản ghi được truy vấn không có trong bộ đệm, nó sẽ được thêm vào bộ đệm sau khi gửi truy vấn đầu tiên.
dig @<IP of DNS server> <Target domain> A +recurse
Như hình bên dưới, giá trị TTL cho domain certifiedhacker.com cao đáng kể, điều này cho thấy rõ ràng rằng bản ghi miền không có trong bộ đệm.
DNSSEC Zone Walking
Domain Name System Security Extensions (DNSSEC) Zone Walking là một loại kỹ thuật liệt kê DNS bằng cách lấy các bản ghi nội bộ nếu DNS zone không được cấu hình đúng cách. Thông tin vùng được liệt kê có thể hỗ trợ attacker xây dựng network map về mục tiêu.
Các tổ chức sử dụng DNSSEC để bảo mật DNS và cung cấp khả năng bảo vệ chống lại các mối đe dọa đã biết đối với DNS. Tính năng bảo mật này sử dụng chữ ký số dựa trên mã hóa khóa công khai để tăng cường xác thực trong DNS. Các chữ ký điện tử này được lưu trữ trong DNS name server cùng với các bản ghi phổ biến như MX, A, AAAA và CNAME.
Mặc dù DNSSEC bảo mật hơn nhưng nó cũng dễ bị các lỗ hổng liên quan đến zone enumeration còn gọi là zone walking. Để khắc phục, phiên bản DNSSEC mới sử dụng Next Secure phiên bản 3 (NSEC3) được sử dụng.
Sử dụng DNSRecon
DNSRecon là công cụ liệt kê zone hỗ trợ người dùng liệt kê các bản ghi DNS như A, AAAA và CNAME. Nó cũng có thể liệt kê NSEC zone để lấy các file bản ghi DNS của mục tiêu.
dnsrecon -d <target domain> -z
Comments 1