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 Sızma Testi: Güvenlik Uzmanları İçin Temel Kütüphaneler ve Kullanım Alanları

example_python_security_image.png


Giriş: Python ve Siber Güvenlikteki Yeri

Siber güvenlik, günümüzün dijital dünyasında hayati bir öneme sahiptir. Kurumlar ve bireyler, sürekli gelişen tehditlere karşı kendilerini korumak zorundadır. Bu koruma mekanizmalarından biri de sızma testleridir. Sızma testi (penetrasyon testi), bir sistemin, ağın veya uygulamanın güvenlik açıklarını etik hacker'lar tarafından simüle edilmiş saldırılarla ortaya çıkarma sürecidir. Bu süreçte kullanılan birçok araç ve yöntem bulunmaktadır. Python, esnekliği, zengin kütüphane ekosistemi ve okunabilir sözdizimi sayesinde siber güvenlik profesyonelleri arasında popüler bir dil haline gelmiştir. Otomasyon, exploit geliştirme, ağ taraması, zafiyet analizi ve adli bilişim gibi birçok alanda Python kütüphaneleri vazgeçilmez bir rol oynamaktadır. Bu yazımızda, sızma testi süreçlerinde sıkça kullanılan ve her güvenlik uzmanının bilmesi gereken başlıca Python kütüphanelerini detaylı bir şekilde inceleyeceğiz. Bu kütüphanelerin sunduğu yetenekleri ve pratik kullanım senaryolarını ele alarak, Python'ın siber güvenlikteki gücünü gözler önüne sereceğiz.

Ağ ve Protokol Manipülasyonu İçin Kütüphaneler

Sızma testlerinin temelini ağ iletişimi oluşturur. Ağ paketlerini incelemek, değiştirmek veya yeni paketler oluşturmak, birçok saldırı senaryosunun anahtarıdır.

  • Scapy: Scapy, ağ paketlerini oluşturan, gönderen, yakalayan ve analiz eden güçlü bir interaktif paket manipülasyon programıdır. Ağ taramaları, zafiyet tespiti, protokol testleri ve hatta kablosuz ağ saldırıları için kullanılabilir. ICMP, ARP, TCP, UDP gibi birçok protokolü destekler ve özel paketler oluşturmanıza olanak tanır. Scapy ile karmaşık ağ senaryolarını hızlıca test edebilirsiniz. Örneğin, özel bir SYN paketi göndermek veya ARP zehirlenmesi yapmak Scapy ile oldukça kolaydır.
    Kod:
    from scapy.all import * 
    
    # Bir SYN paketi oluştur ve gönder 
    ip_layer = IP(dst="192.168.1.1")
    tcp_layer = TCP(dport=80, flags="S")
    packet = ip_layer / tcp_layer
    
    # Paketi gönder ve yanıtı bekle
    response = sr1(packet, timeout=1, verbose=0)
    
    if response and response.haslayer(TCP):
        if response.getlayer(TCP).flags == 0x12: # SYN-ACK
            print("80. port açık!")
        else:
            print("80. port kapalı veya filtrelenmiş.")
    else:
        print("Yanıt alınamadı.")
    
    # Basit bir ARP isteği gönderme
    arp_request = Ether(dst="ff:ff:ff:ff:ff:ff") / ARP(pdst="192.168.1.1/24")
    ans, unans = srp(arp_request, timeout=2, verbose=0)
    for sent, received in ans:
        print(f"IP: {received.psrc} MAC: {received.hwsrc}")
  • Nmap (python-nmap): Nmap, sektör standardı bir ağ tarama aracıdır. python-nmap kütüphanesi, Nmap'in güçlü özelliklerini Python betiklerinize entegre etmenizi sağlar. Bu sayede port tarama, servis versiyon tespiti, işletim sistemi parmak izi çıkarma gibi işlemleri otomatikleştirebilirsiniz. Özellikle büyük ağlarda bilgi toplama aşamasında kritik bir rol oynar.
    Kod:
    import nmap
    
    nm = nmap.PortScanner()
    
    # Bir IP adresindeki popüler portları tarama
    host = '192.168.1.1'
    nm.scan(hosts=host, arguments='-p 21,22,23,80,443')
    
    for host in nm.all_hosts():
        print(f'Host : {host} ({nm[host].hostname()})')
        print(f'State : {nm[host].state()}')
        for proto in nm[host].all_protocols():
            print(f'----------')
            print(f'Protocol : {proto}')
    
            lport = nm[host][proto].keys()
            for port in sorted(lport):
                print(f'port : {port}\tstate : {nm[host][proto][port]['state']}')
  • Requests: Her ne kadar web odaklı gibi görünse de, Requests HTTP/HTTPS protokolleri üzerinden iletişim kurmak için en popüler ve kullanımı kolay kütüphanelerden biridir. Web tabanlı zafiyetlerin (örneğin SQL Injection, XSS) otomasyonunda, API testlerinde ve web servisleriyle etkileşimde vazgeçilmezdir. Ağ güvenliği testlerinde web uygulamalarıyla olan etkileşimi simüle etmek için kullanılır.
    Kod:
    import requests
    
    # Basit bir GET isteği
    response = requests.get('http://testphp.vulnweb.com/artists.php?artist=1')
    print(f"Durum Kodu: {response.status_code}")
    print(f"Yanıt Boyutu: {len(response.text)} karakter")
    
    # POST isteği ile form gönderme (örneğin login sayfası)
    login_url = 'http://testphp.vulnweb.com/login.php'
    data = {'username': 'test', 'password': 'test'}
    headers = {'User-Agent': 'Mozilla/5.0'}
    
    response = requests.post(login_url, data=data, headers=headers)
    if 'You are logged in' in response.text:
        print("Giriş Başarılı!")
    else:
        print("Giriş Başarısız!")

