Network Performance Monitoring (NPM) and Diagnostics | Application Performance Monitoring (APM) | Application-Aware Network Performance Monitoring (AA NPM) | Network Fault Management | Information Security | Network Security

Как использовать захват баннеров для выявления потенциальных угроз в целевой системе

Захват баннеров для выявления потенциальных угроз в целевой системе

Как мы уже могли убедиться на примере других инструментов и утилит, некоторые вещи, которые используются администраторами для повышения эффективности своей работы, могут бессовестно эксплуатироваться злоумышленниками для подготовки к осуществлению несанкционированного доступа в систему. В конце концов, взлом — это всего лишь процесс, заставляющий компьютер делать что-то непредусмотренным образом в интересах хакера. В рамках данной статьи мы на практических примерах рассмотрим различные способы захвата баннеров. Эти навыки помогут вам выявлять потенциальные информационные угрозы для вашей системы до того, как этим смогут воспользоваться злоумышленники.

Захват баннеров — это метод, который используется для сбора информации о запущенных службах в компьютерной системе. Баннеры относятся к сообщениям, размещенным на хосте, и обычно выполняют роль приветствия и/или предоставляют некоторую информацию о версиях используемых служб и программных продуктов. Злоумышленники могут в своих интересах воспользоваться данными, находящимися в баннере, получив тем самым конкретные номера версий используемых служб, что значительно облегчит им задачу проведения разведки и планирования взлома.

В рамках нашего практического руководства по захвату баннеров мы будем использовать виртуальную машину Metasploitable 2 в качестве цели (уязвимого сервера) и Kali Linux в качестве нашей локальной машины.

Для начала проведем быстрое сканирование цели с помощью Nmap, чтобы понимать, что на этом сервере запущено. Для этого в командной строке набираем команду «nmap» с указанием целевого IP-адреса или имени хоста:

«nmap 10.10.0.50»

Как вы уже успели заметить, в нашем случае IP-адрес целевого сервера — 10.10.0.50.

Результат сканирования тестовой цели с помощью Nmap представлен ниже:

 

~# 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

 

1. Захват баннеров с помощью Telnet

Первый инструмент, который мы будем использовать для захвата баннеров, — это telnet. На первый взгляд эта скромная маленькая утилита может показаться не очень полезной, когда дело доходит до тестирования на проникновение, но основная ее ценность заключается в том, что она присутствует практически в любой системе.

Например, мы можем использовать telnet для получения информации о версии FTP-сервера, который работающего на порту 21. Для этого в командной строке наберите синтаксис команды «telnet», затем IP-адрес компьютера, к которому вы хотите подключиться, а затем номер порта:

«telnet 10.10.0.50 21»

Собранная информация в результате выполнения команды утилиты telnet для подключения к порту 21, на котором работает FTP-сервера, представлена ниже:

 

~# 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)

 

Мы можем сделать то же самое для службы SSH (Secure Shell, «Безопасная оболочка»), предоставляющей удаленный доступ и работающей на порту 22:

«telnet 10.10.0.50 22»

Собранная информация в результате выполнения команды утилиты telnet для подключения к порту 22, на котором работает SSH-сервер, представлена ниже:

 

~# 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

 

Мы даже можем использовать утилиту telnet для захвата баннера веб-сервера, который обычно работает на порту 80:

«telnet 10.10.0.50 80»

После подключения введите какую-нибудь фразу (в нашем примере это слово «help»), и веб-сервер может вам предоставить некоторую интересную информацию.

Собранная информация в результате выполнения команды утилиты telnet для подключения к порту 80, на котором работает веб-сервер, представлена на скриншоте ниже:

 

Мы даже можем использовать утилиту telnet для захвата баннера веб-сервера, который обычно работает на порту 80

 

Как вы можем увидеть на представленном выше скриншоте, в результате выполнения команды для подключения к порту 80 с целью захвата баннера веб-сервера с помощью утилиты telnet мы получили немного HTML-текста, включая атрибуты и ту часть, которая выглядит как каталоги, а также приветственный баннер системы. Нам также повезло, так мы получили и адрес электронной почты, и учетные данные для входа.

2. Захват баннеров с помощью NetCat

