Домашняя страничка Стефурак П.Б. Промзона. О стойкости пароля RAR архива, при использовании unrar.dll
 
     Домашняя Промзона Спальный район  

Промзона \ О стойкости пароля RAR архива, при использовании unrar.dll
О стойкости пароля RAR архива, при использовании unrar.dll

 

Этот текст - не более чем некоторые мысли об эффективности использования защищенных паролем RAR архивов в программном обеспечении, использующем для доступа к ним unrar.dll.
Тут не будут "разжеваны" многие мелкие детали. Предполагается, что если Вам это интересно, то Вы в курсе как работает механизм dll, windows, что такое C и Delphi.
О чем речь
Анализируя некоторые случаи использования защищенных паролем RAR архивов с доступом из ПО через unrar.dll открылись следующие недостатки и достоинства этого метода:
+ RAR архивы - очень удобный инструмент, имеющий интерфейс для ПО в виде unrar.dll, что позволяет просто и удобно использовать RAR архивы в своем ПО
+ RAR пакует "плотно", распаковывает быстро
+ "сломать" пароль RAR архива, если в нем использован нестандартный словарь и длина пароля достаточна - практически невозможно.
- при распаковке запароленого RAR архива при помощи unrar.dll пароль в открытом виде передается в unrar.dll
Что это означает: пароль архива может быть перехвачен. Для этого может быть использовано специальное ПО, позволяющее "заглянуть" в память другого процесса. либо более простой метод.
Каким образом
unrar.dll - обычная dynamic link library. Это значит, что у нее есть список экспортируемых функций с определенными передаваемыми данными. Мысль и идея состоит в следующем: создать свою библиотеку, которая бы по интерфейсу повторяла unrar.dll и "подсунуть" её вызывающему unrar.dll процессу вместо оригинальной.
Вызывающий процесс "не почувствует разницы" и не заметит подмены (если в нем не принято специальных мер, естественно) т.к. интерфейсы dll и возвращаемые функциями значения будут идетничны оригинальным.
Получить список вызовов dll не представляется трудным, эту информацию может дать разное ПО. Трудность вызывает в таких случаях получить список передаваемых в функцию данных (их порядок, структуры, размер).
Эту информацию "возьмем" из описания интерфейса библиотеки, которая поставлялась в ранних выпусках дистрибъютива RAR.
Собираем
Проект Delphi 2005 win32, создающий самую примитивную реализацию описанных выше мыслей находится тут
В общем, там все понятно. Если не понятно, пишите, помогу :).
Собираем "новую" unrar.dll и "подсовываем" её вызывающему процессу.
Запускаем программу и выполняем действия, заставляющие программу обратится к запароленому архиву. Получаем пароль.
Результаты
При помощи данной методики были исследованы 3 программы, использующие запароленые RAR архивы и получающие к ним доступ через unrar.dll.
Название приводить не буду, но опишу особенности этих программ:
  • "Первая". Использует огромное количество RAR архивов, в которых хранятся "документы", предоставляемые для просмотра программой. Используется один пароль для доступа ко всем архивам. Библиотека unrar.dll находится в папке программы. Получив при помощи описанной выше методики пароль, удалось получить доступ к тексту ВСЕХ документов. Найденный пароль: "smk12f24nkj14n 14skj34n; 1234vj234kadn; jkv234fnjkadn".
  • "Вторая". Более высокая версия "первой". Формат хранения документов не изменился. Unrar.dll хранится в системной папке Windows и называется sklms.dll. Удалось получить доступ к тексту ВСЕХ документов. Найденный пароль: "vXhaLoT#?/~35+Rqh6OO&bXDQ-^6YQbLiCg+ae{D]4Zjl.n9BRUQ0k@ESH(mP>Gt".
  • "Третья". Использует запароленый RAR архив как хранилище файлов дистриъютива. Unrar.dll находится рядом с exe файлом установки программы и RAR архивом дистрибъютива. Похоже, что механизм парольной защиты RAR архивов дистрибъютива был задействован (или предполагалось задействовать) только в ранних выпусках программы, т.к. exe файл установки передает пароль в unrar.dll, но RAR архив дистрибъютива при этом не защищен паролем! Найденный пароль: "ЁЄcRавб  ¬Rв_згб "ва ¤- в'" 0.4 _RRЄ_"
    P.S. Пароли программ приведены ИСКЛЮЧИТЕЛЬНО с целью демонстрации "правильности" подбора словарей разработчиками ПО :).
    P.P.S. Пароли программ приведены с изменениями, которые исключают их прямое использование.

    Delphi 2005
    Описание интерфейса библиотеки unrar.dll Текст библиотеки-заглушки

     
  •