Neler yeni

Yazılım Forum

Tüm özelliklerimize erişmek için şimdi bize katılın. Kayıt olduktan ve giriş yaptıktan sonra konu oluşturabilecek, mevcut konulara yanıt gönderebilecek, itibar kazanabilecek, özel mesajlaşmaya erişebilecek ve çok daha fazlasını yapabileceksiniz! Bu hizmetlerimiz ise tamamen ücretsiz ve kurallara uyulduğu sürece sınırsızdır, o zaman ne bekliyorsunuz? Hadi, sizde aramıza katılın!

Python ile Ağ Trafiği Analizi: Kapsamlı Bir Rehber

Giriş: Ağ Trafiği Analizinin Önemi

Günümüz dijital dünyasında ağlar, işletmelerin ve bireylerin temel yaşam damarı haline gelmiştir. İnternet üzerinden gerçekleştirilen her etkileşim, bir dizi ağ trafiği paketi aracılığıyla taşınır. Bu trafik akışını anlamak, sorun giderme, ağ performansını optimize etme, güvenlik zafiyetlerini tespit etme ve hatta kötü amaçlı faaliyetleri ortaya çıkarma gibi kritik görevler için vazgeçilmezdir. Ağ trafiği analizi, bu paketleri yakalayıp inceleyerek ağ üzerinde neler olup bittiğine dair derinlemesine bir bakış sunar. Geleneksel olarak Wireshark gibi özel araçlar kullanılırken, Python programlama dili, esnekliği, zengin kütüphane ekosistemi ve otomasyon yetenekleri sayesinde ağ trafiği analizi için güçlü bir alternatif sunmaktadır. Bu rehberde, Python'ın ağ trafiği analizindeki rolünü ve özellikle Scapy kütüphanesinin sağladığı imkanları ayrıntılı olarak inceleyeceğiz.

Neden Python ile Ağ Trafiği Analizi?

Python, ağ programlama ve veri analizi alanında oldukça popülerdir. Bunun başlıca nedenleri şunlardır:
  • Okunabilirlik ve Sadeli: Python'ın temiz ve basit söz dizimi, karmaşık ağ işlemlerinin bile anlaşılır bir şekilde kodlanmasına olanak tanır.
  • Zengin Kütüphane Desteği: Scapy, pyshark, dpkt, Twisted gibi birçok güçlü kütüphane, paket yakalama, manipülasyonu ve analizi için hazır çözümler sunar.
  • Platform Bağımsızlığı: Python kodları, Windows, Linux, macOS gibi farklı işletim sistemlerinde sorunsuz bir şekilde çalışabilir.
  • Otomasyon Yeteneği: Rutin ağ analizi görevlerini otomatikleştirmek veya özel test senaryoları oluşturmak için idealdir.
  • Entegrasyon: Veritabanları, web arayüzleri ve diğer sistemlerle kolayca entegre olabilir.

Scapy: Ağ Paketleri ile Oynamanın Sanatı

Scapy, Python tabanlı, güçlü ve interaktif bir paket manipülasyon programıdır. Paket yakalama (capture), paket oluşturma (crafting), paket enjeksiyonu (injection) ve paket analizini (analysis) destekler. Güvenlik uzmanları, ağ yöneticileri ve araştırmacılar için paha biçilmez bir araçtır. Scapy ile, mevcut ağ protokollerini ayrıştırabilir, kendi özel protokollerinizi tanımlayabilir veya paketleri değiştirip ağa geri gönderebilirsiniz.

Kurulum:
Scapy'yi kurmak oldukça basittir. Genellikle `pip` aracı kullanılır:
Kod:
pip install scapy
Bazı sistemlerde ek bağımlılıklar gerekebilir (örneğin, `libpcap-dev` veya `Npcap` Windows için).

Temel Paket Yakalama:
Scapy'nin en temel özelliklerinden biri ağ arayüzünden paket yakalamaktır. `sniff()` fonksiyonu bu amaçla kullanılır.
Kod:
from scapy.all import *

# İlk 5 paketi yakala
packets = sniff(count=5)
packets.summary()

