February 14, 2025

Основы сети. Часть 4. Сетевые протоколы (cетевые службы).

____________________________________________________________________________________

Глава 4. СЕТЕВЫЕ ПРОТОКОЛЫ.

  1. FTP.
  2. SMB (SAMBA).
  3. NFS.
  4. SMTP.
  5. IMAP/POP3.
  6. SNMP.
  7. ORACLE TNS.
  8. IPMI.
  9. SSH.
  10. ПРОТОКОЛЫ УДАЛЁННОГО УПРАВЛЕНИЯ WINDOWS (RDP, WinRM, WMI).

____________________________________________________________________________________

§ 4.1. FTP.

4.1.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.).

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

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

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

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

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

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

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

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

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

I) КОМАНДЫ FTP:

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

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

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

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

sudo apt install vsftpd

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

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

2) ProFTPD

3) uFTP

4.1.6) FTP-КЛИЕНТЫ:

  1. ftp
  2. lftp
  3. ncftp
  4. filezilla
  5. crossftp

4.1.7) НАСТРОЙКИ FTP-СЕРВЕРОВ.

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

Одним из этих механизмов аутентификации в 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).

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

wget -m --no-passive ftp://anonymous:anonymous@IPцелевойСистемы

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

4.1.8) ИСПОЛЬЗОВАНИЕ FTP-СЕРВЕРА.

Запустить FTP-сервер можно с помощью инструмента pyftpdlib. Сначала нужно установить его на нашем компьютере с помощью команды:

sudo apt install python3-pyftpdlib

Далее нужно запустить FTP-сервер из каталога компьютера, где расположен передаваемый файл:

sudo python3 -m pyftpdlib --port 21 или sudo python3 -m pyftpdlib --port 21 --write

Мы запустили FTP-сервер на нашем компьютере. Если запустить FTP-сервер с параметром --write, то это позволит загружать файлы на наш компьютер.

О способах передачи файлов через FTP-сервер читать здесь (§ 1.5).

ПОДКЛЮЧЕНИЕ К FTP-СЕРВЕРУ:

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

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

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

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

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

PASV — переключает режим работы FTP-сервера с активного на пассивный. Чтобы переключить обратно на активный режим нужно ввести эту же команду (PASV).

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

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

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

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

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

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

§ 4.2. SMB (SAMBA).

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

SMB работает по умолчанию через TCP-порты 445, 139 и UDP-порты 137, 138. Через TCP-порт 445 можно напрямую запускать SMB без дополнительного уровня NetBIOS. Однако современные системы Windows по-прежнему поддерживают реализацию NetBIOS в качестве резервного способа запуска SMB.

В системах Windows SMB может работать напрямую через TCP-порт 445 без использования NetBIOS через TCP/IP, но если в Windows включён NetBIOS или мы работаем с хостами Unix/Linux, то SMB будет работать через TCP-порт 139. Это означает, что SMB работает с NetBIOS через протокол TCP/IP.

В основном протокол SMB используется в сетях Windows, чьи сетевые службы поддерживают SMB в режиме понижающей совместимости, то есть устройства с более новыми версиями могут легко взаимодействовать с устройствами, на которых установлена более старые операционные системы Microsoft. Однако, протокол SMB можно использовать и в дистрибутивах Linux и Unix, что позволяет осуществлять кросс-платформенную связь через SMB.

В IP-сетях SMB использует протокол TCP, который обеспечивает трехстороннее рукопожатие между клиентом и сервером перед окончательным установлением соединения. Спецификации протокола TCP также регулируют последующую передачу данных. Можно взглянуть на некоторые примеры здесь.

SMB-сервер может предоставлять произвольные части своей локальной файловой системы в качестве общих ресурсов. Таким образом, иерархия, видимая клиенту, частично не зависит от структуры на сервере.

Права доступа определяются списками контроля доступа (ACL), которыми можно управлять на основе следующих атрибутов:

  • execute (выполнение).
  • read (чтение).
  • full access (полный доступ).

Эти атрибуты можно выставлять для отдельных пользователей или групп пользователей. ACL определяются на общих ресурсов, следовательно не соответствуют правам, назначенным локально на сервере.

4.2.2) SAMBA — это реализация SMB-сервера, разработанная для операционных систем Unix/Linux. SAMBA работает через сетевой протокол CIFS, который является реализацией протокола SMB. Это позволяет серверам Linux/Unix и клиентам Windows использовать одни и те же службы SMB.

CIFS работает исключительно через TCP-порт 445.

Samba подходит как для систем Linux, так и для Windows. В сети каждый хост участвует в одной и той же рабочей группе (workgroup) это название группы, которая определяет произвольный набор компьютеров и их ресурсы в сети SMB. В сети может быть несколько рабочих групп в любой момент времени.

IBM разработал API для сетевых компьютеров под названием NetBIOS, который предоставляет основу для приложений, чтобы подключаться и обмениваться данными с другими компьютерами. В среде NetBIOS, когда компьютер подключается к сети, ему требуется имя, которое задаётся с помощью процедуры регистрации имён. Либо каждый хост резервирует своё имя в сети, либо для этой цели используется сервер имен NetBios (NBNS), который также был расширен до Windows Internet Name Service (WINS).

4.2.3) MSRPC (MICROSOFT REMOTE PROCEDURE CALL)это протокол, тесно связанный с протоколом SMB, который предоставляет разработчику приложений универсальный способ выполнения процедуры (т.н. функции) в локальном или удалённом процессе без необходимости понимания сетевых протоколов, используемых для поддержки связи. В MS-RPCE RPC определяется по протоколу SMB, который может использовать именованные каналы протокола SMB в качестве своего базового транспорта.

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

4.2.4) НАСТРОЙКИ SMB-СЕРВЕРОВ.

Samba предлагает широкий спектр настроек. Локальные настройки Samba находятся по адресу /etc/samba/smb.conf:

cat /etc/samba/smb.conf | grep -v "#\|\;"

В настройках Samba мы видим следующие элементы:

  • глобальные настройки [global] — это конфигурация SMB-сервера, которая используется для всех общих ресурсов. Однако глобальные настройки могут быть перезаписаны в отдельных общих ресурсах, что с высокой вероятностью может привести к неправильным настройкам SMB-сервера.
  • общие ресурсы [printers] и [print$] — это два общих ресурса для принтеров.

КОНФИГУРАЦИЯ ПО УМОЛЧАНИЮ.

  • [общийРесурс] — имя общего сетевого ресурса.
  • workgroup = WORKGROUP/DOMAIN — это рабочая группа, которая будет отображаться при запросе клиентов.
  • path = /каталог/каталог/ — каталог, к которому должен быть предоставлен доступ пользователю.
  • server string = строка — строка, которая будет отображаться при установлении соединения.
  • unix password sync = yes — синхронизировать пароль UNIX с паролем SMB.
  • usershare allow guests = yes — разрешить пользователям, не прошедшим аутентификацию, доступ к определенному общему ресурсу.
  • map to guest = bad user — что делать, когда запрос на вход пользователя не соответствует действительному пользователю Unix.
  • browseable = yes — должен ли этот общий ресурс отображаться в списке доступных общих ресурсов.
  • guest ok = yes — разрешить подключение к службе без использования пароля.
  • read only = yes — разрешить пользователям только чтение файлов.
  • create mask = 0700 — какие разрешения необходимо установить для вновь создаваемых файлов?

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

  • browseable = yes — разрешить отображение списка доступных общих ресурсов в текущем общем ресурсе.
  • read only = no — запретить пользователям создавать и изменять файлы.
  • writable = yes — разрешить пользователям создавать и изменять файлы.
  • guest ok = yes — разрешить подключение к службе без использования пароля.
  • enable privileges = yes — соблюдать привилегии, присвоенные конкретному SID.
  • create mask = 0777 — какие разрешения должны быть назначены недавно созданным файлам?
  • directory mask = 0777 — какие разрешения должны быть назначены недавно созданным каталогам?
  • logon script = script.sh — какой скрипт должен быть выполнен при входе пользователя в систему (в данном случае, это "script.sh").
  • magic script = script.sh — какой скрипт должен быть выполнен при закрытии скрипта (в данном случае, это "script.sh").
  • magic output = script.out — где должны храниться выходные данные волшебного скрипта (в данном случае, это "script.out").

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

После того, как мы настроим файл с настройками Samba [/etc/samba/smb.conf], то нужно перезагрузить SMB-службу:

sudo systemctl restart smbd

