Sulla: быстрый способ проверить файловые серверы на наличие конфиденциальных данных

1653
Sulla: быстрый способ проверить файловые серверы на наличие конфиденциальных данных

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

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 выглядит не как самостоятельная система защиты, а как практичный инструмент, чтобы регулярно проверять внутренние файловые хранилища.

Alt text
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.
ОР
50% / 50%

антипов жжёт

Ваш мозг проигрывает в рулетку,
даже когда вы не играете

// закон малых чисел →

Комнатный Блогер

Объясняю новую цифровую реальность