Запароленные ZIP-архивы часто используются для обмена конфиденциальными документами и даже для доставки вредоносных программ. Что удивительно: распаковать архив можно двумя паролями с одинаковым результатом. Как такое возможно — рассказывает специалист Positive Technologies.
Арсений Шароглазов, эксперт в штате Positive Technologies, поделился результатами интересного эксперимента. Для начала он создал защищенный паролем ZIP-архив с именем “x.zip.”.
В качестве пароля Шароглазов использовал часть текста знаменитой песни Рика Эстли «Never Gonna Give You Up» (тот самый мем), а именно:
Nev1r-G0nna-G2ve-Y8u-Up-N5v1r-G1nna-Let-Y4u-D1wn-N8v4r-G5nna-D0sert-You
Однако в процессе Арсений продемонстрировал, что содержимое архива можно извлечь с помощью совершенно другого пароля, и ошибка при этом не выводится. Пароль, успешно расшифровавший ZIP-файл, представлял следующую комбинацию символов:
pkH8a0AqNbHcdw8GrmSp
Пользователи задали справедливый вопрос: каким образом у Арсения получилось успешно использовать два пароля? Всю «фишку» объяснил пользователь Twitter под псевдонимом Unblvr.
При создании защищенного паролем ZIP-архива с включенным режимом AES-256 формат использует алгоритм PBKDF2 и хеширует пароль пользователя, если он слишком длинный (длиннее 64 символов, подчеркивает Unblvr).
В результате вместо пароля — "Nev1r-G0nna-G2ve-…" — рассчитанный хеш становится самим паролем к файлу. При попытке распаковать архив пользовательский ввод ещё раз хешируется архиватором и сравнивается с правильным паролем (который на тот момент уже являются самим хешем). Совпадение приводит к успешной распаковке файла.
Тот пароль, который задействовал Шароглазов — "pkH8a0AqNbHcdw8GrmSp" — является по факту ASCII-представлением более длинного SHA-1-хеша пароля. Контрольная сумма при конвертации в ASCII действительно выдавала “pkH8a0AqNbHcdw8GrmSp”.
Главным условием здесь является наличие пароля, длина которого превышает 64 символа. Специалисты BleepingComputer провели собственный эксперимент, доказавший состоятельность метода Шароглазова.
Источник: anti-malware