Следующий инструментарий, который мы будем использовать для захвата баннеров, — это netcat, утилита, которая нашла широкое применение в Linux и других Unix-подобный системах, а также может использоваться злоумышленниками в различных целях. В рамках данного практического руководства мы покажем, как использовать утилиту netcat для подключения к определенным портам и сбора информации.

Для начала, давайте с помощью сканера TCP-портов утилиты netcat подключимся к службе FTP через порт 21, как мы это сделали в предыдущем примере с telnet:

«nc 10.10.0.50 21»

Собранная информация в результате выполнения команды сканера TCP-портов утилиты netcat с целью подключения к порту 21, на котором работает FTP-сервер, представлена ниже:

 

~# nc 10.10.0.50 21

220 (vsFTPd 2.3.4)

 

Выполним тоже самое для порта 22, на котором работает SSH:

«nc 10.10.0.50 22»

Собранная информация в результат выполнения команды сканера TCP-портов утилиты netcat для подключения к порту 22, на котором работает SSH-сервер, представлена ниже:

 

~# nc 10.10.0.50 22

SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1

 

И еще раз для порта 80:

«nc 10.10.0.50 80»

Собранная информация в результате выполнения команды сканера TCP-портов утилиты netcat для подключения к порту 80, на котором работает веб-сервер, представлена на скриншоте ниже:

 

Собранная информация в результате выполнения команды сканера TCP-портов утилиты netcat для подключения к порту 80, на котором работает веб-сервер

 

Кроме того, мы можем использовать утилиту netcat для некоторой коммуникации с веб-сервером и сборе информации о нем. Например, с помощью метода «HEAD» мы получим возможность добраться до содержимого HTTP-заголовка, часто предоставляющего много полезной информации, в том числе название используемого веб-сервера и номер запущенной версии. Для этого мы сразу должны установить TCP-соединение с целевым веб-сервером:

 

«nc 10.10.0.50 80»

А после того, как соединение будет установлено, необходимо ввести команду метода «HEAD»:

«HEAD / HTTP/1.1»

Собранная информация в результате установления TCP-соединения с веб-сервером и выполнения команды метода «HEAD» утилиты netcat, представлена ниже:

 

~# 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

 

Как вы, вероятно, заметили, несмотря на то, что ответ содержал сообщение об ошибке «400 Bad Request», мы все равно смогли узнать название веб-сервера (Apache) и точный номер используемой версии.

Мы также можем отправить GET-запрос по HTTP, который вернет нам содержимое веб-страницы. Для этого нам также понадобиться дважды нажать «Enter». Сперва устанавливаем TCP-соединение с целевым веб-сервером:

«nc 10.10.0.50 80»

А затем отправляем GET-запрос:

«GET / HTTP/1.1»

Собранная информация в результате установления TCP-соединения с веб-сервером и отправки GET-запроса с помощью утилиты netcat, представлена на скриншоте ниже:

 

Собранная информация в результате установления TCP-соединения с веб-сервером и отправки GET-запроса с помощью утилиты netcat

 

В нашем примере мы опять получили сообщение об ошибке «400 Bad Request», но этот метод помог нам больше узнать об HTML и собрать другую полезную информацию.

3. Захват баннеров с помощью Curl

Curl, написание которого часто стилизованно как cURL (Client URL), чтобы избежать путаницы с одноименным языком программирования, представляет собой кроссплатформенный служебный инструмент командной строки, используемый для передачи данных. Он чаще всего используется для HTTP, но поддерживает и множество других протоколов.

Мы также можем использовать программу curl, чтобы захватить баннер веб-сервера. Однако, на этот раз нам не нужно явно указывать номер порта, как мы делали при работе с двумя предыдущими инструментами:

«curl 10.10.0.50»

Собранная информация в результате захвата баннера веб-сервера с помощью служебной программы curl, представлена на скриншоте ниже:

 

Захват баннеров с помощью Curl

 

Для получения заголовка HTTP используйте флаг «-I»:

«curl -I 10.10.0.50»

Собранная информация в результате получения заголовка HTTP с помощью служебной программы curl, представлена ниже:

 

~# 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

 

Как вы можете видеть, на этот раз мы не получили сообщение об ошибке, и в качестве бонуса у нас появилась некоторая информация, касающаяся версии PHP.

