Копирование неэкспортируемого ключа с JaCarta LT

Программирование, Хакинг, Безопасность, Софт, Железо, а также всё связанное с компьютерами
Аватара пользователя
Андрей
Архитектор
Сообщения: 7464
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 597 раз
Поблагодарили: 471 раз

Копирование неэкспортируемого ключа с JaCarta LT

Сообщение Андрей »

Автор ПО и методики - Сергей Солдатов (https://www.securitylab.ru/blog/persona ... 155893.php)

1. Установить Smartcard Sniffer
Если включён Secure Boot (версии Windows 8 и выше), то инфраструктура AppInit_DLLs выключена.
Я делал на Windows 7 x64.
1.1. Скачать https://code.google.com/p/smartcard-sniffer/
1.2. Библиотеку необходимой разрядности SmartcardSniffer.dll положить в папку
1.3. Прописать в реестре загрузку SmartcardSniffer.dll и значения переменных

Код: Выделить всё

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows]
"AppInit_DLLs"="C:\\1\\SmartcardSniffer.dll"
"LoadAppInit_DLLs"=dword:00000001
"RequireSignedAppInit_DLLs"=dword:00000000

2. Получить дамп диалога приложения с токеном
Для этого выполнить любую операцию, требующую передачу ключа в приложение.
Например, выполнить КриптоПро CSP -> Сервис -> Протестировать.
После этого в папке, где лежит SmartcardSniffer.dll, появляется файл rundll32.exe.txt, в котором сохранён дамп диалога приложения с токеном.
2.1. Разбить дамп на отдельные файлы диалога
2.1.1. Скачать writeBinaryAPDU.pl - https://github.com/votadlos/Antitoken/b ... aryAPDU.pl
2.1.2. Скачать и установить Perl - https://strawberryperl.com/download/5.3 ... -64bit.msi
2.1.3. Запустить

Код: Выделить всё

perl writeBinaryAPDU.pl < rundll32.exe.txt

В результате rundll32.exe.txt будет разобран на бинарные файлы вида "001_out(4)39_6A_42_32", где
001 - идентификатор последовательности запрос-ответ;
out - направление передачи: out - из токена в приложение, in - от приложения в токен;
(4) - количество переданных/полученных байтов;
39_6A_42_32 - первые 4 байта.

3. Собрать контейнер

3.1. primary.key - размер 36 байт, начинается с 30_22_04_20
Ищем файлы вида №_out(36)30_22_04_20.
У меня таких было 2 штуки, размером 68 байт и 80 байт, начало одинаковое, в конце нули, взял один и обрезал до 36 байт.

3.2. masks.key - размер 56 байт, начинается с 30_36_04_20
Ищем файлы вида №_out(56)30_36_04_20.
У меня таких было 2 штуки, размером по 64 байта, одинаковые, в конце нули, взял один и обрезал до 56 байт.

3.3. header.key - самый большой файл.
Находим файлы с самым большим объёмом, плюс берём кусок до и кусок после.
У меня он передавался два раза, состоял из 16 частей - 10 байт (379_out(10)30_82_0B_26)+ 14 * 200 байт + 48 байт (394_out(48)1F_E6_2E_0D), всего 2 858 байт. Соединил все части командой

Код: Выделить всё

copy /B 379_out(10)30_82_0B_26 + ... + 394_out(48)1F_E6_2E_0D header.key

Либо положить все эти файлы в отдельную директорию и

Код: Выделить всё

copy /B * header.key

3.4. name.key - просто взял от другого контейнера

Затем положил на флэшку, с помощью CertFix (версии 1.1.27.3154) сделал экспортируемым и скопировал в реестр.
totkot
Сообщения: 3
Зарегистрирован: 07 ноя 2022, 11:34

Re: Копирование неэкспортируемого ключа с JaCarta LT

Сообщение totkot »

Не получается получить дамп SmartcardSniffer. Делаю все на WinXP в таком порядке
Библиотеку x32 SmartcardSniffer.dll положил в папку D:\111
В ветке реестра
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
поставил значения
AppInit_DLLs D:\111\SmartcardSniffer.dll
LoadAppInit_DLLs 1
RequireSignedAppInit_DLLs 0
Перезагрузился
Тестирую ключ через КриптоПро - результата нет.
Аватара пользователя
Андрей
Архитектор
Сообщения: 7464
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 597 раз
Поблагодарили: 471 раз