# Belirli bir arayüzden yakala (örn: 'eth0' veya 'Wi-Fi')
# packets_eth0 = sniff(iface="eth0", count=10)

# Bir filtre ile yakala (örn: sadece HTTP trafiği veya belirli bir IP'den gelen)
# packets_http = sniff(filter="tcp port 80", count=10)
# packets_from_ip = sniff(filter="host 192.168.1.1", count=10)
`sniff()` fonksiyonu ile birçok filtreleme seçeneği kullanılabilir. BPF (Berkeley Packet Filter) söz dizimi geçerlidir.

Paket İncelemesi:
Yakalanan paketler bir liste objesi gibi davranır ve her paket ayrı ayrı incelenebilir.
Kod:
# Yakalanan ilk paketi incele
packet = packets[0]
packet.show()

# Paket katmanlarına erişim
# IP katmanı
if IP in packet:
    print(f"Kaynak IP: {packet[IP].src}")
    print(f"Hedef IP: {packet[IP].dst}")

# TCP katmanı
if TCP in packet:
    print(f"Kaynak Port: {packet[TCP].sport}")
    print(f"Hedef Port: {packet[TCP].dport}")

# Ham verilere erişim
# print(packet.raw_packet_bytes())
Paket katmanlarına `packet[LayerName]` ile erişilir. Örneğin, `packet[Ether]` Ethernet katmanını, `packet[IP]` IP katmanını ve `packet[TCP]` veya `packet[UDP]` taşıma katmanlarını temsil eder.

Paket Oluşturma (Crafting):
Scapy'nin en güçlü yönlerinden biri, özel paketler oluşturabilme yeteneğidir. Bu, penetrasyon testleri, ağ protokolü testi veya özel iletişim senaryoları için kullanılabilir.
Kod:
# Basit bir ICMP (ping) paketi oluşturma
ip_layer = IP(dst="www.google.com")
icmp_layer = ICMP()
ping_packet = ip_layer / icmp_layer

# Paketi gönderme ve yanıt bekleme
# sr1() tek bir yanıt bekler (send/receive 1)
# send() yanıt beklemez
# sr() çoklu yanıtlar için kullanılır
print("Ping paketi gönderiliyor...")
response = sr1(ping_packet, timeout=2, verbose=0)

if response:
    print("Yanıt alındı:")
    response.show()
else:
    print("Yanıt alınamadı.")

# TCP SYN paketi oluşturma (port taraması için)
target_ip = "192.168.1.1" # Hedef IP adresini buraya girin
target_port = 80
syn_packet = IP(dst=target_ip) / TCP(dport=target_port, flags="S")

# Paketi gönderme
# send(syn_packet)
`IP()`, `TCP()`, `UDP()`, `Ether()` gibi sınıflar, ilgili protokol katmanlarını temsil eder. Bu katmanlar `/` operatörü ile birleştirilerek tam bir paket oluşturulur.

PCAP Dosyaları ile Çalışma:
Wireshark veya tcpdump gibi araçlarla yakalanan `.pcap` veya `.pcapng` dosyalarını Scapy ile okuyabilir ve analiz edebilirsiniz. Benzer şekilde, Scapy ile yakaladığınız veya oluşturduğunuz paketleri bu formatlarda kaydedebilirsiniz.
Kod:
# Bir pcap dosyasından paketleri okuma
# test.pcap dosyasının mevcut olduğundan emin olun
try:
    pcap_packets = rdpcap("test.pcap")
    print(f"test.pcap dosyasından {len(pcap_packets)} paket okundu.")
    pcap_packets.summary()
except FileNotFoundError:
    print("test.pcap dosyası bulunamadı. Lütfen bir tane oluşturun veya mevcut bir dosyayı kullanın.")
    # Örnek olarak 5 paket yakalayıp kaydedelim
    print("Örnek olarak 5 paket yakalanıp 'my_packets.pcap' olarak kaydediliyor...")
    example_packets = sniff(count=5, timeout=10) # 10 saniye içinde 5 paket veya timeout
    if example_packets:
        wrpcap("my_packets.pcap", example_packets)
        print("Paketler 'my_packets.pcap' dosyasına kaydedildi.")
        pcap_packets = rdpcap("my_packets.pcap")
        print(f"'my_packets.pcap' dosyasından {len(pcap_packets)} paket okundu.")
        pcap_packets.summary()
    else:
        print("Hiç paket yakalanamadı, örnek dosya oluşturulamadı.")


# Yakalanan veya oluşturulan paketleri pcap dosyasına kaydetme
# wrpcap("my_capture.pcap", packets)
network_diagram.png

Yukarıdaki örnek görselde hipotetik bir ağ akışı şematize edilmiştir.

İleri Düzey Analiz ve Kullanım Senaryoları

Scapy, sadece temel paket yakalama ve oluşturmanın ötesinde, çok daha karmaşık analizler yapmanıza olanak tanır.

Protokol Ayrıştırma ve Katmanlara Erişim:
Scapy, paket içindeki her bir protokol katmanını otomatik olarak ayrıştırır. Bu, belirli bir protokole özgü alanlara kolayca erişmenizi sağlar.
Kod:
from scapy.all import *

# Örnek bir UDP paketi oluşturalım
# DNS sorgusu gibi düşünebiliriz
udp_packet = Ether()/IP(dst="8.8.8.8")/UDP(dport=53)/DNS(rd=1, qd=DNSQR(qname="google.com"))

print("UDP Paketi Detayları:")
udp_packet.show()

# Her katmanı manuel olarak inceleme
print("\nKatman Katman İnceleme:")
print(udp_packet.haslayer(Ether)) # True
print(udp_packet.haslayer(IP))    # True
print(udp_packet.haslayer(UDP))   # True
print(udp_packet.haslayer(DNS))   # True

print(f"Kaynak MAC: {udp_packet[Ether].src}")
print(f"Hedef IP: {udp_packet[IP].dst}")
print(f"Kaynak Port: {udp_packet[UDP].sport}")
print(f"DNS Sorgusu: {udp_packet[DNSQR].qname.decode()}") # DNSQR'daki sorgu adı

Saldırı Tespiti ve Güvenlik Analizi:
Python ve Scapy, ağ güvenliği alanında birçok uygulama bulur. Örneğin, ağdaki anormal trafik kalıplarını tespit etmek, belirli saldırı imzalarını (SYN flood, port taraması vb.) belirlemek veya IDS/IPS (Intrusion Detection/Prevention System) benzeri basit araçlar oluşturmak mümkündür.
"Ağ trafiği analizi, siber güvenlikte proaktif bir duruş sergilemenin temel taşıdır." - Siber Güvenlik Uzmanı
Kod:
# Basit bir SYN Flood tespit mekanizması (örnek amaçlı)
# Gerçek bir senaryoda çok daha kompleks olacaktır.

syn_count = {}
threshold = 50 # Bir saniye içinde 50 SYN paketi

def syn_monitor(packet):
    if TCP in packet and packet[TCP].flags == 'S': # Sadece SYN bayrağı set edilmiş paketler
        src_ip = packet[IP].src
        syn_count[src_ip] = syn_count.get(src_ip, 0) + 1
        if syn_count[src_ip] > threshold:
            print(f"[UYARI] {src_ip} adresinden olası SYN Flood saldırısı tespit edildi!")
            # Burada loglama, alert gönderme veya engelleme gibi aksiyonlar alınabilir.

# Arka planda SYN paketlerini dinle
# sniff(prn=syn_monitor, store=0, filter="tcp and tcp[tcpflags] & syn != 0")
# Bu komut sürekli dinler ve yakalanan her paketi syn_monitor fonksiyonuna gönderir.
# store=0 ile paketleri bellekte tutmaz, sadece fonksiyonu çalıştırır.
Bu tür senaryolarda `prn` (packet_received_callback) parametresi çok kullanışlıdır. Yakalanan her paket için belirtilen fonksiyonu çalıştırır.

Ağ Performans İzleme:
Paket boyutlarını, gecikmeleri (latency), paket kayıplarını (packet loss) izleyerek ağ performansını ölçmek mümkündür. Örneğin, belirli bir uygulama trafiğinin ortalama gecikme süresini hesaplayabilir veya yüksek bant genişliği kullanan akışları belirleyebilirsiniz.

Özel Protokol Geliştirme ve Testi:
Scapy, henüz desteklenmeyen veya özel olarak geliştirilmiş bir protokolü ayrıştırmak veya oluşturmak için de kullanılabilir. Kendi katmanlarınızı tanımlayarak, mevcut ağ analiz araçlarının yapamayacağı şeyleri yapabilirsiniz.

Diğer Python Kütüphaneleri:

  • pyshark: Wireshark'ın TShark motorunu kullanan bir Python kütüphanesidir. Scapy'den farklı olarak, pyshark paketleri yakalamak ve ayrıştırmak için TShark'ın gücünü kullanır, bu da daha zengin protokol ayrıştırma yetenekleri sunar ancak Scapy'nin sunduğu paket oluşturma ve gönderme esnekliğine sahip değildir.
    Kod:
    import pyshark
    
    # Canlı arayüzden yakalama
    # capture = pyshark.LiveCapture(interface='eth0')
    # for packet in capture.sniff_continuously(packet_count=5):
    #     print(f"Zaman: {packet.sniff_timestamp}, Kaynak: {packet.ip.src}, Hedef: {packet.ip.dst}")
    
    # Pcap dosyasından okuma
    # cap = pyshark.FileCapture('test.pcap')
    # for packet in cap:
    #     print(packet)
  • dpkt: Ağ paketlerini ayrıştırmak için kullanılan düşük seviyeli bir kütüphanedir. Genellikle Scapy kadar esnek olmasa da, hızlı ve verimli paket ayrıştırma için tercih edilebilir.
  • Twisted: Geniş kapsamlı bir ağ programlama framework'üdür. Ağ servisleri ve istemcileri geliştirmek için kullanılabilir.

Sonuç

Python, ağ trafiği analizi için son derece güçlü ve esnek bir platform sunar. Özellikle Scapy kütüphanesi, ağ mühendislerine, güvenlik uzmanlarına ve araştırmacılara ağ paketleri üzerinde tam kontrol sağlama yeteneği verir. Paket yakalamadan paket oluşturmaya, güvenlik analizinden performans izlemeye kadar geniş bir yelpazede görevleri otomatikleştirebilir ve derinlemesine incelemeler yapabilirsiniz. Bu yetenekler, modern ağların karmaşıklığı karşısında vazgeçilmez bir araç haline gelmiştir. Unutulmamalıdır ki, ağ trafiği analizi yetenekleri etik ve yasal sınırlar içinde kullanılmalıdır.
 
shape1
shape2
shape3
shape4
shape5
shape6
Üst

Bu web sitenin performansı Hazal Host tarafından sağlanmaktadır.

YazilimForum.com.tr internet sitesi, 5651 sayılı Kanun’un 2. maddesinin 1. fıkrasının (m) bendi ve aynı Kanun’un 5. maddesi kapsamında Yer Sağlayıcı konumundadır. Sitede yer alan içerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır.

YazilimForum.com.tr, kullanıcılar tarafından paylaşılan içeriklerin doğruluğunu, güncelliğini veya hukuka uygunluğunu garanti etmez ve içeriklerin kontrolü veya araştırılması ile yükümlü değildir. Kullanıcılar, paylaştıkları içeriklerden tamamen kendileri sorumludur.

Hukuka aykırı içerikleri fark ettiğinizde lütfen bize bildirin: lydexcoding@gmail.com

Sitemiz, kullanıcıların paylaştığı içerik ve bilgileri 6698 sayılı KVKK kapsamında işlemektedir. Kullanıcılar, kişisel verileriyle ilgili haklarını KVKK Politikası sayfasından inceleyebilir.

Sitede yer alan reklamlar veya üçüncü taraf bağlantılar için YazilimForum.com.tr herhangi bir sorumluluk kabul etmez.

Sitemizi kullanarak Forum Kuralları’nı kabul etmiş sayılırsınız.

DMCA.com Protection Status Copyrighted.com Registered & Protected