Cipher Block Chaining CBC-MAC
Last updated
Last updated
Öğren ve AWS Hacking pratiği yap:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) Öğren ve GCP Hacking pratiği yap: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)
Eğer çerez sadece kullanıcı adı (veya çerezin ilk kısmı kullanıcı adı ise) ise ve kullanıcı adını "admin" olarak taklit etmek istiyorsanız. O zaman, kullanıcı adını "bdmin" olarak oluşturabilir ve çerezin ilk byte'ını bruteforce edebilirsiniz.
Cipher block chaining message authentication code (CBC-MAC), kriptografi alanında kullanılan bir yöntemdir. Bir mesajı blok blok şifreleyerek çalışır, her bloğun şifrelemesi bir önceki bloğa bağlıdır. Bu süreç, orijinal mesajın sadece bir bitinin bile değiştirilmesinin şifreli verinin son bloğunda öngörülemeyen bir değişikliğe yol açacağından emin olmak için bir blok zinciri oluşturur. Böyle bir değişiklik yapmak veya tersine çevirmek için şifreleme anahtarı gereklidir, bu da güvenliği sağlar.
Mesaj m'nin CBC-MAC'ini hesaplamak için, m'yi sıfır başlangıç vektörü ile CBC modunda şifreler ve son bloğu saklar. Aşağıdaki şekil, bir gizli anahtar k ve bir blok şifresi E kullanılarak mesajın bloklarından oluşan bir CBC-MAC'in hesaplanmasını tasvir eder:
CBC-MAC ile genellikle kullanılan IV 0'dır.
Bu bir problemdir çünkü 2 bilinen mesaj (m1
ve m2
) bağımsız olarak 2 imza (s1
ve s2
) oluşturacaktır. Yani:
E(m1 XOR 0) = s1
E(m2 XOR 0) = s2
Sonra m1 ve m2'nin birleştirilmiş olduğu bir mesaj (m3) 2 imza oluşturacaktır (s31 ve s32):
E(m1 XOR 0) = s31 = s1
E(m2 XOR s1) = s32
Bu, şifrenin anahtarını bilmeden hesaplanabilir.
8 byte'lık bloklar halinde Yönetici adını şifrelediğinizi hayal edin:
Administ
rator\00\00\00
Administ (m1) adlı bir kullanıcı adı oluşturabilir ve imzasını (s1) alabilirsiniz.
Sonra, rator\00\00\00 XOR s1
işleminin sonucu olan bir kullanıcı adı oluşturabilirsiniz. Bu, s32 olan E(m2 XOR s1 XOR 0)
'yi oluşturacaktır.
şimdi, s32'yi Yönetici adının tam imzası olarak kullanabilirsiniz.
Kullanıcı adı Administ (m1) için imzayı alın, bu s1'dir
Kullanıcı adı rator\x00\x00\x00 XOR s1 XOR 0 için imzayı alın, bu s32'dir.
Çerezi s32 olarak ayarlayın ve bu, Yönetici kullanıcısı için geçerli bir çerez olacaktır.
Kullanılan IV'yi kontrol edebiliyorsanız, saldırı çok kolay olabilir. Eğer çerez sadece şifrelenmiş kullanıcı adı ise, kullanıcıyı "yönetici" olarak taklit etmek için Yönetici kullanıcısını oluşturabilir ve onun çerezini alabilirsiniz. Şimdi, IV'yi kontrol edebiliyorsanız, IV'nin ilk Byte'ını değiştirebilirsiniz, böylece IV[0] XOR "A" == IV'[0] XOR "a" olacak ve Yönetici kullanıcısı için çerezi yeniden oluşturabilirsiniz. Bu çerez, başlangıçtaki IV ile yönetici kullanıcısını taklit etmek için geçerli olacaktır.
Daha fazla bilgi için https://en.wikipedia.org/wiki/CBC-MAC
Öğren ve AWS Hacking pratiği yap:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) Öğren ve GCP Hacking pratiği yap: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)