4.2.5) ИСПОЛЬЗОВАНИЕ SMB-СЕРВЕРА.

СПОСОБ 1. Запустить SMB-сервер с помощью инструмента smbserver.py:

sudo impacket-smbserver share -smb2support /tmp

Мы запустили SMB-сервер из каталога /tmp. Если нужно что-либо передать через SMB-сервер, то передаваемые файлы должны быть в каталоге /tmp.

О способах передачи файлов через SMB-сервер читать здесь (§ 1.4).

СПОСОБ 2. Запустить SMB-сервер с помощью WebDav (WsgiDAV). Для этого нужно установить два модуля Python: wsgidav и cheroot:

sudo apt install python3-wsgidav

sudo apt install python3-cheroot

Если на нашем компьютере вместо Kali Linux стоит другая система, то установить сервер WebDav нужно с помощью команды: sudo pip3 install wsgidav cheroot.

Далее нужно запустить на нашем компьютере сервер WebDav:

sudo wsgidav --host=0.0.0.0 --port=80 --root=/tmp --auth=anonymous

  • --host=0.0.0.0 —
  • --port=80 — эта команда запускает WebDav-сервер на порту 80. Можно подставить любой другой свободный порт, например 8080. Но в этом случае, при переходе по IP-адресу WebDav-сервера, нужно будет указывать и сам порт (например, http://IPнашегоКомпьютера:8080)
  • --root=/tmp — эта команда запускает WebDav-сервер из каталога /tmp.
  • --auth=anonymous — эта команда разрешает неавторизированный вход на WebDav-сервер.

Мы запустили SMB-сервер из каталога /tmp. Если нужно скачать что-либо из нашего сервера, то нужно перейти по адресу:

http://IPнашегоКомпьютера:80

Мы получили доступ к содержимому SMB-сервера в каталоге /tmp. О способах передачи файлов через SMB-сервер читать здесь (§ 1.4).

СПОСОБ 3. Запустить поддельный SMB-сервер с помощью инструмента Responder:

sudo responder -I нашСетевойИнтерфейс

  • tun0 — это сетевой интерфейс нашего компьютера. Вывести все сетевые интерфейсы нашего компьютера можно с помощью команды "ifconfig".

Мы запустили поддельный SMB-сервер. Все сохраненные хэши будут находится в каталоге журналов Responder (/usr/share/responder/logs/).

Примечание: Если мы заметим несколько хэшей для одной учётной записи, то это связано с тем, что NTLMv2 использует как клиентский, так и серверный запрос, который рандомизируется для каждого взаимодействия. Это приводит к тому, что отправляемые хэши содержат случайную строку чисел. Именно поэтому хэши могут не совпадать, но всё равно представлять один и тот же пароль.

4.2.6) ПОДКЛЮЧЕНИЕ К ОБЩЕМУ РЕСУРСУ SMB ИЗ СИСТЕМЫ WINDOWS:

ЭТАП 1. Нажать на комбинацию клавиш [WIN] + [R], которое откроет диалоговое окно "Выполнить" и там ввести местоположение общего ресурса SMB:

\\IPцелевойСистемы\общийРесурсSMB\

ЭТАП 2. Если общий ресурс SMB разрешает анонимную аутентификацию или у нас есть учётные данные пользователя, который имеет права доступа к этому ресурсу, то мы получим содержимое этого общего ресурса SMB:

Если же у нас нет доступа к общему ресурсу SMB, мы получим запрос на аутентификацию:

КОМАНДЫ ДЛЯ ВЗАИМОДЕЙСТВИЯ С ОБЩИМ РЕСУРСОМ SMB.

Команды CMD:

I) net useподключает общий ресурс к компьютеру Windows или отключает его, а также отображает информацию о подключениях к компьютеру:

net use n: \\IPцелевойСистемы\общийРесурсSMB или net use n: \\IPцелевойСистемы\общийРесурсSMB /user:имяПользователя пароль

Мы подключили общий ресурс "Share" к диску "n" на нашем компьютере Windows. Теперь мы можем выполнять команды на общем ресурсе Share, обращаясь только к диску "n".

II) dir показывает содержимое указанного общего ресурса:

dir \\IPцелевойСистемы\общийРесурсSMB\

Можно использовать команду dir /? для просмотра полной справки.

Например выясним, сколько файлов содержится в общем ресурсе и в его подкаталогах:

dir n: /a-d /s /b | find /c ":\"

  • n: — это имя диска на нашем компьютере Windows, куда был подключён общий ресурс "Share" (см. выше команду "net use").
  • /a-d — параметр /a является атрибутом, параметр -d означает "не каталоги".
  • /s — отображает файлы в указанном каталоге и всех подкаталогах.
  • /b использует простой формат (без заголовка или краткой информации).
  • | find /c ":\\" — обрабатывает выходные данные dir n: /a-d /s /b, чтобы подсчитать, сколько файлов существует в каталоге и подкаталогах.

Поскольку файлов в Windows бывает очень много, то их поиск может занять длительное время, поэтому для ускорения поиска файлов нам могут помочь скрипты и утилиты командной строки:

dir n:\*ключевоеСлово* /s /b

Мы задали ключевое слово "cred" и нашли файл "credentials.txt", который содержит в своём названии это ключевое слово.

III) findstr позволяет найти конкретное слово внутри текстового файла:

findstr /s /i ключевоеСлово n:\*.*

Мы задали ключевое слово "cred" и нашли два файла "secret.txt" и "credentials.txt", в содержании которых есть это ключевое слово.

Команды POWERSHELL:

I) Get-ChildItem — командлет (что делает? это аналог команды dir?)

Get-ChildItem \\IPцелевойСистемы\общийРесурсSMB\

II) New-PSDrive — подключает общий ресурс к компьютеру Windows или отключает его, а также отображает информацию о подключениях к компьютеру:

New-PSDrive -Name "N" -Root "\\IPцелевойСистемы\общийРесурсSMB" -PSProvider "FileSystem"

Мы подключили общий ресурс "Share" к диску "N" на нашем компьютере Windows. Теперь мы можем выполнять команды на общем ресурсе Share, обращаясь только к диску "N".

Чтобы предоставить имя пользователя и пароль с помощью Powershell, нам нужно создать объект PSCredential, который предлагает централизованный способ управления именами пользователей, паролями и учетными данными:

  1. $username = 'имяПользователя'
  2. $password = 'пароль'
  3. $secpassword = ConvertTo-SecureString $password -AsPlainText -Force
  4. $cred = New-Object System.Management.Automation.PSCredential $username, $secpassword
  5. New-PSDrive -Name "N" -Root "\\IPцелевойСистемы\общийРесурсSMB" -PSProvider "FileSystem" -Credential $cred

III) Get-ChildItem или gci показывает содержимое указанного общего ресурса (аналог команды dir):

Get-ChildItem

Мы можем также выяснить, сколько файлов содержится в общем ресурсе и в его подкаталогах (проверить эту команду):

(Get-ChildItem -File -Recurse | Measure-Object).Count

Для поиска конкретного файла можно использовать параметр -Include:

Get-ChildItem -Recurse -Path N:\ -Include *ключевоеСлово* -File

Мы задали ключевое слово "cred" и нашли файл "credentials.txt", который содержит в своём названии это ключевое слово.

Для поиска конкретного слова внутри текстового файла можно использовать командлет Select-String, который использует сопоставление регулярных выражений для поиска текстовых шаблонов во входных строках и файлах:

Get-ChildItem -Recurse -Path N:\ | Select-String "ключевоеСлово" -List

Мы задали ключевое слово "cred" и нашли два файла "secret.txt" и "credentials.txt", в содержании которых есть это ключевое слово.

4.2.7) ПОДКЛЮЧЕНИЕ К ОБЩЕМУ РЕСУРСУ SMB ИЗ СИСТЕМЫ LINUX.

СПОСОБ 1. Использовать SMB-клиент для подключения к общему ресурсу SMB:

smbclient //IPцелевойСистемы/общийРесурс -U имяПользователя

СПОСОБ 2 [НЕ УДАЛОСЬ ПОДКЛЮЧИТЬСЯ К ОБЩЕМУ РЕСУРСУ SMB, ТО ЛИ ОШИБКА В КОМАНДЕ, ТО ЛИ ХЗ В ЧЁМ].

ЭТАП 1. Примонтировать целевой общий ресурс SMB к нашему компьютеру. Для этого нужно сначала создать папку на нашем компьютере (например, localShare):

sudo mkdir /mnt/localShare

