Như chúng ta đã thấy với các công cụ và tiện ích khác, một số thứ thường được quản trị viên sử dụng để thực hiện công việc của họ hiệu quả hơn thường bị kẻ tấn công lạm dụng để khai thác. Rốt cuộc, hack chỉ là quá trình khiến máy tính thực hiện mọi thứ theo những cách không ngờ tới. Hôm nay, chúng tôi sẽ giới thiệu nhiều phương pháp khác nhau để thực hiện lấy biểu ngữ để tìm hiểu thêm về hệ thống đích.
Lấy biểu ngữ là một kỹ thuật được sử dụng để thu thập thông tin về các dịch vụ đang chạy trên hệ thống máy tính. Biểu ngữ đề cập đến các thông điệp được đặt đúng chỗ trên máy chủ thường cung cấp thông tin về lời chào hoặc phiên bản. Kẻ tấn công có thể sử dụng dữ liệu biểu ngữ cho lợi thế của chúng bằng cách lấy số phiên bản cụ thể của dịch vụ để hỗ trợ trinh sát và khai thác .
Để tìm hiểu về cách lấy biểu ngữ, chúng tôi sẽ sử dụng Metasploitable 2 làm mục tiêu và Kali Linux làm máy cục bộ. Trong cửa sổ đầu cuối, hãy thực hiện quét Nmap nhanh trên mục tiêu để xem những gì đang chạy:
~# nmap 10.10.0.50
Starting Nmap 7.70 ( https://nmap.org ) at 2019-08-08 09:00 CDT
Nmap scan report for 10.10.0.50
Host is up (0.0024s latency).
Not shown: 977 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
25/tcp open smtp
53/tcp open domain
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
512/tcp open exec
513/tcp open login
514/tcp open shell
1099/tcp open rmiregistry
1524/tcp open ingreslock
2049/tcp open nfs
2121/tcp open ccproxy-ftp
3306/tcp open mysql
5432/tcp open postgresql
5900/tcp open vnc
6000/tcp open X11
6667/tcp open irc
8009/tcp open ajp13
8180/tcp open unknown
MAC Address: 00:1D:09:55:B1:3B (Dell)
Nmap done: 1 IP address (1 host up) scanned in 0.32 seconds
Phương pháp 1 Telnet
Công cụ đầu tiên chúng ta sẽ sử dụng để thực hiện một số thao tác lấy banner là telnet . Tiện ích nhỏ vô song này có vẻ không hữu ích lắm khi thử nghiệm thâm nhập , nhưng giá trị của nó nằm ở chỗ nó hiện diện trên hầu hết mọi hệ thống.
Cú pháp là telnet , theo sau là địa chỉ IP của máy bạn muốn kết nối, theo sau là số cổng. Chúng tôi có thể sử dụng telnet để lấy thông tin phiên bản cho FTP , chạy trên cổng 21:
~# telnet 10.10.0.50 21
Trying 10.10.0.50...
Connected to 10.10.0.50.
Escape character is '^]'.
220 (vsFTPd 2.3.4)
Chúng tôi có thể làm tương tự cho SSH , chạy trên cổng 22:
~# telnet 10.10.0.50 22
Trying 10.10.0.50...
Connected to 10.10.0.50.
Escape character is '^]'.
SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1
Chúng tôi thậm chí có thể sử dụng nó để lấy biểu ngữ của một máy chủ web , thường chạy trên cổng 80. Sau khi kết nối, hãy nhập một cái gì đó và nó sẽ hiển thị một số thông tin cho chúng tôi. Ví dụ. Tôi đã gõ “trợ giúp” khi đã kết nối:
~# telnet 10.10.0.50 80
Trying 10.10.0.50...
Connected to 10.10.0.50.
Escape character is '^]'.
help
<html><head><title>Metasploitable2 - Linux</title></head><body>
<pre>
_ _ _ _ _ _ ____
_ __ ___ ___| |_ __ _ ___ _ __ | | ___ (_) |_ __ _| |__ | | ___|___ \
| '_ ` _ \ / _ \ __/ _` / __| '_ \| |/ _ \| | __/ _` | '_ \| |/ _ \ __) |
| | | | | | __/ || (_| \__ \ |_) | | (_) | | || (_| | |_) | | __// __/
|_| |_| |_|\___|\__\__,_|___/ .__/|_|\___/|_|\__\__,_|_.__/|_|\___|_____|
|_|
Warning: Never expose this VM to an untrusted network!
Contact: msfdev[at]metasploit.com
Login with msfadmin/msfadmin to get started
</pre>
<ul>
<li><a href="/twiki/">TWiki</a></li>
<li><a href="/phpMyAdmin/">phpMyAdmin</a></li>
<li><a href="/mutillidae/">Mutillidae</a></li>
<li><a href="/dvwa/">DVWA</a></li>
<li><a href="/dav/">WebDAV</a></li>
</ul>
</body>
</html>
Connection closed by foreign host.
Chúng ta có thể thấy nó trả về một chút HTML , bao gồm cả những thứ dường như là thư mục , cộng với một biểu ngữ chào mừng trên hệ thống. Chúng tôi cũng gặp may mắn với cái này vì nó chứa cả email và thông tin đăng nhập.
Phương pháp 2 Netcat
Bây giờ, chúng tôi sẽ thực hiện lấy biểu ngữ với Netcat , một tiện ích rất phổ biến trên các hệ thống Linux và có thể bị lạm dụng theo mọi cách . Chúng ta có thể sử dụng nó để kết nối với các cổng nhất định và thu thập thông tin.
Trước tiên, hãy kết nối với dịch vụ FTP trên cổng 21, giống như chúng ta đã làm với telnet:
~# nc 10.10.0.50 21
220 (vsFTPd 2.3.4)
Chúng tôi có thể làm tương tự với SSH trên cổng 22:
~# nc 10.10.0.50 22
SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1
Và một lần nữa trên cổng 80:
~# nc 10.10.0.50 80
hi
<html><head><title>Metasploitable2 - Linux</title></head><body>
<pre>
_ _ _ _ _ _ ____
_ __ ___ ___| |_ __ _ ___ _ __ | | ___ (_) |_ __ _| |__ | | ___|___ \
| '_ ` _ \ / _ \ __/ _` / __| '_ \| |/ _ \| | __/ _` | '_ \| |/ _ \ __) |
| | | | | | __/ || (_| \__ \ |_) | | (_) | | || (_| | |_) | | __// __/
|_| |_| |_|\___|\__\__,_|___/ .__/|_|\___/|_|\__\__,_|_.__/|_|\___|_____|
|_|
Warning: Never expose this VM to an untrusted network!
Contact: msfdev[at]metasploit.com
Login with msfadmin/msfadmin to get started
</pre>
<ul>
<li><a href="/twiki/">TWiki</a></li>
<li><a href="/phpMyAdmin/">phpMyAdmin</a></li>
<li><a href="/mutillidae/">Mutillidae</a></li>
<li><a href="/dvwa/">DVWA</a></li>
<li><a href="/dav/">WebDAV</a></li>
</ul>
</body>
</html>
Chúng tôi cũng có thể sử dụng Netcat để liên lạc với máy chủ web. Ví dụ: chúng ta có thể sử dụng phương thức HEAD để lấy thông tin tiêu đề về máy chủ:
~# nc 10.10.0.50 80
HEAD / HTTP/1.1
HTTP/1.1 400 Bad Request
Date: Wed, 19 Jun 2019 18:28:12 GMT
Server: Apache/2.2.8 (Ubuntu) DAV/2
Connection: close
Content-Type: text/html; charset=iso-8859-1
Mặc dù đó là một yêu cầu tồi, chúng tôi vẫn có số phiên bản chính xác của Apache .
Chúng tôi cũng có thể gửi yêu cầu GET , sẽ trả lại nội dung của trang web:
~# nc 10.10.0.50 80
GET / HTTP/1.1
HTTP/1.1 400 Bad Request
Date: Wed, 19 Jun 2019 18:29:19 GMT
Server: Apache/2.2.8 (Ubuntu) DAV/2
Content-Length: 323
Connection: close
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.2.8 (Ubuntu) DAV/2 Server at metasploitable.localdomain Port 80</address>
</body></html>
Trong trường hợp này, chúng tôi vẫn nhận được một yêu cầu xấu, nhưng phương pháp này có thể trả về HTML và các thông tin hữu ích khác.
Phương pháp 3 Curl
Curl, thường được cách điệu là cURL (URL của máy khách), là một công cụ dòng lệnh được sử dụng để truyền dữ liệu . Nó được sử dụng phổ biến nhất cho HTTP, nhưng nó hỗ trợ nhiều giao thức khác.
Chúng tôi cũng có thể sử dụng curl để lấy banner của máy chủ web. Tuy nhiên, lần này chúng ta không cần chỉ định số cổng như chúng ta đã làm với các công cụ trước:
~# curl 10.10.0.50
<html><head><title>Metasploitable2 - Linux</title></head><body>
<pre>
_ _ _ _ _ _ ____
_ __ ___ ___| |_ __ _ ___ _ __ | | ___ (_) |_ __ _| |__ | | ___|___ \
| '_ ` _ \ / _ \ __/ _` / __| '_ \| |/ _ \| | __/ _` | '_ \| |/ _ \ __) |
| | | | | | __/ || (_| \__ \ |_) | | (_) | | || (_| | |_) | | __// __/
|_| |_| |_|\___|\__\__,_|___/ .__/|_|\___/|_|\__\__,_|_.__/|_|\___|_____|
|_|
Warning: Never expose this VM to an untrusted network!
Contact: msfdev[at]metasploit.com
Login with msfadmin/msfadmin to get started
</pre>
<ul>
<li><a href="/twiki/">TWiki</a></li>
<li><a href="/phpMyAdmin/">phpMyAdmin</a></li>
<li><a href="/mutillidae/">Mutillidae</a></li>
<li><a href="/dvwa/">DVWA</a></li>
<li><a href="/dav/">WebDAV</a></li>
</ul>
</body>
</html>
Chúng tôi cũng có thể sử dụng cờ -I để tìm nạp tiêu đề HTTP:
~# curl -I 10.10.0.50
HTTP/1.1 200 OK
Date: Wed, 19 Jun 2019 18:32:06 GMT
Server: Apache/2.2.8 (Ubuntu) DAV/2
X-Powered-By: PHP/5.2.4-2ubuntu5.24
Content-Type: text/html
Lần này chúng tôi nhận được 200 OK , cộng với một số thông tin liên quan đến phiên bản PHP .
Phương pháp 4 Nmap
Công cụ tiếp theo chúng ta có thể sử dụng để lấy các biểu ngữ là Nmap . Khi sử dụng phát hiện dịch vụ, Nmap sẽ trả về thông tin về dịch vụ đang chạy, chẳng hạn như số phiên bản, nhưng Nmap cũng có tập lệnh NSE có thể thực hiện lấy biểu ngữ cho chúng tôi.
Sử dụng tùy chọn –script theo sau là tên của tập lệnh, trong trường hợp này là banner :
~# nmap --script banner 10.10.0.50
Starting Nmap 7.70 ( https://nmap.org ) at 2019-08-08 09:15 CDT
Nmap scan report for 10.10.0.50
Host is up (0.0026s latency).
Not shown: 977 closed ports
PORT STATE SERVICE
21/tcp open ftp
|_banner: 220 (vsFTPd 2.3.4)
22/tcp open ssh
|_banner: SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1
23/tcp open telnet
|_banner: \xFF\xFD\x18\xFF\xFD \xFF\xFD#\xFF\xFD'
25/tcp open smtp
53/tcp open domain
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
512/tcp open exec
513/tcp open login
514/tcp open shell
1099/tcp open rmiregistry
1524/tcp open ingreslock
|_banner: root@metasploitable:/#
2049/tcp open nfs
2121/tcp open ccproxy-ftp
|_banner: 220 ProFTPD 1.3.1 Server (Debian) [::ffff:10.10.0.50]
3306/tcp open mysql
| banner: >\x00\x00\x00\x0A5.0.51a-3ubuntu5\x00-\x00\x00\x00$&0_n-0L\x00,
|_\xAA\x08\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00...
5432/tcp open postgresql
5900/tcp open vnc
|_banner: RFB 003.003
6000/tcp open X11
6667/tcp open irc
| banner: :irc.Metasploitable.LAN NOTICE AUTH :*** Looking up your hostna
|_me...
8009/tcp open ajp13
8180/tcp open unknown
MAC Address: 00:1D:09:55:B1:3B (Dell)
Nmap done: 1 IP address (1 host up) scanned in 15.90 seconds
Điều đó đã cho chúng tôi các biểu ngữ cho một số dịch vụ, một số dễ đọc hơn những dịch vụ khác.
Chúng tôi cũng có thể thu hẹp trọng tâm của mình vào một cổng cụ thể bằng cờ -p :
~# nmap -sV --script banner 10.10.0.50 -p 80
Starting Nmap 7.70 ( https://nmap.org ) at 2019-08-08 09:25 CDT
Nmap scan report for 10.10.0.50
Host is up (0.00065s latency).
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.2.8 ((Ubuntu) DAV/2)
|_http-server-header: Apache/2.2.8 (Ubuntu) DAV/2
MAC Address: 00:1D:09:55:B1:3B (Dell)
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 21.76 seconds
Ví dụ, chạy cái này với cổng 80 cho chúng ta một số thông tin về máy chủ web Apache.
Phương pháp 5 Metasploit
Phương pháp lấy biểu ngữ cuối cùng mà chúng ta sẽ khám phá là Metasploit . Metasploit có các mô-đun sẽ thu thập thông tin về telnet, máy chủ web, SMTP , v.v.
Đầu tiên, khởi chạy Metasploit bằng cách gõ msfconsole trong thiết bị đầu cuối. Sau đó, chúng ta có thể sử dụng lệnh tìm kiếm trên dấu nhắc msf5 để tìm bất kỳ mô-đun nào liên quan đến lấy biểu ngữ:
msf5 > search banner
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/scanner/http/f5_bigip_virtual_server normal Yes F5 BigIP HTTP Virtual Server Scanner
1 auxiliary/scanner/imap/imap_version normal Yes IMAP4 Banner Grabber
2 auxiliary/scanner/pop3/pop3_version normal Yes POP3 Banner Grabber
3 auxiliary/scanner/smtp/smtp_version normal Yes SMTP Banner Grabber
4 auxiliary/scanner/telnet/lantronix_telnet_version normal Yes Lantronix Telnet Service Banner Detection
5 auxiliary/scanner/telnet/telnet_version normal Yes Telnet Service Banner Detection
6 exploit/multi/http/auxilium_upload_exec 2012-09-14 excellent Yes Auxilium RateMyPet Arbitrary File Upload Vulnerability
7 exploit/unix/webapp/openx_banner_edit 2009-11-24 excellent Yes OpenX banner-edit.php File Upload PHP Code Execution
8 exploit/unix/webapp/wp_easycart_unrestricted_file_upload 2015-01-08 excellent No WordPress WP EasyCart Unrestricted File Upload
9 exploit/windows/ftp/proftp_banner 2009-08-25 normal No ProFTP 2.9 Banner Remote Buffer Overflow
Mô-đun đầu tiên chúng tôi sẽ sử dụng sẽ cung cấp cho chúng tôi một số thông tin về telnet – tải nó bằng lệnh use :
msf5 > use auxiliary/scanner/telnet/telnet_version
Và chúng ta có thể xem các tùy chọn :
msf5 auxiliary(scanner/telnet/telnet_version) > options
Module options (auxiliary/scanner/telnet/telnet_version):
Name Current Setting Required Description
---- --------------- -------- -----------
PASSWORD no The password for the specified username
RHOSTS yes The target address range or CIDR identifier
RPORT 23 yes The target port (TCP)
THREADS 1 yes The number of concurrent threads
TIMEOUT 30 yes Timeout for the Telnet probe
USERNAME no The username to authenticate as
Điều duy nhất chúng ta cần thiết lập bây giờ là tùy chọn rhosts . Đặt nó thành địa chỉ IP của mục tiêu của chúng tôi và vì điều này sẽ giữ nguyên cho một vài mô-đun tiếp theo, chúng tôi có thể sử dụng lệnh setg để đặt nó trên toàn cầu:
msf5 auxiliary(scanner/telnet/telnet_version) > setg rhosts 10.10.0.50
rhosts => 10.10.0.50
Bây giờ, tất cả những gì chúng ta phải làm là chạy nó:
msf5 auxiliary(scanner/telnet/telnet_version) > run
[+] 10.10.0.50:23 - 10.10.0.50:23 TELNET _ _ _ _ _ _ ____ \x0a _ __ ___ ___| |_ __ _ ___ _ __ | | ___ (_) |_ __ _| |__ | | ___|___ \ \x0a| '_ ` _ \ / _ \ __/ _` / __| '_ \| |/ _ \| | __/ _` | '_ \| |/ _ \ __) |\x0a| | | | | | __/ || (_| \__ \ |_) | | (_) | | || (_| | |_) | | __// __/ \x0a|_| |_| |_|\___|\__\__,_|___/ .__/|_|\___/|_|\__\__,_|_.__/|_|\___|_____|\x0a |_| \x0a\x0a\x0aWarning: Never expose this VM to an untrusted network!\x0a\x0aContact: msfdev[at]metasploit.com\x0a\x0aLogin with msfadmin/msfadmin to get started\x0a\x0a\x0ametasploitable login:
[*] 10.10.0.50:23 - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
Chúng ta có thể thấy nó đã cho chúng ta một loại biểu ngữ lộn xộn, nhưng một lần nữa, chúng ta đã nhận được một số thông tin từ nó.
Tiếp theo, chúng ta có thể sử dụng mô-đun http_version để có được một số thông tin về máy chủ web. Tải nó lên:
msf5 auxiliary(scanner/telnet/telnet_version) > use auxiliary/scanner/http/http_version
Và hãy xem các tùy chọn:
msf5 auxiliary(scanner/http/http_version) > options
Module options (auxiliary/scanner/http/http_version):
Name Current Setting Required Description
---- --------------- -------- -----------
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS 10.10.0.50 yes The target address range or CIDR identifier
RPORT 80 yes The target port (TCP)
SSL false no Negotiate SSL/TLS for outgoing connections
THREADS 1 yes The number of concurrent threads
VHOST no HTTP server virtual host
Mọi thứ có vẻ tốt, vì vậy hãy khởi động nó:
msf5 auxiliary(scanner/http/http_version) > run
[+] 10.10.0.50:80 Apache/2.2.8 (Ubuntu) DAV/2 ( Powered by PHP/5.2.4-2ubuntu5.24 )
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
Điều đó đã cho chúng tôi số phiên bản Apache cũng như thông tin phiên bản PHP từ nó.
Chúng tôi cũng có thể quét phiên bản SMTP đang chạy. SMTP (Giao thức chuyển thư đơn giản) là một giao thức được sử dụng để liên lạc qua email . Tải mô-đun bằng:
msf5 auxiliary(scanner/http/http_version) > use auxiliary/scanner/smtp/smtp_version
Và kiểm tra các tùy chọn:
msf5 auxiliary(scanner/smtp/smtp_version) > options
Module options (auxiliary/scanner/smtp/smtp_version):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS 10.10.0.50 yes The target address range or CIDR identifier
RPORT 25 yes The target port (TCP)
THREADS 1 yes The number of concurrent threads
Một lần nữa, nó có vẻ tốt để đi, vì vậy chúng tôi có thể chạy mô-đun:
msf5 auxiliary(scanner/smtp/smtp_version) > run
[+] 10.10.0.50:25 - 10.10.0.50:25 SMTP 220 metasploitable.localdomain ESMTP Postfix (Ubuntu)\x0d\x0a
[*] 10.10.0.50:25 - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
Điều đó trả về một số thông tin về dịch vụ SMTP trên hệ thống.
Metasploit cũng có một vài máy quét hữu ích khác cho các giao thức IMAP và POP3. Chúng không được thiết lập trên mục tiêu của chúng tôi, nhưng chúng hoạt động rất giống với các mô-đun khác mà chúng tôi đề cập.
Làm thế nào để ngăn chặn việc lấy biểu ngữ
Do bản chất của cách thức các dịch vụ này hoạt động, việc lấy biểu ngữ là khó khăn, nhưng không phải là không thể, để ngăn chặn. Cách rõ ràng để ngăn chặn kiểu tấn công này là hạn chế thông tin dịch vụ phát sóng, nhưng đối với nhiều dịch vụ, nó phá vỡ chức năng của chúng. Đơn giản chỉ cần vô hiệu hóa các biểu ngữ có thể cung cấp sự bảo vệ tốt nhất chống lại những kẻ tấn công đang tìm kiếm Thông tin
Một phương pháp khác, có thể được sử dụng cho các máy chủ web, là đặt proxy giữa máy chủ và internet, sẽ loại bỏ một số thông tin nhất định hoặc định dạng lại các tiêu đề để làm cho việc phát hiện khó khăn hơn. Ngoài ra còn có các chương trình có sẵn để ẩn thông tin này khỏi những kẻ tấn công, chẳng hạn như ServerMask và IIS Lockdown .