Loại băm nào là mật khẩu của máy Mac được lưu trữ?


22

Trên OS X 10.11 - Tôi đã mở .plisttệp người dùng của mình và đã xem bên trong tệp.

Tôi đã làm điều này với lệnh sau:

sudo defaults read /var/db/dslocal/nodes/Default/users/<username>.plist ShadowHashData|tr -dc 0-9a-f|xxd -r -p|plutil -convert xml1 - -o -

Các tập tin nói SALTED-SHA512trong đó, vì vậy tôi giả sử đó là một hàm băm SHA512.

Nhưng, tôi đã đi đến một vài trang web tạo hàm băm SHA512 và tôi đã nhập mật khẩu của mình. Tôi cuối cùng đã nhận được một hàm băm khác với những gì trong .plisttệp.

Vì vậy, làm thế nào để tôi chuyển đổi những gì trong .plisttệp thành một hàm băm thực sự, hoặc chính xác loại băm nào được lưu trữ trong tệp?


2
Loại mật khẩu OS X nào bạn cố bẻ khóa? HĐH X 10.7 / 10.8? Bởi vì tập tin của tôi nói SALTED-SHA512-PBKDF2(OS X 10.10)!
klanomath

@klanomath OS X El Capitan; và đó là những gì nó nói, không chắc chắn nếu PBKDF2 là dữ liệu nhạy cảm. SALTED-SHA512-PBKDF2 có phải là loại không, và nếu vậy, có bất kỳ chức năng / thư viện c ++ nào có thể tạo ra loại này không? (Tốt nhất là một chức năng / thư viện nhanh)
Flare Cat

Tôi nghĩ băm mật khẩu OS X được lưu trữ trong /var/db/shadow/hash?
tiếng nói

1
@ tjt263 không có trên Yosemite +
Flare Cat

Câu trả lời:


40

Bẻ khóa mật khẩu (hợp lệ trong OS 10.8 trở lên)

Đầu tiên tôi muốn giải thích lệnh của bạn:

sudo defaults read /var/db/dslocal/nodes/Default/users/user.plist ShadowHashData|tr -dc 0-9a-f|xxd -r -p|plutil -convert xml1 - -o -

Phần đầu tiên của lệnh đọc khóa ShadowHashData trong phần chính

sudo defaults read /var/db/dslocal/nodes/Default/users/user.plist ShadowHashData

Kết quả (chủ yếu là hex):

(
    <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>
)

phần thứ hai của lệnh tr -dc 0-9a-floại bỏ bất cứ thứ gì ngoại trừ 0-9a-f.

Kết quả (hex):

62706c6973743030d101025f101453414c5445442d5348413531322d50424b444632d303040506070857656e74726f70795473616c745a697465726174696f6e734f1080c5f198639915a101c99af326dffe13e8f14456be8fd2312a39a777b92178804e204ca4fee12a8667871440eff4288e811d86d746c6d96a60c919c3418dfebba42f329f5d73c0372d636d61d5dfda1add61af36c70e4acd771276107209e643ae92a0f43e95a452744e50fb4540d9bdf4e0b701725d7db488fbe18c1ab7737c6b4f10200dba6246bd38266b2e827ff7e7271380757c71d653893aa361d590239830236911c160080b2229313641c4e700000000000001010000000000000009000000000000000000000000000000ea

phần thứ ba hoàn nguyên xxd -r -pnó thành một nhị phân (hình thành mal):

?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??    ?

và phần cuối cùng plutil -convert xml1 - -o -tạo ra một chuỗi xml được định dạng tốt:

<?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>

Để có được một tập tin thực sự thay thế -o -bởi-o ~/Desktop/tempuser.plist

Plist chứa ba phần chính : lặp , entropymuối .

Lặp lại chỉ là một số nguyên, nhưng entropymuối được mã hóa base64. Để tiếp tục làm việc với họ, bạn phải giải mã và xxd cho họ:

Để giải mã muối, loại bỏ tất cả các khoảng trắng và dòng mới khỏi phần dữ liệu và sử dụng

echo  "salt_data" | base64 -D | xxd -p | tr -d \\n > salt

Với dữ liệu của tôi ở trên đó

echo  "DbpiRr04Jmsugn/35ycTgHV8cdZTiTqjYdWQI5gwI2k=" | base64 -D | xxd -p | tr -d \\n > ~/Desktop/salt

với kết quả muối (hex):

