Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/syss-research/smbcrawler
РазведкаАнализ уязвимостейЭксфильтрация данныхСбор информацииСетевая безопасностьТестирование на Проникновение
GitHubsyss-research/smbcrawler

smbcrawler

smbcrawler — это бескомпромиссный инструмент, который принимает учётные данные и список хостов и «сканирует» (или «пауки») эти общие ресурсы.

Репозиторий
189269 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
smbcrawler — smbcrawler — это бескомпромиссный инструмент, который принимает учётные данные и список хостов и «сканирует» (или «пауки») эти общие ресурсы. | Kitploit

SmbCrawler

SmbCrawler — это инструмент без излишеств, который использует учётные данные и список хостов, чтобы «ползать» (или «паучить») по этим общим ресурсам. Возможности:

  • принимает имена хостов, IP-адреса, диапазоны IP или XML-файл nmap в качестве входных данных
  • проверяет права доступа (проверка на «запись» опциональна, так как требует создания пустой директории на общем ресурсе)
  • глубина обхода настраивается
  • выводит результаты в машиночитаемых форматах или в виде интерактивного HTML-отчёта
  • поддержка pass-the-hash
  • автоматическая загрузка интересующих файлов
  • сообщение о потенциальных секретах
  • многопоточность
  • возможность приостановки
  • интерактивный пропуск отдельных общих ресурсов и хостов

Установка

Если вам нужны инструкции по установке пакета Python, рекомендую убедиться, что у вас установлен pipx, и выполнить pipx install smbcrawler.

SmbCrawler может автоматически преобразовывать некоторые двоичные файлы, такие как PDF, XLSX, DOCX, ZIP и т.д., в обычный текст с помощью MarkItDown. Поскольку этот пакет тянет много зависимостей, он помечен как дополнительный. Тем не менее, его настоятельно рекомендуется устанавливать для достижения наилучших результатов. Если вы хотите автоматически преобразовывать двоичные файлы, установите SmbCrawler следующим образом:

root@kitploit:~
pipx install 'smbcrawler[binary-conversion]'

Добавление автодополнения в командной строке настоятельно рекомендуется. Будучи приложением Python, использующим библиотеку click, вы можете добавить автодополнение по табуляции для bash, zsh и fish, используя обычный механизм.

Пример

Запустите так (10 потоков, максимальная глубина 5):

root@kitploit:~
$ smbcrawler crawl -i hosts.txt -u pen.tester -p iluvb0b -d contoso.local -t 10 -D 5

Основные изменения в версии 1.0

SmbCrawler претерпел существенную переработку. Наиболее значимые изменения:

  • Мы очистили CLI и ввели механизм «профилей» для управления поведением краулера
  • Вывод теперь представляет собой базу данных SQLite вместо разрозненных JSON-файлов
  • Права доступа теперь сообщаются более детально

Старые аргументы CLI, касающиеся «интересных файлов», «скучных общих ресурсов» и т.п., были громоздкими и запутанными. Вместо этого теперь используются «профили»; подробнее ниже.

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

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

Если вы предпочитаете старую версию, она всё ещё доступна на PyPI и может быть установлена, например, с помощью pipx install smbcrawler==0.2.0.

Использование

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

  • p: приостановить краулер и пропустить отдельные хосты или общие ресурсы
  • <пробел>: вывести текущий прогресс
  • s: вывести более подробное обновление статуса

Для получения дополнительной информации выполните smbcrawler -h.

Примечания

Даже в сетях среднего размера SmbCrawler найдёт тонны данных. Задача в том, чтобы уменьшить количество ложных срабатываний.

Примечания о правах доступа

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

SmbCrawler сообщит, есть ли у вас права на:

  • аутентификацию против цели в качестве гостя и получение списка общих ресурсов
  • аутентификацию против цели с использованием учётных данных пользователя
  • доступ к общему ресурсу в качестве гостя
  • доступ к общему ресурсу с учётными данными пользователя
  • создание директории в корневой директории общего ресурса
  • самый глубокий уровень директории общего ресурса, к которому удалось получить доступ (ограничено аргументом --depth)

Поскольку проверить права доступа к общим ресурсам SMB, не пытаясь выполнить соответствующее действие, нетривиально, SmbCrawler попытается создать директорию на каждом общем ресурсе. Её имя — smbcrawler_DELETEME_<8 случайных символов>, и она будет немедленно удалена, но всё же имейте это в виду.

[!WARNING] Иногда у вас есть разрешение на создание директорий, но не на их удаление, поэтому вы оставите пустую директорию.

