Parola kırma (OS 10.8 ve daha yeni sürümlerde geçerlidir)
Öncelikle emrinizi açıklamak istiyorum:
sudo defaults read /var/db/dslocal/nodes/Default/users/user.plist ShadowHashData|tr -dc 0-9a-f|xxd -r -p|plutil -convert xml1 - -o -
Komutunun ilk bölümü anahtar okur ShadowHashData plist
sudo defaults read /var/db/dslocal/nodes/Default/users/user.plist ShadowHashData
Sonuç (çoğunlukla altıgen):
(
<62706c69 73743030 d101025f 10145341 4c544544 2d534841 3531322d 50424b44 4632d303 04050607 0857656e 74726f70 79547361 6c745a69 74657261 74696f6e 734f1080 c5f19863 9915a101 c99af326 dffe13e8 f14456be 8fd2312a 39a777b9 2178804e 204ca4fe e12a8667 871440ef f4288e81 1d86d746 c6d96a60 c919c341 8dfebba4 2f329f5d 73c0372d 636d61d5 dfda1add 61af36c7 0e4acd77 12761072 09e643ae 92a0f43e 95a45274 4e50fb45 40d9bdf4 e0b70172 5d7db488 fbe18c1a b7737c6b 4f10200d ba6246bd 38266b2e 827ff7e7 27138075 7c71d653 893aa361 d5902398 30236911 c160080b 22293136 41c4e700 00000000 00010100 00000000 00000900 00000000 00000000 00000000 0000ea>
)
komutun ikinci kısmı tr -dc 0-9a-f
0-9a-f dışında bir şeyi kaldırır.
Sonuç (onaltılık):
62706c6973743030d101025f101453414c5445442d5348413531322d50424b444632d303040506070857656e74726f70795473616c745a697465726174696f6e734f1080c5f198639915a101c99af326dffe13e8f14456be8fd2312a39a777b92178804e204ca4fee12a8667871440eff4288e811d86d746c6d96a60c919c3418dfebba42f329f5d73c0372d636d61d5dfda1add61af36c70e4acd771276107209e643ae92a0f43e95a452744e50fb4540d9bdf4e0b701725d7db488fbe18c1ab7737c6b4f10200dba6246bd38266b2e827ff7e7271380757c71d653893aa361d590239830236911c160080b2229313641c4e700000000000001010000000000000009000000000000000000000000000000ea
üçüncü bölüm xxd -r -p
onu (hatalı biçimlendirilmiş) bir ikili dosyaya döndürür:
?bF?8&k.???'?u|q?S?:?aՐ#?0#i?`WentropyTsaltZiterationsO???c??ɚ?&????DV???1*9?w?!x?N L???*?g?@??(????F??j`??A????/2?]s?7-cma????a?6?J?wvr ?C????>??RtNP?E@ٽ??r]}?????s|kO ")16A?? ?
ve son bölüm plutil -convert xml1 - -o -
iyi biçimlendirilmiş bir xml plist oluşturur:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SALTED-SHA512-PBKDF2</key>
<dict>
<key>entropy</key>
<data>
xfGYY5kVoQHJmvMm3/4T6PFEVr6P0jEqOad3uSF4gE4gTKT+4SqGZ4cUQO/0
KI6BHYbXRsbZamDJGcNBjf67pC8yn11zwDctY21h1d/aGt1hrzbHDkrNdxJ2
EHIJ5kOukqD0PpWkUnROUPtFQNm99OC3AXJdfbSI++GMGrdzfGs=
</data>
<key>iterations</key>
<integer>49504</integer>
<key>salt</key>
<data>
DbpiRr04Jmsugn/35ycTgHV8cdZTiTqjYdWQI5gwI2k=
</data>
</dict>
</dict>
</plist>
Gerçek bir dosya değiştirmek almak için -o -
tarafından-o ~/Desktop/tempuser.plist
Plist üç anahtar parça içerir : iterasyonlar , entropi ve tuz .
iterasyon sadece bir tamsayıdır, ancak entropi ve tuz base64 kodludur. Onlarla çalışmaya devam etmek için bunları çözmeniz ve xxd yapmanız gerekir:
Tuzun kodunu çözmek için veri bölümündeki tüm boşlukları ve yeni hatları kaldırın ve kullanın
echo "salt_data" | base64 -D | xxd -p | tr -d \\n > salt
Yukarıdaki verilerimle bu
echo "DbpiRr04Jmsugn/35ycTgHV8cdZTiTqjYdWQI5gwI2k=" | base64 -D | xxd -p | tr -d \\n > ~/Desktop/salt
tuz (altıgen) sonucu ile:
0dba6246bd38266b2e827ff7e7271380757c71d653893aa361d5902398302369
Entropi için aynı şey:
echo "xfGYY5kVoQHJmvMm3/4T6PFEVr6P0jEqOad3uSF4gE4gTKT+4SqGZ4cUQO/0KI6BHYbXRsbZamDJGcNBjf67pC8yn11zwDctY21h1d/aGt1hrzbHDkrNdxJ2EHIJ5kOukqD0PpWkUnROUPtFQNm99OC3AXJdfbSI++GMGrdzfGs=" | base64 -D | xxd -p | tr -d \\n > ~/Desktop/entropy
entropi (hex) sonucu ile:
c5f198639915a101c99af326dffe13e8f14456be8fd2312a39a777b92178804e204ca4fee12a8667871440eff4288e811d86d746c6d96a60c919c3418dfebba42f329f5d73c0372d636d61d5dfda1add61af36c70e4acd771276107209e643ae92a0f43e95a452744e50fb4540d9bdf4e0b701725d7db488fbe18c1ab7737c6b
Eğer hashcat'in şifreyi kırması için bir metin dosyasına ihtiyacınız varsa, bulduğunuz karma verileri tek bir dizede birleştirmeniz gerekir:
$ml$<iterations(integer)>$<salt(hex)>$<entropy(hex)>
Örnek karma verilerimle:
$ml$49504$0dba6246bd38266b2e827ff7e7271380757c71d653893aa361d5902398302369$c5f198639915a101c99af326dffe13e8f14456be8fd2312a39a777b92178804e204ca4fee12a8667871440eff4288e811d86d746c6d96a60c919c3418dfebba42f329f5d73c0372d636d61d5dfda1add61af36c70e4acd771276107209e643ae92a0f43e95a452744e50fb4540d9bdf4e0b701725d7db488fbe18c1ab7737c6b
Bunu hash.txt adlı bir dosyaya kaydedin ve hashcat içinde kullanın. Parolayı bulmak için uygun kaba kuvvet komutu (= sadece 4 basamak içeren basit test parolam):
./hashcat-cli64.app -m 7100 hash.txt -a 3 ?d?d?d?d
3 dakikalık kırılmadan sonra ortaya çıkan şifre (VM'de) 1111'dir .
Şimdi tersi: ShadowHashData oluşturma (OS 10.8 ve daha yeni sürümler için geçerlidir)
Bu, "parola" verilerinizi oluşturmak için neden basit bir SHA512 karma oluşturucu kullanamayacağınızı açıklar. SHA512 yine de önemlidir. Arka plan burada açıklanmaktadır: PBKDF2-Key_derivation_process .
Gerekenler:
- PRF, çıkış uzunluğu hLen olan iki parametrenin bir sahte işlevidir (örn. Anahtarlı HMAC)
- Parola, türetilmiş bir anahtarın oluşturulduğu ana paroladır
- Tuz, şifreleme tuzu olarak bilinen bir bit dizisidir
- c istenen yineleme sayısıdır
- dkLen, türetilen anahtarın istenen uzunluğudur
DK = PBKDF2 oluşturmak için (PRF, Şifre, Tuz, c, dkLen)
SALTED-SHA512-PBKDF2'de (ara plisteki parolanıza dayanan tek bölüm) DK ~ entropi anahtarı oluşturmak için php hash_pbkdf2'yi kullanın :
string hash_pbkdf2 ( string $algo , string $password , string $salt , int $iterations [, int $length = 0 [, bool $raw_output = false ]] )
Terminal'de (PHP ⩾ 5.5 gereklidir) şunu girin:
php -a
Interactive shell
php > $password = "1111";
php > $iterations = 49504;
php > $length = 256;
php > $salt = "\x0d\xba\x62\x46\xbd\x38\x26\x6b\x2e\x82\x7f\xf7\xe7\x27\x13\x80\x75\x7c\x71\xd6\x53\x89\x3a\xa3\x61\xd5\x90\x23\x98\x30\x23\x69";
php > $hash = hash_pbkdf2("sha512", $password, $salt, $iterations, $length);
php > echo $hash;
c5f198639915a101c99af326dffe13e8f14456be8fd2312a39a777b92178804e204ca4fee12a8667871440eff4288e811d86d746c6d96a60c919c3418dfebba42f329f5d73c0372d636d61d5dfda1add61af36c70e4acd771276107209e643ae92a0f43e95a452744e50fb4540d9bdf4e0b701725d7db488fbe18c1ab7737c6b
php >
$
Salt içinde kullanılan dize, tuzun (hex) kaçan hex (\ x) sunumudur: 0dba6246 ... -> \ x0d \ xba \ x62 \ x46 ...
Karma algoritmayı (Mac 10.8 ve üstü için sha512 olması gerekir) tanımlayabildiğiniz veya bildiğiniz için, yinelemeler (sıfırdan büyük ve 2 ^ 32-1'den küçük bir sayı), tuz (uzunluk 64 bayt altıgen ancak rastgele!) Ve uzunluk (256 bayt) yukarıdaki tüm komutları tersine çevirerek iyi biçimlendirilmiş bir ara plist dosyası oluşturabilirsiniz.
İlk adımdan komutunuzu (daha iyi: alt komutların her birini) ters çevirerek , ara plist'i kullanarak orijinal plistte ShadowHashData anahtarının verilerini oluşturabilirsiniz .
Ve son olarak sorunuzu cevaplamak için: OS X şifresini (ve tuz gibi diğer verileri) işlemek için kullanılan karma algoritma SHA512'dir. Ancak kullanıcı şifrenizin SHA512 karması olarak saklandığını söyleyemezsiniz .
Parolanız ve tuz birçok kez sha512 ile ızgaralanır, sonuç base64'ed ve ters xxd'ed olur. Birlikte ile tuz ve tekrarlamalar o xxd'ed oluyor ve tekrar base64'ed.
Umarım hiçbir adımı unutmadım.
SALTED-SHA512-PBKDF2
dosyam (OS X 10.10) diyor !