ЭТАП 2. Примонтировать целевой общий ресурс SMB в созданную папку на нашем компьютере:

sudo mount -t cifs -o username=имяПользователя,password=пароль,domain=. //IPцелевойСистемы/общийРесурсSMB /mnt/localShare

Мы примонтировали целевой общий ресурс "Share" в папку нашего компьютера "localShare".

Чтобы не вводить учётные данные напрямую, можно создать файл с учётными данными, а затем примонтировать целевой общий ресурс SMB к нашему компьютеру. Создадим файл с учётными данными (credentials.txt):

  1. username=admin
  2. password=12345
  3. domain=.

Сохраним этот файл где-нибудь на нашем компьютере (например, в /home/user):

А затем примонтируем целевой общий ресурс SMB в созданную папку на нашем компьютере:

mount -t cifs //IPцелевойСистемы/общийРесурсSMB /mnt/localShare -o credentials=/home/user/credentials.txt

Мы примонтировали целевой общий ресурс "Share" в папку нашего компьютера "localShare". Инструмент cifs можно установить с помощью команды: sudo apt install cifs-utils.

КОМАНДЫ ДЛЯ ВЗАИМОДЕЙСТВИЯ С ОБЩИМ РЕСУРСОМ SMB:

I) find или grep — это команды для поиска в файловой структуре. Например, мы можем найти файлы, которые содержат в своём названии ключевое слово "cred":

find /mnt/localShare/ -name cred

Мы также можем найти файлы, внутри которых есть это ключевое слово "cred":

grep -rn /mnt/localShare/ -ie cred

4.2.8) SMB-КЛИЕНТЫ:

§ 4.3. NFS.

4.3.1) NFS (NETWORK FILE SYSTEM) — это протокол сетевого доступа к файловым системам. NFS является интернет-стандартом, который управляет процессами в распределенной файловой системе (DFS).

NFS используется между системами Linux и Unix, а значит клиенты NFS не могут напрямую общаться с SMB-серверами.

NFS основан на протоколе ONC-RPC/SUN-RPC, который использует стандарт XDR для обмена данных независимого от системы. Протокол NFS не имеет механизма аутентификации или авторизации. Вместо этого, аутентификация полностью переложена на параметры протокола RPC, а авторизация производится на основе доступной информации о файловой системы. В этом процессе сервер отвечает за перевод пользовательской информации клиента в формат файловой системы и преобразование соответствующих данных авторизации в требуемый синтаксис Unix.

Наиболее распространенный метод аутентификации в NFS через UNIX UID/GID и членство в группах. Одна из проблем этого метода аутентификации в том, что клиент и сервер не обязательно должны иметь одинаковые сопоставления UID/GID для пользователей и групп, и серверу не нужно ничего делать дополнительно. Сервер не может выполнять никаких дополнительных проверок. По этой причине NFS следует использовать с этим методом аутентификации только в доверенных сетях.

ВЕРСИИ ПРОТОКОЛА NFS:

1) NFSv2 — поддерживается многими системами и изначально работал полностью через UDP.

2) NFSv3 — обладает большим количеством функций, включая изменение размера файла и улучшенные отчеты об ошибках, но NFSv3не полностью совместим с клиентами NFSV2.

3) NFSv4 (NFS 4.1) это самая новая версия протокола NFS, направленный на обеспечение поддержки при развертывании кластерных серверов, включая возможность обеспечения масштабируемого параллельного доступа к файлам, распределенным по нескольким серверам (pNFS). Кроме того, NFSv4 включает в себя механизм транкинга сессии (NFS multipathing).

NFSv4 включает в себя Kerberos, работает через брандмауэры и Интернет, больше не требует сопоставления портов, поддерживает ACLs, применяет операции на основе состояний, обеспечивает повышение производительности и высокий уровень безопасности. В NFSv4 реализован протокол с отслеживанием состояния (stateful protocol).

NFSv4 работает по умолчанию через UDP/ TCP-порт 2049.

4.3.2) НАСТРОЙКИ NFS-СЕРВЕРОВ. КОНФИГУРАЦИИ ПО УМОЛЧАНИЮ:

Настройки NFS прописаны в таблице экспорта NFS. Локальные настройки NFS находятся по адресу /etc/exports:

По умолчанию файл /etc/exports также содержит некоторые примеры настроек общих ресурсов NFS.

В настройках сначала указывается папка и она становится доступной для других пользователей (становится общим ресурсом NFS), а затем к хосту или подсети добавляются права, которые пользователи будут иметь на общем ресурсе NFS. Затем к хостам или подсетям могут быть добавлены следующие параметры:

  • rw разрешения на чтение и запись.
  • ro разрешения только на чтение.
  • sync синхронная передача данных (немного медленнее).
  • async асинхронная передача данных (немного быстрее)
  • secure — порты выше 1024 не будут использоваться.
  • insecure порты выше 1024 будут использоваться.
  • no_subtree_check отключает проверку деревьев подкаталогов.
  • root_squash — назначает все разрешения для файлов пользователя root с UID/GID 0 на UID/GID пользователя anonymous, что предотвращает root-доступ к файлам при монтировании NFS.

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

  • rw — разрешения на чтение и запись.
  • insecure — порты выше 1024 будут использоваться.
  • nohide — если под экспортируемым каталогом была смонтирована другая файловая система, этот каталог экспортируется с помощью собственной записи exports.
  • no_root_squash — все файлы, созданные пользователем root, хранятся с UID/GID 0.

§ 4.4. SMTP.

4.4.1) SMTP (SIMPLE MAIL TRANSFER PROTOCOL) — это сетевой протокол для передачи электронной почты по IP-сети. SMTP используется для доставки почты между почтовым клиентом и SMTP-сервером или между двумя SMTP-серверами. SMTP часто используется с протоколами IMAP или POP3, которые позволяют получать и отправлять электронные письма.

SMTP работает через два порта:

  • TCP-порт 25. Через него передаётся почта между SMTP-серверами. Поскольку протокол SMTP использует незашифрованное соединение и передает все данные в виде обычного текста, то для зашифрованного соединения используется TCP-порт 465. Номер порта также могут изменить, чтобы обойти ограничения провайдеров. Некоторые компании блокируют порт 25, чтобы избежать потоков спама.
  • TCP-порт 587. Через него передаётся почта от почтового клиента на SMTP-сервер. Этот порт получает почту от аутентифицированных пользователей/серверов, и затем с помощью команды STARTTLS переключает существующее открытое соединение на зашифрованное соединение. Данные аутентификации становятся защищёнными и больше не доступны в открытом виде по сети. В начале соединения происходит аутентификация, где клиент подтверждает свою личность с помощью имени пользователя и пароля. Затем электронные письма могут быть отправлены. Для этой цели клиент отправляет адреса отправителя сервера и получателя, содержимое электронной почты, а также другую информацию и параметры.

Терминология:

  • Почтовый сервер — это сервер, который обрабатывает и доставляет электронную почту по сети, обычно через Интернет. Почтовый сервер может получать электронные письма с клиентского устройства и отправлять их на другие почтовые серверы. Почтовый сервер также может доставлять электронные письма на клиентское устройство.
  • Почтовый клиент — это устройство, на котором пользователь читает свою электронную почту (компьютеры, смартфоны и т.д.). Когда пользователь отправляет сообщение в своём почтовом клиенте, то клиент устанавливает соединение с SMTP-сервером в сети или в Интернете.

Более подробно об SMTP можно прочитать в следующих источниках:

4.4.2) КАК РАБОТАЕТ SMTP:

  • MUA (MAIL USER AGENT) — почтовый агент пользователя.
  • MSA (MAIL SUBMISSION AGENT) агент отправки почты. Он также называется сервером ретрансляции. Из-за неправильной настройки этого агента возможны ретрансляционные атаки на SMTP-сервер.
  • MTA (MAIL TRANSFER AGENT) — агент передачи почты.
  • MDA (MAIL DELIVERY AGENT) — агент доставки почты.

ЭТАП 1. Сначала происходит аутентификация, когда клиент подтверждает свою личность с помощью имени пользователя и пароля. Затем пользователь отправляет электронное письмо: адреса отправителя и получателя, содержимое электронной почты, а также другую информацию и параметры.

После отправки пользователем электронного письма, MUA преобразует письмо в заголовок и текстовую часть и загружает их на SMTP-сервер.

ЭТАП 2. На SMTP-сервере используется MSA, который проверяет достоверность электронного письма (его источник). Далее на SMTP-сервере используется MTA, который проверяет электронное письмо по размеру и спаму, и сохраняет его.

