Blog
So übernehmen Sie eine Subdomain in Google Cloud DNS

Ein Angreifer kann Ihre DNS-Subdomäne in Google Cloud DNS übernehmen, wenn Sie auf eine verwaltete Zone in Cloud DNS verweisen, die nicht mehr existiert. In diesem Blog werde ich Ihnen zeigen, wie dies geschieht und wie Sie eine mögliche Fehlkonfiguration erkennen können. Mit Google Cloud DNS können Sie eine verwaltete Zone für jeden DNS-Domainnamen erstellen, auch für Domains, die Sie nicht besitzen. Wenn Sie eine verwaltete DNS-Zone erstellen, wird Ihre Domain einem von sieben Shards von Cloud DNS-Nameservern zugewiesen. Um einem Angreifer die Übernahme Ihrer Subdomain zu ermöglichen, gehen Sie wie folgt vor:
- die dns-verwaltete Zone erstellen
- den NS-Eintrag zur übergeordneten Domäne hinzufügen
- die DNS-verwaltete Zone löschen
- warten Sie auf den Angriff...
- Angreifer erstellt dns-verwaltete Zone
Erstellen Sie die DNS-verwaltete Zone
Beginnen wir also mit der Erstellung der verwalteten Zone für die Subdomäne shop.binx.io.
gcloud dns managed-zones create shop-binx-io
--dns-name shop.binx.io
--format 'value(nameServers)'
ns-cloud-b1.googledomains.com.;ns-cloud-b2.googledomains.com.;ns-cloud-b3.googledomains.com.;ns-cloud-b4.googledomains.com.
Diese verwaltete Zone wird nun von Shard b der Google Cloud DNS-Nameserver bedient.