4. Захват баннеров с помощью Nmap

Еще одним инструментом, который мы можем использовать для захвата баннеров, является бесплатное открытое программное обеспечение для исследования и аудита безопасности сетей и выявления активных сетевых сервисов Nmap. Так, при использовании стандартной возможности по обнаружению служб инструментарий Nmap возвращает информацию о работающих сервисах, которая может быть нам интересна, например, номера версий этих служб. Но в Nmap также есть возможность использовать скрипты NSE (Nmap Scripting Engine), которая позволяет как использовать уже готовые скрипты, так и написать собственные. Одним из предустановленных скриптов мы и воспользуемся, чтобы выполнить захват баннера.

Для этого в окне командной строки набираем команду «nmap», после чего задаем опцию «--script», за которым следует имя конкретного скрипта, который мы планируем использовать (в данном случае — это «banner»), а также указываем IP-адрес или имя хоста целевого сервера:

«nmap --script banner 10.10.0.50»

Собранная информация в результате захвата баннеров со всех портов с помощью скрипта «banner» инструментария Nmap, представлена ниже:

 

~# 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

 

Как вы можете видеть, мы смогли захватить баннеры для нескольких служб. И некоторые из них легче прочитать, чем другие.

Чтобы сузить фокус внимания до одного или нескольких портов, используйте флаг «-p» и укажите через запятую конкретные порты, баннеры которых вы хотите захватить (также не лишним будет добавить флаг «-sV», чтобы исследовать только открытые порты для получения информации о службе и ее версии):

nmap -sV --script banner 10.10.0.50 -p 80

Собранная информация в результате захвата баннера веб-сервера с порта 80 с помощью скрипта «banner» инструментария Nmap, представлена ниже:

 

~# 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

 

Как вы можете видеть на скриншоте, в нашем случае запуск скрипта «banner» инструментария Nmap с указанием порта 80 предоставил нам некоторую интересную информацию о веб-сервере Apache.

5. Захват баннеров с помощью Metasploit

Последний способ захвата баннеров, который мы рассмотрим в рамках данного руководства, — это программа Metasploit. Инструментарий Metasploit имеет модули, которые могут собирать информацию о службах telnet, веб-серверов, SMTP и многом другом.

Для начала следует запустить командную оболочку Metasploit, набрав «msfconsole» в окне командной строки. После этого, используя команду «search», мы можем провести поиск любых модулей, связанных с захватом баннеров. Например, вводим запрос:

«search banner»

Скриншот выполнения запроса «banner» для поиска модулей командной оболочки Metasploit, связанных с захватом баннеров, представлен ниже:

 

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

 

Первый модуль, который мы будем использовать, может предоставить нам некоторую информацию о службе telnet на целевом сервере. Загружаем модуль «telnet_version» с помощью команды «use»:

«use auxiliary/scanner/telnet/telnet_version»

И просматриваем текущие настройки с помощью команды «options».

Скриншот текущих настроек модуля командной оболочки Metasploit для захвата баннера службы telnet представлен ниже:

 

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

 

Как мы можем видеть на скриншоте, единственная настройка, которую нам необходимо задать, до того, как запустить модуль, — это опция «rhosts». Установим туда IP-адрес нашей цели. Так как мы планируем использовать данный IP-адрес и с другими модулями, используем команду «setg», чтобы установить его глобально:

«setg rhosts 10.10.0.50»

Теперь все, что нам осталось сделать, — это запустить модуль «telnet_version», используя команду «run».

Скриншот выполнения модуля командной оболочки Metasploit для захвата баннера службы telnet представлен ниже:

 

msf5 auxiliary(scanner/telnet/telnet_version) > run

[+] 10.10.0.50:23         - 10.10.0.50:23 TELNET
                _                  _       _ _        _     _      ____  
 _ __ ___   ___| |_ __ _ ___ _ __ | | ___ (_) |_ __ _| |__ | | ___|___ \
