web-dev-qa-db-ja.com

hashcatはどのようにLinuxパスワードでSHA CRYPT ROUNDSを理解するのですか?

私の一部/etc/login.defsファイルは次のようになります。

ENCRYPT_METHOD SHA512

# Define the number of SHA rounds.
# If not specified, the libc will choose the default number of rounds (5000).
# The values must be inside the 1000-999999999 range.
# If only one of the MIN or MAX values is set, then this value will be used.
# If MIN > MAX, the highest value will be used.
#
# SHA_CRYPT_MIN_ROUNDS 5000

SHA_CRYPT_MAX_ROUNDS 6000

これについて私が理解していることから、パスワードは6000ラウンドのハッシュを通過するということです。

ここで、hashcatのようなツールを使用したときに、ハッシュが「x」回のラウンドを通過したことをどのように通知しますか。

私は次のようにハッシュキャットを使うことができます:hashcat -m 1800 -a 0 -o found.txt hash.txt rockyou.txtそしてそれはまだそれを見つけることができます。それだけでラウンド数を計算できますか?

編集:Linuxボックスが実際に6000ラウンドのハッシュを使用していないことがわかりましたが、6000ラウンドを使用するように設定したと思いました。代わりに5000でした。

いくつかのPythonコードを使用して、Linuxで「SHA512」パスワード暗号化を複製することができました:

from passlib.hash import sha512_crypt
sha512_crypt.encrypt("testing123",rounds=6000,salt="6EGwX1iP")

結果のハッシュは$6$rounds=6000$6EGwX1iP$oMerxGPimb/4ZXcI0Vbt87sNfw07eh7VPzcQwHOls8t3hLYGLQR0KjncrpyAjLTfPC3Fj7jhFoZKeuPRfTbJa/

もちろん、この文字列には、hashcatに渡すことができるラウンド数があります。

4
user1720897

編集:あなたがあなたの答えを見つけたのを見ましたが、完全を期すためにここに追加します。 (そして私はすでにこれを書き留めていました)。


Hashcatはラウンド数を推測せず、/etc/login.defsで指定されたラウンド数が適切に適用されません。

私はLinuxボックスから例を挙げました:

$ 6 $ elIIOT8d $ lXVE7ZxTaBnvyi3kgrVGOpq.I/tQU9CN.G2FgpcjyxovibRB1TjDbk7NFkOwo7ySt.w8BwnacxQ0876/hz6l //

これは次と同じです:

$ 6 $ rounds = 50&elIIOT8d $ lXVE7ZxTaBnvyi3kgrVGOpq.I/tQU9CN.G2FgpcjyxovibRB1TjDbk7NFkOwo7ySt.w8BwnacxQ0876/hz6l //

ラウンド数が適切に設定されている場合、ハッシュには5000ではなく別の数値が表示されます。

Linux

Kali Linuxを実行している私のボックスで、/etc/pam.d/common-passwordに移動して行(私の場合は25行目)を見つけることによって、ラウンド数を指定することができました。

パスワード[success = 1 default = ignore] pam_unix.so obscure sha512

「rounds = 1234」をそれに追加しました:

パスワード[success = 1 default = ignore] pam_unix.so obscure sha512 rounds = 1234

ユーザーを保存して作成しました:

$> adduser test3

そして、これが私の/etc/shadowファイルに含まれています。

$>tail --lines=1 /etc/shadow

test3:$ 6 $ rounds = 1234 $ SzWcxuIH $ YX1QDmE1PG7grJ/4rJ8LkwggmEffoo9vUCuPAhL3x2sBQZJ8n2a2OeHpFEKaWDH2o.NGYwbLFZNabfOQlQ:9:27:166:166

ハッシュキャット

シグネチャの後にrounds = [反復数]を追加することにより、Hashcatが行う反復回数を手動で指定できます。例:

$ 6 $ rounds = 50&elIIOT8d $ lXVE7ZxTaBnvyi3kgrVGOpq.I/tQU9CN.G2FgpcjyxovibRB1TjDbk7NFkOwo7ySt.w8BwnacxQ0876/hz6l //

ただし、これは/etc/shadowのラウンド数!= 5000の場合、自動的に適用されます。

3
Mrtn