Re: Копирование неэкспортируемого ключа с JaCarta LT

Сообщение Андрей »

Проверьте ещё раз всё в соответствии с видео ( после удаления с Ютуба обновил здесь видео ):


Если не получится, пришлите скриншот ветки реестра с указанными параметрами.
totkot
Сообщения: 3
Зарегистрирован: 07 ноя 2022, 11:34

Re: Копирование неэкспортируемого ключа с JaCarta LT

Сообщение totkot »

Все так делаю.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
totkot
Сообщения: 3
Зарегистрирован: 07 ноя 2022, 11:34

Re: Копирование неэкспортируемого ключа с JaCarta LT

Сообщение totkot »

Поставил на тестовую машину Win7x64. Ключ RequireSignedAppInit_DLLs в реестре отсутствовал. Добавлять не стал. Все прошло идеально. Большое спасибо. Инструкция не для новичка, но разобраться можно.
grader
Сообщения: 1
Зарегистрирован: 19 ноя 2022, 15:33
Благодарил (а): 1 раз

Re: Копирование неэкспортируемого ключа с JaCarta LT

Сообщение grader »

Огромное спасибо за полезную инфу! Все получилось, но у меня не завелся сразу AppInit требовал доставить длл. А еще в пункте 3.2. masks.key - размер 56 байт, начинается с 30_36_04_20
Ищем файлы вида №_out(56)30_36_04_20.
У меня таких было 2 штуки, размером по 64 байта, одинаковые, в конце нули, взял один и обрезал до 56 байт.

Сравнил с другим сертом и в конце добавил четыре нуля, все сработало.
AlexFish
Сообщения: 5
Зарегистрирован: 16 янв 2023, 15:49

Re: Копирование неэкспортируемого ключа с JaCarta LT

Сообщение AlexFish »

У меня возникли трудности после п. 2.1.3
Сначала не понял как запустить Pearl, потому что после установки не появился ярлык на рабочем столе. Потом вспомнил что установленные программы появляются в Пуск>Все программы. Нашел там StrawberryPearl>Perl (command line).
Запустил, появилось окно, такое же, как командная строка cmd. Вставил код, но получил в ответ "Не удается найти указанный файл"
https://disk.yandex.ru/i/fW_dWkiAN_IhVQ

Файлы writeBinaryAPDU.pl и rundll32.exe.txt лежат в папке "1" на диске С. (как и прописывал в реестре)
https://disk.yandex.ru/i/6NzisH-gZseVtA
Подскажите что не так сделал.
Аватара пользователя
Андрей
Архитектор
Сообщения: 7464
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 597 раз
Поблагодарили: 471 раз

Re: Копирование неэкспортируемого ключа с JaCarta LT

Сообщение Андрей »

AlexFish, вам надо задать переменную PATH на директорию с Perl.
https://nicothin.pro/page/windows-path

Хотя похоже, что Perl он находит, а не может найти другие файлы. (Которые нужно обработать).

Тогда в командной строке перейдите в папку 1 на диске C: и повторите ввод команды. Такой порядок:

Код: Выделить всё

perl writeBinaryAPDU.pl < rundll32.exe.txt
AlexFish
Сообщения: 5
Зарегистрирован: 16 янв 2023, 15:49

Re: Копирование неэкспортируемого ключа с JaCarta LT

Сообщение AlexFish »

Получилось. Я просто неправильно скачал файл writeBinaryAPDU.pl
Появилась папка с кучей файлов.
для primary.key у меня нашлось 4 файла
https://disk.yandex.ru/d/3pf9tPgbM80HMw
что с ними делать ? в какой программе обрезать ?
Аватара пользователя
Андрей
Архитектор
Сообщения: 7464
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 597 раз
Поблагодарили: 471 раз

Re: Копирование неэкспортируемого ключа с JaCarta LT

Сообщение Андрей »

AlexFish, в программе WinHex можно обрезать. Нужен HEX-редактор. По инструкции нужно удалить нули в конце. Но размер файла должен составить 36 байт.