| '_ ` _ \ / _ \ __/ _` / __| '_ \| |/ _ \| | __/ _` | '_ \| |/ _ \ __)
| | | | | |  __/ || (_| \__ \ |_) | | (_) | | || (_| | |_) | |  __// __/
|_| |_| |_|\___|\__\__,_|___/ .__/|_|\___/|_|\__\__,_|_.__/|_|\___|_____|
                            |_|                                          


Warning: Never expose this VM to an untrusted network!

Contact: msfdev[at]metasploit.com

Login with msfadmin/msfadmin to get started


metasploitable login:
[*] 10.10.0.50:23         - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

 

Как вы можете убедиться, мы получили приветственный баннер и еще некоторую полезную информацию.

Далее мы будем использовать модуль «http_version», чтобы получить информацию о веб-сервере. Загрузим его с помощью команды «use»:

«use auxiliary/scanner/http/http_version»

И проверим настройки с помощью команды «options».

Скриншот текущих настроек модуля командной оболочки Metasploit для захвата баннера веб-сервера представлен ниже:

 

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

 

Все обязательные настройки есть, так что запустим модуль с помощью команды «run».

Скриншот выполнения модуля командной оболочки Metasploit для захвата баннера веб-сервера представлен ниже:

 

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

 

Как вы можете видеть, мы смогли получить информацию о названии и номере версии веб-сервера Apache, а также версию используемого PHP.

Далее, мы можем просканировать систему с помощью модуля «smtp_version» для определения версии запущенной службы SMTP. SMTP (Simple Mail Transfer Protocol) — это сетевой протокол, предназначенный для передачи электронной почты. Загружаем модуль, используя команду «use»:

«use auxiliary/scanner/smtp/smtp_version»

И проверяем настройки командой «options».

Скриншот текущих настроек модуля командной оболочки Metasploit для определения версии запущенной службы SMTP представлен ниже:

 

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

 

Все обязательные настройки есть, так что мы можем запускать модуль «smtp_version» с помощью команды «run», что даст нам определенное представление о службе SMTP, запущенной на целевом сервере.

Скриншот текущих настроек модуля командной оболочки Metasploit для определения версии запущенной службы SMTP представлен ниже:

 

msf5 auxiliary(scanner/smtp/smtp_version) > run

[+] 10.10.0.50:25         - 10.10.0.50:25 SMTP 220 metasploitable.localdomain ESMTP Postfix (Ubuntu)

[*] 10.10.0.50:25         - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

 

Metasploit также имеет несколько других полезных сканеров, например, для протоколов IMAP и POP3. Работа с ними очень похожа на те модули, которые мы уже рассмотрели в рамках данного практического руководства. Поэтому воспользоваться ими при необходимости вам не составит труда.

Как предотвратить захват баннера?

Как предотвратить захват баннера

Из-за особенностей работы этих сервисов предотвратить захват баннеров трудно, но не невозможно. Очевидный способ остановить этот тип атак — ограничить информацию, передаваемую службой. Но для многих служб это неминуемо негативно повлияет на их функциональность. Тем не менее, простое отключение баннеров сможет обеспечить вам лучшую защиту от злоумышленников, ищущих легкой наживы.

Другой способ, который может быть использован для, например, веб-серверов, заключается в размещении прокси-сервера между сервером и Интернетом. Он поможет отфильтровать определенную часть информации или переформатировать заголовки, что сделает обнаружение гораздо более трудной задачей. Существуют также специальные программы, позволяющие скрыть информацию от злоумышленников, например, ServerMask и IIS Lockdown.

Выводы

В рамках данного практического руководство мы больше узнали о захвате баннеров и о том, как эти знания могут быть использованы злоумышленниками для сбора информации о службах, работающих в системе. Мы также детально рассмотрели несколько способов захвата баннеров с помощью таких инструментов, как telnet, NetCat, curl, Nmap и Metasploit. Вся эта информация может быть использована хакерами для проведения разведки и, в конечном итоге, лучшей организации проникновения в вашу систему.

 

Появились вопросы или нужна консультация? Обращайтесь!

Антон Кочуков

Вечный параноик, Антон Кочуков.

Комментарии
Тут пока ничего нет, но Вы можете быть первым!
Авторизуйтесь для этого

См. также:
Заказать звонок

- Email
- Confirm
Имя *
Телефон *
Комментарий
Согласие на отправку персональных данных *

* - Обязательное для заполнения