Некриптографическое исследование носителей православной криптографии, или как мы проверяли безопасность хранения ключей на токенах… Сергей Солдатов Михаил.

Презентация:



Advertisements
Похожие презентации
W w w. a l a d d i n. r u С.А. Белов, руководитель стратегических проектов, Aladdin Москва, 11 декабря 2008 Использование токенов с аппаратной реализацией.
Advertisements

© 2005, Aladdin Безопасность СУБД Oracle ВВЕДЕНИЕ.
W w w. a l a d d i n. r u А.Г. Сабанов, зам.ген.директора, ЗАО «Аладдин Р.Д.» Инфофорум, 27 апреля 2009 Об одной проблеме применения ЭЦП как сервиса безопасности.
Безопасность электронного документооборота на базе типовой платформы Михаил Димитрогло ИнтерТраст (495)
ОКБ САПР Персональное средство криптографической защиты информации «ШИПКА»
Клиент банка под атакой © 2009, Digital Security.
Система защиты информации Крипто Про. Система КриптоПро CSP является средством криптографической защиты информации и предназначена для авторизации и обеспечения.
Требования к доверенной третьей стороне в интегрированной информационной системе Евразийского экономического союза.
«Электронная подпись в облаках и на земле» Фураков Александр Заместитель коммерческого директора ООО «КРИПТО-ПРО»
РАЗРАБОТКА КРИПТОГРАФИЧЕСКОГО МОДУЛЯ, ПРЕДОСТАВЛЯЮЩЕГО УСЛУГИ ШИФРОВАНИЯ С ИСПОЛЬЗОВАНИЕМ ФУНКЦИОНАЛА SIM КАРТЫ МОБИЛЬНОГО ТЕЛЕФОНА. Автор проекта: Карпов.
ПЕРСОНАЛЬНОЕ СКЗИ ШИПКА ОКБ САПР Москва, 2007.
Верификация байт- кода в среде смарт- карт: использование криптографических методов К. Н. Хюппенен Кафедра информатики и математического обеспечения ПетрГУ.
Безопасное хранения Ваших данных в сети интернет!.
W w w. a l a d d i n. r uw w w. a l a d d i n – r d. r u Здор Владимир Новейшие решения компании Aladdin для обеспечения информационной безопасности.
Системное программное обеспечение Лекция 14 Информационная безопасность.
Администрирование RAS серверов. RAS (Remote Access Server) сервер – это сервер удаленного доступа. Используется для соединения компьютеров по коммутируемым.
система защиты рабочих станций и серверов на платформе Windows XP/2003/2008R2/Vista/7 модуль доверенной загрузки операционной системы Windows 2000/XP/2003/Vista/7/2008.
Обеспечение доверенной визуализации подписываемых электронной подписью документов – как не допустить фальсификации ИНФОФОРУМ-2013 г. Москва, 5 февраля.
Аутентификация в системах Интернет-банкинга Анализ типичных ошибок Сергей Гордейчик Positive Technologies.
Расулов О. Х. г. Ташкент Республика Узбекистан Актуальные проблемы использования аппаратно- программных средств криптографической защиты информации для.
Транксрипт:

Некриптографическое исследование носителей православной криптографии, или как мы проверяли безопасность хранения ключей на токенах… Сергей Солдатов Михаил Егоров КОНФЕРЕНЦИЯ НОЯБРЯ

Зачем нужны токены? для хранения ключей!

Зачем нужны токены? Неизвлекаемого для хранения ключей! Ключ не извлекается из памяти приложения Ключ не извлекается из трафика до приложения Ключ не извлекается из токена имитацией работы легитимного приложения Ключ не должен компрометироваться при использовании на скомпрометированном компьютере!

Зачем нужны токены? Неизвлекаемого для хранения ключей! Ключ не извлекается из памяти приложения Ключ не извлекается из трафика до приложения Ключ не извлекается из токена имитацией работы легитимного приложения … иначе стойкость схемы с толкиеном == стойкость использования штатного хранилища Windows (реестр) => токен не нужен! Все операции с ключом должны выполняться в токене => токен по спецификации должен поддерживать используемые криптографические алгоритмы (есть сложности, если токен западного производства)

Основной принцип (ОП) Ключ не должен покидать токен, за исключением, может быть, легального экспорта

Работа с токенами в Windows Winscard.dll от Microsoft (стандартный компонент Windows) CSP MS CryptoAPI Приложение PKCS#11 от производителя Какое-то другое API от производителя APDU* Какие-то системные вызовы *APDU – Application Protocol Data Unit

