Sulla – консольная утилита для проверки сетевых папок (далее - SMB-шары) на наличие чувствительных данных. Она ищет пароли, ключи программных интерфейсов, токены доступа, приватные ключи, строки подключения к базам данных и другие сведения, которые случайно остаются в общих сетевых папках.
Инструмент рассчитан на внутренние сети, где файловые серверы, рабочие станции и служебные каталоги годами хранят старые документы, резервные копии, скрипты и конфигурационные файлы. В таких местах часто остаются данные, которые дают доступ к облачным сервисам, репозиториям, системам сборки, базам данных и внутренним приложениям.
SMB используется в Windows-средах для сетевого доступа к файлам и другим ресурсам. Через него работают общие папки отделов, домашние каталоги пользователей, административные шары, папки с установочными файлами, отчётами и резервными копиями. Sulla помогает быстро проверить такие ресурсы и понять, где лежат опасные находки.
Утилита не заменяет систему предотвращения утечек, аудит прав доступа или полноценную инвентаризацию файловых хранилищ. Её задача уже: найти чувствительные данные в доступных SMB-шарах и выдать результат в формате, удобном для ручного разбора или дальнейшей обработки.
Что делает Sulla
Sulla может работать в двух основных режимах. В первом режиме пользователь передаёт доменные учётные данные и имя домена, после чего утилита сама ищет контроллеры домена, получает список активных машин, проверяет доступные SMB-шары и запускает поиск чувствительных данных. Во втором режиме оператор указывает одну конкретную шару или заранее подготовленный список целей.
Чувствительные данные ищет Titus. Это движок Praetorian, написанный на Go и развивающий идеи NoseyParker. Он содержит правила для обнаружения ключей, токенов, строк подключения и других учётных данных.
Основные возможности Sulla:
- автоматически ищет SMB-шары на хостах, подключённых к Active Directory;
- проверяет только те шары, к которым есть доступ на чтение;
- проверяет одну конкретную шару без обхода домена;
- загружает список целей из файла в формате CSV или UNC;
- режим только обнаружения, при котором Sulla собирает UNC-пути без поиска чувствительных данных;
- исключает шары, каталоги и расширения через регулярные выражения;
- быстрый режим по умолчанию с ограничением глубины, времени и числа файлов;
- полный режим для более глубокой проверки выбранных целей;
- извлекает текст из документов, PDF, архивов и других двоичных файлов через флаг
--extract; - сохраняет отчёты в форматах txt, json, jsonl, sarif и capability-sdk;
- выводит находки по мере их обнаружения с уровнем критичности Critical, High, Medium или Low.
Как работает поиск
При доменном запуске Sulla использует DNS SRV-записи вида _ldap._tcp.dc._msdcs.<domain>, чтобы найти контроллеры домена. Если первый контроллер недоступен, утилита пробует другие. Затем через LDAP собирается список машин, а по SMB проверяются шары и права на чтение.
В режиме обнаружения Sulla отбрасывает отключённые учётные записи Active Directory и компьютеры, которые не проявляли активность более четырёх месяцев. При работе с пространствами имён DFS утилита устраняет дубли целей, чтобы не проверять одну и ту же физическую шару через разные пути. Такой подход снижает лишний трафик и ускоряет обход больших сетей.
После обнаружения Sulla не читает все файлы подряд. По умолчанию включён быстрый режим. В нём утилита использует список приоритетных имён, подстрок и расширений, например имена вроде id_rsa, подстроки вроде credentials и расширения вроде .ps1. Быстрый режим также применяет более жёсткие ограничения: глубина обхода до 5 уровней, до 15 минут на одну шару и до 200 файлов в одном каталоге.
Быстрый режим фильтрует не только по исключениям. Sulla дополнительно выбирает файлы, которые выглядят ценными для поиска учётных данных. Полный режим --full отключает этот список приоритетных файлов и проверяет все файлы, которые не попали в стандартные исключения.
У полного режима другая цена. Он работает заметно дольше и лучше подходит для точечной проверки отдельной шары или небольшого списка целей. При массовом обходе домена полный режим может создать лишнюю нагрузку на сеть и файловые серверы.
По умолчанию Sulla ограничивает размер проверяемого файла 5 МБ. Параметр --max-scan-size позволяет изменить этот предел, а значение 0 отключает ограничение. Большие файлы, офисные документы, PDF и архивы требуют аккуратной настройки: без флага --extract утилита пропускает многие двоичные и офисные форматы.
Стандартные исключения помогают снизить шум. Sulla пропускает системные шары вроде IPC$, print$ и ADMIN$, а также файлы и каталоги, где чувствительные данные обычно встречаются реже или где чтение создаёт лишнюю нагрузку. В список попадают исполняемые файлы, изображения, мультимедиа, архивы, часть офисных форматов, системные каталоги Windows, node_modules, .git, vendor и другие пути.
Пользователь может посмотреть стандартные исключения через --show-default-exclusions, добавить собственные правила через -xe, -xd и -xs или полностью отключить стандартные исключения через --no-default-exclusions. Флаг --keywords позволяет всегда включать в проверку файлы с заданными подстроками в имени, даже если другие правила могли бы их пропустить.
Отдельная полезная деталь – файл interesting_exclusions.csv. Sulla автоматически записывает туда файлы, которые не прошли проверку из-за двоичного формата или ограничения по размеру, но выглядели перспективно по косвенным признакам. Такой список помогает вручную вернуться к подозрительным резервным копиям, архивам или большим документам и проверить их отдельно.
Форматы отчётов
Sulla поддерживает несколько форматов вывода. txt подходит для ручного просмотра, json и jsonl удобны для автоматической обработки, sarif можно использовать в инструментах анализа безопасности, которые понимают этот формат.
Формат capability-sdk предназначен прежде всего для режима обнаружения и интеграции с платформой Praetorian Guard. В этом формате Sulla записывает файл <domain>.tabularium. Значения совпадений скрываются только внутри вложенного блока доказательств этого формата.
К отчётам нужно относиться как к чувствительным данным. Обычные форматы txt, json, jsonl и sarif содержат сырые совпадения. Если Sulla найдёт рабочий ключ или пароль, отчёт сам станет источником риска. Такие файлы нельзя хранить в общих папках, прикладывать к открытым задачам или пересылать без контроля доступа.
Для кого подходит Sulla
Sulla полезна командам, которые проверяют внутреннюю сеть и хотят быстро понять, какие учётные данные лежат в SMB-шарах. Инструмент подходит специалистам по тестированию на проникновение, командам наступательной проверки, защитным командам, администраторам Active Directory и инженерам, которые отвечают за безопасность ключей и токенов за пределами репозиториев.
Наиболее понятные сценарии, где подходит Sulla:
- проверять файловые серверы во время внутреннего пентеста;
- искать забытые ключи облачных сервисов, GitHub, GitLab, Jenkins, Slack и других систем;
- разбирать старые общие папки перед миграцией или закрытием файлового сервера;
- проверять SYSVOL, каталоги с административными скриптами и папки резервного копирования;
- составлять список SMB-шар для ручного анализа через режим только обнаружения;
- формировать отчёты для внутреннего устранения найденных проблем.
Sulla не стоит запускать в чужой сети без разрешения. Чтобы проверять SMB-шары, нужно получить согласие владельца инфраструктуры, аккуратно выбрать учётную запись и понимать возможную нагрузку. Полный режим и чтение текста из двоичных файлов лучше использовать там, где заранее известны объём данных и список серверов.
Установка и запуск
В документации приведены готовые сборки для Linux x86_64 и Linux ARM64. После загрузки файл нужно сделать исполняемым.
# Linux x86_64
wget -O sulla https://github.com/praetorian-inc/Sulla/releases/latest/download/sulla-linux-amd64
chmod +x sulla
# Linux ARM64
wget -O sulla https://github.com/praetorian-inc/Sulla/releases/latest/download/sulla-linux-arm64
chmod +x sulla
Второй вариант – запуск через Docker. Он удобен, когда не нужно устанавливать утилиту прямо в систему.
docker pull ghcr.io/praetorian-inc/sulla:latest
docker run --rm --privileged --network=host
-v $(pwd):/sulla_output -w /sulla_output
ghcr.io/praetorian-inc/sulla:latest
-u admin -p secret123 -d corp.local -o results -of txt,json
Для доменного обхода используется команда с именем пользователя, паролем и доменом. В таком режиме Sulla сама обнаружит контроллер домена, найдёт доступные шары и запишет отчёт в выбранные форматы.
sulla -u admin -p secret123 -d corp.local -o results/ -of txt,json
Для предварительной инвентаризации можно включить режим только обнаружения. Команда выведет список доступных UNC-путей, которые затем можно отфильтровать вручную и передать в отдельном файле.
sulla -u admin -p secret123 -d corp.local -do -o
Если список целей уже подготовлен, Sulla принимает файл через --target-file. В файле можно указывать строки в CSV-формате или UNC-пути.
sulla -tf corp_local_discovered_smb_shares.txt
-u admin -p secret123 -d corp.local -o results/
Для точечной проверки одной шары используются флаги -h и -s.
# Анонимная проверка
sulla -h 192.168.1.100 -s public
# Проверка с доменными учётными данными
sulla -h fileserver.corp.local -s SYSVOL
-u admin -p secret123 -d corp.local -o results/
Плюсы и минусы
| Плюсы | Минусы и ограничения |
|---|---|
| Автоматически ищет доступные SMB-шары в домене Active Directory. | Для доменного обхода нужны рабочие учётные данные и сетевой доступ к инфраструктуре. |
| Может проверять весь домен, одну шару или заранее подготовленный список целей. |
Быстрый режим может пропустить данные в нетипичных файлах, глубоких каталогах, а также в большинстве двоичных и офисных файлов без --extract.
|
| Учитывает пространства имён DFS и устраняет дубли, снижая лишний SMB-трафик. | Полный режим при массовом запуске может работать долго и создавать заметную нагрузку. |
| Использует движок Titus с правилами для разных типов ключей, токенов и строк подключения. | Найденные совпадения нужно проверять, потому что часть результатов может оказаться ложной или устаревшей. |
| Записывает находки по мере их обнаружения и помечает уровнем критичности. | Обычные отчёты могут содержать сырые пароли, ключи и токены, поэтому к ним нужен строгий контроль доступа. |
Создаёт файл interesting_exclusions.csv с перспективными, но пропущенными файлами.
|
Такой файл тоже требует ручного разбора и не доказывает наличие чувствительных данных сам по себе. |
| Поддерживает txt, json, jsonl, sarif и capability-sdk. | Значения совпадений скрывает только формат capability-sdk. |
| Фильтры по шарам, каталогам и расширениям помогают снизить шум. | Слишком широкие исключения могут скрыть нужные файлы. |
Лицензия
Sulla опубликована как открытый проект под лицензией Apache-2.0. Лицензия разрешает использовать, копировать, изменять и распространять код, если соблюдать её условия и сохранять уведомления. Для корпоративного применения всё равно стоит отдельно проверить внутренние правила по открытому коду, хранению отчётов и обработке чувствительных данных.
Заключение
Sulla решает конкретную задачу: ищет чувствительные данные в SMB-шарах. В больших доменах вручную проверять файловые серверы быстро становится непрактично, а общие папки часто содержат старые скрипты, резервные копии, конфигурации и документы с доступами.
Утилита объединяет доменное обнаружение, обход SMB-шар, фильтрацию и движок Titus в одном консольном инструменте. Быстрый режим помогает быстро получить первые находки, а полный режим и --extract позволяют глубже разобрать выбранные цели.
Главный риск связан не с запуском Sulla, а с результатами. Отчёты могут содержать рабочие ключи и пароли. Завершив проверку, нужно не только разобрать находки, но и отозвать раскрытые данные, обновить доступы, закрыть лишние права на шары и устранить исходные причины утечки. В таком процессе Sulla выглядит не как самостоятельная система защиты, а как практичный инструмент, чтобы регулярно проверять внутренние файловые хранилища.
