Merhabalar. Uzun zamandır blog yazmıyorum. Bir önceki blog yazımda bahsettiğim üşengeçliğimden kaynaklanan “yan gelip yatma” hastalığımı yenmek adına yazdığım, Ashes Remain ( geriye küller kalır ) dinlerken aklıma gelen bir blog yazısını okuyorsunuz. Bu kadar boş yapmak yettiğine göre şimdi asıl mevzuya gelelim.
Başlangıç
Yakın zamanda sızma testinde elde ettiğim bir veritabanının “user” tablosundan çıkan “password ve salt” kolonlarındaki verilerin ne kadar güvenli olduğunu test etmek amacı ile ve daha önemlisi kullanıcıların hala daha zayıf parolalar kullanıp, kullanmadığını görmek amacıyla hashcat ile bu hashlere kaba kuvvet saldırısı gerçekleştirmiş ve plaintext hallerini elde etmeye çalışmıştım. Bilidiğiniz üzere kriptografig hashleri tersine çevirmek mümkün olmasa da algoritması biliniyor ise bu hashleri yeniden elde edip, karşılaştırmak mümkün.
Hash cracking
Hashcat’i aşağıdaki komut ile başlatmış, sonuçları beklemeye başlamıştım. Kiralık sunucum pek de güçlü olmadığı için bu işlemler yaklaşık 5 saat kadar sürmüştü.
./hashcat-cli32.bin -a 0 -m 2711 -p : -o "/root/crackList/crackedList.CRACKED" --outfile-format=3 "/root/crackList/passWords" "/root/wordList/merged.txt" ./hashcat-cli32.bin -a 0 -m 2711 -p : -o "/root/crackList/crackedList.CRACKED2" --outfile-format=3 "/root/crackList/passWords" "/root/wordList/onlyhuman.txt"
Hashcat’in cracking işleminden sonra elde ettiğim 2 adet plaintext dosyasını uniq ve sort işlemlerinden geçirip tek bir dosyada topladım. Zira bu verileri daha sonrasında kötü bir amaçla kullanmayacağımdan ( %90 üzerinde parolayı ele geçirmek gibi bir niyetim yoktu. ) dolayı 2 adet küçük wordlist kullanmıştım ve aynı sayıda çıktı almıştım. Toplam hash sayısı 754 iken, bu hashlerden elde edilen parola sayısı ise 281 idi.
Sızma testi gerçekleştirilen sistemin algoritmasına bakmam gerekiyordu. Böylece crack işleminden sonra oluşturacağım basit bir tool ile hashlerin doğru olup olmadığını da karşılaştırabilecektim.
Tool geliştirme
İşlem basitçe;
$hashIslemi = md5(md5($parolaGirdisi) . $saltGirdisi);
şeklinde gerçekleşiyordu. Doğal olarak yazılacak tool da parola ve saltı alıp bu algoritmadan geçirmeliydi.
<?php echo "Parola Giriniz: "; $parolaGirdisi = trim(fgets(STDIN)); echo "SALT Giriniz: "; $saltGirdisi = trim(fgets(STDIN)); $hashIslemi = md5(md5($parolaGirdisi) . $saltGirdisi); echo "Karşılaştırılacak HASH Giriniz: "; $hashGirdisi = trim(fgets(STDIN)); if ($hashIslemi == $hashGirdisi){ echo "Oluşturulan Hash: " . $hashIslemi, "\n"; echo "Girilen Hash: " . $hashGirdisi, "\n"; echo "Hashler Uyuştu!"; } else echo "Oluşturulan Hash: " . $hashIslemi, "\n"; echo "Girilen Hash: " . $hashGirdisi, "\n"; echo "Hashler Uyuşmadı!"; ?>
Geliştirdiğim tool ile hashcat’in verdiği sonuçları karşılaştırdım ve sonuç elbette olumluydu.
Kim, ne kadar güvende?
Bu çalışmanın son adımında ise her zaman top-10’a oynayan o parolaları test etmek var. Elde edilen verilere göre en çok kullanılan 10 parola;
123456 123456789 qwerty 12345678 111111 1234567890 1234567 password 123123 987654321
Bu parolaların kaç defa kullanıldığını bulmak için;
grep -o 'aranacakterim' dosya_adi | wc -l
komutunu yazmak ise yeterli olacak. Çıkan sonuca göre “135” kullanıcı ( %49 ) güvenli olmayan parola kullanmıştır.
Sonuç ve öneri
Hiçbir zaman kullanılan sistemin güvenliğine(!) aldanıp zayıf parolalar kullanmayınız. Bir sonraki blogda görüşmek üzere, güvenli günler dilerim 🙂
Biterken çalıyordu… Ashes Remain – Right Here