Hızlı cevap: Saldırı yüzeyi keşfi, bir kurumun internete açık tüm varlıklarını sistematik olarak haritalama işidir: alt alan adları, dokümante edilmemiş API uçları, JavaScript paketleri içindeki endpoint ve parametreler, tek sayfa uygulama rotaları. Modern bir web uygulamasının gerçek saldırı yüzeyi, ana alan adının çok ötesine geçer ve sıklıkla kurumun kendi envanterinde bile görünmez. Yapay zekâ destekli otomasyon bu keşfi derinleştirir, çünkü sertifika ve DNS kayıtları üzerinden pivot yapar, JavaScript chunk grafını takip eder ve canlı ağ trafiğindeki XHR isteklerini yakalar. Belirleyici ilke şudur: keşfedilen her varlık bir ipucudur, kanıt değildir. Bulunan bir API ucu canlı, erişilebilir ya da zafiyetli olmayabilir, bu yüzden keşif çıktıları yetkili ve kontrollü doğrulamayla sınanır. Keşif daima kapsam içinde kalır, üçüncü taraf ve CDN host'larına aktif saldırı yapılmaz.

Bir saldırgan, savunmacının haritasında olmayan kapıdan girer. Sızma testinin ve kırmızı takım çalışmasının sonucu, çoğu zaman exploit anında değil, ondan çok önce, keşif aşamasında belirlenir. Ekibin göremediği bir alt alan adı, unutulmuş bir hazırlık (staging) ortamı ya da yalnızca JavaScript içinde geçen bir yönetim ucu, geri kalan tüm güvenlik yatırımını anlamsız kılabilir. Saldırı yüzeyi yönetimi (Attack Surface Management, ASM) tam da bu kör noktayı kapatmayı hedefler.

Bu yazı, modern bir web uygulamasının gerçek saldırı yüzeyini çıkarmanın kaynaklarını ve yöntemlerini anlatır. Odak noktamız dört katman: alt alan adı keşfi, gizli API uçları, JavaScript bundle madenciliği ve tek sayfa uygulama rotaları. Yapay zekânın bu süreci nasıl hızlandırıp derinleştirdiğini de ele alırız. Baştan dürüst olalım: otomasyon keşfin hacmini ve hızını büyütür, sonucun kesinliğini tek başına garanti etmez.

Gerçek saldırı yüzeyi neden göründüğünden büyük

Saldırı yüzeyi, bir saldırganın sisteme girmeyi ya da veri sızdırmayı deneyebileceği tüm temas noktalarının toplamıdır. Çoğu kurum bu yüzeyi yalnızca ana web sitesi olarak düşünür, oysa gerçek tablo çok daha geniştir. Pazarlama ekibinin açtığı bir kampanya alt alanı, bir geliştiricinin test için ayağa kaldırıp unuttuğu sunucu, satın alınan bir şirketten devralınan eski altyapı, mobil uygulamanın konuştuğu arka uç API'leri. Bunların hepsi yüzeyin parçasıdır ve hiçbiri ana sayfada görünmez.

Pasif bilgi toplama, bu haritanın ilk katmanını hedefe tek bir paket bile göndermeden çıkarır. OSINT keşfi ve pasif bilgi toplama yazımızda anlattığımız gibi, sertifika kayıtları, arama motoru sonuçları ve web arşivleri zaten dışarıda duran veridir. Google dorking ve Shodan ile pasif keşif teknikleri, indekslenmiş panelleri ve açıkta kalmış servisleri hedefe dokunmadan ortaya serer. Keşfin bundan sonraki adımı, bu pasif ipuçlarını aktif doğrulamayla birleştirerek canlı varlık listesine dönüştürmektir.

Keşif kaynağı, ne bulur

Aşağıdaki tablo, saldırı yüzeyi keşfinin başlıca kaynaklarını, her birinin pasif mi aktif mi olduğunu, ne tür varlık ürettiğini ve sınırını özetler. En önemli sütun sonuncusudur: her kaynak bir aday üretir, kesin bulgu değil.