0dba6246bd38266b2e827ff7e7271380757c71d653893aa361d5902398302369

Tương tự cho entropy:

echo  "xfGYY5kVoQHJmvMm3/4T6PFEVr6P0jEqOad3uSF4gE4gTKT+4SqGZ4cUQO/0KI6BHYbXRsbZamDJGcNBjf67pC8yn11zwDctY21h1d/aGt1hrzbHDkrNdxJ2EHIJ5kOukqD0PpWkUnROUPtFQNm99OC3AXJdfbSI++GMGrdzfGs=" | base64 -D | xxd -p | tr -d \\n > ~/Desktop/entropy

với kết quả entropy (hex):

c5f198639915a101c99af326dffe13e8f14456be8fd2312a39a777b92178804e204ca4fee12a8667871440eff4288e811d86d746c6d96a60c919c3418dfebba42f329f5d73c0372d636d61d5dfda1add61af36c70e4acd771276107209e643ae92a0f43e95a452744e50fb4540d9bdf4e0b701725d7db488fbe18c1ab7737c6b

Nếu bạn cần một tệp văn bản cho hashcat để bẻ khóa mật khẩu, bạn phải kết hợp dữ liệu băm bạn đã tìm thấy thành một chuỗi:

$ml$<iterations(integer)>$<salt(hex)>$<entropy(hex)>

Với dữ liệu băm ví dụ của tôi đó là:

$ml$49504$0dba6246bd38266b2e827ff7e7271380757c71d653893aa361d5902398302369$c5f198639915a101c99af326dffe13e8f14456be8fd2312a39a777b92178804e204ca4fee12a8667871440eff4288e811d86d746c6d96a60c919c3418dfebba42f329f5d73c0372d636d61d5dfda1add61af36c70e4acd771276107209e643ae92a0f43e95a452744e50fb4540d9bdf4e0b701725d7db488fbe18c1ab7737c6b

Lưu tệp này vào một tệp có tên hash.txt và sử dụng nó trong hashcat. Lệnh brute force thích hợp để tìm mật khẩu (= mật khẩu kiểm tra đơn giản của tôi chỉ chứa 4 chữ số) là:

./hashcat-cli64.app -m 7100 hash.txt -a 3 ?d?d?d?d

Mật khẩu kết quả sau 3 phút bẻ khóa (trong VM) là 1111 .


Bây giờ thì ngược lại: Tạo ShadowHashData (hợp lệ trong OS 10.8 trở lên)

Điều này làm sáng tỏ lý do tại sao bạn không thể sử dụng trình tạo hàm băm SHA512 đơn giản để tạo dữ liệu "mật khẩu" của mình. SHA512 vẫn quan trọng mặc dù. Bối cảnh được giải thích ở đây: PBKDF2-Key_derivation_ process .

Bạn cần:

  • PRF là hàm giả ngẫu nhiên gồm hai tham số có độ dài đầu ra hLen (ví dụ: HMAC có khóa)
  • Mật khẩu là mật khẩu chính được tạo từ khóa dẫn xuất
  • Muối là một chuỗi các bit, được gọi là muối mật mã
  • c là số lần lặp mong muốn
  • dkLen là độ dài mong muốn của khóa dẫn xuất

để tạo DK = PBKDF2 (PRF, Mật khẩu, Muối, c, dkLen)

Để tạo DK ~ khóa entropy trong SALTED-SHA512-PBKDF2 (phần duy nhất trong phần trung gian phụ thuộc vào mật khẩu của bạn), hãy sử dụng php hash_pbkdf2 :

string hash_pbkdf2 ( string $algo , string $password , string $salt , int $iterations [, int $length = 0 [, bool $raw_output = false ]] )

Trong Terminal (PHP ⩾ 5.5 là cần thiết), nhập:

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 > 

Chuỗi được sử dụng trong $ salt là phần trình bày hex (\ x) của muối (hex):
0dba6246 ... -> \ x0d \ xba \ x62 \ x46 ...

Vì bạn có thể xác định hoặc biết thuật toán băm (phải là sha512 cho Mac 10.8 trở lên), các lần lặp (một số lớn hơn 0 và nhỏ hơn 2 ^ 32-1), muối (chiều dài 64 byte hex nhưng ngẫu nhiên!) Và chiều dài (256 byte) bạn có thể tạo một tệp plist trung gian được tạo tốt, bằng cách đảo ngược tất cả các lệnh ở trên.

