Codebra
07 февраля 2026 в 08:31

Урок 26. Поиск общих папок с помощью CrackMapExec, SMBMap, smbclient

Научимся использовать инструмент CrackMapExec для поиска доступных общих папок и познакомимся с инструментами SMBMap и smbclient.
📝

Внимание! На этой странице вы найдете материал урока из архивного курса по пентесту (Тестирование на проникновение во внутреннюю сеть под управлением Active Directory). Курс был написан в 2024 году и будет интересен системным администраторам, специалистам по защите данных и другим специалистам.

Полный список уроков доступен по тегу Архивный курс по пентесту Active Directory и на странице первого урока.

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

📝 Кратко
  • Статья посвящена изучению инструментов CrackMapExec, SMBMap и smbclient для работы с общими папками.
  • В уроке рассматриваются методы перечисления доступных общих папок, подключения к ним и скачивания файлов.
  • Нулевые сеансы в Windows могут предоставить доступ к общим ресурсам с пустым логином и паролем, что может представлять угрозу безопасности.
  • Анонимный доступ к общим ресурсам возможен через гостевые учетные записи.
  • В статье представлены примеры использования CrackMapExec, SMBMap и smbclient для перечисления и подключения к общим папкам.
  • Упоминаются различия между инструментами smbclient и smbclient-ng, а также их функциональные возможности.

Раздел «Сбор дополнительной информации из доступных общих папок» начнем с продолжения изучения инструмента CrackMapExec и познакомимся с двумя новыми для нас утилитами для работы с общими папками: SMBMap и smbclient. В этом уроке научимся перечислять (enumerate) доступные общие папки, подключаться к ним и скачивать файлы. На данном этапе пентеста лабораторного стенда GOAD у нас нет учетных записей, поэтому будет искать ресурс, на котором разрешен анонимный доступ к общим папкам.

💡 Нулевой сеанс

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

💡 Анонимный доступ

Аналогично нулевому сеансу, любой пользователь может получить доступ к общим ресурсам под гостевой учётной записью.

Попробуем на практике найти доступные общие ресурсы с помощью CrackMapExec.

Ищем доступные общие папки с помощью CrackMapExec

Переходим к практике. Проверим наличие общих папок доступных анонимно с помощью CrackMapExec:

crackmapexec smb 192.168.56.10-23 -u 'a' -p '' --shares

Как видно на скриншоте, анонимно доступны общие папки двух серверов: 192.168.56.22 и 192.168.56.23. Занесем в наши заметки найденные общие папки, это нам пригодится в дальнейшем.

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

Находим общие папки с помощью smbmap

Попробуем другую утилиту для перечисление общих папок - SMBMap. Эта программа предустановлена в Kali Linux. Запустим для гостевой учетной записи:

smbmap -u "a" -p "" -H 192.168.56.22

В флаге -H указываем цель. В нашем случае, это сервер CASTELBLACK. Результат аналогичен выводу CrackMapExec, но представлен в другом виде.

Далее перечислим общие папки третьим инструментом и подключится к одной из них.

Подключение к общей папке с помощью smbclient

Инструмент smbclient - клиент для доступа к SMB/CIFS ресурсам на серверах (CIFS - старое название первой версии SMB).

Утилита smbclient так же может перечислять доступные сетевые ресурсы, как предыдущие инструменты. Для этих целей используйте флаг -L:

smbclient -L 192.168.56.22

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

Каким-то «волшебным способом» в наши руки попала учетная запись khal.drogo. Про «волшебные способы» получения учетных записей поговорим в следующих разделах. Запускаем CrackMapExec:

crackmapexec smb 192.168.56.10-23 -u 'khal.drogo' -p 'horse' --shares

Для экономии места на скриншоте представлено сканирование только нужного сервера. Нам повезло, khal.drogo является администратором сервера.

Открываем help утилиты smbclient и смотрим как использовать учетные записи в ней:

smbclient -?

Формат команды следующий:

smbclient -U [DOMAIN/]USERNAME[%PASSWORD] <service>

Перечисляем доступные ресурсы для khal.drogo:

smbclient -U essos.local/'khal.drogo'%'horse' -L 192.168.56.23

Глаз сразу цепляется за CertEnroll. Вероятно, сервер выполняет роль ADCS. Его наличие открывает множество векторов атак, о которых будем говорить в дальнейшем, а пока подключимся к какой-нибудь общей папке, например, public:

smbclient -U essos.local/'khal.drogo'%'horse' \192.168.56.23\Users

И посмотрим содержимое:

ls

Можем заметить несколько папок, например: Administrator, daenerys.targaryen, sql_svc. Вероятно это означает, что на сервер заходили другие пользователи и могли оставить чувствительную информацию.

Утилита smbclient позволяет так же скачивать файлы. Чтобы скачать файл, вводим команду get:

get <file>

Далее рассмотрим доработанный smbclient, инструмент под названием smbclient-ng.

Работаем с общей папкой с помощью smbclient-ng

Рассмотрим инструмент smbclient-ng, который разработал p0dalirius (Security Researcher). Это более дружелюбная версия smbclient. Разницы практически нет, поэтому рассмотрим его для расширения кругозора.

Установим smbclient-ng с помощью уже знакомого pipx:

pipx install smbclientng

Теперь посмотрим документацию, чтобы понять как использовать инструмент:

Нужные флаги:

  • -u: пользователь
  • -p: пароль
  • -d: домен
  • --target: цель, на которой доступен SMB сервер

Подключаемся:

smbclientng -u khal.drogo -p horse -d essos.local --target 192.168.56.23

Используйте команду help для отображения доступных команд. Посмотрим информацию о сервере:

info

Выведем общие папки:

shares

Перейдем на CertEnroll:

use CertEnroll
ls

С помощью команды get можем скачать нужные файлы:

Доступные в smbclient-ng команды:

  • bat: Форматированный (с подсветкой) вывод содержимого файла. Синтаксис: bat <file>
  • cat: Получить содержимое файла. Синтаксис: cat <file>
  • cd: Изменить текущую рабочую директорию. Синтаксис: cd <directory>
  • close: Закрытие соединения по SMB с удаленным компьютером . Синтаксис: close
  • connect: Подключение к удаленному компьютеру (полезно, если время ожидания подключения истекло). Синтаксис: connect
  • dir: Перечисление содержимого текущего рабочего каталога. Синтаксис: dir
  • exit: Выход из smbclient-ng. Синтаксис: exit
  • get: Скачать файл с сервера. Синтаксис: get [-r] <directory or file>
  • help: Отобразить список команд. Синтаксис: help
  • info: Получить информацию о сервере или общей папке. Синтаксис: info [server|share]
  • lbat: Форматированный (с подсветкой) вывод содержимого локального файла. Синтаксис: lbat <file>
  • lcat: Вывод содержимого локального файла. Синтаксис: lcat <file>
  • lcd: Изменить текущую локальную директорию. Синтаксис: lcd <directory>
  • lcp: Создать копию локального файла. Синтаксис: lcp <srcfile> <dstfile>
  • lls: Содержимое текущей локальной рабочей директории. Синтаксис: lls
  • lmkdir: Создать новую локальную директорию. Синтаксис: lmkdir <directory>
  • lpwd: Вывести текущую локальную директорию. Синтаксис: lpwd
  • lrename: Переименовать локальный файл. Синтаксис: lrename <oldfilename> <newfilename>
  • lrm: Удалить локальный файл. Синтаксис: lrm <file>
  • lrmdir: Удалить локальную директорию. Синтаксис: lrmdir <directory>
  • ls: Содержимое текущей удаленной рабочей директории. Синтаксис: ls
  • ltree: Отобразить древовидную структуру текущего локального каталога. Синтаксис: ltree [directory]
  • mkdir: Создать новую удаленную директорию. Синтаксис: mkdir <directory>
  • module: Загрузка модуля для дополнительных функциональных возможностей. Синтаксис: module <name>
  • mount: Создание точки монтирования удаленного общего ресурса на локальном компьютере. Синтаксис: mount <remote_path> <local_mountpoint>
  • put: Поместить локальный файл или каталог на удаленный общий ресурс. Синтаксис: put [-r] <directory or file>
  • reconnect: Подключиться повторно к удаленной машине (полезно, если время ожидания соединения истекло). Синтаксис: reconnect
  • reset: Сброс вывода TTY (полезно, если он был поврежден после печати двоичного файла в стандартном режиме вывода). Синтаксис: reset
  • rm: Удалить файл на удаленном ресурсе. Синтаксис: rm <file>
  • rmdir: Удалить директорию на удаленном ресурсе. Синтаксис: rmdir <directory>
  • shares: Список общих ресурсов (SMB), обслуживаемых удаленным ресурсом. Синтаксис: shares
  • sizeof: Рекурсивное вычисление размера папки. Синтаксис: sizeof [directory|file]
  • tree: Отобразить древовидную структуру текущего удаленного каталога. Синтаксис: tree [directory]
  • umount: Удаление точки монтирования удаленного общего ресурса на локальном компьютере. Синтаксис: umount <local_mount_point>
  • use: Выбор общей папки (SMB). Синтаксис: use <sharename>

Заключение

В этом уроке узнали больше об инструменте CrackMapExec и познакомились с SMBMap и smbclient, научились перечислять доступные общие папки. В следующем уроке автоматизируем поиск информации в доступных общих папках с помощью manspider.

📝

Переходите к следующему уроку курса, а так же не забудьте посмотреть новый материал на Codebra по тегам Пентест и Active Directory.