Web Uygulaması Güvenliği İçin Kütüphaneler

Web uygulamaları, günümüzde en sık hedeflenen alanlardan biridir. Bu alandaki zafiyetleri tespit etmek ve sömürmek için özel kütüphaneler mevcuttur.

  • BeautifulSoup (bs4): Web sayfalarından veri çekme (web scraping) ve HTML/XML içeriğini ayrıştırma için mükemmel bir kütüphanedir. Özellikle zafiyet tarayıcıları geliştirirken veya web uygulamasından belirli bilgileri toplarken kullanılır. Form elemanlarını, linkleri, script tag'lerini ayrıştırarak XSS (Cross-Site Scripting) veya CSRF (Cross-Site Request Forgery) gibi zafiyetlerin tespitine yardımcı olabilir.
    Kod:
    from bs4 import BeautifulSoup
    import requests
    
    url = 'http://testphp.vulnweb.com/'
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # Tüm linkleri bul
    for link in soup.find_all('a'):
        print(f"Link: {link.get('href')}")
    
    # Tüm formları bul ve metotlarını yazdır
    for form in soup.find_all('form'):
        print(f"Form Metodu: {form.get('method')} Aksiyon: {form.get('action')}")
        for input_tag in form.find_all('input'):
            print(f"  Input Adı: {input_tag.get('name')} Tipi: {input_tag.get('type')}")
  • Selenium: Tarayıcı otomasyonu için tasarlanmış bir araçtır. Web uygulamalarında kullanıcı etkileşimlerini (form doldurma, butonlara tıklama, JavaScript çalıştırma) simüle etmek için kullanılır. Özellikle XSS, Clickjacking gibi istemci tarafı zafiyetlerin testinde ve otomatik sızma testleri senaryolarında etkilidir. Kullanıcı girişlerini taklit ederek, kompleks test senaryolarını gerçekleştirmenize olanak tanır.
    Kod:
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.chrome.service import Service
    from webdriver_manager.chrome import ChromeDriverManager
    
    # WebDriver'ı başlat (Chrome için)
    service = Service(ChromeDriverManager().install())
    driver = webdriver.Chrome(service=service)
    
    url = 'http://testphp.vulnweb.com/login.php'
    driver.get(url)
    
    # Kullanıcı adı ve şifre alanlarını bul ve doldur
    username_field = driver.find_element(By.NAME, 'username')
    password_field = driver.find_element(By.NAME, 'password')
    
    username_field.send_keys('test')
    password_field.send_keys('test')
    
    # Giriş butonuna tıkla
    login_button = driver.find_element(By.NAME, 'login')
    login_button.click()
    
    # Sayfadaki bir elementi bulup içeriğini kontrol et
    if 'You are logged in' in driver.page_source:
        print("Giriş başarılı!")
    else:
        print("Giriş başarısız!")
    
    driver.quit()

Exploit Geliştirme ve İkili Analiz Kütüphaneleri

