Hashlerden Geri Kalanlar

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.

Hashes and Passwords

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.

PHPvBHasher
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

Yorum yapın