Внимание! На этой странице вы найдете материал урока из архивного курса по пентесту (Тестирование на проникновение во внутреннюю сеть под управлением 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 с удаленным компьютером . Синтаксис:closeconnect: Подключение к удаленному компьютеру (полезно, если время ожидания подключения истекло). Синтаксис:connectdir: Перечисление содержимого текущего рабочего каталога. Синтаксис:direxit: Выход из smbclient-ng. Синтаксис:exitget: Скачать файл с сервера. Синтаксис:get [-r] <directory or file>help: Отобразить список команд. Синтаксис:helpinfo: Получить информацию о сервере или общей папке. Синтаксис:info [server|share]lbat: Форматированный (с подсветкой) вывод содержимого локального файла. Синтаксис:lbat <file>lcat: Вывод содержимого локального файла. Синтаксис:lcat <file>lcd: Изменить текущую локальную директорию. Синтаксис:lcd <directory>lcp: Создать копию локального файла. Синтаксис:lcp <srcfile> <dstfile>lls: Содержимое текущей локальной рабочей директории. Синтаксис:llslmkdir: Создать новую локальную директорию. Синтаксис:lmkdir <directory>lpwd: Вывести текущую локальную директорию. Синтаксис:lpwdlrename: Переименовать локальный файл. Синтаксис:lrename <oldfilename> <newfilename>lrm: Удалить локальный файл. Синтаксис:lrm <file>lrmdir: Удалить локальную директорию. Синтаксис:lrmdir <directory>ls: Содержимое текущей удаленной рабочей директории. Синтаксис:lsltree: Отобразить древовидную структуру текущего локального каталога. Синтаксис:ltree [directory]mkdir: Создать новую удаленную директорию. Синтаксис:mkdir <directory>module: Загрузка модуля для дополнительных функциональных возможностей. Синтаксис:module <name>mount: Создание точки монтирования удаленного общего ресурса на локальном компьютере. Синтаксис:mount <remote_path> <local_mountpoint>put: Поместить локальный файл или каталог на удаленный общий ресурс. Синтаксис:put [-r] <directory or file>reconnect: Подключиться повторно к удаленной машине (полезно, если время ожидания соединения истекло). Синтаксис:reconnectreset: Сброс вывода TTY (полезно, если он был поврежден после печати двоичного файла в стандартном режиме вывода). Синтаксис:resetrm: Удалить файл на удаленном ресурсе. Синтаксис:rm <file>rmdir: Удалить директорию на удаленном ресурсе. Синтаксис:rmdir <directory>shares: Список общих ресурсов (SMB), обслуживаемых удаленным ресурсом. Синтаксис:sharessizeof: Рекурсивное вычисление размера папки. Синтаксис:sizeof [directory|file]tree: Отобразить древовидную структуру текущего удаленного каталога. Синтаксис:tree [directory]umount: Удаление точки монтирования удаленного общего ресурса на локальном компьютере. Синтаксис:umount <local_mount_point>use: Выбор общей папки (SMB). Синтаксис:use <sharename>
Заключение
В этом уроке узнали больше об инструменте CrackMapExec и познакомились с SMBMap и smbclient, научились перечислять доступные общие папки. В следующем уроке автоматизируем поиск информации в доступных общих папках с помощью manspider.
Переходите к следующему уроку курса, а так же не забудьте посмотреть новый материал на Codebra по тегам Пентест и Active Directory.