ЭТАП 3. SMTP-сервер на стороне отправителя устанавливает соединение с SMTP-сервером на стороне получателя и отправляет электронное письмо. Если доступ к SMTP-серверу на стороне получателя невозможен или недоступен, то электронное письмо помещается в очередь SMTP.

ЭТАП 4. На SMTP-сервере используется MTA, который собирает обратно пакеты данных в единое электронное письмо. Затем MDA отправляет письмо в почтовый ящик получателя.

ЭТАП 5. MDA отправляет письмо в почтовый ящик получателя (POP/IMAP).

4.4.3) НЕДОСТАТКИ SMTP:

  1. Отправка электронного письма через SMTP не возвращает подтверждение о доставке. Хотя спецификации SMTP предусматривают этот тип уведомления, однако его форматирование не задано по умолчанию, поэтому обычно возвращается только сообщение об ошибке на английском языке, включая заголовок не доставленного сообщения.
  2. Пользователи не проходят аутентификацию при установке соединения, и поэтому отправитель электронной почты ненадёжен. В результате открытые SMTP-ретрансляторы часто используются не по назначению для массовой рассылки спама. Спамеры используют произвольные поддельные адреса отправителей, чтобы их нельзя было отследить (спуфинг почты). Для предотвращения неправомерного использования SMTP-серверов используются различные методы защиты. Например, подозрительные электронные письма отклоняются или перемещаются в карантин (папку для спама). За это отвечают протокол идентификации DomainKeys (DKIM) и Sender Policy Framework (SPF).

Важной функцией SMTP-сервера является защита от спама с использованием механизмов аутентификации, которые позволяют отправлять электронные письма только авторизованным пользователям. Для этого большинство современных SMTP-серверов поддерживают расширение протокола ESMTP (Extended SMTP) с поддержкой SMTP-Auth.

ESMTP использует протокол TLS, который выполняется после команды EHLO путем отправки STARTTLS. Это создаёт SMTP-соединение защищенное по протоколу SSL, и с этого момента все соединение зашифровано и более или менее безопасно. Теперь можно безопасно использовать Auth Plain для аутентификации.

4.4.4) НАСТРОЙКИ SMTP-СЕРВЕРОВ.

SMTP-СЕРВЕР — это почтовый сервер на базе протокола SMTP, который отвечает только за отправку и пересылку электронных писем. Есть много SMTP-серверов, но для нашей работы мы будем использовать SMTP-сервер Postfix:

sudo apt install postfix

Как настроить SMTP-сервер Postfix можно почитать здесь.

I) ПОДКЛЮЧЕНИЕ К SMTP-СЕРВЕРУ:

  1. Поскольку SMTP-сервер использует порт 25, то подключаемся к порту 25 с помощью команды telnet IP_системы 25.
  2. Вводим команду helo имяХоста,например helo telnet.
  3. Вводим команду mail from:имяПочты,чтобы указать почту отправителя, например mail from:gimi@mail.com.
  4. Вводим команду rcpt to:имяПочты,чтобы указать почту получателя, например rcpt to:bimi@mail.com.
  5. Вводим команду data,чтобы написать сообщение.
  6. Нажимаем два раза кнопку «Enter», чтобы SMTP-сервер поставил сообщение в очередь для отправки.
  7. Чтобы выйти из подключения, нужно ввести команду quit.

II) КОНФИГУРАЦИИ ПО УМОЛЧАНИЮ. Настройки SMTP-сервера Postfix находятся по адресу /etc/postfix/main.cf:

cat /etc/postfix/main.cf | grep -v "#" | sed -r "/^\s*$/d"

III) КОМАНДЫ SMTP-СЕРВЕРА. Отправка и обмен сообщениями осуществляются через следующие команды:

  • VRFY — эта команда указывает SMTP-серверу проверить действительность имени пользователя электронной почты. Сервер ответит, существует пользователь или нет. Эта команда может использоваться для перечисления существующих пользователей в системе. Но это не всегда может сработать, и SMTP-сервер может выдать код 252, подтвердив существование пользователя, которого в системе нет. Данную команду можно отключить.

VRFY имяПользователя

  • EXPN эта команда показывает фактический адрес псевдонимов пользователя электронной почты и списки электронной почты (списки рассылки). С помощью данной команд можно проверить, доступен ли почтовый ящик для обмена сообщениями.

EXPN имяПользователя

  • RCPT TO — эта команда указывает имя получателя сообщения электронной почты. Эту команду можно повторить несколько раз для одного сообщения, чтобы доставить его нескольким получателям.

RCPT TO:имяПользователя

  • HELO или EHLO — клиент входит в систему под именем своего компьютера и, таким образом, запускает сеанс. Фактическое создание сеанса выполняется с помощью этих команд:

  • AUTH PLAIN — команда для аутентификации клиента.
  • MAIL FROM — клиент указывает имя отправителя электронного почты.
  • DATA — клиент инициирует передачу электронной почты.
  • RSET — клиент прерывает инициированную передачу, но сохраняет соединение между клиентом и сервером.
  • NOOP — клиент запрашивает ответ от сервера, чтобы предотвратить отключение из-за тайм-аута.
  • QUIT — клиент завершает сеанс.

IV) КОДЫ ОТВЕТОВ SMTP-СЕРВЕРА. Список всех кодов ответов можно найти здесь.

V) ВЗАИМОДЕЙСТВИЕ С SMTP-СЕРВЕРОМ. Для работы с SMTP-сервером можно использовать почтовые клиенты SMTP или инструмент Telnet (я не знаю как провести аутентификацию на SMTP-сервере через Telnet).

Если мы работаем через веб-прокси, то можно подключить этот веб-прокси к SMTP-серверу с помощью команды: CONNECT 10.129.14.128:25 HTTP/1.0 (?это точно?)

Все команды, которые мы вводим в командную строку для отправки электронного письма, похожи на команды из таких почтовых клиентов, как Thunderbird, Gmail, Outlook и многих других. Там мы указываем субъект (subject), кому должно быть отправлено электронное письмо, CC, BCC и информацию, которой мы хотим поделиться с другими. То же самое работает и для командной строки.

Пример отправки электронного письма:

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

Некоторая часть этой информации является обязательной, такая как информация об отправителе и дате создания электронного письма. Другая информация необязательна. Однако заголовок электронной почты не содержит никакой информации, необходимой для технической доставки. Он передается как часть протокола передачи. Как отправитель, так и получатель могут получить доступ к заголовку электронного письма, хотя на первый взгляд это не видно. Структура заголовка электронной почты определяется RFC 5322.

VI) ОПАСНЫЕ НАСТРОЙКИ.

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

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

С помощью настройки ниже SMTP-сервер может отправлять поддельные электронные письма и, таким образом, создавать соединение между несколькими сторонами:

Другой возможностью атаки может быть подделка электронного письма и его чтение.

4.4.5) ПОЧТОВЫЕ КЛИЕНТЫ SMTP.

1) Evolution это почтовый клиент для взаимодействия с почтовым сервером (отправка и получение сообщений). Установить Evolution можно с помощью команды:

sudo apt-get install evolution

Если при запуске Evolution появляется ошибка "bwrap: не удается создать файл...", то нужно использовать команду: export WEBKIT_FORCE_SANDBOX=0 && evolution

Для подключения к почтовому серверу можно использовать его доменное имя или IP-адрес. Если почтовый сервер использует защищенные протоколы SMTPS или IMAPS, нам потребуется соответствующий метод шифрования (TLS на выделенном порту или STARTTLS после подключения).

Чтобы подтвердить, поддерживает ли почтовый сервер конкретный метод шифрования, можно использовать опцию "Check for Supported Types" в разделе "Аутентификация".

2) Thunderbird

3) Claws

4) Geary

5) MailSpring

6) mutt

7) mailutils

8) sendEmail

9) swaks

10) sendmail

§ 4.5. IMAP/POP3.

4.5.1) IMAP (INTERNET MESSAGE ACCESS PROTOCOL)это сетевой протокол для доступа и управления электронными сообщениями, которые хранятся на сервере электронной почты.

IMAP по умолчанию использует TCP-порт 143 для незашифрованных соединений или TCP-порт 993 для зашифрованных соединений.

По умолчанию IMAP работает в незашифрованном виде и передает команды, электронные письма или имена пользователей и пароли в виде обычного текста. Многие почтовые серверы требуют установления зашифрованного сеанса IMAP для обеспечения большей безопасности почтового трафика и предотвращения несанкционированного доступа к почтовым ящикам. Для этой цели обычно используется протокол SSL/TLS.

