Subdomains finden

Listen Sie die Hostnamen einer Domain auf, die in öffentlichen Certificate-Transparency-Logs vorkommen: eine schnelle Bestandsaufnahme dessen, wofür ein TLS-Zertifikat ausgestellt wurde.

Woher die Liste stammt

Jedes öffentlich vertrauenswürdige TLS-Zertifikat wird in Certificate-Transparency-Logs eingetragen: offenen Registern, an die nur angehängt werden kann und die Browser voraussetzen. Die Hostnamen in jedem Zertifikat sind damit öffentlich. OrbitProbe durchsucht diese Logs über crt.sh und sammelt die Namen, die unter die eingegebene Domain fallen.

Die Liste ist also ein Verzeichnis von Zertifikaten, nicht des DNS, und sie ist nicht vollständig. Ein Name kann aufgeführt sein und nicht mehr existieren. Ein Name, der immer nur ein Wildcard-Zertifikat oder gar keines verwendet hat, fehlt. Wildcard-Einträge wie *.example.com werden getrennt angezeigt, weil sie Namen abdecken, ohne sie offenzulegen.

Wofür das nützlich ist

Inhaber finden damit vergessene Hosts: die Staging-Umgebung von vor drei Jahren, ein Testsystem, das ein Dienstleister aufgesetzt hat, ein Zertifikat, das jemand ausgestellt hat, der dazu gar nicht in der Lage hätte sein dürfen. Es ist auch der schnellste Weg zu sehen, dass Zertifikate öffentlich sind. Das ist ein Grund, keine Geheimnisse in Hostnamen zu schreiben.

Prüfen Sie bei Ihren eigenen Domains jeden unbekannten Namen anschließend mit einer DNS-Abfrage, um zu sehen, ob er noch aufgelöst wird. Verwenden Sie das Tool für Domains, für die Sie verantwortlich sind oder die Sie mit Erlaubnis untersuchen.

So verwenden Sie dieses Tool

  1. Domain eingeben. Tippen Sie einen Domainnamen wie example.com ein oder fügen Sie ihn ein. Eine vollständige URL geht auch: Schema, Pfad und ein führendes www werden entfernt.
  2. Zertifikatslogs durchsuchen. Das Tool fragt öffentliche Certificate-Transparency-Logs nach Zertifikaten, die unter der Domain ausgestellt wurden.
  3. Namen durchgehen. In Zertifikaten gefundene Hostnamen werden mit dem Datum des jüngsten Zertifikats aufgelistet. Die Liste ist nicht vollständig: Namen ohne öffentliches Zertifikat erscheinen nicht.

Dasselbe auf der Kommandozeile

Dieselbe Prüfung im Terminal. Die Befehle verwenden example.com: Ersetzen Sie es durch Ihren eigenen Namen.

  • Namen aus crt.sh (benötigt jq)curl -s "https://crt.sh/?q=%25.example.com&output=json" | jq -r ".[].name_value" | sort -u

Häufige Fragen

Wie finde ich alle Subdomains einer Domain?

Eine vollständige öffentliche Liste gibt es nicht: Das DNS lässt keine Aufzählung zu. Certificate-Transparency-Logs sind die beste offene Quelle und zeigen jeden Namen, für den es ein öffentliches Zertifikat gab.

Warum fehlt eine Subdomain, die ich kenne?

Vermutlich hatte sie nie ein eigenes öffentliches Zertifikat: Sie nutzt vielleicht ein Wildcard-Zertifikat, unverschlüsseltes HTTP oder eine interne Zertifizierungsstelle.

Existiert eine aufgeführte Subdomain noch?

Nicht unbedingt. Das Log bewahrt Zertifikate dauerhaft auf. Führen Sie eine DNS-Abfrage für den Namen aus, um zu sehen, ob er heute aufgelöst wird.

Kann ich meine Subdomains aus diesen Logs heraushalten?

Nicht, wenn sie öffentlich vertrauenswürdige Zertifikate verwenden. Ein Wildcard-Zertifikat verbirgt einzelne Namen. Eine interne Zertifizierungsstelle umgeht die Logs, ihr vertrauen aber nur Geräte, die Sie selbst verwalten.

Warum ist die Suche fehlgeschlagen oder in ein Timeout gelaufen?

Der Suchdienst für die Logs wird von vielen genutzt und ist manchmal langsam, vor allem bei Domains mit vielen Zertifikaten. Eine fehlgeschlagene Suche wird als Fehler gemeldet, nie als „keine Subdomains“. Versuchen Sie es nach einer Minute erneut.