John the Ripper
Last updated
Last updated
John the Ripper, C programlama dili ile yazılmış açık kaynak bir parola çözme aracıdır. Başlangıçta Unix işletim sistemi için geliştirilen bu araç, şimdi 15 farklı platformda çalışmaktadır. Parola çözücüleri tek paket içinde bir araya getiren, parola test eden ve çözen en popüler araçlardan biridir.
John the Ripper, hem zengin özelliklere sahip hem de hızlı olacak şekilde tasarlandı. Çeşitli kırma modlarını tek bir programda birleştirir ve özel ihtiyaçlarınıza göre tamamen yapılandırılabilir bir çalışma mantığı vardır.
John the Ripper, aşağıdaki Unix crypt(3) karma türlerini destekler:
Geleneksel DES tabanlı
Bigcrypt
BSDI uzatılmış DES tabanlı
FreeBSD MD5 tabanlı (Linux'ta ve Cisco IOS'ta da kullanılır)
OpenBSD Blowfish tabanlı (bazı Linux dağıtımlarında ve güncel Solaris sürümlerinde desteklenir)
Ayrıca desteklenen diğer şifreleme türleri:
Kerberos/AFS
Windows LM (DES tabanlı)
DES tabanlı tripcodes
John the Ripper genellikle kıracağı hash türünü otomatik olarak algılar. Ancak algılamadığı durumlarda kullanıcı tarafından --format parametresiyle dosya türü verilmelidir. Örneğin: --format=pdf
Çeşitli platformlarda (Unix, Linux, Windows, macOS gibi) çalışabilir.
Çeşitli parola kırma tekniklerini içerir:
brute force (kaba kuvvet)
dictionary (sözlük tabanlı)
hibrit saldırılar
Yasal Uyarı: John the Ripper, parola kırma işlemleri gibi yasal ve etik sınırların aşılmasına neden olabilecek bir yazılımdır. Kullanımı yalnızca yasal ve etik sınırlar içinde gerçekleştirilmelidir. Aksi takdirde yasal sonuçları olabilir.
Bu saldırı türünde, tüm olası kombinasyonlar yani her bir karakterin tüm olası değerleri denetlenir. Bu yöntem en temel ve en genel parola kırma yöntemidir. Ancak oldukça zaman alıcı olabilir.
Bu saldırı türünde John the Ripper, bir wordlist (sözlük) adı verilen bir dosyadaki kelimeleri veya parolaları kullanarak hash'i kırmaya çalışır. Wordlist, potansiyel parolaların bir listesini içerir. JTR, wordlist'teki her kelimeyi sırayla hash fonksiyonuna sokar ve elde edilen hash ile hedef hash'i karşılaştırır. Eğer eşleşen bir hash bulunursa parola bulunmuş olur.
Eğer belirli bir saldırı yöntemi belirtmediyseniz, JTR genellikle varsayılan olarak sözlük saldırısını kullanacaktır. Eğer başka bir saldırı yöntemi kullanmak istiyorsanız bunu belirtmeniz gerekecektir. Örneğin; "kaba kuvvet saldırısı" veya "hibrit saldırı" gibi.
Bu saldırı türünde, önceden hesaplanmış karma parola çiftleri içeren bir veritabanı olan rainbow table kullanılır. Bu tablo, hızlı bir şekilde parolaları geri çözebilir. Ancak güvenlik önlemleri genellikle bu tür saldırılara karşı korunur.
John the Ripper'ın kullanabileceği yaygın saldırı türleridir. Ancak daha fazla teknik ve özelleştirilmiş saldırı türleri de mümkündür.
Genel olarak bahsettiğimize göre kullanımından ve örnek saldırılardan bahsedelim.
-h parametresi ile JohnTheRipper üzerinde kullanabileceğimiz parametreleri görebiliyoruz.
Kullanacağımız yönteme göre çeşitli parametreler JohnTheRipper'da bulunmaktadır.
Öncelikle şifreli bir zip dosyası oluşturuyoruz. Oluşturmak için -e ve -r parametreleri ile birlikte bir zip dosyası adı ve içine koymak istediğimiz dosyanın adını (önceden oluşturduğumuz) veriyoruz.
Aşağıda örnek olarak şifreli zip dosyası oluşturma verilmiştir.
Ben oluşturduğum user.txt şifremi yusufnas olarak belirledim.
JohnTheRipper'da zip dosyasına özel kullandığımız zip2john ile zip dosyası içindeki veri dosyasının (user.txt) hash değerini almakla ilk adıma başlıyoruz.
Hash değerini almak için kullanım zip2john "şifreli dosyayı bulunduran zip" > "hash değerinin saklanacağı dosya"
zip2john yusufnas.zip > zip.hash komutu ile hash değerini alıyoruz.
Aldığımız hash değeri ile birlikte artık şifre kırmaya hazırız. john "hash dosyası" komutu ile şifre kırma işlemini başlatıyoruz. İşlem bittikten sonra aşağıdaki görselde gösterildiği gibi şifremiz bulunmuş bir şekilde ekranda yazıyor.
John, bu parolayı yukarıda bahsettiğimiz Sözlük Saldırısı yöntemiyle bulmuştur.
Parola: yusufnas
John The Ripper'ın kullanım alanı oldukça geniştir. Önceki örnekten farklı olarak bu sefer linux üzerinde bir kullanıcı oluşturacağız ve bunun şifresini kırmayı deneyeceğiz.
Öncelikle bir kullanıcı oluşturuyoruz ve şifresini belirliyoruz.
useradd -r "kullanıcı adi" ile kullanıcımızı oluşturduktan sonra passwd "kullanıcı adı" ile kullanıcımıza bir parola belirliyoruz.
Kullanıcı adı: sibervatan Parola: sibervatan
Oluşturduğumuz kullanıcının parolasını kırmak için kullanıcıların bulunduğu /etc/shadow dosyasına bir saldırı yapacağız.
Kullanım: john "dosya dizini" "şifre kırma formatı"
etc dizininde bulunduğum için john shadow --format=crypt komutu ile saldırıyı başlatıyorum. John The Ripper, kullanıcıları belirleyip hashlenmiş parolalarını verdiğiniz format yöntemine göre kendi algoritmasıyla bir saldırıda bulunuyor ve kullanıcı parolalarını ekrana yazdırıyor.
John bu şifreyi yukarıda bahsettiğimiz Sözlük Saldırısı yöntemiyle bulmuştur.
sibervatan kullanıcısı ve parolası (soldaki parola sağdaki kullanıcı adı) olarak ekrana yazdırılıyor.
John The Ripper ile pdf şifrelerini de şifrenin uzunluğuna ve karmaşıklığına göre belirli bir süre içerisinde kırabiliyoruz. Önce şifreli bir pdf dosyası oluşturalım.
Ben hazırda bulunan yusuf.pdf dosyamın adını belge-sifreli.pdf olarak değiştirip şifresini root olarak belirliyorum.
Oluşturduğum belge-sifreli.pdf dosyasının şifresinin hash değerini **pdfhash.txt'**ye atıyorum. Bu işlemi yaparken pdf2john'u kullanıyoruz.
Görüldüğü üzere pdfhash.txt masaüstünde oluşturuldu ve pdf dosyasının şifresinin hash değeri içine aktarıldı.
Son aşamada elde ettiğimiz hash değerini çözümlemeye çalışacağız. Bu sefer pdf dosyası kullandığımız için formatı pdf olarak veriyor ve pdfhash.txt içeriğini john aracı ile çözmeye çalışıyoruz.
John, bu parolayı yukarıda bahsettiğimiz Sözlük Saldırısı yöntemiyle bulmuştur.
24s sonra parola değeri root olarak bulunuyor.
Bu yazımda John The Ripper ile yapabileceğiniz zip ve kullanıcı parolasını kırma yöntemlerini anlattım. Çeşitli birçok şifre kırma saldırısını John The Ripper üzerinden yapabilirsiniz. Kafanıza takılan, anlamadığınız veya çözemediğiniz bir kısım olursa bana Github üzerindeki sosyal medya hesaplarımdan ulaşabilirsiniz.