Основы сети. Часть 7. Сетевые службы 1.

Основы сети. Часть 7. Сетевые службы 1.

BagOs




Глава 7. СЕТЕВЫЕ СЛУЖБЫ 1.


  1. SMB.
  2. TELNET.
  3. FTP.

____________________________________________________________________________




§ 7.1. SMB.

7.1.1) SMB (SERVER MESSAGE BLOCK) это сетевой протокол для удалённого доступа к файлам, принтерам и другим ресурсам в сети, и для межпроцессного взаимодействия. SMB работает по умолчанию через TCP-порт 445.

SMB позволяет пользователям и администраторам совместно использовать папки и делать их доступными удалённо для других пользователей. Часто в этих общих ресурсах есть файлы, содержащие конфиденциальную информацию, например пароли.


SAMBA пакет программ для взаимодействия с Windows, выпущенный для систем Linux и Unix. Поскольку протокол SMB изначально разрабатывался под Windows, то с помощью SAMBA упрощается способ связи сетей Microsoft с Linux или macOS.




7.1.2) КАК РАБОТАЕТ SMB — протокол SMB работает в режиме «запрос-ответ», то есть он передаёт несколько сообщений между клиентом и сервером для установления соединения. Клиенты подключаются к серверам с помощью TCP/IP, NetBEUI или IPX/SPX:

Сначала клиент отправляет серверу SMB-запрос для установки соединения, а сервер отправляет обратно SMB-ответ, который разрешает соединение.

После установления соединения, клиенты могут отправлять SMB-команды на сервер, позволяющие им получить доступ к общедоступным ресурсам, открывать файлы, читать и записывать файлы и т. д. Всё это делается по сети.





7.1.3) ПРОНИКНОВЕНИЕ В SMB — это даст нам доступ к именам пользователей, паролям, сетевой информации, именам хостов, данным приложений, сетевым службам и любой другой ценной информации. Конфиденциальные данные могут находиться в общих сетевых папках, а некоторые версии SMB могут быть уязвимы для эксплойтов.



1 ЭТАП: Сканирование портов — провести сканирование портов можно с помощью Nmap:


В первом случае Nmap сканирует все службы на целевой системе.

Во втором случае Nmap сканирует службу SMB для определения версии ОС, имени компьютера, домена, рабочей группы и текущего времени по протоколу SMB.




2 ЭТАП: Поиск общих ресурсов SMB №1 — для этого будем использовать инструмент Enum4Linux, который находит общие ресурсы SMB в системах Windows и Linux. Он установлен по умолчанию на Kali и Parrot, однако его можно установить из github.



Параметры:

  • -U получить список пользователей.
  • -M получить список машин.
  • -N — получить дамп списка имен (отличается от -U и -M).
  • -S — получить общий список.
  • -P — получить информацию о политике паролей.
  • -G — получить группу и список участников.
  • -a полное базовое перечисление (включает все вышеперечисленные параметры).



Enum4Linux нашёл четыре общих ресурса: netlogon, profiles, print$, IPC$:


Но только к одному общему ресурсу profiles можно подключиться, поскольку для него выставлены нужные разрешения (хз что эти разрешения означают):




Поиск общих ресурсов SMB №2 — для этого будем использовать SMB-клиент для подключения (SMBClient установлен по умолчанию на Kali и Parrot, но его можно установить из официального сайта):

  • -L — указывает, что хотим получить список общих ресурсов общих ресурсов на удаленном хосте.
  • -N — игнорирует запрос пароля.





3 ЭТАП: Использование уязвимостей SMB лучший способ проникновения в систему с SMB связан с неправильными настройками целевой системы. Мы будем использовать анонимный доступ к общему ресурсу SMB-сервера, позволяющий получить информацию, которая приведёт к получению командной оболочки (shell).


* ( альтернативная уязвимость): также существует уязвимость CVE-2017-7494, которая позволяет удалённое выполнение кода с помощью SMB. Но пока сосредоточимся на анонимном доступе.



