Навіщо зламувати хеші?
У CTF та пентесті часто знаходять дампи баз даних з хешами паролів. Мета — відновити оригінальні паролі для доступу до систем.
Крок 1: Визначити тип хешу
# Інструмент hash-identifier
hash-identifier
# Або hashid
hashid '$2y$10$abcdefghijklmnopqrstuuVGEEkG9psOFMWgRdJR0gk'
# Або онлайн: https://hashes.com/en/tools/hash_identifier
Поширені типи та їх вигляд:
MD5: 5f4dcc3b5aa765d61d8327deb882cf99
SHA1: 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
SHA256: 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
bcrypt: $2y$10$... (починається з $2y$ або $2b$)
MD5crypt: $1$salt$hash
SHA512crypt:$6$salt$hash
NTLM: aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0
Hashcat
Hashcat використовує GPU — значно швидший за John на більшості систем.
Базовий синтаксис
hashcat -m <тип> -a <атака> <хеш/файл> <словник>
Режими атаки (-a)
0 — словникова атака (dictionary)
1 — комбінаторна (два словники)
3 — brute-force/mask
6 — словник + маска
7 — маска + словник
Визначення -m (mode)
# Показати всі типи
hashcat --help | grep -i md5
hashcat --help | grep -i sha
# Поширені:
# 0 — MD5
# 100 — SHA1
# 1400 — SHA256
# 1800 — sha512crypt $6$
# 3200 — bcrypt $2*$
# 1000 — NTLM
# 5600 — NetNTLMv2
Приклади
Словникова атака:
# MD5 зі словником rockyou.txt
hashcat -m 0 -a 0 hash.txt /usr/share/wordlists/rockyou.txt
# bcrypt — повільно, але можливо
hashcat -m 3200 -a 0 hash.txt /usr/share/wordlists/rockyou.txt
# Зберігати прогрес
hashcat -m 0 -a 0 hash.txt rockyou.txt --session=mysession
hashcat --session=mysession --restore # відновити
Brute-force з маскою:
# ?l = lowercase, ?u = uppercase, ?d = digit, ?s = special, ?a = all
# 4-значний PIN
hashcat -m 0 -a 3 hash.txt ?d?d?d?d
# 8 символів, лише цифри та малі літери
hashcat -m 0 -a 3 hash.txt ?l?l?l?l?d?d?d?d
# Пароль що починається з великої, 7 малих
hashcat -m 0 -a 3 hash.txt ?u?l?l?l?l?l?l?l
Із правилами (rules):
# Правила модифікують слова зі словника (додають цифри, замінюють символи)
hashcat -m 0 -a 0 hash.txt rockyou.txt -r /usr/share/hashcat/rules/best64.rule
hashcat -m 0 -a 0 hash.txt rockyou.txt -r /usr/share/hashcat/rules/rockyou-30000.rule
Показати знайдені паролі:
hashcat -m 0 hash.txt --show
John the Ripper
John зручніший для початківців та добре працює без GPU.
Базове використання
# John сам визначає тип хешу
john hash.txt
# Зі словником
john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
# Показати зламані
john --show hash.txt
# Конкретний формат
john --format=bcrypt hash.txt
john --format=Raw-MD5 hash.txt
# Список форматів
john --list=formats
Підготовка хешів для John
# /etc/shadow формат
unshadow /etc/passwd /etc/shadow > combined.txt
john combined.txt
# ZIP архів
zip2john archive.zip > zip.hash
john zip.hash
# PDF
pdf2john document.pdf > pdf.hash
john pdf.hash
# SSH ключ з паролем
ssh2john id_rsa > ssh.hash
john ssh.hash --wordlist=rockyou.txt
Онлайн-ресурси
Якщо хеш швидкий (MD5, SHA1) — спробуйте спочатку онлайн: - crackstation.net — великі таблиці для MD5, SHA1, SHA256 - hashes.com — база зламаних хешів - md5decrypt.net
Словники
# Rockyou — стандарт для CTF
/usr/share/wordlists/rockyou.txt # Kali Linux
# або завантажити з GitHub SecLists
# SecLists — великий набір словників
git clone https://github.com/danielmiessler/SecLists
# Корисні списки:
SecLists/Passwords/Common-Credentials/10-million-password-list-top-1000000.txt
SecLists/Passwords/Leaked-Databases/rockyou.txt
Алгоритм для CTF
1. Отримали хеш → визначте тип (hash-identifier/hashid)
2. Швидкий хеш (MD5/SHA1) → спробуйте crackstation онлайн
3. Не знайдено → hashcat/john зі словником rockyou.txt
4. Не вийшло → додайте правила (best64.rule)
5. Знаєте формат пароля → brute-force з маскою
6. bcrypt/sha512crypt → тільки словник, GPU обов'язковий