Архитектура токена и его сервисы безопасности Железо ОС Приложения JVM Апплеты Java JCAPI Ответственность производителя API Ответственность разработчика приложения Потребитель Разделение ответственности и криптографическая гарантия этого (жизненный цикл карты и приложений). Контроль целостности ОС и приложений. Возможность задания политики безопасности на каждом уровне ответственности. Обеспечение безопасных коммуникаций с приложением: взаимная аутентификация, обеспечение целостности передаваемых данных\команд, шифрование трафика APDU. Архитектура токена позволяет реализовать отечественную криптографию на не отечественном токе небезопасно, если игнорировать «сценарий Сноудена»

Дополнительный «уровень защиты»…. Недоступные технические спецификации! Команд APDU Механизмы обеспечения защиты секретного ключа Прочие сервисы безопасности … за исключением того, что на всё есть все необходимые сертификаты государственных регуляторов.

Атаки Копирование секретного ключа: Из трафика APDU Непосредственно из токена, эмулируя работу легитимного приложения Из приложения, путем патча памяти приложения Атаки на пароль пользователя Кейлогер Восстановление кэшированного пароля == сложности взлома пользовательского аккаунта Windows Простой фишинг через промоутер с аналогичным внешним видом Все коды здесь: github.com/votadlos/Antitoken

Демо 1: Восстановление контейнера из трафика APDU Условия: Административный доступ на АРМ пользователя. Почему это работает (уязвимости): Нарушение ОП, Передача данных в APDU в открытом виде. Как это работает: Перехват трафика APDU из Winscard.dll.

Формат контейнера КриптоПРО 0x36 = x22 = x03b4 = 948 = x6c = 0x6e - 2 Секрет Имя контейнера Всякая описательная часть

Демо 2: Извлечение контейнера непосредственно из токена Условия: Знание пароля пользователя на токен. Почему это работает (уязвимости): Нарушение ОП, Как это работает: Наше приложение отправляет на токен команды APDU, которые приводят к отправке контейнера с секретным ключом из токена в наше приложение.

Аутентификация запрос-ответ в 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

Генерация ключа шифрования Password (Unicode) SaltStatic SHA раз 20 байт ключа SHA-1 sum64 Password (Unicode)Salt Static 20 байт ключа sum64 SHA-1 4 байта ключа 998 раз

Вычисление ответа Challenge 3DES-EDE 24 байта ключа Response

Демо 3: Восстановление ключа через патч памяти процесса Условия: Знание пароля пользователя на токен Почему это работает (уязвимости): Нарушение ОП Модули криптопровайдера загружаются в память процесса пользователя Как это работает: В памяти приложения исправляется «флаг экспортируемости» контейнера и производится «легальный» экспорт

Флаг экспортируемости контейнера 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С – экспортируемый контейнер

Патчинг памяти процесса (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

Демо 4: Восстановление кэшированного пароля Условия: Доступ в аккаунт пользователя Windows. Почему это работает (уязвимости): Хранение «запомненных»/кэшированных паролей на токен (pin-кодов) в реестре с защитой функцией CryptProtectData от MS CryptoAPI. Как это работает: Вычитываем из реестра и используем функцию CryptUnprotectData от MS CryptoAPI. Эта «фича» Крипто Про CSP полностью приравнивает безопасность хранения ключа на токене к безопасности хранения ключа в реестре Windows – что позволяет неплохо сэкономить на приобретении токенов

Демо 4: Простой фишинг Условия: Доступ в сессию пользователя. Почему это работает (уязвимости): Потому что фитинговое окно внешне похоже на легальное. Как это работает: Пользователь сам вводит пароль, который передается атакующему.

Что же делать разработчикам криптопровайдеров? Не нарушать ОП! В полном объеме использовать сервисы безопасности, предоставляемые толкиеном. Не загружать модули криптопровайдера в память процесса пользователя. Регулярно проводить независимые аудиты безопасности своих продуктов и иметь штатную продуктовую безопасность.

Что же делать пользователям? Если решились использовать токены, выбирайте ту модель, которая бы аппаратно* поддерживала ГОСТ. Если токен аппаратно не поддерживает ГОСТ – можете сэкономить на токенах и потратиться на тщательную защиту рабочего места. По возможности не создавайте экспортируемые ключи.

Сергей Солдатов, CISA, CISSP reply-to-all.blogspot.com Михаил Егоров, CISSP, OSCP 0ang3el.blogspot.com СПАСИБО! ВОПРОСЫ?