-
Sadrazamv4
instagram:sadrazam.spy Tg:Sadrazamv4
================================================================================
🐍 SIFIRDAN İLERİ SEVİYEYE PYTHON EĞİTİM SERİSİ - BÖLÜM 7 (FİNAL)
================================================================================
Selamlar Değerli Forum Sakinleri! 🚀🔥
Python'ın C-API katmanına, PyObject yapısına ve Cython ile performans
optimizasyonuna değindiğimiz devasa 6 bölümün ardından geldik serimizin
en heyecanlı ve teorik olarak en derin bölümüne: Bölüm 7 (FİNAL)! ☕💻
Bu bölümde:
1. Python Binary Dosyaları (.pyc) ve Bytecode Yapısının Anatomisi
2. Serialization Zafiyetleri: pickle Modülü ve RCE (Remote Code Execution)
3. Python Kod Koruma (Obfuscation), PyArmor Mimarisi ve AST Manipulation
--------------------------------------------------------------------------------
1. .pyc Dosyalarının Anatomisi ve Magic Number Mimarisi 🏛️
--------------------------------------------------------------------------------
Python bir `.py` dosyasını çalıştırdığında bunu bellek üzerinde bytecode'a
çevirir ve diskte `__pycache__` klasörü altında `.pyc` olarak saklar.
Bir .pyc Dosyasının Binary Yapısı (Header & Body):
+--------------------+--------------------+--------------------+--------------------+
| Magic Number | Bitfield Flags | Timestamp (ModTime)| File Size |
| (4 Bayt) | (4 Bayt) | (4 Bayt) | (4 Bayt) |
+--------------------+--------------------+--------------------+--------------------+
| Serialized Code Object (marshal.dumps(code_object)) |
+-----------------------------------------------------------------------------------+
- Magic Number: Python sürümüne özel 2 baytlık benzersiz değer ve 2 baytlık \r\n.
(Örn: Python 3.10 için 0x0D0D6F3B). CPython bu değerle uyumluluğu kontrol eder.
- Code Object: Fonksiyon adları, sabitler (consts), yerel değişkenler ve ham
bytecode talimatlarını barındıran nesnedir.
Teorik Olarak Code Object İncelemesi:
import marshal
import dis
def gizli_fonksiyon():
gizli_anahtar = "SECRET_KEY_1337"
return gizli_anahtar == "SECRET_KEY_1337"
# Fonksiyonun Code Object yapısına erişim:
code_obj = gizli_fonksiyon.__code__
print("Sabitler (co_consts):", code_obj.co_consts) # ('SECRET_KEY_1337',)
print("Değişkenler (co_varnames):", code_obj.co_varnames) # ('gizli_anahtar',)
print("Bytecode (co_code):", list(code_obj.co_code)) # Ham op_code *****
--------------------------------------------------------------------------------
2. Serialization Zafiyetleri: pickle ve RCE Mantığı 💣
--------------------------------------------------------------------------------
Python'ın `pickle` modülü, karmaşık Python nesnelerini bayt dizilerine dönüştürür
(serialization). Ancak bu süreç saf bir veri aktarımı değil, bir sanal makine
(Pickle VM) çalıştırma işlemidir!
Neden Tehlikeli?
`pickle.loads()` fonksiyonu, deserialization sırasında nesnenin `__reduce__`
metodunu çağırır. Bu metot, nesne yeniden oluşturulurken hangi fonksiyonun
hangi argümanlarla çalıştırılacağını belirler.
Teorik RCE (Uzaktan Kod Çalıştırma) PoC Mantığı:
import pickle
import os
class ZararliPayload:
def __reduce__(self):
# Deserialization anında os.system('whoami') çalıştırılacak!
return (os.system, ("whoami",))
# Saldırgan payload'ı hazırlar (Serialize eder):
payload_bytes = pickle.dumps(ZarliPayload())
# Kurban/Sunucu bu bayt dizisini güvenip unpickle ettiği an:
# pickle.loads(payload_bytes) -> ZAFİYET TETİKLENİR! Komut sistemde çalışır!
GÜVENLİK NOTU: Asla güvenilmeyen kaynaklardan gelen pickle verilerini
`pickle.loads()` ile okumayın! Bunun yerine `json` veya `msgpack` tercih edin.
--------------------------------------------------------------------------------
3. Python Kod Koruma (Obfuscation) & PyArmor Mimarisi 🛡️
--------------------------------------------------------------------------------
Python açık/yorumlanan bir dil olduğu için `.py` ve `.pyc` dosyaları kolayca
decompile edilebilir (`uncompyle6`, `decompyle++` vb.).
Kod Koruma Teknikleri:
A) AST (Abstract Syntax Tree) Transformation:
Kodun soyut sözdizim ağacı değiştirilerek değişken isimleri karartılır,
akış (control flow) karmaşıklaştırılır (Opaque Predicates).
B) PyArmor ve Dynamic Bytecode Encryption Mimarisi:
PyArmor gibi gelişmiş araçlar kodu sadece üstünkörü karartmaz:
1. Her fonksiyonun `co_code` (bytecode) alanını AES gibi simetrik algoritmalarla şifreler.
2. C dilinde yazılmış özel bir koruma katmanı (`pytransform`) enjekte eder.
3. Fonksiyon çağrıldığı AN (runtime), C katmanı hafızadaki bytecode'u çözer,
CPython'a icra ettirir ve HEMEN ARDINDAN belleği tekrar şifreler!
--------------------------------------------------------------------------------
SERİ FİNALİ VE DEĞERLENDİRME 📌
--------------------------------------------------------------------------------
7 Bölümlük devasa Python Eğitim Serimizin sonuna geldik! 🎉🔥
Bu seride temel bellek modelinden başladık; CPython iç mimarisi, garbage collection,
bytecode analizi, OOP & Metasınıflar, Generator/Lazy Evaluation, GIL, Threading,
asyncio, C-API, Cython ve son olarak Güvenlik/Obfuscation konularını teorik ve
derinlemesine inceledik.
Tüm seriyi takip eden, okuyan, yorum yapan ve destek veren tüm forum sakinlerine
sonsuz teşekkürler!
Fikirleriniz, sorularınız ve serinin geneli hakkındaki düşünceleriniz için
başlık altı yorumlarınızı bekliyorum! Saygılarımla! 🎩✨
=====================================================
===========================
🐍 SIFIRDAN İLERİ SEVİYEYE PYTHON EĞİTİM SERİSİ - BÖLÜM 7 (FİNAL)
================================================================================
Selamlar Değerli Forum Sakinleri! 🚀🔥
Python'ın C-API katmanına, PyObject yapısına ve Cython ile performans
optimizasyonuna değindiğimiz devasa 6 bölümün ardından geldik serimizin
en heyecanlı ve teorik olarak en derin bölümüne: Bölüm 7 (FİNAL)! ☕💻
Bu bölümde:
1. Python Binary Dosyaları (.pyc) ve Bytecode Yapısının Anatomisi
2. Serialization Zafiyetleri: pickle Modülü ve RCE (Remote Code Execution)
3. Python Kod Koruma (Obfuscation), PyArmor Mimarisi ve AST Manipulation
--------------------------------------------------------------------------------
1. .pyc Dosyalarının Anatomisi ve Magic Number Mimarisi 🏛️
--------------------------------------------------------------------------------
Python bir `.py` dosyasını çalıştırdığında bunu bellek üzerinde bytecode'a
çevirir ve diskte `__pycache__` klasörü altında `.pyc` olarak saklar.
Bir .pyc Dosyasının Binary Yapısı (Header & Body):
+--------------------+--------------------+--------------------+--------------------+
| Magic Number | Bitfield Flags | Timestamp (ModTime)| File Size |
| (4 Bayt) | (4 Bayt) | (4 Bayt) | (4 Bayt) |
+--------------------+--------------------+--------------------+--------------------+
| Serialized Code Object (marshal.dumps(code_object)) |
+-----------------------------------------------------------------------------------+
- Magic Number: Python sürümüne özel 2 baytlık benzersiz değer ve 2 baytlık \r\n.
(Örn: Python 3.10 için 0x0D0D6F3B). CPython bu değerle uyumluluğu kontrol eder.
- Code Object: Fonksiyon adları, sabitler (consts), yerel değişkenler ve ham
bytecode talimatlarını barındıran nesnedir.
Teorik Olarak Code Object İncelemesi:
import marshal
import dis
def gizli_fonksiyon():
gizli_anahtar = "SECRET_KEY_1337"
return gizli_anahtar == "SECRET_KEY_1337"
# Fonksiyonun Code Object yapısına erişim:
code_obj = gizli_fonksiyon.__code__
print("Sabitler (co_consts):", code_obj.co_consts) # ('SECRET_KEY_1337',)
print("Değişkenler (co_varnames):", code_obj.co_varnames) # ('gizli_anahtar',)
print("Bytecode (co_code):", list(code_obj.co_code)) # Ham op_code *****
--------------------------------------------------------------------------------
2. Serialization Zafiyetleri: pickle ve RCE Mantığı 💣
--------------------------------------------------------------------------------
Python'ın `pickle` modülü, karmaşık Python nesnelerini bayt dizilerine dönüştürür
(serialization). Ancak bu süreç saf bir veri aktarımı değil, bir sanal makine
(Pickle VM) çalıştırma işlemidir!
Neden Tehlikeli?
`pickle.loads()` fonksiyonu, deserialization sırasında nesnenin `__reduce__`
metodunu çağırır. Bu metot, nesne yeniden oluşturulurken hangi fonksiyonun
hangi argümanlarla çalıştırılacağını belirler.
Teorik RCE (Uzaktan Kod Çalıştırma) PoC Mantığı:
import pickle
import os
class ZararliPayload:
def __reduce__(self):
# Deserialization anında os.system('whoami') çalıştırılacak!
return (os.system, ("whoami",))
# Saldırgan payload'ı hazırlar (Serialize eder):
payload_bytes = pickle.dumps(ZarliPayload())
# Kurban/Sunucu bu bayt dizisini güvenip unpickle ettiği an:
# pickle.loads(payload_bytes) -> ZAFİYET TETİKLENİR! Komut sistemde çalışır!
GÜVENLİK NOTU: Asla güvenilmeyen kaynaklardan gelen pickle verilerini
`pickle.loads()` ile okumayın! Bunun yerine `json` veya `msgpack` tercih edin.
--------------------------------------------------------------------------------
3. Python Kod Koruma (Obfuscation) & PyArmor Mimarisi 🛡️
--------------------------------------------------------------------------------
Python açık/yorumlanan bir dil olduğu için `.py` ve `.pyc` dosyaları kolayca
decompile edilebilir (`uncompyle6`, `decompyle++` vb.).
Kod Koruma Teknikleri:
A) AST (Abstract Syntax Tree) Transformation:
Kodun soyut sözdizim ağacı değiştirilerek değişken isimleri karartılır,
akış (control flow) karmaşıklaştırılır (Opaque Predicates).
B) PyArmor ve Dynamic Bytecode Encryption Mimarisi:
PyArmor gibi gelişmiş araçlar kodu sadece üstünkörü karartmaz:
1. Her fonksiyonun `co_code` (bytecode) alanını AES gibi simetrik algoritmalarla şifreler.
2. C dilinde yazılmış özel bir koruma katmanı (`pytransform`) enjekte eder.
3. Fonksiyon çağrıldığı AN (runtime), C katmanı hafızadaki bytecode'u çözer,
CPython'a icra ettirir ve HEMEN ARDINDAN belleği tekrar şifreler!
--------------------------------------------------------------------------------
SERİ FİNALİ VE DEĞERLENDİRME 📌
--------------------------------------------------------------------------------
7 Bölümlük devasa Python Eğitim Serimizin sonuna geldik! 🎉🔥
Bu seride temel bellek modelinden başladık; CPython iç mimarisi, garbage collection,
bytecode analizi, OOP & Metasınıflar, Generator/Lazy Evaluation, GIL, Threading,
asyncio, C-API, Cython ve son olarak Güvenlik/Obfuscation konularını teorik ve
derinlemesine inceledik.
Tüm seriyi takip eden, okuyan, yorum yapan ve destek veren tüm forum sakinlerine
sonsuz teşekkürler!
Fikirleriniz, sorularınız ve serinin geneli hakkındaki düşünceleriniz için
başlık altı yorumlarınızı bekliyorum! Saygılarımla! 🎩✨
=====================================================
===========================
🔒 Bu içeriği görmek için giriş yapın