Basics
Plaintext - encryption yada hashing olmadan önceki data Encoding - Encryption formu değildir , base64 yada hexadecimal gibi bir data representation'udur.Yani datayı temsilen gösterimi değiştirilmiş yapılardır. Hash - Hash , Bir Hash Functionun çıktısıdır."To Hash" bir data'nın hash valuesini üretmek demektir. Brute Force - Her different key ve her different password deneyerek cryptograhyie saldırma demektir. Cryptanalysis : Temel Matematikte bulduğumuz zayıflıkla Cryptograhiye'e saldırmaktır.
Encryption'da bir key olur fakat Hash'de öyle bir şey yoktur.Yani bir nevi girilen inputun geri döndürülmesi imkansızdır denilebilir.Hash functionunda çıktının size'ı fixed'dır.Normalde bir hash functionun çıktısı raw byte'dır yani biz okuyamayız , daha sonra bunlar encoded edilir.Genelde base64 yada hexadecimal kullanılır ve decoding sonucunda normalde okunabilir bir şey vermeyecektir zaten.
Hash Collision : Girilen 2 inputun aynı çıktıyı vermesi durumudur.
Pigeonhole effecti vardır bu bir nevi , farklı outputların aynı çıktıyı vermesidir ve bunlar MD5 ve SHA-1 üzerinde denendi ve hash collision yaşandığı aşağıda görüldü.
Rockyou.txt kullandığımız Rockyou.com şirketinin yaptığı MySpace social company facebook gibi bir uygulama üzerinden leaked edilmiş bir databasedir.14 Milliondan fazla password içerir.
SHA1 Collision : https://shattered.io/ MD5 Collision : https://www.mscs.dal.ca/~selinger/md5collision/
Genelde database'lerde encryption kullanılmaz çünkü encryption için bir Key gereklidir ve eğer ki key birileri tarafından ele geçirilirse paket.
Rainbow Table
Burda ana mesele şudur normal elimizde olan hash'i kırmak için JTR gibi araçlar kullanıp CPU yormak yerine adamlar örneğin crackstation databases'inde hash'in karşılık geldiği passwordu tutar ve biz direkt hash'i verdiğimizde bunu kırmak yerine database'de karşılığını bulup direkt hash'in password karşılığını vermesi durumudur.
Rainbow table'sına karşılık protecting yapabilmek için password'a random olarak bir salt değeri eklemektir.Her bir user için unique olarak üretilir ve database'de stored edilir.Bu salt değerini ya password başına yada sonuna bırabiliriz.Böylece aynı parolaya sahip bile olsalar her user farklı bir password hash'ine sahip olacak.Bcrypt and sha512crypt bu işi kendisi yapar.
Password Hash Tipini Belirleme
https://pypi.org/project/hashID/
hashid <HASH_DEGERI>
Windows için olanlar zaten NTLM kullanır ve SAM'da saklanır Linux için olanlar ise /etc/shadow'da bulunr
Hash'lerin ana kullanılma amacı bir dosyayın hash'ini alıp Integrity Checking için örneğin ben bir dosya hazırladım ve hash değeri 123123 bunu doğrulamada kullanılabilir yada bir parolanın verification için kullanılır örneğin bir websitesine giriş yaptığımızda o parola database'de hash'lenmiş bir şekilde tutulur.Plaintext - encryption yada hashing olmadan önceki data Encoding - Encryption formu değildir , base64 yada hexadecimal gibi bir data representation'udur.Yani datayı temsilen gösterimi değiştirilmiş yapılardır. Hash - Hash , Bir Hash Functionun çıktısıdır."To Hash" bir data'nın hash valuesini üretmek demektir. Brute Force - Her different key ve her different password deneyerek cryptograhyie saldırma demektir. Cryptanalysis : Temel Matematikte bulduğumuz zayıflıkla Cryptograhiye'e saldırmaktır.
Encryption'da bir key olur fakat Hash'de öyle bir şey yoktur.Yani bir nevi girilen inputun geri döndürülmesi imkansızdır denilebilir.Hash functionunda çıktının size'ı fixed'dır.Normalde bir hash functionun çıktısı raw byte'dır yani biz okuyamayız , daha sonra bunlar encoded edilir.Genelde base64 yada hexadecimal kullanılır ve decoding sonucunda normalde okunabilir bir şey vermeyecektir zaten.
Hash Collision : Girilen 2 inputun aynı çıktıyı vermesi durumudur.
Pigeonhole effecti vardır bu bir nevi , farklı outputların aynı çıktıyı vermesidir ve bunlar MD5 ve SHA-1 üzerinde denendi ve hash collision yaşandığı aşağıda görüldü.
Rockyou.txt kullandığımız Rockyou.com şirketinin yaptığı MySpace social company facebook gibi bir uygulama üzerinden leaked edilmiş bir databasedir.14 Milliondan fazla password içerir.
SHA1 Collision : https://shattered.io/ MD5 Collision : https://www.mscs.dal.ca/~selinger/md5collision/
Genelde database'lerde encryption kullanılmaz çünkü encryption için bir Key gereklidir ve eğer ki key birileri tarafından ele geçirilirse paket.
Rainbow Table
Burda ana mesele şudur normal elimizde olan hash'i kırmak için JTR gibi araçlar kullanıp CPU yormak yerine adamlar örneğin crackstation databases'inde hash'in karşılık geldiği passwordu tutar ve biz direkt hash'i verdiğimizde bunu kırmak yerine database'de karşılığını bulup direkt hash'in password karşılığını vermesi durumudur.
Rainbow table'sına karşılık protecting yapabilmek için password'a random olarak bir salt değeri eklemektir.Her bir user için unique olarak üretilir ve database'de stored edilir.Bu salt değerini ya password başına yada sonuna bırabiliriz.Böylece aynı parolaya sahip bile olsalar her user farklı bir password hash'ine sahip olacak.Bcrypt and sha512crypt bu işi kendisi yapar.
Password Hash Tipini Belirleme
https://pypi.org/project/hashID/
hashid <HASH_DEGERI>
Windows için olanlar zaten NTLM kullanır ve SAM'da saklanır Linux için olanlar ise /etc/shadow'da bulunr
Hash'lerin ana kullanılma amacı bir dosyayın hash'ini alıp Integrity Checking için örneğin ben bir dosya hazırladım ve hash değeri 123123 bunu doğrulamada kullanılabilir yada bir parolanın verification için kullanılır örneğin bir websitesine giriş yaptığımızda o parola database'de hash'lenmiş bir şekilde tutulur.