Keşif kaynağı Pasif / Aktif Ne bulur Sınır ve uyarı
Sertifika şeffaflığı (CT log) Pasif Alt alan adları, sertifika SAN girdileri Geçmiş kayıt olabilir, canlılık teyidi şart
Pasif DNS ve toplayıcı servisler Pasif Eski ve aktif alt alanlar, kayıt tipleri Veri bayat olabilir
Arama motoru, dork ve web arşivi Pasif İndekslenmiş sayfalar, eski uçlar, sızmış dosyalar Silinen içerik hâlâ listede durabilir
DNS kaba kuvvet ve permütasyon Aktif Sözlükte olmayan gizli alt alanlar Trafik üretir, wildcard yanılgısı olur
JavaScript bundle çözümleme Aktif, düşük iz API uçları, parametreler, iç host adları Uç ölü kod ya da erişimsiz olabilir
Chunk grafı ve lazy route takibi Aktif, düşük iz Yalnız belirli rollere yüklenen rotalar ve paneller Rota bulmak erişim demek değil
Canlı ağ XHR ve fetch yakalama Aktif Çalışma anında tetiklenen gerçek uçlar Kimlik doğrulama arkası görülmeyebilir
Port ve servis taraması Aktif Açık portlar, servisler, sürüm banner'ları Sürüm parmak izi bir hipotezdir

Tablonun ritmi tek başına bir ders verir: pasif kaynaklar risk almadan zengin bir başlangıç listesi sunar, aktif kaynaklar bu listeyi doğrular ve derinleştirir. İkisi birbirinin yerine değil, peş peşe çalışır.

Alt alan adı keşfi: sertifika ve DNS pivotu

Alt alan adı keşfi, bir kök alan adına bağlı tüm isim kayıtlarını ortaya çıkarma işidir. En verimli pasif kaynak, sertifika şeffaflığı günlükleridir. Her TLS sertifikası herkese açık bir deftere kaydedildiği için, bir kuruma kesilmiş sertifikaların SAN (alternatif ad) alanları çoğu zaman vpn, test, odeme, internal gibi dışarıya hiç tanıtılmamış alt alanları açık eder. Pasif DNS servisleri ise geçmişte çözümlenmiş isimleri saklar, böylece bugün kaldırılmış ama hâlâ erişilebilir eski sistemleri görmenizi sağlar.

Pivot, keşfin asıl derinleştiği yerdir. Bir sertifikanın SAN listesi yeni alan adlarına, bir alan adının IP adresi aynı sunucudaki komşu sitelere, bir CNAME zinciri bulut sağlayıcısındaki asıl kaynağa götürür. Yapay zekâ destekli otomasyon burada iki işi hızlandırır: aday isimleri permütasyonla üretip toplu çözümler, ardından anlamlı olanları kümeler. Yine de dürüst sınırı unutmamak gerekir. Çözümlenen bir alt alan adı, otomatik olarak canlı, kapsam içi ya da sizin olduğu anlamına gelmez. Wildcard DNS yapılandırması rastgele her ismi çözümleyebilir ve bu sahte bir bolluk yanılgısı yaratır. Terk edilmiş bir CNAME kaydı bir alt alan ele geçirme (subdomain takeover) ihtimaline işaret edebilir, ama bu bir ihtimaldir, kanıt değildir. İddiayı kanıta çevirmek, yetkili ve kontrollü bir doğrulama ister.

JavaScript bundle madenciliği: chunk grafı ve canlı XHR

Modern web uygulamaları, mantığın büyük kısmını tarayıcıya gönderilen JavaScript paketleri içinde taşır. Bu paketler saldırı yüzeyi keşfinin en zengin ama en az bakılan madenidir. Bir bundle'ın içinde API çağrıları, uç noktaların beklediği parametreler, iç host adları, özellik bayrakları ve zaman zaman kötü bir alışkanlıkla gömülmüş anahtarlar bulunur. Bu uçların çoğu resmi API dokümanında yoktur. Resmi envanterde görünmeyen bu tür uçlara gölge API denir ve gölge API keşfi ile envanter güvenliği yazımız bu konuyu ayrıntılandırır.

Asıl derinlik chunk grafında saklıdır. Paketleme araçları kodu, yalnızca gerektiğinde yüklenen parçalara (chunk) böler. Yönetici paneline ait bir ekranın kodu, siz o role girmeden asla ekrana gelmez, ama o parçanın adı ve yolu ana paketin chunk haritasında yazılıdır. Bu haritayı takip edip parçaları özyinelemeli şekilde çözerek, oturum açmadan görülemeyecek rotaları ve uçları haritalamak mümkündür. Üretimde yanlışlıkla açık bırakılmış kaynak haritaları (source map) ise sıkıştırmayı geri çözerek orijinal dosya ağacını ve yorum satırlarını bile görünür kılar.