Поскольку мы хотим получить доступ к общему ресурсу SMB, нам нужен SMB-клиент для подключения. Будем использовать SMBClient, который является частью пакета Samba. SMBClient установлен по умолчанию на Kali и Parrot, но его можно установить из официального сайта.


Способ 1.

  • profiles — общий ресурс, который мы нашли на 2 этапе.
  • -U sriki имя пользователя, которое задаётся произвольно.
  • -p 445 порт, на котором по умолчанию работает SMB.


Как только мы введём команду выше, SMBClient предложит нам ввести пароль. Этот момент нужно опустить, нажав на кнопку [Enter].



Способ 2.

  • profiles — общий ресурс, который мы нашли на 2 этапе.
  • -L — указывает, что хотим получить список общих ресурсов общих ресурсов на удаленном хосте.
  • -N — игнорирует запрос пароля.




Получив доступ к общему ресурсу SMB, для взаимодействия с её каталогами нужно использовать SMB-команды, которые во многом схожи с Windows-командами. Для просмотра SMB-команд, нужно ввести команду help:


Выведем список каталогов в общем ресурсе SMB с помощью команды dir или ls:


Нас может заинтересовать каталог .ssh, который содержит ключи аутентификации, позволяющие пользователю аутентифицировать себя на сервере, а затем получить доступ к нему. Поэтому перейдём в этот каталог и выведем содержимое этого каталога:


В каталоге .ssh содержится три ssh-ключа, где для нас наиболее интересен ключ id_rsa. Загрузим этот ssh-ключ на наш компьютер с помощью команды get id_rsa или mget id_rsa:


Ssh-ключ «id_rsa» скачался на наш компьютер:



4 ЭТАП: Далее нужно заменить разрешение этого ssh-ключа на «600» (хз зачем, но нужно), с помощью команды chmod 600 имяКлюча:


Теперь с помощью ssh-ключа «id_rsa» нужно войти в чужой ssh-клиент, прописав команду ssh -i имяКлюча имяПользователя@ipПользователя:

* Имя пользователя мы должны узнать покопавшись в файлах общего ресурса SMB. Команду выше нужно выполнить из папки, где находится ssh-ключ (например, если ключ находится в папке «Загрузки», то нужно перейти в эту папку и выполнить код подключения).


Готово! Мы получили обратную ssh-оболочку пользователя «cactus».






§ 7.2. TELNET.






§ 7.3. FTP.

7.3.1) FTP (FILE TRANSFER PROTOCOL) — это сетевой протокол для удалённой передачи файлов по сети. Данный протокол работает на прикладном уровне в модели TCP/IP. FTP работает по умолчанию через TCP-порт 21.

Для передачи команд и данных используется модель связи «клиент-сервер».


Защищенные версии протокола FTP: FTPS с использованием протокола TLS (порт 990) и SFTP с использованием протокола SSH (порт 22).

Более простая версия протокола FTP TFTP, который выполняет передачу файлов между клиентскими и серверными процессами. Однако TFTP ненадежный протокол, он не обеспечивает аутентификацию пользователя и другие ценные функции в FTP, а также использует UDP-соединение. Поэтому TFTP может использоваться только в локальных и защищенных сетях.


Более подробно о протоколе FTP можно посмотреть здесь или здесь.

Атаки на FTP можно посмотреть здесь (§ 2.1.).





7.3.2) КАК РАБОТАЕТ FTP — FTP использует два канала для работы:

  1. Канал управления — используется для передачи команд, а также ответов на эти команды.
  2. Канал передачи данных — используется для передачи файлов.


ЭТАП 1. Клиент устанавливает связь с FTP-сервером, отправляя запрос на TCP-порт 21 (канал управления). Клиент отправляет команды на сервер, а сервер возвращает коды состояния.


ЭТАП 2. FTP-сервер открывает сессию с клиентом через собственный TCP-порт 20 (канал передачи данных). Этот канал используется исключительно для передачи файлов, а FTP-протокол отслеживает ошибки во время этого процесса.

