Hashes, MACs & KDFs

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ

Common CTF patterns

  • โ€œSignatureโ€œ์€ ์‹ค์ œ๋กœ hash(secret || message) โ†’ length extension.
  • Salt๊ฐ€ ์—†๋Š” password hashes โ†’ ์‰ฌ์šด cracking / lookup.
  • hash์™€ MAC์„ ํ˜ผ๋™ํ•จ (hash != authentication).

Hash length extension attack

๊ธฐ๋ฒ•

์„œ๋ฒ„๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ โ€œsignatureโ€œ๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ :

sig = HASH(secret || message)

๊ทธ๋ฆฌ๊ณ  Merkleโ€“Damgรฅrd hash๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด (๊ณ ์ „์ ์ธ ์˜ˆ: MD5, SHA-1, SHA-256), ์ข…์ข… ์ด๋ฅผ ์•…์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์„ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด:

  • message
  • sig
  • hash function
  • (๋˜๋Š” brute-forceํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด) len(secret)

๊ทธ๋ ‡๋‹ค๋ฉด secret์„ ์•Œ์ง€ ์•Š๊ณ ๋„ ๋‹ค์Œ์— ๋Œ€ํ•œ ์œ ํšจํ•œ signature๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

message || padding || appended_data

์ค‘์š”ํ•œ ์ œํ•œ: HMAC๋Š” ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Œ

Length extension ๊ณต๊ฒฉ์€ Merkleโ€“Damgรฅrd hashes์— ๋Œ€ํ•ด HASH(secret || message)์™€ ๊ฐ™์€ ๊ตฌ์„ฑ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” HMAC(์˜ˆ: HMAC-SHA256)์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ, HMAC์€ ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ๋ฌธ์ œ๋ฅผ ํšŒํ”ผํ•˜๋„๋ก ํŠน๋ณ„ํžˆ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Tools

์ข‹์€ ์„ค๋ช…

https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks

Password hashing and cracking

์ฒซ ์งˆ๋ฌธ

  • salted์ธ๊ฐ€? (salt$hash ํ˜•์‹์„ ์ฐพ์•„๋ณด์„ธ์š”)
  • fast hash (MD5/SHA1/SHA256) ์ธ๊ฐ€์š”, ์•„๋‹ˆ๋ฉด slow KDF (bcrypt/scrypt/argon2/PBKDF2) ์ธ๊ฐ€์š”?
  • format hint (hashcat mode / John format)์ด ์žˆ๋‚˜์š”?

์‹ค์ „ ์›Œํฌํ”Œ๋กœ์šฐ

  1. ํ•ด์‹œ ์‹๋ณ„:
  • hashid <hash>
  • hashcat --example-hashes | rg -n "<pattern>"
  1. Salt๊ฐ€ ์—†๊ณ  ํ”ํ•œ ๊ฒฝ์šฐ: ์˜จ๋ผ์ธ DB์™€ crypto workflow ์„น์…˜์˜ ์‹๋ณ„ ๋„๊ตฌ๋ฅผ ์‹œ๋„ํ•˜์„ธ์š”.
  2. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด crack:
  • hashcat -m <mode> -a 0 hashes.txt wordlist.txt
  • john --wordlist=wordlist.txt --format=<fmt> hashes.txt

์•…์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ฐ˜์ ์ธ ์‹ค์ˆ˜

  • ๋™์ผํ•œ password๊ฐ€ ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž์— ์žฌ์‚ฌ์šฉ๋จ โ†’ crack one, pivot.
  • ์ž˜๋ฆฐ(truncated) hashes / custom transforms โ†’ normalize and retry.
  • ์•ฝํ•œ KDF ํŒŒ๋ผ๋ฏธํ„ฐ(์˜ˆ: ๋‚ฎ์€ PBKDF2 ๋ฐ˜๋ณต ์ˆ˜) โ†’ ์—ฌ์ „ํžˆ crackable.

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