Statik çözümlemenin göremediği uçlar için canlı ağ yakalaması devreye girer. Başsız (headless) bir tarayıcı uygulamayı gezerken üretilen tüm XHR ve fetch istekleri kaydedilir, böylece yalnızca bir butona basınca ya da belirli bir akışta tetiklenen uçlar da ele geçer. Statik ve canlı yöntem birbirini tamamlar. Burada da sınır nettir: bir paket içinde bir uç dizesi görmek, o ucun canlı, erişilebilir ya da zafiyetli olduğunu göstermez. Dizge ölü kod olabilir, bir özellik bayrağının arkasında kapalı durabilir, kimlik doğrulama isteyebilir ya da bir üçüncü tarafa ait olabilir. Keşif bir harita çıkarır, bu haritadaki her kapının açık olduğunu iddia etmez.

Pasif ve aktif keşif farkı

Pasif keşif, hedefe hiç dokunmadan üçüncü taraf verilerinden harita çıkarır. Aktif keşif, hedefe doğrudan istek göndererek bu haritayı doğrular ve tamamlar. İkisinin dengesi, hem etik hem teknik bir karardır.

Boyut Pasif keşif Aktif keşif
Hedefle temas Yok, üçüncü taraf veriden derlenir Var, doğrudan hedefe istek gider
İz ve kayıt Hedef loglarında görünmez Hedef loglarında görünür
Güncellik Bayat olabilir Anlık ve güncel
Kapsam Eksik kalabilir Daha eksiksiz
Yetki ihtiyacı Düşük Kapsam ve yazılı yetki şart

Doğru yaklaşım, pasif keşifle geniş ve risksiz bir taban çıkarmak, sonra aktif keşifle bu tabanı yetki sınırları içinde canlıya dönüştürmektir. Pasif aşamanın asla gözden kaçmaması gerekir, çünkü en kritik bulgular sıklıkla eski sertifika kayıtlarında ve arşivlenmiş sayfalarda saklıdır.

Kapsama ilkesi ve varlık sınırı

Saldırı yüzeyi keşfinin iki yön gösteren pusulası vardır. Birincisi kapsama ilkesidir: her alt alan ve her sayfa taranmalı, bakılmadık yer kalmamalıdır. Bir saldırgan en zayıf halkayı arar, dolayısıyla keşif yalnızca ana uygulamaya odaklanıp onlarca ikincil varlığı atlarsa, en kritik açık tam da atlanan yerde kalabilir. Çok ajanlı otomasyon bu yüzden değerlidir. Otonom sızma testi ajanları ve çok ajanlı swarm yazımızda anlattığımız gibi, keşfedilen her alt alan kendi keşif ve test akışını tetikleyebilir, böylece yüzeyin tamamı eşzamanlı ve tutarlı biçimde işlenir. Keşif sonuçları daha sonra yapay zekâ destekli zafiyet taraması ile geleneksel tarayıcının farkı yazısında anlatılan tarama katmanını besler. Keşfedilen canlı host'larda açık port ve servisleri haritalamak için ise Nmap ile ağ keşfi ve port tarama adımı devreye girer.

İkinci yön varlık sınırıdır ve kapsama ilkesi kadar bağlayıcıdır. Bir web uygulaması, size ait olmayan pek çok host ile konuşur: yazı tipi sunucuları, analitik servisleri, ödeme sağlayıcıları, içerik dağıtım ağları (CDN). Bu üçüncü taraf host'lar keşif sırasında envantere not edilir, çünkü saldırı yüzeyinin haritasında yer alırlar, ama onlara aktif saldırı ya da zafiyet testi yapılmaz. Sadece pasif recon uygulanır. Yetki ve kapsam yalnızca sizin kontrolünüzdeki varlıkları kapsar. Bir CDN ucunu test etmek, başkasının altyapısına izinsiz dokunmak demektir ve bu hem etik hem hukuki bir ihlaldir. İyi bir keşif motoru, hedef alan adını merkez alır ve üçüncü taraf host'ları otomatik olarak yalnızca gözlem moduna düşürür.

KAOS ve DSET yaklaşımı