Zum Zeitpunkt der Erstellung dieses Artikels gibt es sechs Shards: ns-cloud-a bis ns-cloud-f.
den NS-Eintrag zur übergeordneten Domäne hinzufügen
Um diese verwaltete Zone zu aktivieren, fügen Sie die Nameserver zur verwalteten Zone von binx.io hinzu:
gcloud dns record-sets create shop.binx.io.
--type NS
--zone binx-io
--ttl 300
--rrdatas ns-cloud-b1.googledomains.com.,ns-cloud-b2.googledomains.com.;ns-cloud-b3.googledomains.com.;ns-cloud-b4.googledomains.com.
Jetzt löst Cloud DNS die Domain shop.binx.io mit unserer verwalteten Zone auf.
dig NS shop.binx.io
;shop.binx.io. IN NS
;; ANSWER SECTION:
shop.binx.io. 299 IN NS ns-cloud-b1.googledomains.com.
shop.binx.io. 299 IN NS ns-cloud-b4.googledomains.com.
shop.binx.io. 299 IN NS ns-cloud-b3.googledomains.com.
shop.binx.io. 299 IN NS ns-cloud-b2.googledomains.com.
die verwaltete Zone löschen
Dies ist der gefährliche Teil: Löschen Sie die verwaltete Zone, ohne den NS-Eintrag aus der übergeordneten Domäne zu entfernen.
gcloud dns managed-zones delete shop-binx-io
Der Nameserver-Verweis ist jetzt ein hängender Verweis. DNS-Anfragen werden immer noch an den b Shard von Google Cloud DNS gesendet, aber es gibt dort keine Daten.
warten Sie auf den Angriff...
Jetzt ist es nur noch eine Frage der Zeit, bis jemand herausfindet, dass Ihre Subdomain nicht mehr aufgelöst wird. Und entdeckt, dass sie auf einen Google Cloud DNS-Nameserver zeigt.
Angreifer erstellt dns-verwaltete Zone
Der Angreifer muss nun nur noch die verwaltete Zone in seinem eigenen Projekt neu erstellen, bis Cloud DNS seine verwaltete Zone demselben Shard zuweist.
gcloud dns managed-zones create attempt-1
--dns-name shop.binx.io.
--format 'value(nameServers)'
ns-cloud-a1.googledomains.com.;ns-cloud-a2.googledomains.com.;ns-cloud-a3.googledomains.com.;ns-cloud-a4.googledomains.com
Miss! Das ist der
gcloud dns managed-zones create attempt-2
--dns-name shop.binx.io.
--format 'value(nameServers)'
ns-cloud-b1.googledomains.com.;ns-cloud-b2.googledomains.com.;ns-cloud-b3.googledomains.com.;ns-cloud-b4.googledomains.com
Bingo! Da es nur sechs Shards gibt, braucht es im Durchschnitt drei Versuche. Jetzt hat der Angreifer die Kontrolle über den DNS-Subdomänennamen shop.binx.io. Dies ermöglicht es dem Angreifer, Zertifikate zu generieren und den Datenverkehr auf eine bösartige Website umzuleiten. Beachten Sie, dass ein Angreifer Ihnen auch die Möglichkeit verweigern kann, eine verwaltete Zone für eine Subdomain zu erstellen, die Ihnen gehört. Wenn Sie sechs verwaltete Zonen für Ihren Domänennamen erstellen, gibt es keine Shards mehr, die Ihre Domäne bedienen können. Dies führt zu dem folgenden Fehler:
Die Domain 'shop.binx.io.' (oder ihre untergeordneten Domänen) ist möglicherweise bereits reserviert oder registriert, durch eine Richtlinie verboten oder es sind keine DNS-Nameserver-Shards mehr für den Namen vorhanden. Für weitere Informationen siehe https://cloud.google.com/dns/quotas#nameserver_limits
Überprüfung der organisatorischen Integrität von Cloud DNS
Um die Integrität der von Cloud DNS verwalteten Zonen in Ihrem Unternehmen zu überprüfen, können Sie den cloud-dns-integrity-checker verwenden. Er liest alle von DNS verwalteten Zonen in Ihrem Unternehmen und prüft die referenzielle Integrität der Nameservereinträge. t meldet:
- Nameservereinträge, die im Internet nicht aufgelöst werden können.
- Unstimmigkeiten zwischen definierten und tatsächlichen Nameservereinträgen.
- doppelte verwaltete Zonen in der Organisation.
- NS-Einträge ohne eine passende verwaltete Zone in der Organisation. Geben Sie zur Ausführung ein:
cloud-dns-integrity-checker -organization xebia.com
2022/01/17 21:17:21 INFO: checking DNS nameserver integrity for organization xebia.com
2022/01/17 21:17:22 INFO: checking nameserver integrity for somebody-else.google.binx.dev.
2022/01/17 21:17:22 ERROR: mismatch in nameserver configuration for managed zone somebody-else.google.binx.dev. for domain somebody-else-google-binx-dev in project speeltuin-mvanholsteijn. expected
ns-cloud-c1.googledomains.com.
ns-cloud-c2.googledomains.com.
ns-cloud-c3.googledomains.com.
ns-cloud-c4.googledomains.com.
got
ns-cloud-b1.googledomains.com.
ns-cloud-b2.googledomains.com.
ns-cloud-b3.googledomains.com.
ns-cloud-b4.googledomains.com.
2022/01/17 21:17:22 INFO: checking nameserver integrity for google.binx.dev.
2022/01/17 21:17:22 INFO: checking nameserver integrity for mismatch.google.binx.dev.
2022/01/17 21:17:23 ERROR: unresolved nameservers for domain mismatch.google.binx.dev. in managed zone google-binx-dev of project speeltuin-mvanholsteijn: lookup mismatch.google.binx.dev. on [fd00::2e91:abff:fea1:b7b6]:53: server misbehaving
2022/01/17 21:17:23 INFO: checking nameserver integrity for somebody-else.google.binx.dev.
2022/01/17 21:17:23 INFO: checking nameserver integrity for xke.xebia.com.
2022/01/17 21:17:23 ERROR: unresolved nameservers for domain xke.xebia.com. of managed zone xke-xebia-com in project speeltuin-mvanholsteijn-2: lookup xke.xebia.com. on 192.168.188.1:53: no such host
2022/01/17 21:17:23 INFO: checking nameserver integrity for ttn.binx.io.
2022/01/17 21:17:23 INFO: checking nameserver integrity for playf.internal.
2022/01/17 21:17:23 ERROR: unresolved nameservers for domain playf.internal. of managed zone test-zone-internal in project playground-fchyla: lookup playf.internal. on 192.168.188.1:53: no such host
2022/01/17 21:17:23 INFO: checking nameserver integrity for xke.xebia.com.
2022/01/17 21:17:23 ERROR: unresolved nameservers for domain xke.xebia.com. of managed zone xke-xebia-com in project xke-nxt: lookup xke.xebia.com. on 192.168.188.1:53: no such host
2022/01/17 21:17:24 INFO: checking nameserver integrity for mismatch.google.binx.dev.
2022/01/17 21:17:24 ERROR: unresolved nameservers for domain mismatch.google.binx.dev. of managed zone mismatch-google-binx-dev in project speeltuin-mvanholsteijn: lookup mismatch.google.binx.dev. on [fd00::2e91:abff:fea1:b7b6]:53: server misbehaving
2022/01/17 21:17:24 INFO: checking nameserver integrity for my.dns.binx.io.
2022/01/17 21:17:24 ERROR: unresolved nameservers for domain my.dns.binx.io. of managed zone my-dns-zone in project speeltuin-mvanholsteijn: lookup my.dns.binx.io. on 192.168.188.1:53: no such host
2022/01/17 21:17:25 INFO: checking nameserver integrity for u.girlsday.fun.
2022/01/17 21:17:25 ERROR: unresolved nameservers for domain u.girlsday.fun. of managed zone u-girlsday-fun in project girlsday: lookup u.girlsday.fun. on 192.168.188.1:53: no such host
2022/01/17 21:17:25 ERROR: domain mismatch.google.binx.dev. has a nameserver record in google-binx-dev, but there is no managed zone for it in this organization
2022/01/17 21:17:25 ERROR: domain somebody-else.google.binx.dev. has a nameserver record in google-binx-dev, but there is no managed zone for it in this organization
Fazit
Ein Angreifer kann Ihre DNS-Subdomäne in Google Cloud DNS übernehmen, wenn Sie die verwaltete Zone aus Ihrem Projekt löschen, ohne die zugehörigen Nameserver-Einträge zu entfernen. Sie müssen also die NS-Einträge entfernen, wenn Sie eine verwaltete Zone löschen. Der cloud-dns-integrity-checker kann Probleme in der Cloud DNS-Konfiguration Ihrer GCP-Organisation erkennen. Beachten Sie, dass die gleiche Art von Fehler bei der Verwendung von AWS's Route53 auftreten kann. Bild von Darkmoon_Art aus Pixabay
Verfasst von

Mark van Holsteijn
Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.
Unsere Ideen
Weitere Blogs
Contact