Если IMAP при передаче использует незашифрованный открытый текст, то можно использовать инструмент Telnet для подключения к серверу IMAP и действовать как "почтовый агент MUA", который отправляет сообщение.

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

Ещё одним преимуществом IMAP является создание личных папок и структур папок в почтовом ящике. Эта функция делает почтовый ящик более понятным и простым в управлении. Однако при этом увеличиваются требования к пространству для хранения на почтовом сервере увеличиваются.

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

Для общения с почтовым сервером клиент использует текстовые команды в формате ASCII. Несколько команд могут быть отправлены последовательно, не дожидаясь подтверждения от сервера. Последующие подтверждения с сервера могут быть назначены отдельным командам с использованием идентификаторов, отправленных вместе с командами. Сразу после установления соединения пользователь проходит аутентификацию на сервере с помощью имени пользователя и пароля. Доступ к нужному почтовому ящику возможен только после успешной аутентификации.

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

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

КОМАНДЫ IMAP:

IMAP требует, чтобы перед каждой командой предшествовал случайный символ для отслеживания ответа. Можно писать любые строки перед основными командами (например, мы добавили цифру 1 перед командами):

  • 1 LOGIN имяПользователя пароль — логин пользователя.
  • 1 LIST "" * — перечисляет список всех почтовых папок.
  • 1 EXAMINE имяЯщика проверяет новые сообщения в папке "Входящие".
  • 1 CREATE "имяЯщика" создать почтовый ящик с указанным именем.
  • 1 DELETE "имяЯщика" — удалить почтовый ящик.
  • 1 RENAME "ToRead" "Important" — переименовывать почтовый ящик.
  • 1 LSUB "" * — возвращает подмножество имён из набора имён, которые пользователь объявил активными (active) или на которые он подписан (subscribed).
  • 1 SELECT имяЯщика — выбирает почтовый ящик, чтобы можно было получить доступ к сообщениям в нём.
  • 1 UNSELECT имяЯщика выход из выбранного почтового ящика.
  • 1 FETCH <ID> all извлекает данные, связанные с сообщением в почтовом ящике.
  • 1 CLOSE удаляет все сообщения с установленным флагом "Deleted".
  • 1 LOGOUT закрывает соединение с сервером IMAP.

Больше команд IMAP смотреть здесь.

ПОДКЛЮЧЕНИЕ К ПОЧТОВОМУ СЕРВЕРУ ЧЕРЕЗ IMAP:

  1. Поскольку сервер IMAP использует порт 143, то подключаемся к почтовому серверу через порт 143 с помощью команды telnet IP_системы 143.
  2. Вводим для аутентификации имя пользователя и пароль с помощью команды LOGIN имяПользователя пароль (например LOGIN USER Gimi 1234).

Войдя в систему, можно вводить там команды IMAP:

4.5.2) POP3 (POST OFFICE PROTOCOL)это сетевой протокол для получения сообщений с сервера электронной почты. POP3 не имеет той же функциональности, что и IMAP, он обеспечивает только перечисление, извлечение и удаление электронных писем на почтовом сервере.

POP3 по умолчанию использует TCP-порт 110 для незашифрованных соединений или TCP-порт 995 для зашифрованных соединений.

Если POP3 при передаче использует незашифрованный открытый текст, то можно использовать инструмент Telnet для подключения к POP3-серверу и действовать как "почтовый агент MUA", который отправляет сообщение.

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

По умолчанию, клиенты POP3 удаляют загруженные сообщения с почтового сервера. Это затрудняет доступ к электронной почте с нескольких устройств, поскольку загруженные сообщения хранятся на локальном компьютере. Однако обычно мы можем настроить клиент POP3, чтобы он сохранял копии загруженных сообщений на сервере POP3.

КОМАНДЫ POP3:

  • USER имяПользователя — идентифицирует пользователя.
  • PASS пароль — аутентификация пользователя с помощью его пароля.
  • STAT — запрашивает у сервера количество сохраненных электронных писем. Положительный ответ имеет формат +OK nn mm, где nn это количество сообщений электронной почты в папке "Входящие", а mm — размер папки "Входящие" в байтах.
  • LIST — запрашивает у сервера количество и размер всех электронных писем.
  • RETR id — запрашивает у сервера доставку запрошенного электронного письма по идентификатору.
  • RETR 1 для получения первого сообщения в списке «Входящих» сообщений.
  • DELE id — запрашивает у сервера удаление запрошенного электронного письма по идентификатору.
  • CAPA — запрашивает у сервера отображение возможностей сервера.
  • RSET — запрашивает у сервера сброс переданной информации.
  • QUIT — закрывает соединение с сервером POP3.

ПОДКЛЮЧЕНИЕ К ПОЧТОВОМУ СЕРВЕРУ ЧЕРЕЗ POP3:

  1. Поскольку POP3 использует порт 110, то подключаемся к почтовому серверу через порт 110 с помощью команды telnet IPцелевойСистемы 110.
  2. Вводим имя пользователя с помощью команды USER имяПользователя (например USER Gimi).
  3. Вводим пароль с помощью команды PASS пароль (например PASS 1234).

Войдя в систему, можно вводить там команды POP3:

4.5.3) НАСТРОЙКИ ПОЧТОВЫХ СЕРВЕРОВ ДЛЯ IMAP/POP3.

Можно установить почтовый сервер Dovecot, который поддерживает протоколы IMAP/POP3 с помощью следующих команд:

sudo apt install dovecot-imapd

sudo apt install dovecot-pop3d

В документации Dovecot мы можем найти индивидуальные настройки ядра и параметры конфигурации сервиса. С почтовым сервером Dovecot можно взаимодействовать с помощью команд IMAP/POP3 через командную строку.

ОПАСНЫЕ НАСТРОЙКИ.

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

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

  • auth_debug — включает ведение журнала отладки для аутентификации.
  • auth_debug_passwords — регулирует детализацию журнала, отправленные пароли и схему регистрации.
  • auth_verbose — регистрирует неудачные попытки аутентификации и их причины.
  • auth_verbose_passwords — пароли, используемые для аутентификации, регистрируются и также могут быть сокращены.
  • auth_anonymous_username — указывает имя пользователя, которое будет использоваться при входе в систему с использованием механизма ANONYMOUS SASL.

4.5.4) ПОЧТОВЫЕ КЛИЕНТЫ IMAP/POP. Почтовые клиенты протоколов IMAP/POP точно те же, что и для протокола SMTP (п. 4.4.5)

§ 4.6. SNMP.

4.6.1) SNMP (SIMPLE NETWORK MANAGEMENT PROTOCOL)это сетевой протокол для мониторинга и управления сетевыми устройствами. Текущей версией протокола является SNMPv3.

К устройствам с поддержкой SNMP относятся маршрутизаторы, коммутаторы, серверы, устройства IoT и многие другие устройства, к которым также можно обратится с запросами и управлять ими с помощью протокола SNMP.

Кроме того, SNMP может использоваться и для обработки задач конфигурации и удалённого изменения настроек.

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

В то время как при простом обмене информацией клиент всегда активно запрашивает информацию с SNMP-сервера, протокол SNMP также позволяет использовать через UDP-порт 162 SNMP-ловушки (traps) — это пакеты данных, которые отправляются с SNMP-сервера клиенту без явного запроса клиента. SNMP-ловушка отправляется клиенту, как только на стороне сервера происходит определенное событие.

Чтобы клиент и SNMP-сервер могли обмениваться соответствующими значениями, доступные SNMP-объекты (что это?) должны иметь уникальные адреса, известные обеим сторонам. Этот механизм адресации является абсолютной предпосылкой для успешной передачи данных и мониторинга сети с использованием SNMP.

4.6.2) MIB — это база данных, которая хранит информацию об устройствах, управляемых через SNMP. Простыми словами MIB представляет собой текстовый файл, в котором все запрашиваемые SNMP-объекты устройства перечислены в виде стандартизированной древовидной иерархии.

MIB был создан для того, чтобы доступ к SNMP работал у разных производителей и с различными комбинациями клиент-сервер.

MIB содержит по крайней мере один идентификатор объекта (OID), который, помимо необходимого уникального адреса и имени, также предоставляет информацию о типе, правах доступа и описании соответствующего объекта. MIB-файлы записываются в текстовом формате ASCII на основе абстрактной синтаксической нотации (ASN.1). MIB-файлы не содержат данных, но они объясняют, где найти ту или иную информацию и как она выглядит, какие значения возвращают для конкретного OID или какой тип данных используется.

