Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 9 лет назад пользователемСемен Шустов
1 Некриптографическое исследование носителей православной криптографии, или как мы проверяли безопасность хранения ключей на токенах… Сергей Солдатов Михаил Егоров КОНФЕРЕНЦИЯ НОЯБРЯ
2 Зачем нужны токены? для хранения ключей!
3 Зачем нужны токены? Неизвлекаемого для хранения ключей! Ключ не извлекается из памяти приложения Ключ не извлекается из трафика до приложения Ключ не извлекается из токена имитацией работы легитимного приложения Ключ не должен компрометироваться при использовании на скомпрометированном компьютере!
4 Зачем нужны токены? Неизвлекаемого для хранения ключей! Ключ не извлекается из памяти приложения Ключ не извлекается из трафика до приложения Ключ не извлекается из токена имитацией работы легитимного приложения … иначе стойкость схемы с толкиеном == стойкость использования штатного хранилища Windows (реестр) => токен не нужен! Все операции с ключом должны выполняться в токене => токен по спецификации должен поддерживать используемые криптографические алгоритмы (есть сложности, если токен западного производства)
5 Основной принцип (ОП) Ключ не должен покидать токен, за исключением, может быть, легального экспорта
6 Работа с токенами в Windows Winscard.dll от Microsoft (стандартный компонент Windows) CSP MS CryptoAPI Приложение PKCS#11 от производителя Какое-то другое API от производителя APDU* Какие-то системные вызовы *APDU – Application Protocol Data Unit
7 Архитектура токена и его сервисы безопасности Железо ОС Приложения JVM Апплеты Java JCAPI Ответственность производителя API Ответственность разработчика приложения Потребитель Разделение ответственности и криптографическая гарантия этого (жизненный цикл карты и приложений). Контроль целостности ОС и приложений. Возможность задания политики безопасности на каждом уровне ответственности. Обеспечение безопасных коммуникаций с приложением: взаимная аутентификация, обеспечение целостности передаваемых данных\команд, шифрование трафика APDU. Архитектура токена позволяет реализовать отечественную криптографию на не отечественном токе небезопасно, если игнорировать «сценарий Сноудена»
8 Дополнительный «уровень защиты»…. Недоступные технические спецификации! Команд APDU Механизмы обеспечения защиты секретного ключа Прочие сервисы безопасности … за исключением того, что на всё есть все необходимые сертификаты государственных регуляторов.
9 Атаки Копирование секретного ключа: Из трафика APDU Непосредственно из токена, эмулируя работу легитимного приложения Из приложения, путем патча памяти приложения Атаки на пароль пользователя Кейлогер Восстановление кэшированного пароля == сложности взлома пользовательского аккаунта Windows Простой фишинг через промоутер с аналогичным внешним видом Все коды здесь: github.com/votadlos/Antitoken
10 Демо 1: Восстановление контейнера из трафика APDU Условия: Административный доступ на АРМ пользователя. Почему это работает (уязвимости): Нарушение ОП, Передача данных в APDU в открытом виде. Как это работает: Перехват трафика APDU из Winscard.dll.
11 Формат контейнера КриптоПРО 0x36 = x22 = x03b4 = 948 = x6c = 0x6e - 2 Секрет Имя контейнера Всякая описательная часть
12 Демо 2: Извлечение контейнера непосредственно из токена Условия: Знание пароля пользователя на токен. Почему это работает (уязвимости): Нарушение ОП, Как это работает: Наше приложение отправляет на токен команды APDU, которые приводят к отправке контейнера с секретным ключом из токена в наше приложение.
13 Аутентификация запрос-ответ в Aladdin eToken Pro 72k 80:18:00:00:04:0E:02:00:00:14 E1:F8:98:FE:10:06:18:E5:6E:54:DC:12:1F:56:8D:0C:C2:D0:6B:35:90:00 [salt 20 байт] 80:17:00:00:08 90:E0:EE:98:1C:FE:CB:F1:90:00 [challenge 8 байт ] 80:11:00:11:0A:10:08:C2:91:52:CE:17:90:2F:D8[response 8 байт] 90:00
14 Генерация ключа шифрования Password (Unicode) SaltStatic SHA раз 20 байт ключа SHA-1 sum64 Password (Unicode)Salt Static 20 байт ключа sum64 SHA-1 4 байта ключа 998 раз
15 Вычисление ответа Challenge 3DES-EDE 24 байта ключа Response
16 Демо 3: Восстановление ключа через патч памяти процесса Условия: Знание пароля пользователя на токен Почему это работает (уязвимости): Нарушение ОП Модули криптопровайдера загружаются в память процесса пользователя Как это работает: В памяти приложения исправляется «флаг экспортируемости» контейнера и производится «легальный» экспорт
17 Флаг экспортируемости контейнера 611E1BC2 DWORD PTR DS:[EDI+68],F E1BC9 JE SHORT cpcspi.611E1BD8 611E1BCB DWORD PTR SS:[EBP+1C], E1BD2 JNZ cpcspi.611E1ECC 611E1BD8 TEST DWORD PTR SS:[EBP+1C], E1BDF JE cpcspi.611E1ECC 998 – не экспортируемый контейнер 99С – экспортируемый контейнер
18 Патчинг памяти процесса (22 байта) 611E1BC2 DWORD PTR DS:[EDI+68],F E1BC9 JE SHORT cpcspi.611E1BD8 611E1BCB DWORD PTR SS:[EBP+1C], E1BD2 JNZ cpcspi.611E1ECC 611E1BD8 TEST DWORD PTR SS:[EBP+1C], E1BDF JE cpcspi.611E1ECC 611E1BC2 CMP BYTE PTR SS:[EBP+1C],98 611E1BC9 JNZ SHORT cpcspi.611E1BD2 611E1BCB MOV BYTE PTR SS:[EBP+1C],9C 611E1BD2 NOP 611E1BD3 NOP 611E1BD4 NOP 611E1BD5 NOP 611E1BD6 NOP 611E1BD7 NOP 611E1BD8 TEST DWORD PTR SS:[EBP+1C], E1BDF JE cpcspi.611E1ECC
19 Демо 4: Восстановление кэшированного пароля Условия: Доступ в аккаунт пользователя Windows. Почему это работает (уязвимости): Хранение «запомненных»/кэшированных паролей на токен (pin-кодов) в реестре с защитой функцией CryptProtectData от MS CryptoAPI. Как это работает: Вычитываем из реестра и используем функцию CryptUnprotectData от MS CryptoAPI. Эта «фича» Крипто Про CSP полностью приравнивает безопасность хранения ключа на токене к безопасности хранения ключа в реестре Windows – что позволяет неплохо сэкономить на приобретении токенов
20 Демо 4: Простой фишинг Условия: Доступ в сессию пользователя. Почему это работает (уязвимости): Потому что фитинговое окно внешне похоже на легальное. Как это работает: Пользователь сам вводит пароль, который передается атакующему.
21 Что же делать разработчикам криптопровайдеров? Не нарушать ОП! В полном объеме использовать сервисы безопасности, предоставляемые толкиеном. Не загружать модули криптопровайдера в память процесса пользователя. Регулярно проводить независимые аудиты безопасности своих продуктов и иметь штатную продуктовую безопасность.
22 Что же делать пользователям? Если решились использовать токены, выбирайте ту модель, которая бы аппаратно* поддерживала ГОСТ. Если токен аппаратно не поддерживает ГОСТ – можете сэкономить на токенах и потратиться на тщательную защиту рабочего места. По возможности не создавайте экспортируемые ключи.
23 Сергей Солдатов, CISA, CISSP reply-to-all.blogspot.com Михаил Егоров, CISSP, OSCP 0ang3el.blogspot.com СПАСИБО! ВОПРОСЫ?
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.