В прошлый раз мы рассмотрели ситуацию в
которой для расшифровки EFS используется
оригинальный профиль пользователя. Но что
делать если он не сохранился? В этом случае
все, конечно, несколько сложнее...
Как и в прошлый раз настоятельно
рекомендуется сделать копию и запустить на
второй машине, так как в процессе
восстановления ключевые данные могут быть
утеряны. Для работы нам понадобится Hex-редактор
(например winhex)
и filemon
или подобная программа.
Для начала из зашифрованных файлов
необходимо добыть некоторую информацию.
Можно просматривать NTFS в поисках
заголовков EFS, а можно (как мы рекомендуем)
использовать ntbackup для сохранения одного из
зашифрованных файлов, к которому
невозможно получить доступ. Открываем
бекап с помощью редактора и ищем и ищем
примерно вот такой кусок:
В приведенном примере зеленым цветом
выделе номер машины и пользователя в hex.
fd374240 f094c85f 16c0ea32 eb030000 -> реверс
404237fd 5fc894f0 32eac016 000003eb -> нормальный
1078081533-1606980848-854245398-1003 -> с префиксом s-1-5-21-
получаем полный sid/userno.
Красный - публичный ключ.
79B73C0C5A501E06B9EC0A6EF4A3B8CB23BF84E9 - имя файла
публичного ключа.
Синий - guid приватного ключа, может
отсутствовать если добавлены другие
пользователи.
Настало время поискать в оригинальном
зашифрованном томе два важных файла -
приватный ключ и файл. Внутри приватного
ключа сохранен guid, однако отличие от EFS
заголовка в том, что сохранен он в ASCII
формате, не в юникоде.
Как видно синий цвет тут - guid приватного
ключа, который мы нашли ранее.
Зеленый - имя файла:
9f7479dc ea80 924a b41f 6392c4e3b72d -> реверс
dc79749f-80ea-4a92-b41f-6392c4e3b72d -> нормальный
Ищем эту строчку в юникоде:
Зеленый - имя файла.
Желтый - hex-строка, требуемая для
восстановления файла.
Если все эти данные удалось найти, то на
этом можно заканчивать - это все что нужно
для восстановления информации. Создаем
файл credhist, в который записываем найденные
данные из файловой системы:
Создаем и второй файл, который забиваем
нулями:
На второй машине шифруем файл и создаем
тем самым набор ключей. Копируем публичный
ключ из c:\documents and settings\foo\application
data\microsoft\systemcertificates\my\certificates\ и
переименовываем в соответствии с тем
названием, что мы нашли в заголовке EFS.
Откроем в редакторе и изменим:
Ясно, что синим тут отмечен guid приватного
ключа, а красным - "отпечаток"
публичного ключа, найденный ранее. После
этого следуем путем уже известным и
расписанным в первой части, кладем файлы на
место, перегружаемся.
c:\documents and settings\user\application data\microsoft\
\crypto\rsa\s-1-5-21-1078081533- 1606980848-854245398-1003\privatekey
\protect\credhist
\protect\s-1-5-21-1078081533-1606980848- 854245398-1003\ (2files)
dc42a7eeac5b104481336024113992ff
preferred
\systemcertificates\my\certificates\ 79b73c0c5a501e06b9ec0a6ef4a3b8cb23bf84e9
Необходимо, Что бы приватный ключ имел
правильное имя. Алгоритм получения имени из
guid неизвестен, но тут поможет filemon, который
отследит процесс обращения и подскажет что
требуется системе. Назвав файл правильно
иожно попробовать лезть в зашифрованную
систему - все должно получится.