John The Ripper
John The Ripper Nedir?
John the Ripper, bilgisayar güvenliği alanında popüler bir şifre kırma aracıdır. Adını, ünlü İngiliz seri katil Jack the Ripper’dan alır. John the Ripper, özellikle parola güvenliği testleri ve zayıf şifrelerin keşfi için kullanılır.
John the Ripper, çeşitli şifre kırma yöntemleri ve saldırılar kullanarak parolaları deneme ve çözme yeteneğine sahiptir. Bazı kullanılan yöntemler şunlardır:
Sözlük Saldırısı:
Bu yöntemde, önceden oluşturulmuş bir sözlük veya kelime listesi kullanılarak kullanıcıların yaygın olarak kullandığı parolaları deneyerek şifreleri çözmeye çalışır. Sözlük saldırısı, hızlı ve etkili olabilir, çünkü birçok kullanıcının basit veya yaygın parolalar kullanma eğiliminde olduğu bilinir.
Örnek: John the Ripper’ı, “passwords.txt” adlı bir sözlük dosyasıyla kullanarak kullanıcının parolasını kırmak istediğinizi düşünelim:
john — wordlist=passwords.txt hashed_passwords.txt
Bir şifreleme algoritmasının kendisi geri dönüşümsüz olduğu için (yani şifreleme sonucu oluşan hash değeri doğrudan orijinal parolaya dönüştürülemez), şifreleme algoritmasını bilen ve hashlenmiş bir parolaya sahip olan bir saldırgan, büyük bir kelime listesi olan bir sözlük kullanarak hash değerleri oluşturabilir. Ardından, bu oluşturulan hash değerlerini hedeflenen hash değeriyle karşılaştırarak eşleşme var mı diye kontrol edebilir. Eşleşme bulunursa, parolayı çözmüş olur.
Bu işlem, sözlük saldırısı olarak adlandırılır ve parola güvenliği testlerinde yaygın olarak kullanılır. John the Ripper, farklı hash türlerinde (MD5, SHA-1, SHA-256 vb.) hızlı brute force saldırıları yapabilmenizi sağlayan bir araçtır. Şifreli parolaların hash değerleri ile bir sözlük oluşturarak veya kullanarak bu saldırıları gerçekleştirebilirsiniz.
Brute-Force Saldırısı:
Bu yöntem, tüm olası karakter kombinasyonlarını deneyerek şifreyi kırmayı amaçlar. Brute-force saldırısı, diğer yöntemler başarısız olduğunda veya parolanın uzunluğu ve karmaşıklığı bilinmediğinde kullanılabilir, ancak oldukça zaman alıcıdır.
Örnek: John the Ripper’ı basit bir vaka olarak düşünün, 1 ile 4 karakter arasındaki parolaları denemek istediğiniz şifreli dosyalarınız varsa:
john — min-length=1 — max-length=4 hashed_passwords.txt
Karışık Saldırılar:
Bu yöntemde, kullanıcıların yaygın değişikliklerle oluşturduğu parola desenlerini tahmin etmeye çalışır. Örneğin, kullanıcılar sık sık basit bir şifreye eklemeler veya değişiklikler yaparlar (örneğin, “password1”, “password2010” gibi).
Örnek: John the Ripper’ı bazı popüler desenleri(pattern) denemek için kullanmak:
john — incremental:alphanumeric hashed_passwords.txt
Bu komut, alfanümerik karakterlerle (harf ve rakamlar) artan bir deseni denemeye başlar ve şifreyi tahmin etmeye çalışır.
Kali Linux’a John The Ripper’ı yüklemek için:
TryHackMe Çözümleri
LINK: https://tryhackme.com/room/johntheripper0
Not: NTHash / NTLM
NTHash, modern Windows işletim sistemi makinelerinin kullanıcı ve hizmet parolalarını sakladığı hash formatıdır. Aynı zamanda genellikle “NTLM” olarak da adlandırılır ve bu, parolaların önceki sürümünü oluşturan “LM” olarak bilinen “LM/NT” anlamına gelir.
Küçük bir tarihçe, Windows ürünleri için “NT” ataması aslen “New Technology” anlamına gelir ve MS-DOS işletim sisteminden türetilmeyen ürünleri belirtmek için kullanılmıştır. Sonunda “NT” çizgisi, Microsoft tarafından yayınlanacak standart işletim sistemi tipi haline geldi ve isim düşürüldü, ancak hala bazı Microsoft teknolojilerinin adlarında yaşıyor.
NTHash / NTLM hashlerine, bir Windows makinesindeki SAM veritabanını , Mimikatz gibi bir araç kullanarak veya Active Directory veritabanı: NTDS.dit’ten elde edebilirsiniz. Genellikle bir yetki yükseltme yapmak için hash’i kırmak zorunda kalmayabilirsiniz; çünkü genellikle “pass the hash” saldırısı yaparak da devam edebilirsiniz. Ancak zayıf bir parola politikası varsa, hash kırma uygun bir seçenek olabilir.
Formatını bildiğimiz bir hash değerini aşağıdaki gibi direkt çözümleyebiliyoruz:
/etc/shadow dosyası, Linux makinelerinde parola hashlerinin depolandığı dosyadır. Ayrıca son parola değişikliği tarihi ve parola süresi gibi diğer bilgileri de içerir. Sistemdeki her kullanıcı veya kullanıcı hesabı için bir satır içerir. Bu dosya genellikle yalnızca root kullanıcı tarafından erişilebilir. Dolayısıyla, hashleri elde etmek için yeterli yetkiniz olmalıdır. Ancak böyle bir yetkiniz varsa, bazı hashleri kırma şansınız olabilir.
Unshadowing (Parola Listelerini Birleştirme)
John, verilerle çalışabilmesi için belirli bir formata dikkat edebilir. Bu nedenle /etc/shadow parolalarını kırmak için John’a verilerin nasıl sunulacağını anlaması için /etc/passwd dosyası ile birleştirmeniz gerekir. Bunun için, John araçlarının bir parçası olan unshadow adlı bir araç kullanırız. Unshadow’in temel sözdizimi şöyledir:
- unshadow [passwd dosya yolu] [shadow dosya yolu]
- unshadow — Unshadow aracını çalıştırır
- [passwd dosya yolu] — Hedef makineden aldığınız /etc/passwd dosyasının kopyasını içeren dosya
- [shadow dosya yolu] — Hedef makineden aldığınız /etc/shadow dosyasının kopyasını içeren dosya
Unshadow aracı, /etc/passwd dosyasının kullanıcı adlarını ve /etc/shadow dosyasındaki hashleri birleştirerek John’un anlayabileceği bir formata dönüştürür. Böylece John the Ripper ile daha kolay ve verimli bir şekilde hashleri kırmaya başlayabilirsiniz.
Örnek olarak, root’a ait şifreyi bulduk: 1234 :)
Single Crack Modu ve Word Mangling
Şu ana kadar, John’un sözlük modunu kullanarak basit ve karmaşık olmayan hash’leri brute force ile çözmek için kullanıyorduk. Ancak John’un başka bir modu daha vardır, buna Single Crack Modu denir. Bu modda, John, sadece kullanıcı adında verilen bilgileri kullanarak olası parolaları sezgisel olarak bulmaya çalışır. Bunun için kullanıcı adındaki harf ve rakamları hafifçe değiştirerek olası parolaları üretir.
Word Mangling
Single Crack modu ve word mangling kavramını daha iyi anlamak için bir örnek üzerinden geçelim:
Kullanıcı adını “Markus” olarak alalım.
Bazı olası parolalar şunlar olabilir:
- Markus1, Markus2, Markus3 (vb.)
- MArkus, MARkus, MARKus (vb.)
- Markus!, Markus$, Markus* (vb.)
Bu teknik word mangling olarak adlandırılır. John, kendisine beslenen bilgilere dayanarak kendi sözlüğünü oluşturur ve “word mangling” adı verilen bir dizi kural kullanır. Bu kurallar, hedefinizi çözmek için başlangıçta belirtilen kelimeyi nasıl değiştirebileceğini tanımlar. Bu yöntem, zayıf parolaların kullanıcı adı veya giriş yaptıkları hizmet hakkında bilgiler temelinde oluşabileceğini kullanır.
Bu mod, brute force veya sözlük saldırısının ötesine geçerek daha karmaşık ve gerçek dünya senaryolarına uygun parola kombinasyonlarını tahmin edebilir.
Custom Rules Nedir?
John’un Single Crack Modunda gezinirken, belirli word mangling kalıpları için fikirleriniz olabilir veya parolalarınızın genellikle kullandığı bazı kalıpların belirli bir word mangling kalıbıyla çoğaltılabileceğini düşünebilirsiniz. Şöyle ki, kendi özel kurallarınızı da tanımlayabilirsiniz. John, bu kuralları kullanarak dinamik olarak parolalar oluşturacaktır. Bu özellik, hedefinizin parola yapısı hakkında daha fazla bilgiye sahip olduğunuzda çok işe yarar.
Parola Korumalı Bir Zip Dosyasının Kırılması
John’u, parola korumalı Zip dosyalarındaki parolayı kırmak için kullanabiliriz. Yine, zip dosyasını John’un anlayabileceği bir formata dönüştürmek için john paketine ait başka bir aracı kullanacağız, ancak her türlü amacımıza uygun bir şekilde, artık oldukça aşina olduğumuz syntax’ı kullanacağız.
Zip2John
Daha önce kullandığımız unshadow aracına benzer şekilde, zip2john aracını da kullanarak zip dosyasını John’un anlayabileceği ve kırabileceği bir hash formatına dönüştüreceğiz. Temel kullanımı:
zip2john [seçenekler] [zip dosyası] > [çıktı dosyası]
[opitons] — zip2john’a belirli özetleme seçeneklerini iletebilmenizi sağlar, bunun sıklıkla gerekli olması beklenmez.
[zip file] — Parolasını kırmak istediğiniz zip dosyasının yolu.
“>” — Bu çıktı yönlendiricisidir
[output file] — Çıktının saklanacağı dosya.
Örnek Kullanım:
zip2john zipfile.zip > zip_hash.txt
Cracked
Sonrasında, örnek kullanımımızda zip2john ile ürettiğimiz “zip_hash.txt” adlı dosyayı alıp, unshadow ile yaptığımız gibi doğrudan John’a paslayabiliriz:
john — wordlist=/usr/share/wordlists/rockyou.txt zip_hash.txt
SSH Anahtar Parolalarının Kırılması
John’u, SSH anahtar dosyası (id_rsa) içindeki parolayı kırmak için kullanabiliriz. Genellikle SSH oturumu açarken parola kullanarak kimlik doğrulama yaparız. Ancak anahtar tabanlı kimlik doğrulamasını da yapılandırabiliriz; böylece id_rsa adlı özel anahtarımızı kimlik doğrulama anahtarı olarak kullanarak uzak bir makineye SSH üzerinden giriş yapabiliriz. Ancak, anahtar tabanlı kimlik doğrulaması kullanırken çoğu zaman bir parola gerekecektir. Burada, John’u bu parolayı kırmak için kullanacağız ve anahtar tabanlı kimlik doğrulaması ile giriş yapmamıza olanak tanıyacağız.
SSH2John
SSH2John adıyla anılan araç, SSH oturumuna giriş yapmak için kullandığımız id_rsa özel anahtarını, John’un anlayabileceği bir hash formatına dönüştürür. Syntax’ı tahmin ettiğiniz gibi basittir. Eğer ssh2john yüklü değilse, /opt/john/ssh2john.py dizininde bulunan ssh2john.py dosyasını kullanabilirsiniz. Bunu yapmak için ssh2john komutunu python3 /opt/ssh2john.py (ya da Kali’de python /usr/share/john/ssh2john.py) şeklinde değiştirin.
Örnek:
Okuduğunuz için teşekkürler.