Saldırı yüzeyinizdeki her varlığı sınıflandırmak için bir uygulayıcının kılavuzu


TLDR: Bu makale, uygulayıcıların saldırı yüzeylerindeki her web uygulamasını ve varlığı sınıflandırmak için kullanabilecekleri yöntemleri ve araçları (DNS kayıtlarından ve IP adreslerinden HTTP analizi ve HTML içeriğine) detaylandırır. Varlıklarınızı bir saldırganın bakış açısından görmeyi öğrenerek sadece bir varlığın var olduğunu değil, aynı zamanda tam doğasını da anlamanızı sağlayacaksınız.

“Var olduğunu bilmediğin şeyi güvence altına alamazsınız.” Siber güvenlikte yaygın bir kaçınma (ve iyi bir nedenden dolayı!). Ama gerçek biraz daha karmaşık: sadece bilmek yeterli değil O bir şey var. Varlıklarınızı etkili bir şekilde güvence altına almak için anlamanız gerekir Ne Her biri. Uygun olmadan sınıflandırmadoğru güvenlik süreçlerini veya araçlarını uygulamak bir tahmin oyunu haline gelir.

Senin arasında bir tutarsızlık var düşünmek Nisanlıyorsun ve ne aslında maruz kalmak. Kritik olarak, bir saldırgan sadece ne olduğunu önemsiyor Aslında Onlara erişilebilir, düşündüğünüz şey değil. Detaylandırmadan Araştırma Ortalama bir kuruluşun potansiyel saldırı hedefleri olan karmaşık web uygulamalarının 10’undan 9’unu test ettiğini gösterir.

İnternete maruz kalan birkaç bin varlık belirlediğinizi düşünün. Bir sonraki adım, ne olduğunuzu belirlemektir Aslında maruz kalmak. Farklı araçlar, saldırı yüzeyinizde olanlara bağlı olarak yardımcı olabilir, ancak belirli araçlara hemen odaklanmak yerine, her bir varlığın ne olduğunu anlamak için kullanılan yöntemlere ve veri noktalarına odaklanalım .

Dış içi perspektif için veri noktaları

Sınıflandırma için çok sayıda veri noktası kullanılabilir. Dışarısı, siyah kutu analiz perspektifi varsayarak, bunları tipik bir bağlantı akışı sırasına göre inceleyelim. Dahili ağ verileri veya kaynak koduna dayalı olarak farklı bir yaklaşım gerektirir.

Bu kılavuzda kapsanan varlık sınıflandırma yöntemleri

El sıkışma

  1. DNS: DNS nerede barındırılıyor? Ne tür işaretçiler (A, CNAME, MX, vb.) Kullanılır? Nereye işaret ediyorlar? Bilgilendirici TXT kayıtları var mı (örn. SPF, DKIM, DMARC)?
  2. IPS: IP adresi coğrafi olarak nerede bulunur? Hangi özerk sistem numarası (ASN) ‘e aittir? Bireysel bir IP mi yoksa daha geniş bir aralığın bir parçası mı?
  3. Portlar: Hangi bağlantı noktaları açık veya kapalı? Güvenlik duvarı nasıl davranır (örneğin, TCP’ye karşı UDP tedavisi, reddedilen paketlere karşı düşer)?
  4. Protokol/Şema: Açık bir bağlantı noktasında (örn. HTTP, FTP, SSH) hangi protokol yanıt verir? Yuvalanmış protokoller var mı (örneğin, TLS üzerinden HTTP, HTTP üzerinden websocket)?
  5. SSL/TLS: Hangi Sertifika Otoritesi (CA) sertifikayı yayınladı? Jarm parmak izi ve el sıkışma verileri ne ortaya koyuyor? Hangi konu alternatif adları (SAN’lar) listelenir?

HTTP’ye derin dalış

Daha derin sınıflandırma için mevcut veriler büyük ölçüde karşılaşılan protokole bağlıdır. Bu blog yazısı için, öncelikle web uygulamalarının belkemiği olan HTTP’ye odaklanacağız.