DSET'in yerel yapay zekâ motoru KAOS, bir hedefi değerlendirirken önce saldırı yüzeyini çıkarır: sertifika ve DNS pivotuyla alt alan adlarını toplar, JavaScript paketlerini ve chunk grafını çözer, canlı ağ trafiğindeki XHR isteklerini yakalar ve bulduğu her varlığı keşif listesine ekler. Çok ajanlı akışta her alt alan kendi backend ve zafiyet incelemesini tetikler, böylece kapsama ilkesi pratikte uygulanır. KAOS hakkında daha fazla bilgi için KAOS yapay zekâ siber güvenlik tarama aracı sayfamıza bakabilirsiniz.

Burada bu içerik kümesinin omurgası olan ilkeyi tekrar etmek gerekir: tespit, kanıt değildir. KAOS, JavaScript içinde bulduğu bir ucu ya da çözümlediği bir alt alanı doğrudan açık ilan etmez. Bu bulgular bir aday varlık olarak işaretlenir, ardından canlılığı ve erişilebilirliği kontrollü biçimde teyit edilir. Motor over-claim frenine sahiptir: bir keşif sinyalini kesin zafiyet gibi raporlamaz, çünkü tarayıcı bulgusu bir hipotezdir ve doğrulama şarttır. Üçüncü taraf ve CDN host'ları ise otomatik olarak yalnızca gözlem moduna alınır, aktif test dışında tutulur, böylece yetki ve kapsam korunur. Amaç, saldırı yüzeyinin tamamını görmek ama yalnızca yetkili varlıklar üzerinde ve yalnızca kanıta dayanarak konuşmaktır.

Sık sorulan sorular

Saldırı yüzeyi keşfi ile zafiyet taraması arasındaki fark nedir? Saldırı yüzeyi keşfi, bir kurumun internete açık tüm varlıklarını bulma ve haritalama aşamasıdır: alt alan adları, API uçları, JavaScript içindeki rotalar ve açık servisler. Zafiyet taraması ise bu haritadaki varlıklarda bilinen açıkları arama aşamasıdır. Keşif soruyu sorar, hangi kapılar var; tarama o kapıların kilitli olup olmadığını dener. Keşif eksikse tarama da eksik kalır, çünkü görülmeyen bir varlık test edilemez. İkisi birbirini izleyen ama ayrı adımlardır ve iyi bir keşif, taramanın kapsamını belirler.

JavaScript bundle içinde bulunan bir API ucu kesin bir güvenlik açığı mıdır? Hayır. JavaScript içinde bir uç dizesi görmek, o ucun canlı, erişilebilir ya da zafiyetli olduğunu kanıtlamaz. Dizge kullanılmayan ölü kod olabilir, kapalı bir özellik bayrağının arkasında durabilir, güçlü kimlik doğrulama isteyebilir ya da sizin kapsamınız dışındaki bir üçüncü tarafa ait olabilir. Bu bulgu değerli bir ipucudur ve test listesine girer, ama bir güvenlik açığı olarak ancak yetkili ve kontrollü bir doğrulamadan sonra raporlanabilir. Tespit ile kanıt arasındaki bu ayrım, sorumlu bir keşif sürecinin temelidir.

Üçüncü taraf ve CDN host'ları keşifte nasıl ele alınır? Üçüncü taraf ve CDN host'ları keşif sırasında envantere kaydedilir, çünkü uygulamanın saldırı yüzeyinin bir parçasıdırlar ve neye bağımlı olduğunuzu gösterirler. Ancak bu host'lara aktif saldırı ya da zafiyet testi uygulanmaz, yalnızca pasif gözlem yapılır. Sebebi hem hukuki hem etiktir: başkasının altyapısına yetkisiz dokunmak kapsam ihlalidir. Doğru yaklaşım, yetkiyi yalnızca kendi kontrolünüzdeki varlıklara uygulamak ve dış bağımlılıkları yalnızca görünürlük için listelemektir.

Kaynaklar

Kurumunuzun gerçek saldırı yüzeyini alt alan adından JavaScript paketlerine kadar eksiksiz haritalamak, keşif bulgularını kanıt temelli biçimde doğrulamak ve kapsam sınırlarını korumak için DSET ile iletişime geçin. Ekibimiz Ankara Hacettepe Teknokent merkezinden saldırı yüzeyi yönetimi ve varlık keşfi süreçlerinize uçtan uca destek verir.