Découvre les services SaaS auxquels une organisation est abonnée, en utilisant uniquement des données observables de l'extérieur. Conçu pour la découverte du shadow IT.
▄▄▓▓▓▓▓▓▓▓▓▄▄
▄▓▓▒▒▒▒▒▒▒▒▒▒▒▓▓▄ Yowie · traquer le SaaS dont personne ne vous a parlé
▓▓▒▒░░░░░░░░░░░▒▒▓▓
▓▒░░ ● ● ░▒▓ Domaine acme.com.au
▓▒░░ ▼ ░▒▓ Candidats acme, acmecorp
▓▓▒░░ ╰───╯ ░▒▓▓
▀▓▓▒▒░░░░░░░░░▒▒▓▓▀
▀▀▓▓▓▓▓▓▓▓▓▓▓▀▀
Découvre les services SaaS auxquels une organisation est abonnée, en utilisant uniquement des données observables de l'extérieur. Conçu pour la découverte du shadow IT : les services qui valent la peine d'être trouvés sont ceux dont personne ne vous a parlé.
Nommé d'après la cryptide des bush australiens, parce que vous chassez quelque chose dont tout le monde insiste qu'il n'existe pas.

574 signatures couvrant 412 fournisseurs réparties sur neuf détecteurs, plus 104 en attente de confirmation. Les résultats sont gradés et chacun porte l'enregistrement ou la réponse qui l'a produit.
go build -o yowie ./cmd/yowie
Go 1.22 ou ultérieur. Les packs de signatures sont intégrés dans le binaire, donc le fichier unique suffit pour le déploiement.
yowie [flags] <domain> [candidate ...]
Le domaine est le domaine racine de l'organisation. Les candidats sont les chaînes courtes d'après lesquelles un tenant fournisseur pourrait être nommé — noms commerciaux, abréviations, anciennes marques héritées d'acquisitions. Fournissez-en autant que possible ; chacun est une chance supplémentaire de trouver un tenant. Sans aucun candidat, le premier label du domaine est utilisé.
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
| Détecteur | Signal |
|---|---|
dns | Jetons de vérification TXT, enregistrements CNAME, MX et NS |
vanity | Tenants hébergés chez le fournisseur et nommés d'après l'organisation (acme.zendesk.com) |
http | Empreintes au niveau applicatif pour les services sans empreinte DNS |
spf | Le graphe complet des includes SPF, en suivant les includes imbriqués et les redirections |
dmarc | Destinations des rapports agrégés/forensiques DMARC |
bimi | Hébergement du logo BIMI et du Verified Mark Certificate |
mta-sts | Contenu de la politique MTA-STS |
tenant | ID de tenant Microsoft, fournisseur d'identité fédéré, et domaines frères |
ct | Sous-domaines issus des journaux Certificate Transparency, résolus et attribués |
Sélectionnez avec -only ou -skip, par ex. -skip ct,http pour une passe
rapide DNS uniquement.
Les deux derniers méritent une note, car ils trouvent des choses qu'une liste de signatures ne peut pas trouver.
tenant demande aux points de terminaison non authentifiés de Microsoft à
qui appartient le domaine. Les informations de fédération d'Autodiscover
renvoient tous les domaines rattachés au même tenant, ce qui fait régulièrement
apparaître des unités commerciales, des acquisitions et des marques abandonnées.
Chacun est un domaine supplémentaire à scanner.
ct inverse le modèle de découverte. Toutes les autres vérifications
demandent « cette organisation utilise-t-elle le fournisseur X ? » face à une
liste fixe, donc elles ne peuvent trouver que des fournisseurs pour lesquels
quelqu'un a déjà écrit une signature. CT demande « vers quoi cette organisation a-t-elle
réellement pointé ses sous-domaines ? » Une équipe qui s'abonne à un produit et
configure support.acme.com obtient un certificat émis, et ce certificat est
public et permanent. Les cibles ne correspondant à aucune signature sont
signalées comme pistes, ce qui permet de trouver la chose que vous ne saviez pas
chercher.
Les résultats sont gradés, et le grade est l'essentiel :
acme.blogspot.com n'est peut-être
pas votre acme.Deux détecteurs indépendants s'accordant sur un fournisseur promeut un résultat Probable en Confirmé. Chaque résultat porte l'enregistrement ou la réponse exacte qui l'a déclenché, donc un rapport est défendable sans réexécuter l'outil.
La promotion a une exception, et c'est la différence entre « ce tenant existe » et « ce tenant est le vôtre » — voir la note sur les namespaces dans précision.
-no-unknown supprime les pistes non attribuées si vous ne voulez que le signal.
-format cli (par défaut), json, jsonl, csv, html. Utilisez -o pour
écrire dans un fichier. Le rapport HTML est autonome — aucune ressource externe —
donc il survit à un envoi par e-mail ou à un dépôt sur un lecteur partagé.
La progression va vers stderr et les résultats vers stdout, donc yowie -format json acme.com > out.json
affiche toujours une ligne de progression en direct.
Les signatures vivent dans signatures/*.yaml. Le binaire les intègre ;
-signatures <dir> ou YOWIE_SIGNATURES=<dir> charge depuis le disque à la
place, ce qui permet d'itérer sans recompiler.
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} se développe en domaine racine, {candidate} en chaque chaîne
candidate. Une signature référençant {candidate} est évaluée une fois par
candidat.
| Type | Correspondances | Notes |
|---|---|---|
txt, cname, mx, ns | match.contains contre les enregistrements de query | Insensible à la casse |
vanity_a, vanity_cname | Comparaison à une référence ; pas de bloc match | query doit contenir {candidate} |
http | match.present, match.absent, ou match.status seul | Voir la gestion des statuts ci-dessous |
spf_include | match.contains contre le graphe d'includes SPF résolu | |
dmarc_rua | match.contains contre les destinations de rapports DMARC | |
cname_target | query est un suffixe d'hébergement nu | Appliqué aux hôtes découverts par ct ; * correspond à un label |
disabled: true met une signature en attente sans perdre la recherche derrière
elle. notes: transporte les conseils de l'analyste jusqu'au rapport.
Lancez yowie -validate après édition. La validation est stricte — une clé
inconnue est une erreur, pas un no-op silencieux — et les packs sont aussi
vérifiés par go test, donc une faute de frappe ne peut pas discrètement vous
coûter de la couverture dans tous les futurs scans.