После открытия сессии, все команды клиента будут отправляться по этому каналу. Пока сессия открыта, клиент может выполнять FTP-команды на сервере. Если соединение прерывается во время передачи файлов, то соединение может быть возобновлено после восстановления контакта.



[ПРОВЕРИТЬ ДОСТОВЕРНОСТЬ: Как только клиент запросит передачу другого файла, между клиентом и сервером будет установлено новое FTP-соединение, а прежнее FTP-соединение завершится. Это вызывает неудобство, поскольку клиент может вводить команды только в промежутках между передачами данных, что неэффективно при передаче больших файлов. Для решения этой проблемы были созданы активное и пассивное соединение].




7.3.3) АКТИВНЫЙ И ПАССИВНЫЙ РЕЖИМ FTP-СОЕДИНЕНИЯ:

  • В активном режиме клиент устанавливает связь с сервером через TCP-порт 21 и сообщает ему на какой клиентский порт сервер может передавать свои ответы. Однако, если у клиента стоит брандмауэр, то сервер не сможет подключиться к клиентскому порту, поскольку брандмауэр блокирует все внешние подключения.
  • В пассивном режиме клиент устанавливает связь с сервером через TCP-порт 21 и сообщает ему, что необходимо работать в пассивном режиме. Сервер открывает свой нестандартный порт (свыше 1023) и сообщает его клиенту. Затем клиент подключается к нестандартному порту сервера.




7.3.4) КОМАНДЫ И КОДЫ СОСТОЯНИЯ FTP:


I) КОМАНДЫ FTP:

  • ls показать список файлов.
  • help — просмотреть все доступные команды на FTP-сервере.
  • ascii — переключает режим передачи файлов на ASCII.
  • binary — переключает режим передачи файлов на двоичный.
  • get имяФайла — заставляет клиента и сервер установить другой канал для передачи файлов.
  • cat имяФайла — теперь, когда у нас есть переданные файлы, мы можем их прочитать с помощью команды «cat».
  • status показать настройки FTP-сервера.
  • touch имяФайла — загрузить файл (touch file.txt).
  • put имяФайла — загрузить файлы из текущей папки на FTP-сервер.




II) КОДЫ СОСТОЯНИЯ FTP.






7.3.5) FTP-СЕРВЕРЫ:

I) vsFTPd популярный FTP-сервер в дистрибутивах Linux. Установить сервер vsFTPd можно с помощью команды:


Конфигурации по умолчанию сервера vsFTPd можно найти в файле /etc/vsftpd.conf, где уже заданы некоторые настройки по умолчанию. Всевозможные настройки можно найти здесь.

В файле /etc/ftpusers можно прописать пользователей, которым нужно отказать в доступе к FTP-службе. В примере ниже, доступ запрещён троим пользователям, даже если они существуют в системе Linux:




НАСТРОЙКИ АНОНИМНОГО ВХОДА.

Одним из этих механизмов аутентификации в FTP-сервере является использование функции анонимного входа, чтобы позволить всем пользователям во внутренней сети обмениваться файлами и данными, не обращаясь к компьютерам друг друга. В vsFTPd настройки для анонимного входа в систему выглядят следующим образом:

  • anonymous_enable=YES — разрешает анонимный вход в систему.
  • anon_upload_enable=YES — разрешает анонимно загружать файлы.
  • anon_mkdir_write_enable=YES — разрешает анонимному пользователю создавать новые каталоги в системе.
  • no_anon_password=YES — не требует пароля от анонимного пользователя.
  • anon_root=/home/username/ftp — задаёт каталог для анонимного пользователя.
  • write_enable=YES — разрешает для анонимного пользователя использование следующих команд: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE и SITE.