4.6.3) OID (OBJECT ID) — это уникальные числовые значения, присвоенные различными органами выдачи для уникальной идентификации элементов данных, синтаксисов и других частей распределенных приложений.

OID представляет узел в иерархическом пространстве имен. Последовательность чисел однозначно идентифицирует каждый узел, позволяя определить положение узла в дереве. Чем длиннее цепочка, тем конкретнее информация. Многие узлы в дереве OID не содержат ничего, кроме ссылок на те, что находятся ниже. OID состоят из целых чисел и обычно объединяются точечной нотацией. Мы можем найти множество MIB для соответствующих OID в Object Identifier Registry.

4.6.4) ВЕРСИИ SNMP:

  • SNMPv1 — используется для управления и мониторинга сети. Это первая версия протокола SNMP, которая до сих пор используется во многих небольших сетях. SNMPv1 поддерживает извлечение информации из сетевых устройств, позволяет настраивать устройства и предоставляет SNMP-ловушки, которые представляют собой уведомления о событиях. Однако SNMPv1 не имеет встроенного механизма аутентификации, а значит любой, кто получает доступ к сети, может читать и изменять сетевые данные. Другим главным недостатком SNMPv1 является то, что он не поддерживает шифрование, а значит все данные отправляются в виде обычного текста и могут быть легко перехвачены.
  • SNMPv2с — это улучшенная версия SNMPv2 с поддержкой community strings (SNMPv2 почти нигде не используется, он очень сложный как структура и поэтому был урезан на SNMPv2c). В плане безопасности SNMPv2с находится на одном уровне с SNMPv1 и был расширен дополнительными функциями из party-based SNMP, который больше не используется. Однако существенная проблема, связанная с первоначальным выполнением протокола SNMP, заключается в том, что community strings, обеспечивающая безопасность, передается только в виде обычного текста, что означает отсутствие встроенного шифрования.
  • SNMPv3 — это самая безопасная версия с шифрованием и аутентификацией. Безопасность была значительно усилена благодаря аутентификация с использованием имени пользователя и пароля и шифрованию передаваемых данных (с помощью предварительно предоставленного ключа). Единственная проблема SNMPv3 заключается в том, что её очень сложно настраивать.

COMMUNITY STRINGS (СТРОКИ СООБЩЕСТВА) их можно рассматривать как пароли, которые используются для определения того, можно ли просматривать запрашиваемую информацию или нет. Поскольку многие организации всё ещё используют SNMPv2, ибо переход на SNMPv3 может быть очень сложным, то службы всё равно должны оставаться активными. Это вызывает у многих администраторов большое беспокойство и создаёт некоторые проблемы, которых они стремятся избежать. Отсутствие у администраторов знаний о том, как злоумышленники могут получить и использовать информацию, делает подход администраторов необъяснимым. В то же время, отсутствие шифрования отправляемых данных также является проблемой. Поскольку каждый раз, когда community strings отправляются по сети, их можно перехватить и прочитать.

4.6.5) НАСТРОЙКИ SNMP-СЕРВЕРОВ.

КОНФИГУРАЦИЯ ПО УМОЛЧАНИЮ:

Основные настройки службы SNMP, включая IP-адреса, порты, MIB, OID, аутентификацию и строки сообщества определяет конфигурация SNMP-демона по умолчанию.

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

Файл конфигурации SNMP-демона находится в /etc/snmp/snmpd.conf:

cat /etc/snmp/snmpd.conf | grep -v "#" | sed -r '/^\s*$/d'

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


ОПАСНЫЕ НАСТРОЙКИ.

  • rwuser noauth — предоставляет доступ к полному дереву OID без аутентификации.
  • rwcommunity <community string> <IPv4 address> — предоставляет доступ к полному дереву OID независимо от того, откуда были отправлены запросы.
  • rwcommunity6 <community string> <IPv6 address> — предоставляет тот же доступ, что у выше команды, но с той разницей, что используется IPv6.

§ 4.7. ORACLE TNS.

4.7.1) ORACLE TNS (ORACLE TRANSPARENT NETWORK SUBSTRATE) — это протокол связи, который облегчает взаимодействие по сетям между базами данных Oracle и приложениями. ORACLE TNS является частью программного пакета Oracle Net Services.

OTNS поддерживает различные сетевые протоколы, работающие между базами данных Oracle и клиентскими приложениями, такие как IPX/SPX и TCP/IP. Поэтому OTNS используется для управления большими сложными базами данных в здравоохранении, финансах и розничной торговле.

OTNS поддерживает новые технологии, включая IPv6 и SSL/TLS шифрование, что делает его более подходящим для таких целей, как разрешение доменных имён, управление подключением, балансировка нагрузки, безопасность.

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

Кроме того, OTNS предоставляет расширенные инструменты и возможности для администраторов БД и разработчиков: комплексные инструменты мониторинга и анализа производительности, возможности получать отчёты об ошибках и ведения журналов регистрации, возможность управления рабочей нагрузкой, а также иметь отказоустойчивость с помощью служб баз данных.

Это всё делает OTNS идеальным решением для корпоративных сред, в которых безопасность данных имеет первостепенное значение.

OTNS часто используется с другими службами Oracle, такими как Oracle DBSNMP, Oracle Databases, Oracle Application Server, Oracle Enterprise Manager, Oracle Fusion Middleware, веб-серверами и многими другими.

OTNS может управляться удалённо в Oracle 8i/ 9i, но не в Oracle 10g/11g.

4.7.2) НАСТРОЙКИ OTNS-СЕРВЕРА.

КОНФИГУРАЦИЯ ПО УМОЛЧАНИЮ. Конфигурация по умолчанию OTNS-сервера зависит от версии и выпуска установленного ПО Oracle. Но некоторые общие параметры обычно настроены по умолчанию в Oracle TNS.

Файлы конфигурации содержат информацию о настройках базы данных Oracle и других сетевых служб, использующих протокол TNS.

Прослушиватель OTNS-сервера по умолчанию работает через TCP-порт 1521. Прослушиватель настроен на поддержку различных сетевых протоколов, включая TCP/IP, UDP, IPX/SPX и AppleTalk. Прослушиватель также может поддерживать несколько сетевых интерфейсов и прослушивать определенные IP-адреса или все доступные сетевые интерфейсы.

Конфигурация прослушивателя OTNS-сервера включает несколько базовых функций безопасности. Например, прослушиватель принимает подключения только от авторизованных хостов и выполняет базовую аутентификацию, используя комбинацию имён хостов, IP-адресов, имён пользователей и паролей. Кроме того, прослушиватель использует для шифрования связи между клиентом и сервером Oracle Net Services.

Файлы конфигурации расположены в каталоге $ORACLE_HOME/network/admin и состоят из файлов tnsnames.ora и listener.ora.

а) В файле tnsnames.ora содержатся уникальные записи о каждой базе данных или службе, состоящие из необходимой информации для клиентов, чтобы подключиться к службе. Запись состоит из имени службы, сетевого расположения службы и имени базы данных или службы, которые клиенты должны использовать при подключении к службе. Например, простой файл tnsnames.ora может выглядеть следующим образом:

Мы видим службу под названием "ORCL", который прослушивает TCP-порт 1521 по IP-адресу 10.129.11.102. Клиенты должны использовать имя службы "orcl" при подключении к этой службе.

Файл tnsnames.ora может содержать много таких записей для разных баз данных и служб. Записи также могут включать дополнительную информацию, такую ​​как данные аутентификации, настройки пула подключений и конфигурации балансировки нагрузки.

б) Файл listener.ora стоит на стороне сервера и определяет свойства и параметры процесса прослушивателя, который отвечает за приём входящих клиентских запросов и пересылку их в соответствующую базу данных Oracle.

В итоге, клиентское программное обеспечение Oracle Net Services использует файл "tnsnames.ora" для преобразования имён служб в сетевые адреса, в то время как процесс прослушивания использует файл "listener.ora" для определения служб, которые он должен прослушивать, и поведения прослушивателя.

SID (SYSTEM IDENTIFIER). Это уникальное имя в Oracle RDBMS (СУБД), который идентифицирует конкретную базу данных. Когда клиент хочет подключится к конкретной базе данных Oracle, он указывает SID базы данных вместе со строкой подключения.

Если клиент не укажет SID, тогда будет использоваться значение по умолчанию, определенное в файле tnsnames.ora.