Sistem güvenliği ve ikili (binary) analiz, sızma testlerinin daha derin katmanlarına inmek isteyenler için elzemdir. Bu kütüphaneler, bellek bozulmaları, tersine mühendislik ve exploit yazma konularında yardımcı olur.

  • PwnTools: Exploit geliştirme için Python'da yazılmış kapsamlı bir kütüphanedir. CTF (Capture The Flag) yarışmalarında ve gerçek dünya exploit geliştirmelerinde sıkça kullanılır. G/Ç (I/O) manipülasyonu, format string zafiyetleri, rop zincirleri oluşturma, kabuk kodu (shellcode) oluşturma ve uzak süreçlerle etkileşim gibi birçok gelişmiş özelliği sunar. PwnTools, exploit yazma sürecini büyük ölçüde basitleştirir ve hızlandırır.
    Kod:
    from pwn import *
    
    # Hedef bağlantısı (yerel bir servis veya uzak bir sunucu olabilir)
    # p = process('./vulnerable_program') # Yerel program
    p = remote('example.com', 1234) # Uzak sunucu
    
    # Bir input al ve gönder
    p.recvuntil(b'Enter your name: ')
    p.sendline(b'AAAA' * 10)
    
    # Bir zafiyeti sömürme örneği (basit bir taşma)
    # Taşma payload'ı oluşturma
    payload = b'A' * 64 + p64(0xdeadbeef) # Örnek ROP veya adresi
    p.sendline(payload)
    
    # Shell elde etmeyi bekle
    p.interactive()
  • Capstone: Çoklu mimari desteğine sahip güçlü bir disassembly framework'üdür. Güvenlik araştırmacıları, kötü amaçlı yazılım analistleri ve tersine mühendisler tarafından ikili dosyaları ve kabuk kodlarını analiz etmek için kullanılır. Farklı CPU mimarileri (x86, ARM, MIPS vb.) için assembly kodunu ayrıştırabilir ve okunabilir hale getirebilir.
    Kod:
    from capstone import *
    
    # Örnek makine kodu (x86 64-bit)
    CODE = b"\x55\x48\x8b\x05\xb8\x13\x00\x00\x48\x8b\x00\x48\x83\xc4\x08\x5d\xc3"
    
    md = Cs(CS_ARCH_X86, CS_MODE_64)
    for i in md.disasm(CODE, 0x1000):
        print("0x%x:\t%s\t%s" %(i.address, i.mnemonic, i.op_str))
    
    # Çıktı:
    # 0x1000:	push	rbp
    # 0x1001:	mov	rax, qword ptr [rip + 0x13b8]
    # 0x1008:	mov	rax, qword ptr [rax]
    # 0x100b:	add	rsp, 0x8
    # 0x100f:	pop	rbp
    # 0x1010:	ret
  • Unicorn: Çoklu mimari desteğine sahip bir CPU öykünücüsüdür. Güvenlik araştırmacılarının ve kötü amaçlı yazılım analistlerinin, farklı mimarilerde kabuk kodunu veya ikili kod parçalarını güvenli bir ortamda çalıştırmasına olanak tanır. Bu sayede, potansiyel exploitlerin veya kötü amaçlı yazılımların davranışlarını analiz etmek için gerçek bir CPU'ya ihtiyaç duyulmadan testler yapılabilir.
    Kod:
    from unicorn import *
    from unicorn.x86_const import *
    
    # 64-bit x86 mimarisini başlat
    mu = Uc(UC_ARCH_X86, UC_MODE_64)
    
    # Bellek haritalama
    ADDRESS = 0x1000000
    SIZE = 2 * 1024 * 1024 # 2MB
    mu.mem_map(ADDRESS, SIZE)
    
    # Kabuk kodu (shellcode) - basit bir 'ret' (x64)
    SHELLCODE = b"\xc3"
    mu.mem_write(ADDRESS, SHELLCODE)
    
    # RSP kaydını ayarla
    mu.reg_write(UC_X86_REG_RSP, ADDRESS + SIZE)
    
    print("Çalışan kodu: %s" % SHELLCODE)
    
    try:
        # Kodu çalıştır
        mu.emu_start(ADDRESS, ADDRESS + len(SHELLCODE))
        print("Çalıştırma tamamlandı.")
    except UcError as e:
        print("Hata: %s" % e)

Kriptografi ve Hashing İçin Kütüphaneler