Профили

Чтобы решить, что делать с определёнными общими ресурсами, файлами или директориями, в SmbCrawler есть функция под названием «профили». Взгляните на профиль по умолчанию.

Профили загружаются из файлов с расширениями *.yml или *.yaml из следующих мест:

  • Встроенный профиль по умолчанию
  • $XDG_DATA_HOME/smbcrawler/ (по умолчанию ~/.local/share/smbcrawler)
  • Дополнительная директория, заданная параметром --extra-profile-directory
  • Дополнительные файлы, заданные параметром --extra-profile-file

Профили из каждого места переопределяют предыдущие определения.

Значение regex определяет, соответствует ли профиль, и используется последний совпавший профиль. Все регулярные выражения нечувствительны к регистру, что отражает наиболее распространённое поведение в мире Windows.

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

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

Файлы

  • comment: полезная строка, описывающая этот профиль
  • regex: регулярное выражение, определяющее, к каким файлам применяется этот профиль. Учитывается последнее совпавшее регулярное выражение.
  • regex_flags: массив флагов, которые будут переданы функции match регулярного выражения
  • high_value (по умолчанию: false): если файл является «ценным», его наличие будет сообщено, но он не обязательно будет загружен (подумайте о виртуальных жёстких дисках — важны, но слишком велики для автоматической загрузки)
  • download (по умолчанию: true): если true, будут загружены первые 200 КиБ (или весь файл, если high_value=true) и проанализированы на предмет секретов

Общие ресурсы и директории

  • comment, regex, regex_flags: то же, что и выше
  • high_value: о его наличии будет сообщено, а глубина обхода будет изменена на бесконечность
  • crawl_depth: обходить этот общий ресурс или директорию на другую глубину, чем задано аргументом --depth

Секреты

  • comment, regex_flags: то же, что и выше
  • regex: регулярное выражение, соответствующее секрету. Сам секрет может быть именованной группой с именем secret.

Типичный рабочий процесс

Сначала имеет смысл запустить SmbCrawler с глубиной обхода 1, чтобы получить представление о том, с чем вы имеете дело. В этом первом запуске вы можете включить проверку записи с помощью -w:

root@kitploit:~
$ smbcrawler -C permissions_check.crwl crawl -D1 -t10 -w \
    -i <ВХОДНОЙ ФАЙЛ> -u <ПОЛЬЗОВАТЕЛЬ> -d <ДОМЕН> -p <ПАРОЛЬ>

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

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

root@kitploit:~
$ smbcrawler -C dc_only.crwl crawl -D -1 <IP КОНТРОЛЛЕРА ДОМЕНА> \
    -u <ПОЛЬЗОВАТЕЛЬ> -d <ДОМЕН> -p <ПАРОЛЬ>
$ smbcrawler -C full.crwl crawl -D5 -t10 -i <НОВЫЙ ВХОДНОЙ ФАЙЛ> \
    -u <ПОЛЬЗОВАТЕЛЬ> -d <ДОМЕН> -p <ПАРОЛЬ> \
    --extra-profile-file skip_sysvol.yml

Здесь skip_sysvol.yml будет:

root@kitploit:~
shares:
  sysvol:
    comment: "Пропустить общие ресурсы sysvol и netlogon"
    regex: 'SYSVOL|NETLOGON'
    crawl_depth: 0

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

Вывод

Необработанные данные хранятся в базе данных SQLite и директории (по умолчанию output.crwl и output.crwl.d). Директория содержит ещё две директории: одну с загруженными файлами, уникализированными по хэшу содержимого, и директорию, зеркалирующую все общие ресурсы с символическими ссылками на файлы содержимого. Последнее удобно для grep'а по всем загруженным файлам.

Данные можно преобразовывать в различные форматы. Вы также можете просто открыть базу данных с помощью, например, sqlitebrowser. Некоторые полезные представления уже предопределены. Или вы можете выводить JSON и использовать jq для обработки данных.

Если вы хотите, например, отобразить все общие ресурсы, которые удалось прочитать за пределами корневой директории, в таблице LaTeX, используйте этот запрос:

root@kitploit:~
SELECT target_id || " & " || name || " & " || remark || " \\"
FROM share
WHERE read_level > 0
ORDER BY target_id, name

Также есть экспериментальная функция вывода HTML. Она может быть не полностью полезна для больших объёмов данных.

Помогите

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

Авторы

Adrian Vollmer, SySS GmbH

Лицензия

MIT License; подробности см. в LICENSE.

Скачать инструмент