Encryption / Decryption, Hash'ler ve Kriptoloji

Hopeツ︎

Profesör
9 Mart 2016
2,422
2
2,182
358
Merhaba arkadaşlar, Uzun zamandır şifreleme mantığı üzerine bir yazı paylaşmayı planlıyordum kısmet bugüne imiş. Karmaşa bir hal almaması için olabildiğince sade ve basit bir anlatım gerçekleştirmeye çalışacağım... Anlamlandırabilmemiz gerektiğinden güncel bir örnekleme ile sentezliyelim yazıyı öncesinde, .iso yansılarından bir çoğumuzun haberi var değil mi? Cd medya'ya ya da Usb'e bir yansı yazdırmak istediğimizde .iso uzantılarını kullanırız. Belirli bir siteden, adresten veya ftp adresinden yansıyı sisteme çekeriz daha sonra parametrelerden faydalanarak ya da bir yardımcı yazılımdan destek alarak .iso'yu yazdırırız. Tamam buraya kadar her şey güzel, sonrasında .iso'yu okutmak için bilgisayarımızı yeniden başlatırız... Harika, şimdi ise biraz geriye dönün istiyorum. İndirme esnasında internetiniz gitti, internetin gitmesi şart değil bir aksilik yaşadınız medya içerisine yazılması gereken dosyalarınız bir şekilde tam anlamıyla yazılamadı. Evet bu yaşanan talihsizlik medya'yı boot ettirmeye çalışırken olası hata ekranlarını görmenize sebep olacaktır.

Hash Kontrollerini Yapmak (MD5, SHA...)

Yok siz başlığa aldanmayın, yani hash türleri ve fonksiyonları dediğimizde öyle md5 ve sha anahtarlamalarıyla nihayete erecek bir durum değil yani. Tamam, ne diyorduk en son? .iso yansımız indi medya'ya yazdık sonra eksik dosyaların yaratabileceği problemlerden bahsettik... Şimdi yine olası bir problemden bahsedeceğiz aynı zamanda şifreleme, şifreleme mantığı üzerine açılan bu konumuza girişi artık gerçekleştireceğiz. Evet, .iso yansısını indirdiğiniz sayfalar da mutlaka doğrulamaların olduğundan emin olun zira önemlidir. Niye önemlidir? yansının eksiği bulunuyor mu, hatalı mı değil mi... Bunları öncesinde öğrenmek ve sonrasında sorun yaşamamak için elbette. Tabi yine doğrulamalar için bazı dosyalar indirmeniz gerekebilir örneğin;

Kod:
#Sha256sums
#Sha256sums.gpg
#Sha512sums
#Sha512sums.sign
#Md5sums
#Md5sums.sign

Yaygın olarak doğrulama fonksiyonları hemen hemen bunun üzerine kuruludur .iso yansılarında. Yukarıda 128-bit, 256-bit, 512-bit, uzunluklarına sahip fonksiyonlar ve ek olarak anahtarlar, sign gpg imzalamalarını göstermeye çalıştım. Bu kontrol uzantılarını edinerek yansının sağlığını, bozuk dosya içermediğini anlamak mümkündür. Bu dosyalara daha çok manuel şekilde sağlamayı yapmaya çalışırken ihtiyacımız oluyor.. Bunun dışında bu işlevi gören yani .iso'yu yazdırmak için kullandığımız ek yazılımlar içlerinde sağlama adına entegre araçlar bulundurabiliyor size kalan ise seçeneği seçmek, butona tıklamak oluyor. Manuel doğrulamayı el ile yapmak isteyen arkadaşlarımız için şu komutları da yazmış bulunayım.

Kod:
wget -q -O - https://site... | gpg --import
gpg --keyserver https://site... --recv-key (Fingerprint adress)
gpg --fingerprint (adress)

Encryption / Şifreleme Mantığı

Düz bir metin düşünün... herhangi bir şey olabilir bu bölümde kelime de olur sayı da olur. Bu verinin random (rastgele) karışık ve anlaşılamayacak biçimde şifrelenmesi işlemi Encryption'dur. Kafanızın karışacağı hiçbir durum yok. Decryption'da şifreyi çözmek manasına gelir yani tam tersi. Tersine mühendislik gibi... Peki niye böyle ekstra bir işlemle kendimizi yoruyoruz? Zira bu yorulmak değil, olası tehlikelere karşı önlem almaktır. Büyük bir kuruluşun, sitenin, oluşumun, vesaire. Bu anahtarlamayı kullanmadan veritabanında açıkça kullanıcı bilgilerini ve şifrelerini.. Hatta e-mail ya da telefon bilgilerini fütursuzca sakladığını düşünün. Bu gerçekten büyük bir hezimet anlamına gelir. Tam anlamıyla baştan kaybetmenin vücut bulunmuş halidir.