SID-ы являются неотъемлемой частью процесса подключения, поскольку они идентифицируют конкретную базу данных, к которому клиент хочет подключиться. Если клиент укажет неверный SID, то подключение завершится неудачей.

Администраторы баз данных могут использовать SID для мониторинга и управления отдельными базами данных. Например, они могут запускать, останавливать или перезапускать БД, изменять распределение его памяти или другие параметры конфигурации, а также отслеживать его производительность с помощью таких инструментов, как Oracle Enterprise Manager.

НАСТРОЙКИ OTNS:

  • DESCRIPTION — дескриптор, который указывает имя базы данных и тип подключения к ней.
  • ADDRESS — сетевой адрес базы данных, который включает в себя имя хоста и номер порта.
  • PROTOCOL — сетевой протокол, используемый для связи с сервером.
  • PORT — номер порта, используемый для связи с сервером.
  • CONNECT_DATA — определяет атрибуты соединения, такие как имя службы или SID, протокол и идентификатор базы данных.
  • INSTANCE_NAME — имя базы данных, к которому клиент хочет подключиться.
  • SERVICE_NAME — имя службы, к которому клиент хочет подключиться.
  • SERVER — тип сервера, используемого для подключения к базе данных (например выделенный или общий сервер).
  • USER — имя пользователя, используемое для аутентификации на сервере базы данных.
  • PASSWORD — пароль, используемый для аутентификации на сервере базы данных.
  • SECURITY — тип безопасности соединения.
  • VALIDATE_CERT — определяет, следует ли проверять сертификат с помощью SSL/TLS.
  • SSL_VERSION — версия SSL/TLS, используемая для соединения.
  • CONNECT_TIMEOUT — время в секундах, необходимое клиенту для установления соединения с базой данных.
  • RECEIVE_TIMEOUT — время в секундах, необходимое клиенту для получения ответа от базы данных.
  • SEND_TIMEOUT — время в секундах, необходимое клиенту для отправки запроса в базу данных.
  • SQLNET.EXPIRE_TIME — время в секундах, необходимое клиенту для обнаружения соединения.
  • TRACE_LEVEL — уровень отслеживания (трассировки) соединения с базой данных.
  • TRACE_DIRECTORY — каталог, в котором хранятся файлы отслеживания (трассировки).
  • TRACE_FILE_NAME — имя файла трассировки.
  • LOG_FILE — файл, в котором хранится информация журнала.

4.7.3) ЗАЩИТА БАЗЫ ДАННЫХ ORACLE.

Список исключений PL/SQL (PlsqlExclusionList) это созданный пользователем текстовый файл, содержащий имена пакетов PL/SQL или типов, которые должны быть исключены из выполнения. Этот текстовый файл нужно поместить в каталог $ORACLE_HOME/sqldeveloper.

После создания этого файла его можно загрузить в базу данных Oracle. Он служит в качестве чёрного списка, к которому нельзя получить доступ через сервер приложений Oracle.

§ 4.8. IPMI.

4.8.1) IPMI (ИНТЕЛЛЕКТУАЛЬНЫЙ ИНТЕРФЕЙС УПРАВЛЕНИЯ ПЛАТФОРМОЙ)это набор стандартизированных спецификаций для аппаратных систем управления хостом, которые используются для управления и мониторинга системы.

IPMI действует как автономная подсистема и работает независимо от BIOS, центрального процессора, встроенного ПО (прошивки) и базовой операционной системы, работающих на хосте.

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

Протокол IPMI поддерживается многими производителями систем, включая Cisco, Dell, HP, Intel, Supermicro и др. Системы, использующие IPMI версии 2.0, могут управляться через последовательный порт (COM-порт) по локальной сети, что позволяет сисадминам просматривать последовательный консольный вывод в диапазоне.

IPMI работает через UDP-порт 623.

4.8.2) ФУНКЦИИ IPMI — IPMI используется в следующих случаях:

  • Перед загрузкой ОС для изменения настроек BIOS.
  • Когда хост полностью выключен.
  • Для доступа к хосту после сбоя системы.

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

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

Хост-систему можно отключить, но для корректной работы модуля IPMI требуется источник питания и подключение к локальной сети.

4.8.3) КОМПОНЕНТЫ IPMI — для функционирования IPMI требуются следующие компоненты:

I) Baseboard Management Controller (BMC) это микроконтроллер, который является сердцем архитектуры IPMI. BMC обычно реализуются в виде встроенных ARM-систем под управлением Linux и подключаются напрямую к материнской плате хоста. BMC встроены во многие материнские платы, но также могут быть добавлены в систему в виде карты PCI.

Большинство серверов поставляются с BMC или поддерживают добавление BMC. Наиболее распространенными BMC являются HP iLO, Dell DRAC и Supermicro IPMI. Многие BMC предоставляют веб-консоль управления, это своего рода протокол удаленного доступа командной строки, такой как Telnet или SSH.

Если злоумышленник сможет получить доступ к BMC, то получит полный доступ к материнской плате хоста и сможет контролировать, перезагружать, выключать или даже переустанавливать операционную систему хоста. Получение доступа к BMC почти сравнимо с физическим доступом к системе.

II) Intelligent Chassis Management Bus (ICMB) — это интерфейс, который обеспечивает связь между одним шасси и другими шасси.

III) Intelligent Platform Management Bus (IPMB) — расширяет возможности BMC.

IV) Память IPMI — хранит такие данные, как системный журнал событий, данные хранилища репозитория и многое другое.

V) Интерфейсы связи — это локальные системные интерфейсы, последовательные и LAN-интерфейсы, шина управления ICMB и PCI.

§ 4.9. SSH.

4.9.1) SSH (SECURE SHELL) — это сетевой протокол для удалённого управления операционной системой. SSH позволяет двум компьютерам устанавливать зашифрованное и прямое соединение в потенциально незащищенной сети, что предотвращает перехват потока данных третьими лицами.

SSH работает по умолчанию через TCP-порт 22.

Существуют два протокола: SSH-1 и SSH-2 (более продвинутый протокол). SSH-2 более продвинутый в плане шифрования, скорости, стабильности и безопасности. Например, SSH-1 уязвим для MITM-атак, а SSH-2 нет.

Протокол SSH работает в Linux и MacOS. Чтобы SSH работал в Windows, нужно установить соответствующую программу.

SSH-сервер можно настроить таким образом, чтобы он разрешал подключения только от конкретных клиентов.

4.9.2) OpenSSH (OpenBSD SSH) — это инструмент для удалённого входа в систему по протоколу SSH. Он шифрует весь трафик, чтобы исключить подслушивание, перехват соединения, и другие нападения. Кроме того, OpenSSH предоставляет большой набор возможностей безопасного туннелирования, несколько методов аутентификации и сложные параметры конфигурации.

В OpenSSH есть следующие методы аутентификации:

  1. Аутентификация с помощью открытого и закрытого ключа.
  2. Аутентификация по паролю.
  3. Аутентификация на основе хоста.
  4. Аутентификация с помощью клавиатуры.
  5. Аутентификация по принципу «запрос-ответ».
  6. Аутентификация по GSSAPI.

4.9.3) МЕТОДЫ АУТЕНТИФИКАЦИИ В OPENSSH:

I) Аутентификация с помощью открытого и закрытого ключа.

На первом этапе SSH-сервер и клиент аутентифицируются друг c другом. SSH-сервер отправляет клиенту сертификат, чтобы убедиться, что это правильный сервер. Только при первом установлении соединения существует риск перехвата этого соединения третьими лицами (CVE-2020-14145).

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

После аутентификации на SSH-сервере клиент также должен доказать серверу, что у него есть разрешение на доступ. Для этого SSH-сервер владеет зашифрованным хэш-значением пароля для нужного пользователя. Однако для входа на другой SSH-сервер в течение того же сеанса пользователи должны вводить пароль каждый раз. По этой причине для аутентификации на стороне клиента используется пара открытого и закрытого ключей.

Закрытый SSH-ключ создаётся индивидуально для компьютера пользователя и защищается парольной фразой, которая должна быть длиннее обычного пароля. Закрытый ключ хранится исключительно на компьютере пользователя и всегда остается секретным. Если пользователь хочет установить SSH-соединение, он сначала вводит парольную фразу и таким образом открывает доступ к закрытому ключу.

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

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

II) Аутентификация с помощью паролю.

III) Аутентификация на основе хоста.

IV) Аутентификация с помощью клавиатуры.

V) Аутентификация по принципу «запрос-ответ».