Bằng cách đảo ngược lệnh của bạn (tốt hơn: mỗi lệnh con) từ bước đầu tiên, bạn có thể tạo dữ liệu của khóa ShadowHashData trong bản gốc bằng cách sử dụng bảng trung gian.


Và cuối cùng để trả lời câu hỏi của bạn: thuật toán băm được sử dụng để xử lý mật khẩu OS X (và các dữ liệu khác như muối) là SHA512. Nhưng bạn không thể nói mật khẩu người dùng của bạn được lưu dưới dạng băm SHA512 .

Mật khẩu của bạn và muối được nướng bởi sha512 nhiều lần, sau đó kết quả là base64'ed và đảo ngược xxd'ed. Cùng với muối và các lần lặp lại, nó xxd'ed và base64'ed một lần nữa.

Tôi hy vọng tôi đã không quên bất kỳ bước nào.


2
có một câu trả lời đặc biệt nhưng đây là một tập hợp các kịch bản kết hợp tất cả lại với nhau. Một điều thú vị mà tôi phát hiện ra khi cố gắng thực hiện điều này là Dklen đã 128. Hy vọng điều này sẽ giúp được ai đó!
3martini

2
Đây là một câu trả lời tuyệt vời. Tôi tự hỏi làm thế nào nó kết thúc với github.com/octomagon/davegrohl
bmike

@bmike không nhiều, vì điều này không cố bẻ khóa băm; nhưng github.com/octomagon/davegrohl có một tùy chọn để băm mật khẩu của người dùng vào màn hình mà không cố bẻ khóa, đó là những gì nó làm ở định dạng hashcat.
dardo82

@ 3martini bạn nói đúng, tôi cũng đã phát hiện ra, đây là phiên bản kịch bản shell của tôi: gist.github.com/dardo82/a529db7a191f375ef401adfea7156b6d
dardo82

0

Bạn sẽ cần muối của tài khoản người dùng của bạn trên hệ thống đó. Đó là một chuỗi ký tự ngẫu nhiên được phát minh cho bạn khi bạn tạo tài khoản của mình (hoặc có lẽ khi bạn thay đổi mật khẩu lần cuối có thể). Bạn cần thêm nó vào mật khẩu của mình, vd:

[khối lớn các số bên dưới sau đó ...] [mật khẩu của bạn]

Không chắc chắn nếu điều này được thêm vào phía trước hoặc phía sau: [yourPassword] [salt]? ai biết.

Đối với người dùng, USERNAMEbạn có thể xem băm ở đây:

sudo plutil -p /var/db/dslocal/nodes/Default/users/**USERNAME**.plist

Sau đó ra:

"ShadowHashData" => [
  0 => <62706c69 73743030 d2010203 04524e54 5f101453 414c5445 442d5348 41353132 2d50424b 4446324f 1010f5d1 dcc424b1 a6173adf 2b69b6b4 e043d305 06070809 0a57656e 74726f70 79547361 6c745a69 74657261 74696f6e 734f1080 8d6f15f8 36cf219f c4854634 62706c69 15f23eec 1615bb8a 04524e54 48dcd5fa c6e45319 faf0f12a ae0bebb0 7881dcdd 92fab792 9f354bf8 04524e54 a50cad3b d04e867b 689fbaa5 e1be59ff be37c6f3 60e41e59 3fdc0702 f296c9f9 8aedd2d6 77f5608a 337add70 5a6b39ba 64665f54 a85adb30 54b791d1 62706c69 aa4d0c9a 4f1020a2 99ead6a5 42730425 41353132 01247c53 6442646a 41353132 e2555d2e a3baee11 8e0b0008 000d0010 0027003a 00410049 004e0059 00dc00ff 00000000 00000201 00000000 0000000b 00000000 00000000 00000000 00000102>

Thật thú vị, trong khi tôi đã thay đổi một số khối số tìm kiếm ngẫu nhiên ở trên để Stack không nhận được muối của tôi (bạn có thể nhận thấy một số khối ngẫu nhiên lặp đi lặp lại đó là công việc dán của tôi!) Nhưng cuối cùng tôi đã không dán lên những khối đó Có vẻ như hòa tan vào số không vào cuối 512 băm SHA thú vị này !!!

Tái bút Họ đã di chuyển nó xung quanh một chút bit từng được sử dụng để ẩn thực sự tốt. Tôi bị lạc và không thể tìm thấy của tôi (xem bên dưới), nó bị ẩn trong một số cấu trúc thư mục độc ác từ 'Nam!

sh-3.2 # pwd
/ var / db / uuidtext
sh-3.2 # ls -R
00 10 20 30 40 50 60 70 80 90 A0 B0 C0 D0 E0 F0 dsc
01 11 21 31 41 51 61 71 81 91 A1 B1 C1 D1 E1 F1 F1
02 12 22 32 42 52 62 72 82 92 A2 B2 C2 D2 E2 F2
03 13 23 33 43 53 63 73 83 93 A3 B3 C3 D3 E3 F3
04 14 24 34 44 54 64 74 84 94 A4 B4 C4 D4 E4 F4
05 15 25 35 45 55 65 75 85 95 A5 B5 C5 D5 E5 F5
06 16 26 36 46 56 66 76 86 96 A6 B6 C6 D6 E6 F6
07 17 27 37 47 57 67 77 87 97 A7 B7 C7 D7 E7 F7
08 18 28 38 48 58 68 78 88 98 A8 B8 C8 D8 E8 F8
09 19 29 39 49 59 69 79 89 99 A9 B9 C9 D9 E9 F9
0A 1A 2A 3A 4A 5A 6A 7A 8A 9A AA BA CA DA EA FA
0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AB BB CB DB EB FB
0C 1C 2C 3C 4C 5C 6C 7C 8C 9C AC BC CC DC EC FC
0D 1D 2D 3D 4D 5D 6D 7D 8D 9D AD BD CD DD ED FD
0E 1E 2E 3E 4E 5E 6E 7E 8E 9E AE ĐƯỢC CE DE EE
0F 1F 2F 3F 4F 5F 6F 7F 8F 9F AF BF CF DF FF FF

./00:
229B1EE4463244AED56CD907B7BEF5 41D012E18834E9A89637A804BE488C A7D6EBD5D63A45918E4C3DCD479708
28400DB8373232B480C57B68EFA51D 7EE5E1A8A839CE9EBB017702B87E4A AE3ABF3C8333BF8A4917C38946F37F

./01:
56B34D8B03387CA319BDC11BEFB2ED A8359C18A633C9815A5C528BCD7E18 DD590C6953D428FEFCA59CDAD53349
62DA3DA0C73CE2AA227F372A727765 C05AE85AE73DF492529DCD10F0F60B ECD5DB35653A50ABCA585948E1295C

./02:
C7513934DD9D8EB73B4B0765D8 98F679561A3957947E381448224549 DBAB00E98835D2853386FF37C39FB7 FA85B4876B3E1D81B742C6C1F8
541FAC57203B75BD333F7EC33EBD32 C25AE52FA438AD9006931512A8A522 EFA98EEFF13799BFDFDE3033209EC2
3234B636EEA71A903E204E9599 CA252B6EA03E5A811ACFC88F0987C0 F815F784DC35A5B1D5F658F1DB666B

./03:
FA758E3DA4996D1CD5FF53B7EA 419205BFBB3469BCDCFE528FDE2C9B 73F0433FBB35A0AD1CD160020F60F0 D0034745E035D183CB344308FC05
26539F480B31D8B65F1495C85AADE2 69BF1B56BB30DE9BBE83BD3FDAB067 A7CA24A6E1E06B3F20084298054F41 D9727CA86A394CAD1CC1B1B1

./04:
87C3CF30E3ADCCDBD0A0D56913 B398A52A3C3041B8C89F91CB154B25 C004143AB43CD18D5808C2A3017BDE F478D3BCB6313782CBBD803691
99FBF1F9B439EB92551A096F187EC3 BA704190633F04B0BB5DE3ECB6C013 CA7AE366FA34BD86DB77974A1A4BED

./05:
67AE763654A52CBF399D33EB29 4D4B7528804C138C4D2330B51326C1 7B6C998C5331159A4ADC1F73D72E71 BEEC66F8573CF0BE339189FD1A688
11E586F995DADC9A6E2AC531963BD2 503FAB2A9C331A95670849CC595B30 8C0FAFB09A3526BEAA3A06976C42E7 CCC4737FBE915B2A8C6360
138A1B31EC95D1588BF15328A2 560F3EDCED38B29C14CAB39287EA26 988FAB9E6E70E0C21C9424703A5895 E1A892FA8D378C8C6BA9376A74
2669F6338C3AF9A9FBF365EE3294F3 708E7FDA333D6E951F5870047A266B 98E3BB24DF3BE8B49D27EE2F30DA42
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.