Recon Otomasyonu (Detaylı Anlatım ve Uygulama Teknikleri)

Recon Otomasyonu, bug bounty ve pentest süreçlerinde manuel olarak yapılan tüm keşif aşamalarını otomatikleştiren script ve araç zincirleridir. Bu sayede saatler süren işlemler dakikalara iner.


Recon Otomasyonu Neden Önemlidir?​

  • Zaman Tasarrufu: Manuel işlemleri otomatikleştirir.
  • Tutarlılık: Her hedef için aynı adımları tekrarlar.
  • Kapsam: Daha fazla hedefi tarama imkanı.
  • Tekrar Edilebilirlik: Aynı sonuçları elde etme.

Temel Recon Pipeline​

text
Domain → Subdomain Enumeration → Live Host Detection → URL Discovery → Parameter Discovery → Vulnerability Scanning → Reporting

Full Recon Automation Script (Bash)​

bash
#!/bin/bash
# Full Recon Automation Pipeline

DOMAIN=$1
OUTPUT_DIR="recon_$DOMAIN"
mkdir -p $OUTPUT_DIR

echo "[1] Subdomain Enumeration"
subfinder -d $DOMAIN -silent > $OUTPUT_DIR/subdomains.txt
amass enum -d $DOMAIN -o $OUTPUT_DIR/subdomains_amass.txt
assetfinder --subs-only $DOMAIN >> $OUTPUT_DIR/subdomains.txt
cat $OUTPUT_DIR/*.txt | sort -u > $OUTPUT_DIR/all_subdomains.txt

echo "[2] Live Host Detection"
httpx -l $OUTPUT_DIR/all_subdomains.txt -silent -o $OUTPUT_DIR/live_hosts.txt -title -tech-detect -status-code

echo "[3] URL Discovery"
cat $OUTPUT_DIR/live_hosts.txt | while read url; do
echo $url | gau --subs >> $OUTPUT_DIR/all_urls.txt
echo $url | waybackurls >> $OUTPUT_DIR/all_urls.txt
done
cat $OUTPUT_DIR/all_urls.txt | sort -u > $OUTPUT_DIR/unique_urls.txt

echo "[4] Parameter Discovery"
cat $OUTPUT_DIR/unique_urls.txt | grep '?' | unfurl keys | sort -u > $OUTPUT_DIR/parameters.txt

echo "[5] JavaScript Discovery"
cat $OUTPUT_DIR/unique_urls.txt | grep '\.js' > $OUTPUT_DIR/js_files.txt

echo "[6] Vulnerability Scanning"
nuclei -l $OUTPUT_DIR/live_hosts.txt -t cves/ -t exposures/ -t misconfiguration/ -severity critical,high -o $OUTPUT_DIR/nuclei_results.txt

echo "[7] Reporting"
echo "Recon Complete for $DOMAIN"
echo "Subdomains: $(cat $OUTPUT_DIR/all_subdomains.txt | wc -l)"
echo "Live Hosts: $(cat $OUTPUT_DIR/live_hosts.txt | wc -l)"
echo "URLs: $(cat $OUTPUT_DIR/unique_urls.txt | wc -l)"
echo "Parameters: $(cat $OUTPUT_DIR/parameters.txt | wc -l)"
echo "JS Files: $(cat $OUTPUT_DIR/js_files.txt | wc -l)"
echo "Vulnerabilities: $(cat $OUTPUT_DIR/nuclei_results.txt | wc -l)"

Gelişmiş Recon Automation (NotAlone - Python)​

python
#!/usr/bin/env python3
# Recon Automation - NotAlone Style

import subprocess
import os
import sys

class ReconAutomation:
def __init__(self, domain):
self.domain = domain
self.output_dir = f"recon_{domain}"
os.makedirs(self.output_dir, exist_ok=True)

def subdomain_enumeration(self):
print("[1] Subdomain Enumeration")
subprocess.run(f"subfinder -d {self.domain} -silent > {self.output_dir}/subdomains.txt", shell=True)
subprocess.run(f"assetfinder --subs-only {self.domain} >> {self.output_dir}/subdomains.txt", shell=True)
subprocess.run(f"cat {self.output_dir}/subdomains.txt | sort -u > {self.output_dir}/all_subdomains.txt", shell=True)

def live_host_detection(self):
print("[2] Live Host Detection")
subprocess.run(f"httpx -l {self.output_dir}/all_subdomains.txt -silent -o {self.output_dir}/live_hosts.txt", shell=True)

def url_discovery(self):
print("[3] URL Discovery")
with open(f"{self.output_dir}/live_hosts.txt", "r") as f:
for url in f:
subprocess.run(f"echo {url} | gau --subs >> {self.output_dir}/all_urls.txt", shell=True)
subprocess.run(f"echo {url} | waybackurls >> {self.output_dir}/all_urls.txt", shell=True)
subprocess.run(f"cat {self.output_dir}/all_urls.txt | sort -u > {self.output_dir}/unique_urls.txt", shell=True)

def parameter_discovery(self):
print("[4] Parameter Discovery")
subprocess.run(f"cat {self.output_dir}/unique_urls.txt | grep '?' | unfurl keys | sort -u > {self.output_dir}/parameters.txt", shell=True)

def vulnerability_scanning(self):
print("[5] Vulnerability Scanning")
subprocess.run(f"nuclei -l {self.output_dir}/live_hosts.txt -t cves/ -t exposures/ -severity critical,high -o {self.output_dir}/nuclei_results.txt", shell=True)

def report(self):
print("[6] Report")
subdomains = len(open(f"{self.output_dir}/all_subdomains.txt").readlines())
live_hosts = len(open(f"{self.output_dir}/live_hosts.txt").readlines())
urls = len(open(f"{self.output_dir}/unique_urls.txt").readlines())
parameters = len(open(f"{self.output_dir}/parameters.txt").readlines())
vulnerabilities = len(open(f"{self.output_dir}/nuclei_results.txt").readlines())

print(f"Subdomains: {subdomains}")
print(f"Live Hosts: {live_hosts}")
print(f"URLs: {urls}")
print(f"Parameters: {parameters}")
print(f"Vulnerabilities: {vulnerabilities}")

def run(self):
self.subdomain_enumeration()
self.live_host_detection()
self.url_discovery()
self.parameter_discovery()
self.vulnerability_scanning()
self.report()

if __name__ == "__main__":
if len(sys.argv) < 2:
print("Usage: python recon.py <domain>")
sys.exit(1)

recon = ReconAutomation(sys.argv[1])
recon.run()

Recon Otomasyonu İpuçları​

  1. Rate Limiting: Hedef sistemi zorlamamak için istek hızını ayarlayın.
  2. Scope Yönetimi: Sadece hedef domain'leri tarayın.
  3. Çıktı Formatı: JSON veya CSV kullanarak raporlamayı kolaylaştırın.
  4. Paralel İşlem: Birden fazla hedefi aynı anda tarayın.
  5. Log Yönetimi: Tüm işlemleri loglayın (debug için).
  6. Hata Yönetimi: Hata durumlarını yakalayın ve devam edin.

🔒 Bu içeriği görmek için giriş yapın

 
Yanıt yazmak için giriş yapmalısınız
Forum özelliklerini kullanmak ve Level 2 üyelik satın almak için hesabınıza giriş yapın.
133,661Konular
3,288,229Mesajlar
324,331Kullanıcılar
Üst Alt