Python ile 5 Siber Güvenlik Kütüphanesi

Python dili, siber güvenlik dünyasında en çok tercih edilen programlama dillerinden biridir. Gerek ağ trafiği analizinde, gerek zararlı yazılım çözümlemede Python’un sunduğu kütüphaneler büyük avantaj sağlar. Bu yazıda Python ile siber güvenlikte kullanılan en popüler kütüphaneleri ve bu araçlarla yazılmış örnek kodları bulacaksınız.

Socket Kütüphanesi

Python socket modülü Düşük seviyeli bir ağ iletişimi sağlar arayüz. Bu, ağ iletişimi için soketler oluşturmanıza ve kullanmanıza olanak tanır.

Python programlarının bir ağ üzerinden diğer bilgisayarlara bağlanmasını, veri gönderip almasını ve istemci-sunucu iletişimi gibi ağla ilgili görevleri yerine getirmesini sağlar.

Örnek Kod Bloğu:

import socket

target_host = “www.google.com”

target_port = 80

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

client.connect((target_host, target_port))

request = “GET / HTTP/1.1\r\nHost: www.google.com\r\nConnection: close\r\n\r\n”

client.send(request.encode(‘utf-8’))

response = b””

while True:

    part = client.recv(4096)

    if not part:

        break

    response += part

 with open(“google_response.html”, “w”, encoding=”utf-8″) as f:

    f.write(response.decode(‘utf-8′, errors=’replace’))

print(response.decode(‘utf-8′, errors=’replace’))

 

Bu Python kodu, düşük seviyeli TCP bağlantısı kurmak için kullanılan yerleşik socket kütüphanesinin temel işlevini gösteren basit ama etkili bir örnektir. socket kütüphanesi, işletim sisteminin sunduğu ağ arabirimlerine doğrudan erişim sağlayarak geliştiricilere TCP/IP tabanlı veri iletişimini manuel olarak yönetme imkânı sunar. Bu kodda, socket aracılığıyla Google sunucusuna 80 numaralı port üzerinden doğrudan bir TCP bağlantısı kurulmakta, ardından manuel olarak yapılandırılmış bir HTTP GET isteği gönderilmektedir. Sunucudan gelen ham yanıt, bayt bazlı olarak okunmakta ve bir HTML dosyasına kaydedilmektedir. Bu işlem, bir tarayıcıdan farklı olarak, ağ trafiğini satır satır anlamayı ve analiz etmeyi mümkün kılar. Özellikle siber güvenlik alanında socket kütüphanesi, port tarama, servis keşfi, özel protokol emülasyonu ve exploit geliştirme gibi birçok kritik görevde temel araçlardan biridir. Bu tarz örnekler, ağ seviyesinde neler olup bittiğini anlayarak saldırı yüzeylerini daha doğru analiz etmenin kapısını aralar.

Scpay Kütüphanesi

Scapy, hem Python2 hem de Python3 tarafından desteklenen bir kütüphanedir. Ağ üzerindeki paketlerle etkileşim kurmak için kullanılır. Paketi kolayca taklit edebileceğimiz ve manipüle edebileceğimiz çeşitli işlevlere sahiptir. Scapy modülü sayesinde ARP Spoofer, Network Scanner, packet dumpers vb. gibi farklı ağ araçları oluşturabiliriz. Bu modül, ağ güvenliği ve etik bilgisayar korsanlığı ile ilgili daha gelişmiş araçlar oluşturmak için kullanılabilir. Scapy modülünün montajı: Scapy modülü varsayılan olarak Python3 kütüphanesinde yer almadığı için pip kullanarak Python kütüphanemize eklememiz gerekmektedir. Python3 için scapy modülünü almak için Linux terminalinizde bu komutu yürütün. Ağ taraması nedir? Ağ taraması, bağlı olduğumuz tüm ağın taranması ve ağımıza bağlı tüm istemcilerin neler olduğunu bulmaya çalışmak anlamına gelir. Her bir müşteriyi IP ve MAC adreslerini kullanarak tanımlayabiliriz. Ağımızdaki canlı sistemleri bulmak için ARP ping’i kullanabiliriz.

Örnek kod:

from scapy.all import Ether, IP, RandMAC, RandIP, sendp

pckt_list = []

for i in range(10):

    srcMac = RandMAC()

    dstMac = RandMAC()

    srcIP = RandIP()

    dstIP = RandIP()

    ether = Ether(src=str(srcMac), dst=str(dstMac))

    ip = IP(src=str(srcIP), dst=str(dstIP))

    pckt = ether / ip

    pckt_list.append(pckt)

    print(f”{srcMac} ({srcIP})  >>>  {dstMac} ({dstIP})”)

import netifaces

iface = netifaces.gateways()[‘default’][netifaces.AF_INET][1]

sendp(pckt_list, iface=iface, verbose=False)

 

