SIBER 2026-06-11 · 7 dk okuma

Subdomain Envanteri: Unuttuğunuz Saldırı Yüzeyini Nasıl Bulursunuz?

Ortalama bir kurumun aktif altyapısı 30-50 subdomain — gerçekte DNS'te kayıtlı sayısı 200-500. Aradaki 400 fark saldırı yüzeyiniz. Pasif keşif teknikleri, hangi araç ne döker, prod'da nasıl uygulanır.

Yazan: Niyazi Önder Duman

Bir Aegis müşterimiz daha geçen ay "biz 12 subdomain'iz" dedi — taradık, 187 tane bulduk. 7 tanesi sertifikası süresi geçmiş, 3 tanesi dangling CNAME (takeover'a açık), 1 tanesi 2 yıl önce kapatılmış ama hala canlı bir Heroku app'i içeriyordu. Çoğu kurumda durum buna benzer.

Bu yazıda subdomain envanteri çıkarmanın 4 pasif yöntemini ve hangi araçların ne döktüğünü paylaşıyorum.

Neden bu kadar fazla subdomain var?

  • Eski geliştirici/ajans: "kampanya2019.sirket.com" — kimsenin haberi yok, hala canlı
  • SaaS subdomain'leri: Mailchimp, Hubspot, Zendesk, vb. CNAME ile bağlanır
  • CDN edge node'ları: CloudFront, Fastly otomatik subdomain açar
  • Test/staging ortamları: "dev-api.sirket.com", "staging.sirket.com"
  • Mobil app backend: "api-mobile.sirket.com" — IOS+Android bunu kullanır
  • E-posta servisleri: SendGrid, Mailgun custom domain ile entegre

1. Sertifika Şeffaflığı (CT Logs) — En güçlü kaynak

Letsencrypt, DigiCert ve diğer CA'lar her sertifika veriliyor public log'a düşürür. crt.sh + censys.io oradan okur.

$ curl -s "https://crt.sh/?q=%25.sirket.com&output=json" | jq -r '.[].name_value' | sort -u
*.sirket.com
api.sirket.com
api-mobile.sirket.com
campaign2019.sirket.com
dev.sirket.com
mail.sirket.com
staging-eski.sirket.com
...

Bu tek komut çoğu kurumda 100-300 satır döker — büyük kısmı şirketin İT ekibinin haberi olmayan altyapı.

2. DNS brute-force (subfinder + sözlük)

CT log'larda olmayan ama yaygın subdomain isimleri (admin, dev, test, vpn, mail, ftp) için DNS'e doğrudan sormak. Projectdiscovery'nin subfinder + amass aracı çoklu kaynaktan toplar:

$ subfinder -d sirket.com -all -silent
$ amass enum -d sirket.com -passive

3. Search engine + GitHub kodu

Google dork: site:*.sirket.com. Genelde indekslenmiş statik içerikten 50-100 tane döker. GitHub'da open-source kod commit'lerinde de hardcoded subdomain'ler bulunur:

$ gh search code "api.sirket.com" --extension=js --extension=py

4. WAF/CDN reverse lookup

Eğer kurum Cloudflare/Akamai arkasındaysa, eski A kaydı geçmişi SecurityTrails veya DNSDumpster'dan görünür. Origin IP buradan sızabilir → WAF bypass riski.

Bulduktan sonra — Aktif probe

200+ subdomain listesi elinizde. Sonraki adım her birinin hala canlı olup olmadığını + ne çalıştırdığını öğrenmek:

$ cat subs.txt | httpx -title -status-code -tech-detect -silent
api.sirket.com         [200] [Node.js] [Express] [Aegis Login]
campaign2019.sirket.com [200] [WordPress 4.7] [PHP 5.6]   # ⚠ KRİTİK CVE
dev.sirket.com         [403] [Forbidden]
staging-eski.sirket.com [200] [DEBUG MODE]                # ⚠ exposing stack
mail.sirket.com        [200] [Postfix admin]              # ⚠ panel exposed

Hangi sinyaller alarm vermeli?

  • Title'da "WordPress" / "phpMyAdmin" / "Jenkins" / "Grafana": Default kurulum kontrol et
  • "DEBUG" / "Stacktrace" / "X-Debug-Token": Production'da kapalı olmalı
  • Status 200 + boş response: Bucket / S3 misconfiguration olabilir
  • CNAME → AWS S3 / Heroku / Azure Storage: Subdomain takeover kontrolü gerek
  • Eski TLS sürümü (1.0/1.1): Browser'lar reject ediyor — patch lazım

Bunu sürekli yapmak şart

Subdomain envanteri tek seferlik bir iş değil — DevOps her hafta yeni endpoint açar, marketing kampanya domain'i alır, üçüncü taraf CNAME yapar. Aegis Scanner haftalık otomatik yapar; diff motoru "geçen hafta yoktu, bu hafta var" diye yeni eklenenleri alarmıyla bildirir.

Daha detaylı: Subdomain takeover nedir, nasıl çalışır →

Aegis ile haftalık otomatik subdomain envanteri başlatın.

Aegis Scanner'ı ücretsiz deneyin

Domain'inizi 15 saniyede tarayın — kayıt olmadan, kart bilgisi olmadan.

Hızlı Tara →