Yaziya baslamadan once biraz teknik bilgiler paylasmakta fayda var. Oncelikle Parola kirma (password cracking), genellikle etik hackerlar ve guvenlik arastirmacilari tarafindan sistemlerin guvenligini test etmek amaciyla kullanilir. Ancak, kotu niyetli kisilerin de bu bilgileri kotuye kullanabilecegini unutmayin. Parola kirma islemi yasal ve etik kurallar cercevesinde yapilmalidir. Parola kirma islemi icin genellikle su adimlar ve araclar gereklidir:
Gerekli Araclar ve Yontemler
Sozluk Listeleri (Dictionary Lists)
rockyou.txt gibi yaygin parola listeleri.
Kullanicilarin sik kullandigi parolalari iceren listeler.
Kaba Kuvvet Saldirilari (Brute Force Attacks)
Tum olasi karakter kombinasyonlarini deneyen saldirilar.
Guclu donanim ve iyi bir parola kirma yazilimi gerektirir.
Parola Kirma Yazilimlari
John the Ripper: Acik kaynakli ve yaygin olarak kullanilan bir parola kirma aracidir.
Hashcat: GPU destegiyle hizli parola kirma islemleri yapabilen guclu bir aractir.
Hydra: Ag hizmetlerine karsi parola kirma islemleri icin kullanilir.
Hash Algoritmalari ve Parola Depolama Bicimleri
MD5, SHA-1, bcrypt gibi hash algoritmalarini anlamak.
Parolalarin nasil hash'lendigini ve bu hash'lerin nasil kirilabilecegini bilmek.
Guclu Donanim
Parola kirma islemleri yogun hesaplama gerektirdiginden, guclu CPU ve GPU'lar kullanilmalidir.
ozel parola kirma donanimlari da kullanilabilir.
Temel Bilgi ve Deneyim
Siber guvenlik, kriptografi ve ag guvenligi konularinda bilgi sahibi olmak.
Etik hacking ve yasalara uygun hareket etmek.
Yontemler
Sozluk Saldirilari (Dictionary Attacks)
onceden belirlenmis bir liste (sozluk) kullanarak parolalari denemek.
Yaygin parolalar ve varyasyonlari bu listelerde bulunur.
Karma Saldirilar (Hybrid Attacks)
Sozluk saldirilari ile kaba kuvvet saldirilarinin birlesimi.
Parola listelerine cesitli karakterler ekleyerek farkli kombinasyonlar olusturmak.
RegEx Tabanli Saldirilar
Belirli bir duzeni takip eden parolalari hedeflemek icin duzenli ifadeler kullanmak.
Guvenlik onlemleri
Parola kirma islemlerine karsi korunmak icin asagidaki onlemler alinabilir:
Guclu Parolalar Kullanmak
Uzun, karmasik ve tahmin edilmesi zor parolalar kullanmak.
İki Faktorlu Kimlik Dogrulama (2FA)
Ekstra guvenlik katmani ekleyerek hesaplari korumak.
Parola Yoneticileri Kullanmak
Benzersiz ve karmasik parolalar olusturup saklamak.
Parolalari Duzenli Olarak Degistirmek
Parolalarin duzenli araliklarla degistirilmesi.
Sizdirilan Parolalari Kontrol Etmek
Hesaplarinizin sizdirilan veritabanlarinda olup olmadigini kontrol etmek ve gerekli onlemleri almak.
Unutmayin, parola kirma islemleri yalnizca yasal ve etik sinirlar icinde yapilmalidir. Kendi hesaplarinizi ve sistemlerinizi test ederken bu kurallara dikkat etmeniz onemlidir.
Simdi rockyou2024.txt dosyasindan soz edebiliriz. Yaklasik 10 milyon kisinin sifrelerinin sizdirildigi bir dosya. Sizde sifrenizi kontrol etmek isterseniz asagidaki siteye girip, bakabilirsiniz!
https://cybernews.com/password-leak-check/
Ben de bu dosyasi sistemime alip, incelemeye ve kendime gore duzenlemeye karar verdim. Eger size de lazim olursa ve indirmek isterseniz adresi asagida.
https://s3.timeweb.cloud/fd51ce25-6f95e3f8-263a-4b13-92af-12bc265adb44/rockyou2024.zip
Kendisi yaklasik 50GB olup, arsivden cikardiginiz zaman 160GB kadar bir veri dosyasi oluyor. Boyle bir dosyayi text editorler(vim,emac,nano,notepad) ile acmak biraz zor! :) Dosyanin basina asagidaki komut ile biraz baktigim zaman, gereksiz bir suru karakterler oldugunu gordum.
$ cat rockyou2024.txt | less
Sonra birde dosyanin sonlarina bakmaya karar verdim.
$ tail -100 rockyou2024.txt |less
Biraz baktiktan sonra, benim icin gerekli olanlar kafamda canlandi. 5 karakter ile 40 karakter olanlari listemeye ve bunlari bir baska dosyaya yazdirmaya karar verdim. Boylelik dosya daha islevsel ve boyut olarak da daha dusuk olacakti.
*nix sistemler de bu isler biraz daha kolay. O yuzden soyle bir komut yazmaya karar verdim. Aciklamasi asagida.
$ grep -aoE '\b\w{5,40}\b' rockyou2024.txt | sort | uniq > rockyou2024-new.txt
Komutun Bilesenleri
grep -aoE '\b\w{5,40}\b' rockyou2024.txt
grep: Dosya icinde belirli bir desene uyan satirlari arar.
-a: İkili (binary) dosyalari da metin dosyasi olarak isle.
-o: Desenle eslesen parcalari goster (tum satiri degil).
-E: Genisletilmis duzenli ifadeleri kullan.
\b\w{5,40}\b: Duzenli ifade (regex) deseni.
\b: Kelime sinirini belirtir.
\w{5,40}: 5 ila 40 karakter uzunlugunda olan kelimeleri belirtir. \w harf, rakam
ve alt cizgiyi icerir.
Bu kisim, rockyou2024.txt dosyasindan 5 ile 40 karakter uzunlugunda olan tum kelimeleri cikarmak
icin kullanilir.
|
Pipe sembolu (|), bir komutun ciktisini baska bir komutun girdisi olarak kullanmaya yarar.
sort
ciktiyi alfabetik olarak siralar. Bu komut, grep komutunun ciktisindaki kelimeleri alfabetik
siraya koyar.
uniq
Siralanmis girdiler arasinda tekrar edenleri filtreler ve yalnizca benzersiz olanlari listeler.
> rockyou2024-new.txt
Yonlendirme operatoru (>), onceki komutun ciktisini belirtilen dosyaya yazar. Eger dosya yoksa
olusturur, varsa uzerine yazar.
Bu komutu calistirmadan once TMP dizini degistirmeniz gerekiyor! Cunku boyutu cok buyuk oldugu icin TMP dizini sismekte. Asagidaki komutla onuda degistirebilirsiniz?
$ export TMPDIR=/home/efek/new-tmp
Ben, Ev dizinine boyle bir klasor olusturdum ve oraya yonlendirdim. Benim Ev dizinimde yeterince yer bulunmakta cunku! Sonra komutu calistirabilirsiniz.
Bu islem biraz uzun surmekte ve sisteme gore sureler degismekte. Yaklasik 1 saat sonra islem bitmisti. Sonra dosyada daha baska gereksiz birseyler var mi diye baktigimda, Asya karakterlerinin oldugunu gordum. Bunlari da silmem gerekiyordu, zira parola kirmada benim icin pek gerekli olmuyor...
$ awk '{gsub(/[^\0-\177]/,"");print}' rockyou2024-new.txt > rockyou2024-non-asian.txt
Komutun Bilesenleri
awk '{gsub(/[^\0-\177]/,"");print}' rockyou2024-new.txt
awk: Guclu bir metin isleme araci.
'{gsub(/[^\0-\177]/,"");print}': awk icinde kullanilan komutlar.
gsub(/[^\0-\177]/,""): gsub fonksiyonu, duzenli ifade (regex) kullanarak metni degistirir.
/[^\0-\177]/: 0 ile 177 (127) ASCII karakterleri disindaki tum karakterleri secer.
"": Secilen karakterleri bos karakterle degistirir (yani siler).
print: Duzenlenen satiri yazdirir.
Bu kisim, rockyou2024-new.txt dosyasindaki Asya karakterlerini (ve ASCII disindaki diger karakterleri)
siler ve geri kalan metni yazdirir.
> rockyou2024-non-asian.txt
Yonlendirme operatoru (>), onceki komutun ciktisini belirtilen dosyaya yazar. Eger dosya yoksa olusturur,
varsa uzerine yazar.
ornek
Eger rockyou2024-new.txt dosyasi su sekilde bir icerik iceriyorsa:
hello 你好 world 世界 this is a test 测试
Asakidaki sekilde duzenleyecek ve rockyou2024-non-asian.txt dosyasina yazacak.
hello world this is a test
rockyou2024-non-asian.txt
hello world
this is a test
Sonuc olarak, bu komut rockyou2024-new.txt dosyasindaki Asya karakterlerini ve ASCII disindaki diger karakterleri siler ve geri kalan metni rockyou2024-non-asian.txt dosyasina yazar. Bu sayede dosyadaki yalnizca ASCII karakterleri iceren temizlenmis metin elde ediriz.
Simdi asil olay burada. Ilk once bu islemi yapip sonra grep ile 5 ile 40 karakter arasidakileri listelemek daha dogru bir tercih olacaktir. :) Yoksa islemi birkez daha yapmak gerekiyor...
Ben bu suzme isleminden sonra, dosyanin boyutunu 47GB'e kadar dusurdum.Suan benim icin kullanilabilir bir halde.
Ancak sunuda soylemem gerekir. Boyle buyuk kelime listeleri yerine, kisiye ozel kelime listeleri uretmek daha etkili bir kirma yontemidir. Hem zaman kazandirir, hem daha etkilidir. Bu tur buyuk dosyalarin kullanildigi durumlar ayridir.