Şifreleme ve karma (hashing) algoritmaları, hem savunma hem de saldırı amaçlı siber güvenlik operasyonlarında temel bir rol oynar. Bu kütüphaneler, şifre kırma, şifreleme analizi ve güvenli iletişim testleri için kullanılır.

  • PyCryptodome (veya eski PyCrypto): Çeşitli şifreleme algoritmalarını (AES, RSA, ECC vb.) ve hashing fonksiyonlarını (MD5, SHA vb.) içeren kapsamlı bir kütüphanedir. Güvenli iletişim kanalları oluşturma, verileri şifreleme ve şifre çözme, dijital imzalarla çalışma gibi görevlerde kullanılır. Kriptografik zafiyetlerin testinde veya özel şifreleme algoritmalarının analizinde kritik bir araçtır.
    Kod:
    from Cryptodome.Cipher import AES
    from Cryptodome.Random import get_random_bytes
    from Cryptodome.Protocol.KDF import PBKDF2
    from Cryptodome.Hash import SHA256
    
    # AES şifreleme örneği
    key = PBKDF2(b"supersecretpassword", get_random_bytes(16), dkLen=32)
    cipher = AES.new(key, AES.MODE_EAX)
    nonce = cipher.nonce
    data = b"Bu gizli bir mesajdir."
    ciphertext, tag = cipher.encrypt_and_digest(data)
    
    print(f"Şifreli Metin: {ciphertext.hex()}")
    
    # SHA256 hashing örneği
    hasher = SHA256.new()
    hasher.update(b"Merhaba Dunya")
    print(f"SHA256 Hash: {hasher.hexdigest()}")

Diğer Faydalı Kütüphaneler

Yukarıda bahsedilen ana kategorilerin dışında da sızma testlerinde işimize yarayacak birçok Python kütüphanesi bulunmaktadır:

  • Subprocess, Os, Sys: Bu yerleşik Python modülleri, işletim sistemiyle etkileşim kurmak, dışarıdan komutlar çalıştırmak ve dosya sistemi üzerinde operasyonlar yapmak için kullanılır. Özellikle otomasyon betikleri yazarken veya sistem seviyesi testler yaparken vazgeçilmezdir. Örneğin, bir güvenlik aracını Python içinden çalıştırmak veya dosya izinlerini kontrol etmek bu modüllerle kolayca yapılabilir.
  • Paramiko: SSHv2 protokolü için Python ile yazılmış bir kütüphanedir. SSH üzerinden komut çalıştırma, SCP ile dosya transferi gibi işlemleri otomatikleştirmek için kullanılır. Brute-force saldırıları, SSH tünelleme veya uzaktan komut yürütme testlerinde faydalıdır.
  • Impacket: Ağ protokolleriyle düşük seviyede etkileşim kurmak için tasarlanmış bir koleksiyondur. Özellikle Windows ağ protokolleri (SMB, MSRPC, DCERPC vb.) üzerinden sızma testleri yaparken çok güçlüdür. Pass-the-hash, psexec gibi saldırıları uygulamak için kullanılır.

Sonuç ve Tavsiyeler

Python, siber güvenlik profesyonelleri için bir İsviçre çakısı gibidir. Sunduğu zengin kütüphane ekosistemi sayesinde ağ taramasından web zafiyet analizine, exploit geliştirmeden kriptografik testlere kadar geniş bir yelpazede sızma testi faaliyetlerini gerçekleştirmek mümkündür. Bu yazımızda ele aldığımız kütüphaneler, Python ile sızma testi dünyasına adım atmak isteyen veya mevcut yeteneklerini geliştirmek isteyen herkes için bir başlangıç noktasıdır.

Unutulmamalıdır ki, bir aracın veya kütüphanenin gücü, onu kullanan kişinin bilgi ve becerisiyle doğru orantılıdır. Bu kütüphaneleri etkin bir şekilde kullanabilmek için sadece sözdizimini bilmek yeterli değildir; aynı zamanda temeldeki ağ, işletim sistemi ve uygulama güvenliği prensiplerini de iyi anlamak gerekmektedir. Güvenlik testleri yaparken her zaman etik kurallara ve yasal sınırlamalara uyulmalıdır. Yetkisiz sistemlere karşı test yapmak yasa dışıdır ve ciddi sonuçları olabilir. Bilgi güvenliği, sürekli öğrenmeyi ve pratik yapmayı gerektiren dinamik bir alandır. Bu kütüphaneleri projelerinizde kullanarak deneyim kazanın ve siber güvenlik yolculuğunuzda Python'ın sunduğu sınırsız potansiyeli keşfedin.

"Bir güvenlik uzmanının en iyi arkadaşı, yazılımını otomatikleştirebilen ve tekrar edebilir testler yapabilen kod parçacıklarıdır."

Python Resmi Web Sitesi | Scapy Dökümantasyonu | Requests Kütüphanesi

Umarım bu kapsamlı rehber, sızma testlerinde Python kütüphanelerini kullanma konusunda size yol gösterir ve yeni ufuklar açar. Güvenli günler dileriz!
 
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