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 .

Trả lời