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 scapy

Aşağıdaki kod PCAP dosyasını okur, her paketi kontrol eder ve şüpheli bağlantıları listeler:

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1from scapy.all import rdpcap, IP, TCP, UDP
2from collections import defaultdict
3
4# PCAP dosyasını oku
5pcap_file = "traffic.pcap"
6packets = rdpcap(pcap_file)
7
8# Bağlantıları sakla
9connections = defaultdict(lambda: {"count": 0, "ports": set(), "protocols": set()})
10suspicious_ports = {4444, 5555, 8888, 9999, 31337, 27374} # Yaygın zararlı portlar
11
12for packet in packets:
13if IP in packet:
14src_ip = packet[IP].src
15dst_ip = packet[IP].dst
16conn_key = f"{src_ip} -> {dst_ip}"
17
18connections[conn_key]["count"] += 1
19
20if TCP in packet:
21port = packet[TCP].dport
22connections[conn_key]["ports"].add(port)
23connections[conn_key]["protocols"].add("TCP")
24elif UDP in packet:
25port = packet[UDP].dport
26connections[conn_key]["ports"].add(port)
27connections[conn_key]["protocols"].add("UDP")
28
29# Şüpheli bağlantıları raporla
30print("=== ŞÜPHELİ BAĞLANTILAR ===")
31for conn, data in sorted(connections.items(), key=lambda x: x[1]["count"], reverse=True):
32ports = data["ports"]
33
34# Şü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']}")
40
41if 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 ===
2
3192.168.1.100 -> 10.0.0.5
4Paket sayısı: 250
5Portlar: [4444, 80]
6Protokoller: {'TCP'}
7UYARI: Şüpheli port algılandı!
8
9172.16.0.1 -> 8.8.8.8
10Paket sayısı: 120
11Portlar: [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.

bknz: STL Dosyasını Python ile Parametrik Olarak Değiştirme

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz