Python ile Siber Güvenlik ve Etik Hackerlık: Temel Kütüphaneler ve Ağ Scripting
Siber güvenlik süreçlerinde ve sızma testlerinde Python'un rolü. Ağ tarama (Socket), paket manipülasyonu (Scapy) ve exploit otomasyonu (Pwntools) süreçlerinin teknik incelenmesi.
Yavuz Soylu

Sızma testleri (penetration testing) ve siber güvenlik araştırmaları, büyük ölçüde standart araçların (Nmap, Burp Suite vb.) otomasyonuna ve sisteme özel zafiyetleri tetikleyecek özel (custom) betiklerin yazılmasına dayanır. Python, işletim sisteminin ağ arayüzlerine C seviyesinde erişim imkanı sunan standart kütüphaneleri ve geniş üçüncü parti ekosistemi sayesinde bilgi güvenliği (InfoSec) alanında endüstri standardı haline gelmiştir.
Bu yazıda, bir siber güvenlik uzmanının veya etik hacker'ın Python kullanarak ağ katmanında (Network Layer) ve uygulama katmanında (Application Layer) nasıl işlemler yaptığını teknik düzeyde inceleyeceğiz.
1. İşletim Sistemi Seviyesinde Ağ Taraması: Socket Programlama
Ağ üzerindeki açık portları veya servisleri tespit etmek, bir sızma testinin ilk adımıdır (Reconnaissance). Python'un dahili socket kütüphanesi, doğrudan işletim sisteminin C dilindeki Berkeley Sockets API'sine bir arayüz (wrapper) sunar.
Bir port tarayıcı yazarken, TCP/IP protokolündeki "Three-Way Handshake" (Üçlü El Sıkışma) mantığı kullanılır. Hedef IP'ye belirli bir port üzerinden SYN paketi gönderilir; eğer sistem SYN-ACK ile dönerse o portun dinlendiği (açık olduğu) anlaşılır.
Temel Bir TCP Port Tarayıcı Örneği:
Python
import socket
def scan_port(ip, port):
# IPv4 (AF_INET) ve TCP (SOCK_STREAM) için bir soket nesnesi oluşturulur
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Zaman aşımı (timeout) belirlenerek bloklanma (blocking) önlenir
s.settimeout(1.0)
# connect_ex(), hata durumunda exception fırlatmak yerine C seviyesinde hata kodu döner
result = s.connect_ex((ip, port))
if result == 0:
print(f"Port {port} AÇIK")
else:
print(f"Port {port} KAPALI")
s.close()
# Örnek kullanım (1-1024 arası well-known portlar taranabilir)
target_ip = "192.168.1.10"
for p in range(20, 26):
scan_port(target_ip, p)
Not: Bu işlem senkron olarak çalıştığı için O(n) zaman alır. Gerçek senaryolarda performansı artırmak için asyncio veya threading modülleri ile asenkron soket programlama tercih edilir.
2. Düşük Seviyeli Paket Manipülasyonu: Scapy
Soket programlama, işletim sisteminin TCP/IP yığınını (stack) kullanır. Ancak bir güvenlik araştırmacısı OSI modelinin daha alt katmanlarına inip, kendi özel ağ paketlerini (raw packets) sıfırdan oluşturmak isteyebilir. Bu noktada Scapy kütüphanesi devreye girer.
Scapy ile bir paketin IP başlığındaki (header) TTL değerini değiştirebilir, sahte bir MAC adresiyle ARP paketleri üretebilir (ARP Spoofing) veya ağ kartını "Promiscuous Mode"a alarak ağdan geçen şifrelenmemiş trafiği (HTTP, Telnet) dinleyebilirsiniz (Packet Sniffing).
Python
from scapy.all import *
# Hedef IP'ye özel bir ICMP (Ping) paketi oluşturma
# IP() ve ICMP() sınıfları birleştirilerek (/) paket yığına eklenir
packet = IP(dst="192.168.1.10") / ICMP()
# Paketi gönder ve ilk gelen cevabı (response) dinle
response = sr1(packet, timeout=2, verbose=False)
if response:
print(f"Hedef ayakta. Yanıt veren IP: {response.src}")
3. Zafiyet Taraması ve Otomasyon: Requests ve BeautifulSoup
Web uygulama güvenliğinde (Web App Sec), form girdilerinin, API uç noktalarının (endpoints) ve HTTP başlıklarının manipüle edilmesi gerekir. Python'un requests kütüphanesi, SQL Injection (SQLi) veya Cross-Site Scripting (XSS) payload'larını otomatize etmek için kullanılır.
- Fuzzing: Bir dizin (directory) listesini okuyup, bir web sunucusunda gizli klasörleri bulmak için
requests.get()ile dönen HTTP 404 ve 200 durum kodları filtrelenir. - DOM Analizi:
BeautifulSoupkütüphanesi kullanılarak dönen HTML yanıtı ayrıştırılır (parse). Geliştiricilerin sayfada unuttuğu gizli form alanları (hidden inputs) veya eski/zafiyetli JavaScript kütüphanelerinin sürümleri tespit edilir.
4. Binary Exploit Geliştirme: Pwntools
Sistem güvenliği tarafında, bellek taşması (Buffer Overflow), ROP (Return-Oriented Programming) zincirleri oluşturma ve exploit kodlama süreçleri oldukça karmaşıktır. Bellek adreslerinin (Little Endian / Big Endian) hesaplanması ve sunucuyla etkileşimde bulunulması gerekir.
Pwntools, CTF (Capture The Flag) yarışmalarında ve gerçek dünya exploit geliştirmesinde standart olarak kullanılan bir kütüphanedir. Derlenmiş C/C++ çalıştırılabilir dosyalarının (binary) bellek koruma mekanizmalarını (ASLR, NX) atlatmak için gerekli matematiksel hesaplamaları ve soket iletişimini tek bir framework altında toplar.