Anahtar HTTP veri noktaları şunları içerir:

  1. Yanıt Kodları: Bu bir 200 TamamA 30x yeniden yönlendirin (ve nereye?) veya 50x Sunucu hatası?
  2. Başlıklar: Yanıt üstbilgileri özellikle zengindir, özel X-Başlıklar, çerezler ve güvenlik başlıkları.
  3. Dosya İmzaları: Bunlar, genellikle bir yanıt gövdesinin ilk birkaç baytında bulunan bir dosyanın ikili verilerinin bir parçasını oluşturan benzersiz tanımlayıcılardır.
  4. İçerik tipi ve uzunluğu: JSON, XML, HTML yanıtı mı? Yanıtın boyutu nedir?

HTML’ye daha fazla

Yanıt HTML ise, daha da derinleşebiliriz:

  1. Favicon: Birçok uygulama varsayılan favicons kullanır. Bu simgelerin karmaşası bilinen yazılımı hızlı bir şekilde tanımlayabilir.
  2. URL Desenleri: URL’lerde tespit edilebilir desenler var mı (örn. /Wp-admin//ateş/v1/belirli sorgu parametre yapıları)?
  3. Meta-etiketler: isim özellikler (örneğin, TanımAnahtar Kelimelerjeneratör) veya HTTP-Equiv Öznitelikler (yanıt başlıklarını simüle etme) altta yatan teknolojileri veya CMS’yi ortaya çıkarabilir.
  4. Form etiketleri: Yapı, giriş alanı adları ve aksiyon Formlardaki URL’ler (özellikle giriş formları) belirli sistemleri gösterebilir.
  5. Koddaki bağlantılar: Bilinen kaynaklara, belgelere veya lisans anlaşmalarına sabit kodlanmış bağlantılar var mı?
  6. Kod Desenleri: JavaScript, HTML yapısı veya CSS’deki saptanabilir kalıplar belirli çerçevelere veya kütüphanelere işaret edebilir.
  7. Üçüncü Taraf Kaynakları: Hangi harici kaynaklar (komut dosyaları, görüntüler, API’ler, piksel izleme) yükleniyor ve nereden?

Diğer Protokoller

HTTP ve HTML yolundan aşağı inmediysek (örneğin, bir SSH veya SMTP sunucusuyla karşılaştık), daha sonra hangi yazılım bileşenlerinin çalıştığını anlamak için ikili tepkiye veya protokole özgü el sıkışma verilerine daha fazla bakarız. Ancak, bu başka bir makale için bir konu.

Veri noktaları paketlenmemiş

Her veri noktasını ayrı ayrı incelediğimizde, parmak izi ve maruz kalan varlıkları anlamak için önemli fırsatlar ortaya çıkar. Bunları birleştirmek, daha da zengin bilgiler sağlar:

DNS

  • NS kayıtları ve cnames: Barındırma sağlayıcılarını (örneğin AWS, Azure, GCP), üçüncü taraf SaaS uygulamalarını ve CDNS/WAF’leri anlamak için kullanılabilir. Alan adının kendisinin analiz edilmesi genellikle bu bilgileri verir.
  • DNS Güvenlik Kayıtları (örn. SPF, DMARC): Tedarik Zinciri Risk Değerlendirmesi veya Sosyal Mühendislik Saldırısı Vektörleri ile ilgili olabilecek pazarlama otomasyonu veya faturalandırma gibi işlevler için kullanılan üçüncü taraf hizmetleri ortaya çıkarabilir.

Araçlar ve Teknikler: Manuel inceleme ile yapılabilir. kazmak Küçük ölçekli analiz için komut ve temel insan örüntüsü tanıma. Daha büyük ölçekli testler için, Massdns gibi açık kaynaklı araçlar oldukça etkili olabilir.

IPS

  • ASN (Otonom Sistem Numarası): Organizasyonel mülkiyet, ağ büyüklüğü ve kapsamı ve coğrafi ayak izi belirlemeye yardımcı olur. ASN verileri, satıcılar genellikle IP bloklarını farklı ürünlere veya hizmetlere tahsis ettikleri için temel teknoloji sağlayıcılarını gösterebilir.

Araçlar ve Teknikler: NMAP IP ve bağlantı noktası taraması için yaygın olarak kullanılan bir araçtır. Büyük ölçekli tarama için alternatifler Tramvay Ve Maskan. ASN bilgileri için whois aramaları (komut satırı veya web tabanlı) gereklidir.

Port

Hangi bağlantı noktalarının açık olduğunu anlamak, güvenlik duvarının yerinde ve çalışan altta yatan sistemlerin belirlenmesine yardımcı olabilir.

  • Tek bağlantı noktaları: Belirli bağlantı noktaları genellikle belirli hizmetlerle ilişkili olsa da (örneğin, HTTP için 80 bağlantı noktası), bu garanti edilmez. Yanlış yapılandırmalar, liman ve hizmetlerin garip kombinasyonlarına yol açabilir. Port durumu kanıt değil, bir göstergedir; Onay için hizmetin araştırılması gereklidir.
  • Portun kombinasyonu: Açık portların bazı kombinasyonları temel bir sistemi güçlü bir şekilde gösterebilir. Örneğin, Cloudflare genellikle 13 açık bağlantı noktasından oluşan standart bir set sunarken, Imperva Incapsula tüm TCP bağlantı noktalarını açık olarak gösterebilir.
  • Port “Sahtekarlık”/Güvenlik Duvarı Davranışı: Bir güvenlik duvarı bir bağlantı noktası taramasını algılarsa, açık bağlantı noktası göstererek, paketleri düşürerek veya tüm bağlantı noktalarının açık olduğunu göstererek yanıt verebilir. Bu davranışı ayrıntılı olarak analiz etmek, kullanılan kenar cihazı (güvenlik duvarı/waf) hakkında ipuçları sağlayabilir.
  • Hatalı biçimlendirilmiş istekler: RFC’lere uymayan kötü biçimlendirilmiş istekler göndermek bazen standart isteklerden daha fazla bilgi ortaya çıkaran yanıtlar ortaya çıkarabilir.

Araçlar ve Teknikler: Ölçekte tarama için, maskan Hızlıdır, ancak daha fazla sayıda yanlış pozitif üretebilir. Hız ve doğruluk arasında karar vermeniz gerekecek, çünkü genellikle değiş tokuşlar içeriyorlar. NMAP Daha fazla doğruluk ve hizmet algılama özellikleri sunar.

Protokol/Şema

Belirlenen protokol/şema, ana bilgisayar adının kombinasyonuna bağlanır (örneğin, Ev sahibi Etki alanı önü veya SNI kullanarak TLS tabanlı yönlendirme, IP adresi ve bağlantı noktası için başlık.

  • İç içe iletişim: İletişim iç içe geçebilir. Birçok temel araç, ister kasıtlı tasarım veya yanlış yapılandırmadan kaynaklanıyor olsun, bu iç içe iletişimi yakalayamayabilir. Bu, gerçekten neyin maruz kaldığının eksik bir şekilde anlaşılmasına yol açabilir.

Araçlar ve Teknikler: NMAP en bilinen hizmettir. Gibi diğer araçlar JA4T (TLS istemcisi/sunucu parmak izi için) ve parmak izi Protokol ve hizmetlerin belirlenmesine de yardımcı olabilir.

SSL/TLS

  • Sertifika Otoritesi: Sertifikalar manuel veya otomatik olarak güncelleniyor mu (örneğin, şifreleme sertifikaları kısa ömürlü ve genellikle otomatik olarak)? Altyapının farklı bölgelerinde farklı sertifika yetkilileri mi kullanılıyor? Bu, iç süreçlere ve hatta tedarik zinciri elemanlarına işaret edebilir.
  • Konu Alternatif Adları (SANS): Sertifika diğer alanlar için mi kullanılıyor? Onlardan ne öğrenilebilir? Örneğin, Google.com’un sertifikası, SAN altında 50’den fazla alan listesini listeler.
  • Jarm: Jarm karmalarını pasif olarak analiz etmek (aktif bir TLS parmak izi tekniği), farklı sunucuları yapılandırarak gruplandırabilir, varsayılan uygulamaları veya altyapıyı ve hatta parmak izi kötü amaçlı yazılım komutu ve kontrol sunucularını tanımlayabilir.
  • El sıkışma detayları: Farklı TLS sunucusu uygulamaları aktif olarak problandığında farklı yanıt verir. Desteklenen CIPHERS ve TLS sürümlerinin analiz edilmesi, sunucunun yapılandırması ve potansiyel güvenlik açıkları hakkında bilgi verir.

Araçlar ve Teknikler: Çırpmak parmak izi aletler Aktif olarak prob sunucular. Sertifika Şeffaflığı (CT) günlükleri, alan adları için verilen sertifikaları keşfetmek için değerli genel veri kaynaklarıdır, Crt.sh.

HTTP yanıtlarına derin dalış

Yanıt Kodları

Basit 200 Tamam Durum kodu tek başına sınırlı bilgi sunabilir. Ancak, hazırlanmış yüklere yanıt olarak bir uygulamanın durum kodlarını gözlemlemek çok daha açıklayıcı olabilir. Farklı yükler farklı davranışları tetikler ve bir WAF müdahale edebilir. Ayrıca, yanıt kodları kullanıcı ajanı ve kabul başlığına göre değişebilir.

  • 10x (bilgi): WebSockets’e yükseltme yaparken veya ne zaman Beklemek Başlıklar kullanılır.
  • 20x (başarılı): Daha fazla bağlam olmadan sistem tanımlaması için izolasyonda sınırlı kullanım.
  • 30x (yeniden yönlendirme): Yeniden yönlendirme başlıkları, altta yatan sistemler, kimlik doğrulama akışları veya uygulama yapısı hakkında ipuçları verebilir. Bir örnek:
$ curl -v http://whitehouse.gov
* Trying 192.0.66.51:80...
* Connected to whitehouse.gov (192.0.66.51) port 80 (#0)
> GET / HTTP/1.1
> Host: whitehouse.gov
> User-Agent: curl/7.81.0
> Accept: /
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 301 Moved Permanently
< Server: nginx
< Date: Wed, 16 Apr 2025 12:15:21 GMT
< Content-Type: text/html
< Content-Length: 162
< Connection: keep-alive
< Location: https://whitehouse.gov/
<

301 Moved Permanently

Moved Permanently
nginx

. cevap vücut ile ilgili . yeniden yönlendirmek açıkça eyaletler O nginx ki kullanılmış.

  • 40x (istemci hatası): Bunlar genellikle çok ilginçtir, çünkü belirli sistem türlerine göre tasarlanmış özel hazırlanmış yüklerle tetiklenebilirler. Farklı sistemlerde benzersiz 404 sayfa veya hata mesajları vardır.
  • 50x (sunucu hatası): Belirli bir sistem türüne, çerçeveye ve hatta programlama diline bağlanabilen özel hata sayfaları veya ayrıntılı hata mesajları sunması 50x hatalarının nadir değildir. 50x hatası tetiklenebilirse, daha fazla tespit edebilirsiniz.

Araçlar ve Teknikler: Bup süiti gibi yaygın web tarama araçları, insan yaratıcılığı ile birlikte, daha fazla anlamamıza yardımcı olabilir.

Örneğin, bazen 200 olmayan bir durum kodunu tetiklemek, bir sistem veya temel bir teknoloji hakkında daha fazla bilgi ortaya çıkarabilir. Örnek olarak, IBM Notes/IBM Domino’yu çalıştıran varlıkları tanımlamak istiyorsanız, var olmayan bir NSF dosyası istemek yararlı olabilir.

GET isteği göndermek example.com/foo.nsf tetikleyebilir 404 gibi dizeler içeren yanıt HTTP Web Server: IBM Notes Exception - File does not exist



Source link