Thread Starter
#0
⚠️ YASAL ÇERÇEVE VE KOD ETİĞİAşağıda paylaşılan kod blokları, ağ ve web güvenliği temellerini (Socket programlama, HTTP istekleri) öğretmek amacıyla hazırlanmıştır.
Bu scripti, izniniz olmayan bir IP adresi veya web sitesi üzerinde çalıştırmak, hedef sistemde "Port Tarama" (Port Scanning) loglarına neden olur ve saldırı girişimi olarak algılanabilir. 5237 Sayılı TCK'nın 243. Maddesi uyarınca yasal sorumluluk doğurabilir. Lütfen sadece kendi localhost ortamınızda veya sahibi olduğunuz sunucularda (archiveforum.org gibi) test ediniz.
Giriş: Neden Kendi Aracımızı Yazıyoruz?
Hazır araçlar (Acunetix, Netsparker) harikadır ancak pahalıdır ve bazen çok yavaştır. Kendi scriptinizi yazdığınızda:- Hız: Sadece ilgilendiğiniz şeyi (örneğin sadece açık 80 portunu) tararsınız.
- Gizlilik: Nmap'in varsayılan imzalarını taşımazsınız.
- Otomasyon: Tarama sonucunu doğrudan Telegram'a veya Discord'a raporlayabilirsiniz.
1. Hazırlık: Gerekli Kütüphaneler
Python'un standart kütüphaneleri bize yeterli olacaktır, ancak görsel güzellik ve HTTP kolaylığı için requests ve colorama kullanacağız.CODE
1pip install requests colorama2. Modül 1: Port Tarayıcı (Reconnaissance)
Bir sistemin kapısını çalmadan (Ping/Connect) içeri giremezsiniz. İlk modülümüz, hedef sunucuda hangi servislerin çalıştığını tespit eder.Kod Mantığı:Python'un socket kütüphanesi ile hedef IP'nin belirli bir portuna bağlanmayı deneriz.
- Bağlantı başarılı (0 dönerse) -> Port AÇIK.
- Bağlantı reddedildi veya zaman aşımı -> Port KAPALI.
3. Modül 2: HTTP Header Güvenlik Analizi
Web güvenliğinin %40'ı doğru yapılandırılmış HTTP başlıklarıdır. Tarayıcımız, sitenin yanıt başlıklarını (Response Headers) çekecek ve güvenlik eksiklerini raporlayacak.Aranacak Kritik Başlıklar:
- X-Frame-Options: Clickjacking saldırılarını engeller.
- Strict-Transport-Security (HSTS): Zorunlu HTTPS kullanımı.
- Server: Sunucu versiyon bilgisini ifşa ediyor mu? (Security through Obscurity).
4. Büyük Birleştirme: "VIP-Scanner v1.0"
Şimdi bu parçaları, Nesne Yönelimli Programlama (OOP) mantığıyla tek bir profesyonel araçta birleştirelim.PYTHON
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182import socket
import requests
from colorama import init, Fore, Style
from datetime import datetime
# Konsol renklerini başlat
init()
class VIPScanner:
def __init__(self, target):
self.target = target
self.open_ports = []
# Taranacak kritik portlar (Hız için az tutuldu)
self.ports = [21, 22, 25, 53, 80, 443, 3306, 8080]
print(f"{Fore.CYAN}[*] Hedef Belirlendi: {self.target}{Style.RESET_ALL}")
print(f"{Fore.CYAN}[*] Tarama Başlıyor: {datetime.now()}{Style.RESET_ALL}\n")
def scan_port(self, port):
"""Basit Socket Bağlantısı ile Port Kontrolü"""
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(0.5) # Hız için kısa timeout
result = s.connect_ex((self.target, port))
if result == 0:
print(f"{Fore.GREEN}[+] Port {port} AÇIK{Style.RESET_ALL}")
self.open_ports.append(port)
else:
# Kapalı portları ekrana basıp kirletmiyoruz
pass
s.close()
except Exception as e:
print(f"{Fore.RED}[!] Hata: {e}{Style.RESET_ALL}")
def check_security_headers(self):
"""Web Sunucusu Güvenlik Başlıklarını Analiz Et"""
print(f"\n{Fore.YELLOW}[*] HTTP Header Analizi Yapılıyor...{Style.RESET_ALL}")
try:
# Hedefin web servisi varsa (80 veya 443 açıksa)
url = f"http://{self.target}"
response = requests.get(url, timeout=3)
headers = response.headers
# Kontrol Listesi
security_headers = [
"X-Frame-Options",
"X-XSS-Protection",
"Strict-Transport-Security",
"Content-Security-Policy"
]
for header in security_headers:
if header in headers:
print(f"{Fore.GREEN}[OK] {header} mevcut.{Style.RESET_ALL}")
else:
print(f"{Fore.RED}[KRİTİK] {header} EKSİK!{Style.RESET_ALL}")
# Bilgi İfşası Kontrolü
if 'Server' in headers:
print(f"{Fore.MAGENTA}[!] Server Bilgisi İfşa Oluyor: {headers['Server']}{Style.RESET_ALL}")
except requests.exceptions.ConnectionError:
print(f"{Fore.RED}[!] Web servisine erişilemedi.{Style.RESET_ALL}")
def run(self):
# 1. Aşama: Port Tarama
print(f"{Fore.YELLOW}[*] Port Tarama Modülü Çalışıyor...{Style.RESET_ALL}")
for port in self.ports:
self.scan_port(port)
# 2. Aşama: Web Analizi (Eğer 80 veya 443 açıksa)
if 80 in self.open_ports or 443 in self.open_ports:
self.check_security_headers()
else:
print("\n[!] Web portları kapalı, Header analizi atlanıyor.")
print(f"\n{Fore.CYAN}[*] Tarama Tamamlandı.{Style.RESET_ALL}")
if __name__ == "__main__":
# Kullanım: Hedef domain veya IP
target_input = input("Hedef IP/Domain girin (örn: scanme.nmap.org): ")
scanner = VIPScanner(target_input)
scanner.run()5. Kodu Geliştirmek İçin İpuçları
Yazdığımız bu kod temel bir iskelettir. Bunu bir "Canavara" dönüştürmek sizin elinizde:- Multithreading (Çoklu İş Parçacığı): Şu an kod for döngüsü ile portları sırayla tarıyor. Python threading kütüphanesini kullanarak aynı anda 100 portu tarayabilir, hızı 100 kat artırabilirsiniz.
- Banner Grabbing: Port açık bulunduğunda, servisin ne olduğunu (örn: SSH-2.0-OpenSSH_8.2) anlamak için soketten gelen ilk veriyi (recv(1024)) okuyabilirsiniz.
- Raporlama: print fonksiyonları yerine sonuçları bir rapor.txt dosyasına veya JSON formatına kaydedip, daha sonra analiz edebilirsiniz.
- CMS Tespiti: HTML içeriğinde <meta name="generator" content="WordPress" /> gibi etiketleri aratarak hedef sitenin altyapısını otomatik bulabilirsiniz.
Sonuç
Kendi aracınızı yazmak, size siber güvenliğin "siyah kutu" (black box) olmadığını öğretir. Bir port tarayıcının aslında sadece "Merhaba orada mısın?" diyen bir kod parçası olduğunu anladığınızda, Firewall'ların bunu nasıl engellediğini (veya nasıl atlatılabileceğini) çok daha iyi kavrarsınız.