Недавно в моем чате меня спросили: «А как вообще взламывают архивы?» Сейчас расскажу.

При создании архива можно указать пароль. Он будет проверятся при разархивировании. Так как мы говорим про взлом пароля, то логично предположить, что он нам неизвестен. Ибо зачем тогда все это?)

Так вот. Пароль можно вводить вручную или с помощью скрипта, чтобы попытаться его подобрать. Благо, количество попыток не ограничено. Спустя 2000 лет мы его подберем) Но есть и иной подход.

От введенного пароля вычисляется хеш значение и записывается в архив для проверки. Этот хеш нам и нужен. Для того, чтобы этот хеш доставать из архивов есть следующие утилиты:

  • 7z2john.py — 7zip
  • rar2john — RAR 3.x
  • zip2john — ZIP

Перейдем к взлому:3

А как ломать?

Скачать архив

Первым делом нужно извлечь хеш из архива с помощью описанных выше утилит. Много ума для этого не нужно. Запускаем утилиты — получаем хеш:

root@6a23fdb0da11:/rev# 7z2john crackme.7z
crackme.7z:$7z$2$19$0$$16$55cb7296b04ff77913958f5ab815b889$144801049$32$32$1f70e7decc61247588116bb00f572063795522b368b3099d1e786375b4dc36c5$28$00

Хеш мы получили, но нужно быть внимательным. В начале строки стоит название файла. Оно нам не нужно, поэтому надо удалить его. Примеры формата хешей можно посмотреть по данной ссылке.

А вот и готовый хеш:

$7z$2$19$0$$16$55cb7296b04ff77913958f5ab815b889$144801049$32$32$1f70e7decc61247588116bb00f572063795522b368b3099d1e786375b4dc36c5$28$00

Сохраню его в файл для дальнейших атак)

Атака по словарю

Это одна из самых простых и популярных техник. В чем ее смысл? Мы берем громадный список популярных паролей. Для каждого из паролей мы вычисляем хеш и сравниваем с тем, что мы извлекли из архива. Такие словари можно найти туть или вот туть.

Руками это делать неудобно (хотяяяя… можете и попробовать… увидимся через годик). Поэтому используют разные тулы, например, hashcat, john the ripper. Я буду использовать hashcat.

В hashcat для атаки по словарю нужно указать ее тип через флаг -a 0. Через флаг -m указывает тип хеша (для 7z — это 11600). Таким образом запуск утилиты будет выглядеть так:

cu63:rar_crack/ $ hashcat -a 0 -m 11600 7z_hash password

Для того, чтобы посмотреть найденный пароль, нужно добавить флаг --show.

cu63:rar_crack/ $ hashcat -a 0 -m 11600 7z_hash password --show                                                                                                                                                                          
$7z$2$19$0$$16$55cb7296b04ff77913958f5ab815b889$144801049$32$32$1f70e7decc61247588116bb00f572063795522b368b3099d1e786375b4dc36c5$28$00:********

Так я вам и показал пароль :3

Атака по маске

Другим же методом атаки будет атака по маске. Если атака по словарю не сработала. То мы можем составить кастомную маску, по которой будут подбираться пароли. По факту, это брутфорс пароля по заданным правилам. Вот обозначения для встроенных наборов символов:

  • ?l = abcdefghijklmnopqrstuvwxyz
  • ?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
  • ?d = 0123456789
  • ?h = 0123456789abcdef
  • ?H = 0123456789ABCDEF
  • ?s = «space»!"#$%&'()*+,-./:;<=>?@[\]^_{|}~
  • ?a = ?l?u?d?s;
  • ?b = 0x00 - 0xff;

Для данного типа атаки передается флаг -a 3. Если длина пароля неизвестна, то можно поставить автоувеличение последовательности с помощью --increment.

Чтобы вас сильно не мучать (все таки лето на дворе, не нужно вам с печкой спать :3) — пароль от архива имеет длину 8. И составлен только из букв в нижнем регистре. Запущу атаку:

cu63:rar_crack/ $ hashcat -a 3 -m 11600 7z_hash <здесь маска>

Найденный пароль все еще можно посмотреть, добавив флаг --show.

Таким образом можно попытаться подобрать пароль для архива. Чем больше будет известно информации про пароль, тем точнее можно настроить подбор и сэкономить кучу времени.

В архив я спрятал небольшой флаг. В качестве проверялки буду выступать лично я. Так что можете скинуть мне его в тг @ju57_4_cu63 и, возможно, вам достанется приз:3