Bug bounty ve penetrasyon testlerinde hedef alan (attack surface) genişledikçe, keşif (recon) aşamasında elde edilen verilerin boyutu da katlanarak artıyor. subfinder, amass, assetfinder gibi harika araçlarla tek bir hedef için 100.000'den fazla subdomain toplamak oldukça kolay.
Ancak asıl zorluk burada başlıyor: Bu 100.000 subdomain'in kaç tanesi gerçekten hayatta? Kaç tanesi Subdomain Takeover zafiyetine açık? Ve ağır tarama araçlarını (Nuclei, Httpx vb.) bu devasa listeyle boğmadan en hızlı şekilde net hedeflere nasıl ulaşırız?
Bu sorunu çözmek ve kendi kişisel recon hattımı (pipeline) hızlandırmak amacıyla Go dilinde geliştirdiğim açık kaynaklı aracım PALM'ı (kaaangumus/palm) paylaşmak istiyorum.
Neden PALM? (Kullanım Amacı)
Büyük ölçekli recon süreçlerinde karşılaştığım en büyük darboğaz, toplanan ham subdomain listelerini doğrudan ağır güvenlik tarayıcılarına (örneğin Nuclei veya derin web crawler'lar) beslemekti.
Binlerce ölü/yanıt vermeyen alan adı veya DNS kaydı bulunmayan subdomain üzerinde boş yere istek atmak:
- Zaman kaybına yol açıyor,
- Ağ kaynaklarını ve bant genişliğini tüketiyor,
- Tarama sonuçlarında gürültüye (noise) ve yanlış pozitiflere sebep oluyordu.
PALM, tam da bu aşamada bir süzgeç (pre-filter) görevi görmek için tasarlandı. Ham listenizi alır, eş zamanlı (concurrent) DNS çözümlemesi ve hızlı HTTP/HTTPS kontrolleri ile yanıt vermeyen hedefleri eler. Aynı zamanda CNAME kayıtları üzerinden AWS S3, GitHub Pages, Heroku, Azure, Shopify, Fastly, Cargo gibi bulut servislerindeki olası Subdomain Takeover belirtilerini anında tespit eder.
PALM Ne Yapar, Ne Yapmaz?
✅ PALM Ne Yapar?
- Çok Hızlı DNS Çözümlemesi: Go'nun goroutine yapısını kullanarak binlerce subdomain'in A ve CNAME kayıtlarını saniyeler içinde doğrular.
- Canlılık (Live Check) ve Durum Kodu Filtreleme: HTTP/HTTPS istekleri atarak sadece yanıt veren canlı sunucuları ayıklar.
- Subdomain Takeover Ön Tespiti: CNAME zincirlerinde boşa düşmüş bulut sağlayıcı (orphan cloud resources) imzalarını otomatik tarar.
- Unix Pipeline Uyumluluğu:
stdinvestdoutüzerinden diğer araçlarla kusursuz boru hattı (pipe) oluşturur.
❌ PALM Ne Yapmaz?
- Kapsamlı bir port tarayıcı (Nmap/Masscan) değildir.
- Ağır bir web tarayıcısı (crawler/spider) veya derinlemesine zafiyet tarayıcısı (Nuclei) değildir.
- Amacı sadece en ön safta ham veriyi temizlemek ve rafine etmektir.
Kurulum ve Hızlı Başlangıç
PALM, Go ile yazıldığı için bağımlılıksız tek bir binary olarak derlenir ve çalışır.
Kurulum:
go install github.com/kaaangumus/palm@latest
Veya depoyu klonlayıp kendiniz derleyebilirsiniz:
git clone https://github.com/kaaangumus/palm.git
cd palm
go build -o palm main.go
Bug Bounty Workflow (Boru Hattı Entegrasyonu)
PALM'ı geliştirirken öncelikli hedefim, günlük kullandığım bash komut zincirlerine (pipeline) sıfır sürtünme ile entegre olabilmesiydi.
Örnek bir Bug Bounty Recon boru hattı:
# 1. Subdomain toplama (Subfinder)
subfinder -d example.com -silent > raw_subdomains.txt
# 2. PALM ile ön filtreleme ve Takeover kontrolü
cat raw_subdomains.txt | palm -live -takeover -o clean_subdomains.txt
# 3. Temizlenen canlı hedefleri Nuclei veya Httpx'e aktarma
cat clean_subdomains.txt | nuclei -t vulnerabilities/
Bu yaklaşım sayesinde 50.000 subdomain'lik bir ham liste, PALM süzgecinden geçtikten sonra birkaç saniyede gerçekten hedef alınması gereken 1.200 canlı ve kritik varlığa indirgenmiş olur.
Kullanışlı Parametreler ve Modlar
-live: Sadece ağ seviyesinde yanıt veren canlı subdomain'leri çıktıya verir.-takeover: CNAME kayıtlarını inceleyerek bilinen bulut servislerdeki potansiyel takeover durumlarını raporlar.-status: Dönüş kodlarına (200, 302, 403 vb.) göre filtreleme yapmayı sağlar.-threads: Eşzamanlı çalışacak worker sayısını belirler (Varsayılan: 50).-json: Sonuçları otomasyon sistemlerine beslemek için JSON formatında dışarı aktarır.
Açık Kaynak ve Katkı
Projeyi tamamen açık kaynak olarak GitHub üzerinde yayınladım: 👉 github.com/kaaangumus/palm
Araç içerisine ufak bir Easter Egg de gizledim, kodları incelerken denk gelirseniz şaşırmayın! 😄
Siz de kendi recon süreçlerinizde deneyebilir, karşılaştığınız hataları veya eklenmesini istediğiniz Subdomain Takeover imzalarını Issue / PR açarak paylaşabilirsiniz.