VI) Аутентификация по GSSAPI.

Более подробно о методах аутентификации читать здесь.

4.9.4) НАСТРОЙКИ SSH-СЕРВЕРА.

КОНФИГУРАЦИЯ ПО УМОЛЧАНИЮ.

Файл конфигурации SSH-сервера находится в /etc/ssh/sshd_config (большинство настроек в этом файле закомментированы и требуют ручной настройки):

cat /etc/ssh/sshd_config | grep -v "#" | sed -r '/^\s*$/d'

Конфигурация по умолчанию включает переадресацию X11 (X11Forwarding yes), которая содержала уязвимость command injection в OpenSSH 7.2p1 в 2016 году.

Для управления нашими серверами нам не нужен графический интерфейс.

Большинство настроек в этом файле закомментированы и требуют ручной настройки. Более подробно о настройках SSH-сервера через файл sshd_config читать здесь.

ОПАСНЫЕ НАСТРОЙКИ. Хоть протокол SSH является одним из самых безопасных протоколов, следующие неправильные настройки могут сделать SSH-сервер уязвимым для простых атак:

  • PasswordAuthentication yes — разрешает выполнять аутентификацию с помощью пароля.
  • PermitEmptyPasswords yes — разрешает использовать пустые пароли.
  • PermitRootLogin yes — разрешает войти в систему как пользователь root.
  • Protocol 1 — использует устаревшую версию шифрования.
  • X11Forwarding yes — разрешает переадресацию X11 для приложений с графическим интерфейсом.
  • AllowTcpForwarding yes — разрешает переадресацию TCP-портов.
  • PermitTunnel — разрешает выполнять туннелирование.
  • DebianBanner yes — отображает определенный баннер при входе в систему.

Для защиты наших SSH-серверов можно использовать данное руководство.

4.9.5) ИСПОЛЬЗОВАНИЕ SSH-СЕРВЕРА.

ЭТАП 1. Сначала нужно включить службу SSH-сервера на нашем компьютере:

sudo systemctl enable ssh

Отключить службу SSH-сервера: sudo systemctl disable ssh.

ЭТАП 2. Теперь можно запустить SSH-сервер на нашем компьютере:

sudo systemctl start ssh

Отключить SSH-сервер: sudo systemctl stop ssh.

Мы можем проверить статус SSH-сервера, запущена она или нет:

service ssh status или
sudo systemctl status ssh

Мы можем также проверить порт запущенного SSH-сервера:

netstat -lnpt

РАЗОБРАТЬСЯ В ТОМ, КАК создать временную учетную запись на SSH-сервере.

О способах передачи файлов через SSH-сервер читать здесь (§ 2.6).

§ 4.10. ПРОТОКОЛЫ УДАЛЁННОГО УПРАВЛЕНИЯ WINDOWS.

4.10.1) RDP (REMOTE DESKTOP PROTOCOL)это сетевой протокол для удалённого доступа к компьютеру под управлением Windows. RDP позволяет передавать команды отображения* и управления через графический интерфейс пользователя в зашифрованном виде по IP-сетям. Данный протокол работает на прикладном уровне в эталонной модели TCP/IP.

RDP работает через TCP-порт 3389 в качестве транспортного протокола. Однако без установления соединения RDP может работать через UDP-порт 3389 также для удалённого администрирования.

* команда отображения — команда, которая изменяет состояние или управляет действием графического устройства.

Для установления сеанса RDP нужно, чтобы сетевой брандмауэр и брандмауэр на сервере разрешили подключения извне. Если на маршруте между клиентом и сервером используется Network Address Translation (NAT), то удалённому компьютеру нужен публичный IP-адрес для доступа к серверу. Кроме того, на маршрутизаторе NAT необходимо настроить переадресацию портов в направлении сервера.

RDP поддерживает TLS/SSL начиная с Windows Vista, а значит все данные, и особенно процесс входа в систему, защищены в сети с помощью надёжного шифрования. Однако многие системы Windows не настаивают на этом, но всё допускают недостаточное шифрование через RDP Security. Тем не менее, даже при этом злоумышленник все равно не будет заблокирован, поскольку сертификаты, предоставляющие идентификационные данные, по умолчанию являются самоподписанными. Это означает, что клиент (RDP-клиент?) не может отличить подлинный сертификат от поддельного и выдаёт пользователю предупреждение о сертификате.

RDP установлен по умолчанию на серверах Windows и не требует дополнительных внешних приложений. Эту службу можно активировать с помощью Server Manager, и она поставляется с настройками по умолчанию, позволяющими подключаться к службе только хостам с аутентификацией на уровне сети (NLA).

ПЕРЕЧИСЛЕНИЕ RDP.

ЭТАП 1. Сканировать целевую RDP-службу с помощью Nmap:

nmap -sV -sC IPцелевойСистемы -p3389 --script rdp*

Кроме того, можно использовать команду --packet-trace для отслеживания отдельных пакетов данных и проверки их содержимого:

nmap -sV -sC IPцелевойСистемы -p3389 --packet-trace --disable-arp-ping -n

Однако, отправляемый пакет "mstshash=nmap", который используется для взаимодействия с RDP-сервером, может быть заблокирован различными службами безопасности, такими как Endpoint Detection and Response (EDR), что может лишить нас возможности проводить тесты на проникновение в защищённых сетях.

ЭТАП 2. Сканировать настройки безопасности целевого RDP-сервера с помощью скрипта Perl rdp-sec-check.pl, который был разработан Cisco CX Security Labs:

./rdp-sec-check.pl IPцелевойСистемы

Данный скрипт может неавторизованно идентифицировать настройки безопасности RDP-серверов на основе рукопожатий.

Аутентификацию, подключение и взаимодействие с уязвимыми RDP-серверами можно выполнить с помощью инструментов xfreerdp, rdesktop или Remmina:

xfreerdp /u:имяПользователя /p:"пароль" /v:IPцелевойСистемы

4.10.2) WinRM (WINDOWS REMOTE MANAGEMENT)это интегрированный протокол удалённого управления Windows на основе командной строки. WinRM использует SOAP для установления соединений с удалёнными хостами и их приложениями. Следовательно, WinRM должен быть явно включен и настроен, начиная с Windows 10

WinRM работает через TCP-порты 5985 (HTTP) и 5986 (HTTPS).

Для администрирования в WinRM есть компонент WinRS (Windows Remote Shell), который позволяет выполнять произвольные команды на удалённой системе. Таким образом, с помощью WinRM можно выполнять удалённые команды на другом сервере.

WinRM требуется для таких служб, как удаленные сеансы с использованием PowerShell и объединение журналов событий (event log merging). Начиная с версии Windows Server 2012, WinRM включена по умолчанию, но сначала ее необходимо настроить для более старых версий серверов и клиентов, а также создать необходимые исключения брандмауэра.

ПЕРЕЧИСЛЕНИЕ WinRM.

ЭТАП 1. Сканировать целевую RDP-службу с помощью Nmap:

nmap -sV -sC IPцелевойСистемы -p3389 --script rdp*

Для получения доступа к одному или нескольким удалённым серверам через WinRM можно использовать PowerShell. За это отвечает cmdlet Test-WsMan, которому передаётся имя хоста. В средах Linux можно использовать инструмент evil-winrm, разработанный для взаимодействия с WinRM.

evil-winrm -i IPцелевойСистемы -u имяПользователя -p пароль

4.10.3) WMI (WINDOWS MANAGEMENT INSTRUMENTATION) — это инфраструктура для управления данными и операциями в операционных системах Windows. WMI предоставляет доступ для чтения и записи практически ко всем настройкам в системах Windows, что делает его наиболее важным интерфейсом в среде Windows для администрирования и удалённого обслуживания компьютеров Windows. Доступ к WMI обычно осуществляется через PowerShell, VBScript или WMIC.

Хотя скрипты или приложения WMI можно писать для автоматизации административных задач на удалённых компьютерах, WMI также предоставляет данные управления другим частям операционной системы и продуктов. Например, для System Center Operations Manager или WinRM.

Установление соединения в WMI происходит через TCP-порт 135, а после чего коммуникация перемещается на случайный порт.

Подключиться к WMI можно с помощью инструмента Impacket wmiexec.py:

/usr/share/doc/python3-impacket/examples/wmiexec.py имяПользователя:"пароль"@IPцелевойСистемы "имяХоста"

  • /usr/share/doc/python3-impacket/examples/wmiexec.py — это местоположение программы wmiexec.py на нашем компьютере