
Находит SaaS-сервисы, на которые подписана организация, используя только внешне наблюдаемые данные. Создан для обнаружения теневого ИТ.
▄▄▓▓▓▓▓▓▓▓▓▄▄
▄▓▓▒▒▒▒▒▒▒▒▒▒▒▓▓▄ Yowie · tracking down the SaaS nobody told you about
▓▓▒▒░░░░░░░░░░░▒▒▓▓
▓▒░░ ● ● ░▒▓ Domain acme.com.au
▓▒░░ ▼ ░▒▓ Candidates acme, acmecorp
▓▓▒░░ ╰───╯ ░▒▓▓
▀▓▓▒▒░░░░░░░░░▒▒▓▓▀
▀▀▓▓▓▓▓▓▓▓▓▓▓▀▀
Находит SaaS-сервисы, на которые подписана организация, используя только внешне наблюдаемые данные. Создан для обнаружения теневого IT: сервисы, которые стоит искать, — это те, о которых вам никто не рассказывал.
Назван в честь австралийского кустарного криптида, потому что вы охотитесь за тем, что все настаивают, будто его не существует.

786 сигнатур, охватывающих 593 вендора, в девяти детекторах, плюс 109 в ожидании подтверждения. Находки оценены, и каждая несёт запись или ответ, который её породил.
go build -o yowie ./cmd/yowie
Go 1.22 или новее. Пакеты сигнатур встроены в бинарный файл, поэтому для развёртывания достаточно одного файла.
yowie [flags] <domain> [candidate ...]
Домен — это корневой домен организации. Кандидаты — это короткие строки, по которым может быть назван клиентский тенант: торговые названия, аббревиатуры, старые бренды, унаследованные от поглощений. Укажите как можно больше; каждый из них — ещё один шанс найти тенант. Если ничего не указано, используется первая метка домена.
yowie acme.com.au acme acmecorp acmegroup
yowie -format html -o report.html acme.com.au acme
yowie -format json acme.com.au | jq '.findings[] | select(.confidence=="high")'
yowie -only dns,spf,dmarc -compact acme.com.au
yowie -signatures ./signatures -validate
| Детектор | Сигнал |
|---|---|
dns | TXT-токены верификации, записи CNAME, MX и NS |
vanity | Арендаторы, размещённые у вендоров и названные по имени организации (acme.zendesk.com) |
http | Отпечатки на уровне приложений для сервисов без DNS-следа |
spf | Полный граф include-директив SPF с обходом вложенных include и redirect |
dmarc | Назначения агрегированных и форензических отчётов DMARC |
bimi | Хостинг логотипа BIMI и сертификата Verified Mark Certificate |
mta-sts | Содержимое политики MTA-STS |
tenant | Идентификатор арендатора Microsoft, федеративный поставщик идентификации и родственные домены |
ct | Поддомены из журналов Certificate Transparency, разрешённые и атрибутированные |
Выбор через -only или -skip, например -skip ct,http для быстрого прохода только по DNS.
Последние два заслуживают пояснения, потому что они находят то, что не может найти список сигнатур.
tenant спрашивает у неаутентифицированных эндпоинтов Microsoft, кому принадлежит домен. Информация о федерации в Autodiscover возвращает все домены, привязанные к одному и тому же арендатору, что регулярно вскрывает бизнес-подразделения, приобретения и заброшенные бренды. Каждый из них — ещё один домен, который стоит просканировать.
ct переворачивает модель обнаружения. Все остальные проверки спрашивают «использует ли эта организация вендора X?» по фиксированному списку, поэтому они могут найти только тех вендоров, для которых кто-то уже написал сигнатуру. CT спрашивает «на что эта организация на самом деле направила свои поддомены?» Команда, которая регистрируется в продукте и настраивает support.acme.com, получает выданный сертификат, а этот сертификат публичен и постоянен. Цели, не совпадающие ни с одной сигнатурой, выводятся как зацепки — именно так вы находите то, о существовании чего вы не знали и что не догадались бы искать.
Находки имеют степени достоверности, и степень — это главное:
acme.blogspot.com может быть не вашим acme.Совпадение двух независимых детекторов по одному вендору повышает находку Probable до Confirmed. Каждая находка несёт точную запись или ответ, которые её вызвали, поэтому отчёт можно обосновать без повторного запуска инструмента.
У повышения есть одно исключение, и это разница между «этот арендатор существует» и «этот арендатор ваш» — см. примечание о пространстве имён в разделе точность.
-no-unknown отбрасывает неатрибутированные зацепки, если вам нужен только сигнал.
-format cli (по умолчанию), json, jsonl, csv, html. Используйте -o для записи в файл. HTML-отчёт самодостаточен — без внешних ресурсов — поэтому он переживёт отправку по почте или размещение на сетевом диске.
Прогресс выводится в stderr, а результаты — в stdout, поэтому yowie -format json acme.com > out.json по-прежнему показывает строку прогресса в реальном времени.
Сигнатуры находятся в signatures/*.yaml. Бинарный файл встраивает их; -signatures <dir> или YOWIE_SIGNATURES=<dir> загружает их с диска вместо этого, что позволяет итерировать без пересборки.
version: 1
pack: dns-txt
description: "Domain-ownership verification tokens published as TXT records."
defaults:
confidence: high
signatures:
- id: txt-1password
vendor: "1Password"
category: "Identity & Secrets"
type: txt
query: "{domain}"
match:
contains: "1password-site-verification"
{domain} раскрывается в корневой домен, {candidate} — в каждую строку-кандидат.
Сигнатура, ссылающаяся на {candidate}, вычисляется один раз для каждого кандидата.
| Тип | Совпадение | Примечания |
|---|---|---|
txt, cname, mx, ns | match.contains по записям query | Без учёта регистра |
vanity_a, vanity_cname | Сравнение с базовой линией; без блока match | query должен содержать {candidate} |
http | Только match.present, match.absent или match.status | См. обработку статусов ниже |
spf_include | match.contains по разрешённому графу SPF include | |
dmarc_rua | match.contains по адресатам отчётов DMARC | |
cname_target | query — это чистый суффикс хостинга | Применяется к хостам, обнаруженным через ct; * соответствует одной метке |
disabled: true откладывает сигнатуру, не теряя стоящих за ней исследований.
notes: передаёт рекомендации аналитика в отчёт.
Запустите yowie -validate после редактирования. Валидация строгая — неизвестный ключ является
ошибкой, а не молчаливым no-op — и паки также проверяются через go test, так что
опечатка не может незаметно лишить вас покрытия во всех будущих сканированиях.
| Пак | Содержимое |
|---|---|
dns-txt, dns-cname, dns-mx | Токены верификации и делегированные имена хостов. Активны. |
email-spf, email-dmarc | Отправители и обработчики DMARC. Активны. |
vanity-tenants, http-endpoints | Имена хостов арендаторов и отпечатки приложений. Активны. |
cname-targets | Суффиксы хостинга для поддоменов, обнаруженных через CT. Активны. |
ai-services | Платформы AI и LLM. Отложен. |
file-transfer | Управляемая передача файлов — MOVEit, GoAnywhere, Egnyte. Отложен. |
finance-procurement | Финансы, расходы, расчёт зарплаты, закупки. Отложен. |
security-grc | Инструменты безопасности и автоматизация соответствия. Отложен. |
graveyard | Непроверенные записи и платформы, оператора которых не удалось идентифицировать. Отложен. |