PCAP Dosyasını Python'da Ayrıştırıp Şüpheli Bağlantıları Bulma
Bir PCAP dosyası (network packet capture) ağda gidip gelen paketlerin kaydıdır. Bunu Python'da ayrıştırarak hangi IP adresleri arası bağlantı olduğunu, hangi portlara erişim yapıldığını ve hangi protokollerin kullanıldığını görebilirsin. Scapy kütüphanesiyle bu işi kolayca yapabilirsin.
Şüpheli bağlantı derken kastedilen şey: sıradan olmayan portlar (örneğin 4444, 8888 gibi), çok sayıda kısa bağlantı, belirli IP adresleriyle tekrar eden iletişim ya da yaygın olmayan protokol kullanımı olabilir.
Önce Scapy'yi yükle:
1pip install scapyAşağıdaki kod PCAP dosyasını okur, her paketi kontrol eder ve şüpheli bağlantıları listeler:
1from scapy.all import rdpcap, IP, TCP, UDP2from collections import defaultdict34# PCAP dosyasını oku5pcap_file = "traffic.pcap"6packets = rdpcap(pcap_file)78# Bağlantıları sakla9connections = defaultdict(lambda: {"count": 0, "ports": set(), "protocols": set()})10suspicious_ports = {4444, 5555, 8888, 9999, 31337, 27374} # Yaygın zararlı portlar1112for packet in packets:13if IP in packet:14src_ip = packet[IP].src15dst_ip = packet[IP].dst16conn_key = f"{src_ip} -> {dst_ip}"1718connections[conn_key]["count"] += 11920if TCP in packet:21port = packet[TCP].dport22connections[conn_key]["ports"].add(port)23connections[conn_key]["protocols"].add("TCP")24elif UDP in packet:25port = packet[UDP].dport26connections[conn_key]["ports"].add(port)27connections[conn_key]["protocols"].add("UDP")2829# Şüpheli bağlantıları raporla30print("=== ŞÜPHELİ BAĞLANTILAR ===")31for conn, data in sorted(connections.items(), key=lambda x: x[1]["count"], reverse=True):32ports = data["ports"]3334# Şüpheli portlar veya çok sayıda bağlantı35if any(p in suspicious_ports for p in ports) or data["count"] > 100:36print(f"\n{conn}")37print(f" Paket sayısı: {data['count']}")38print(f" Portlar: {sorted(ports)}")39print(f" Protokoller: {data['protocols']}")4041if any(p in suspicious_ports for p in ports):42print(f" UYARI: Şüpheli port algılandı!")Bu kod çalıştığında şöyle bir çıktı verir:
1=== ŞÜPHELİ BAĞLANTILAR ===23192.168.1.100 -> 10.0.0.54Paket sayısı: 2505Portlar: [4444, 80]6Protokoller: {'TCP'}7UYARI: Şüpheli port algılandı!89172.16.0.1 -> 8.8.8.810Paket sayısı: 12011Portlar: [53]12Protokoller: {'UDP'}Sık yapılan hata: PCAP dosyasında çok sayıda paket varsa okuma yavaş olabilir. Bunu hızlandırmak için belirli IP adresi ya da port filtresi ekleyebilirsin. Örneğin sadece TCP trafiğini oku veya belirli bir zaman aralığını işle. Ayrıca şüpheli port listesini ortamına göre özelleştir; eğer kuruluşunda 4444 portu yasal olarak kullanılıyorsa onu listeden çıkar.
0 yorum