Bu kod, Scapy kütüphanesi kullanılarak rastgele MAC ve IP adreslerine sahip Ethernet/IP paketleri oluşturur ve bu paketleri aktif ağ arayüzü üzerinden gönderir. RandMAC() ve RandIP() ile sahte adresler üretilirken, Ether() ve IP() ile katmanlar yapılandırılır. sendp() fonksiyonu sayesinde bu paketler veri bağlantı katmanında doğrudan ağa enjekte edilir. Scapy, bu gibi düşük seviyeli paket manipülasyonlarını kolayca yapabilmesiyle siber güvenlik testlerinde kritik bir rol oynar.

Paramiko Kütüphanesi

Paramiko, SSh aracılığıyla uzak bir cihazla bağlantı kuran bir Python kütüphanesidir. Paramiko, iki cihaz arasında güvenli bir bağlantı kurmak için SSL’nin yerine SSH2’yi kullanıyor. Ayrıca SFTP istemci ve sunucu modelini de destekler.

Örnek kod:

import paramiko

def sendCommand(ssh, command):

    stdin, stdout, stderr = ssh.exec_command(command)

    cmd_output = stdout.read()

    print(“>>”, cmd_output.decode())

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ip = ‘target_ip_adress’  # Kendi makinen

port = 22 # SSH portu

username = ‘kendi_kullanıcı_adın’

password = ‘kendi_şifren’

try:

    ssh.connect(ip, port=port, username=username, password=password)

    print(f”[+] Bağlantı başarılı: {ip}”)

    command = input(“>> “)

    while command.lower().strip() != “quit”:

        if command.strip():

            sendCommand(ssh, command)

        command = input(“>> “)

except Exception as e:

    print(f”[-] Hata oluştu: {e}”)

finally:

    ssh.close()

    print(“[+] Bağlantı kapatıldı.”)

 

Bu kod, Paramiko kütüphanesiyle SSH üzerinden bir uzak sunucuya bağlanıp komut çalıştırmayı sağlar. Kullanıcıdan IP, kullanıcı adı ve şifre bilgisi alarak bağlantı kurar, ardından girilen komutları sunucuda çalıştırıp çıktısını ekrana yazdırır. Uzak yönetim ve otomasyon işlemleri için sıkça kullanılan temel bir yapıdır.

Requests Kütüphanesi

Python istekleri modülü, GET, POST, PUT, PATCH veya HEAD isteklerini kullanarak belirtilen URI’ye Http istekleri yapmak için çeşitli yerleşik yöntemlere sahiptir. Http isteği, belirli bir URI’den veri almak veya verileri bir sunucuya göndermek içindir. İstemci ve sunucu arasında bir istek-yanıt protokolü olarak çalışır.
Bir web tarayıcısı istemci olabilir ve bir web sitesini barındıran bir bilgisayardaki bir uygulama sunucu olabilir. Bu makale, belirli bir URI’ye istekte bulunmak için kullanılabilecek çeşitli yöntemler etrafında döner.

Örnek kod:

import requests

r = requests.get(‘https://api.github.com/ / users / naveenkrnl’)

print(r)

print(r.content)

 

POST, World Wide Web tarafından kullanılan HTTP tarafından desteklenen bir istek yöntemidir. Tasarım gereği, POST istek yöntemi, bir web sunucusunun, büyük olasılıkla depolamak için istek iletisinin gövdesinde yer alan verileri kabul etmesini ister. Genellikle bir dosya yüklerken veya doldurulmuş bir web formu gönderirken kullanılır.

Cryptography Kütüphanesi

cryptography Hem yüksek seviyeli tarifler hem de düşük seviyeli arayüzler içerir. Simetrik şifreler, mesaj özetleri gibi yaygın şifreleme algoritmaları ve Anahtar türetme fonksiyonları. Örneğin, bir şeyi yüksek seviyeli simetrik şifreleme tarifiyle şifrelemek için:cryptography

from cryptography.fernet import Fernet

key = Fernet.generate_key()

f = Fernet(key)

token = f.encrypt(b”A really secret message. Not for prying eyes.”)

token

b’…’

f.decrypt(token)

b’A really secret message. Not for prying eyes.’

 

Kendi ağınızda, kendi test ortamınızda çalıştırdığınız sürece bu kodun kullanımı serbesttir.

Bir eğitmen, araştırmacı, öğrenci ya da yazılımcı olarak bu kodun örneklerini göstermen bilgilendirme ve öğretim kapsamında değerlendirilir.

Sadece eğitim amaçlıdır, yetkisiz sistemlerde kullanılması yasa dışıdır.

Daha fazla kod için https://github.com/MehmetKg?tab=repositories adresine bakabilirsiniz.

Daha Python için Python Paketleri Kötü Amaçlı Yazılımların Yeni Hedefi Haline Geldi! bu araştırmayı okuyabilirsiniz.

 

 

 

 

About The Author

Reply