Bu noktada yazılımcı arkadaşlarımıza büyük bir sorumluluk düşüyor. Veritabanında yazılan kodlar, verinin hangi mantıkla şifrelenip eşleştirildiği... Kodlama esnasında hangi yönergelerin izlendiği gibi... Gerçekten önem taşıyor, yoksa sonuç genelde şunlar oluyor; Kötü niyetli korsan sistem hakkında gerekli bilgileri topluyor, analizi gerçekleştiriyor, testlere tabi tutuyor ve bilgilerin saklandığı veritabanına bir şekilde ulaşmayı başarıyor.

Sonra yavaş yavaş tablolara, kolonlara erişimi sağlamayı başarıyor gerek manuel gerek yazılım yardımıyla fark etmiyor. Ve inanın veritabanında öylece veri saklanıyorsa ve önlemi alınmamışsa benim yukarıda bilgi toplama, analiz, testler, bypass denemeleri adına yazdıklarım bu kısımda kesinlikle geçerli değil. Korsan öyle basit şekilde halledecek ki bunu sizin ruhunuz duymayacak. Bu yüzden sürekli önlem önlem... Demeye devam edeceğiz. Şimdi ise aşağıda genel olarak kullanılmakta olan encryptionlar adına birkaç örnek vermek istiyorum çeşitli uzunluk aralıklarının yer aldığı...

MD5-128 bit

Kod:
"SDN" string 81D06921381E09CDF78ED0F8A92DF105

SHA1-160 bit

Kod:
"SDN" string 6662956F2D6B5D4C07ABCEBF71350B9941E1110F

SHA256-256 bit

Kod:
"SDN" string 9877777B2FBDA34A70C44453AC335D5CEDE89EFE7982C07AE2A72B1A688D8620

*Yukarıda genel olarak kullanılan Hash çeşitlerine değinmek adına örnekler göstermeye çalıştım... Bunu "SDN" stringi üzerinden yaptık, yani ne yaptık? generator mantığı ile birbirinden ayrı üç uzunluğa ait düz metini şifreli hale getirdik... Ne kadar da anlaşılır değil mi? amaç bu zaten, anlaşılamaması. Anlaşılırsa tehlike büyük demektir. Yazının başında söylemiştim iki üç hash fonksiyonu ile bu işler maalesef son bulmuyor diye. Sanırım ben buraya bütün anahtar çeşitlerini ekleyip detaylarını vermeye çalışsam yazı sayfalar sürecektir. Bu nedenle, bütün hash fonksiyonları ve içerdiği detaylar hakkında bilgi almak isterseniz yapmanız gereken; "List Of Hash Functions" tarzında bir arama gerçekleştirmek olur.

Decryption/Şifre Çözme Mantığı

Aslında bu bölüme "decode etmek" mantığıyla yaklaşırsak yine bize "Decryption'un" yolunu açacaktır. Zira ikisi de aynı anlama gelmekte. Sonuçta burada encode edilmiş bir string verisi decode edilmeye yani çözümlenmeye çalışılıyor. Korsan arkadaşlarımız en çok bu bölümden hoşlanırlar... Neden? zira onlar encode'lerden hoşlanmaz veya şifrelenmiş verileri sevmezler.

Niye sevsinler? yollarına taş koyuyoruz çünkü öylece sisteme erişim sağlayamıyor veya zarar veremiyor. Şöyle bir şey duydunuz mu hiç... "Md5 kırmak" , "Md5 şifresi nasıl kırılır" gibi şeyler. Hacking ile uğraşmıyorsanız muhtemelen bunlara rastlamadınız ya da rastlamışta olabilirsiniz neden olmasın. Bu kısım yine Decryption ile doğrudan ilişkilidir, çünkü burada yanlış kullanılan "kırma" decodedir. Yani çözmek manasındadır...

Kırmak burada yanlış bir ifadedir, daha doğrusu "eşleştirmek" , "bulmak" , "çözmek" olacaktır. Ama hacking'e merak sarmış birçok yeni arkadaşlarımızdan bunu kırmak şeklinde duyarız. Bunun sebebi ise algının bu şekilde gelişip bu şekilde bilinmesinden kaynaklıdır. Decryption'da asıl mantık şudur; şifrelenen veriyi bulmak adına ya deneme yanılma yöntemlerini kullanmak adına elde bir wordlist bulundurulur ya da daha önce eşleşmiş string yazılımlar, websiteleri aracılığı ile karşılaştırılmaya tabi tutulur. Wordlist .txt biçiminde manuel olarak istenirse yazılım yardımıyla "Brute force" , "Dictionary Attack" vs. Atak çeşitleri ve yöntemleriyle sentezlenir. Burada hırsızın işini kolaylaştırmak adına hangi toolsların kullanıldığını, atak çeşitlerini elbette detaylı anlatmayacağız. Sadece mantığından bahsetmiş olalım...

SDN/Forum adına hazırlanmıştır, alıntı değildir.
 

Furkan0223

Asistan
29 Eylül 2018
350
153
43
30
Bunu nasıl yapabiliriz bilginiz var mı ? Yani biz bir kelime yada sayı yazalım program kendisi bize karıştırarak versin. Böyle bir şey mümkün mü?
 
Üst