УЯЗВИМЫЕ НАСТРОЙКИ FTP — эти настройки отвечают за безопасность, их неправильная настройка может привести к уязвимостям:

  • dirmessage_enable=YES — отображает сообщение при первом входе в новый каталог (хз чё это).
  • chown_uploads=YES — изменить право собственности на анонимно загруженные файлы.
  • chown_username=имяПользователя — назначить пользователя, которому будет предоставлен доступ к анонимно загруженным файлам.
  • local_enable=YES — разрешить локальным пользователям входить в систему.
  • chroot_local_user=YES — поместить локальных пользователей в их домашний каталог.
  • chroot_list_enable=YES — использовать список локальных пользователей, который будет размещен в их домашнем каталоге.
  • hide_ids=YES — отображать всю информацию о пользователях и группах как «ftp».
  • ls_recurse_enable=YES — позволяет использовать повторяющиеся списки.



Например, если в FTP-сервера есть настройка hide_ids=YES, то представление служб UID и GUID будет перезаписано, что затруднит нам обнаружение того, с какими правами эти файлы записываются и загружаются:

Эта настройка предотвращает раскрытие локальных имён пользователей. Зная имена пользователей, теоретически можно было бы атаковать сетевые службы (ftp, ssh и т.д) с помощью брутфорса. Но к счастью для разработчиков, от брутфорс-атак защищает fail2ban, который регистрирует IP-адрес и блокирует весь доступ к инфраструктуре после определенного количества неудачных попыток входа в систему.



Еще одна уязвимая настройка, которую мы можем использовать для атак является ls_recurse_enable=YES, которая нужна для лучшего обзора структуры каталогов FTP, поскольку эта настройка позволяет разработчикам видеть все содержимое каталогов одновременно:

Загрузка файлов с FTP-сервера с такой настройкой позволяет злоумышленникам использовать уязвимости LFI, чтобы заставить хост выполнять системные команды. Также возможны атаки на журналы FTP, что приводит к удаленному выполнению команды (RCE).


Мы также можем скачать все файлы и папки, к которым у нас есть доступ:

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




II) ProFTPD



III) uFTP





7.3.6) FTP-КЛИЕНТЫ. Для FTP-клиентов есть встроенный инструмент FTP в терминале, а также инструмент с графическим интерфейсом FileZilla. Некоторые браузеры также поддерживают протокол FTP.




7.3.7) ПОДКЛЮЧЕНИЕ К FTP-СЕРВЕРУ — FTP отправляет и получает данные в незашифрованном виде, следовательно можно использовать инструмент Telnet (или Netcat) для связи с FTP-сервером и действовать как «FTP-клиент».



СПОСОБ №1 (ЧЕРЕЗ TELNET):

  1. Поскольку FTP-сервер использует порт 21, то подключаемся к порту 21 с помощью команды telnet IPсервераFTP 21.
  2. Вводим имя пользователя с помощью команды USER имяПользователя, например USER Jimi.
  3. Затем вводим пароль с помощью команды PASS пароль, например PASS 1234.
  4. Если имя имя пользователя и пароль верны, то мы войдём в систему.



Войдя в систему, можно прописать там следующие команды:


STAT предоставляет дополнительную информацию.

SYST — показывает тип целевой системы.

PASV — переключает режим на пассивный. Для FTP есть два режима:

  • активный: в активном режиме данные отправляются по отдельному каналу, исходящему из порта TCP-порта 20 FTP-сервера.
  • пассивный: в пассивном режиме данные отправляются по отдельному каналу, исходящему из порта выше 1023 FTP-клиента.

TYPE A переключает режим передачи файлов на ASCII.

TYPE I — переключает режим передачи файлов на двоичный. Однако мы не сможем передать файл с помощью инструмента Telnet, потому что FTP создает отдельное соединение для передачи файла.





СПОСОБ №2 (ЧЕРЕЗ FTP-КЛИЕНТ):

  1. Подключаемся FTP-серверу с помощью команды: ftp IPсервераFTP.
  2. Вводим имя пользователя, например Jimi.
  3. Затем вводим пароль, например 1234.
  4. Если имя имя пользователя и пароль верны, то мы войдём в систему.

Войдя в систему, можно прописать там команды, прописанные сверху (пункт 7.3.4):






Report Page