SlideShare a Scribd company logo
1 of 23
Некриптографическоеисследование носителей православной криптографии,или как мы проверяли безопасность хранения ключей на токенах… 
Сергей СолдатовМихаил Егоров 
КОНФЕРЕНЦИЯ 
13-14 НОЯБРЯ 
WWW.ZERONIGHTS.RU
Зачем нужны токены? 
для хранения ключей!
Зачем нужны токены? 
Неизвлекаемогодля хранения ключей! 
Ключ не извлекается из памяти приложения 
Ключ не извлекается из трафика до приложения 
Ключ не извлекается из токенаимитацией работы легитимного приложения
Зачем нужны токены? 
Неизвлекаемогодля хранения ключей! 
Ключ не извлекается из памяти приложения 
Ключ не извлекается из трафика до приложения 
Ключ не извлекается из токенаимитацией работы легитимного приложения 
Всеоперации с ключом должны выполняться в токене=> токенпо спецификации должен поддерживатьиспользуемые криптографические алгоритмы (есть сложности, если токензападного производства)
Основной принцип (ОП) 
Ключ не должен покидать токен, 
за исключением, может быть, легального экспорта
Работа с токенамив 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 = 56 -2 
0x22 = 36 -2 
0x03b4 = 948 = 952-4 
0x6c = 0x6e -2 
Секрет 
Имя контейнера 
Всякая описательная часть
Демо №2: Извлечение контейнера непосредственно из токена 
•Условия: 
•Знание пароля пользователя на токен. 
•Почему это работает (уязвимости): 
•Нарушение ОП, 
•Как это работает: 
•Наше приложение отправляет на токенкоманды APDU,которые приводят к отправке контейнера с секретным ключом из токенав наше приложение.
Аутентификация запрос-ответ в Aladdin eTokenPro 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) 
Salt 
Static 
SHA-1 
SHA-1 
998 раз 
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],F0000000 
611E1BC9 JE SHORT cpcspi.611E1BD8 
611E1BCB DWORD PTR SS:[EBP+1C],8000 
611E1BD2 JNZ cpcspi.611E1ECC 
611E1BD8 TEST DWORD PTR SS:[EBP+1C],800 
611E1BDF JE cpcspi.611E1ECC 
998–не экспортируемый контейнер 
99С–экспортируемый контейнер
Патчинг памяти процесса (22 байта) 
611E1BC2 DWORD PTR DS:[EDI+68],F0000000 
611E1BC9 JE SHORT cpcspi.611E1BD8 
611E1BCB DWORD PTR SS:[EBP+1C],8000 
611E1BD2 JNZ cpcspi.611E1ECC 
611E1BD8 TEST DWORD PTR SS:[EBP+1C],800 
611E1BDF 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],800 
611E1BDF 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 
СПАСИБО! 
ВОПРОСЫ? 
WWW.ZERONIGHTS.RU

More Related Content

What's hot

Восток — дело тонкое, или Уязвимости медицинского и индустриального ПО
Восток — дело тонкое, или Уязвимости медицинского и индустриального ПОВосток — дело тонкое, или Уязвимости медицинского и индустриального ПО
Восток — дело тонкое, или Уязвимости медицинского и индустриального ПОPositive Hack Days
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один goBadoo Development
 
РусКрипто CTF 2010 Full Disclosure (мастер класс)
РусКрипто CTF 2010 Full Disclosure (мастер класс)РусКрипто CTF 2010 Full Disclosure (мастер класс)
РусКрипто CTF 2010 Full Disclosure (мастер класс)Dmitry Evteev
 
Hunting for a C++ package manager
Hunting for a C++ package managerHunting for a C++ package manager
Hunting for a C++ package managercorehard_by
 
С чего начать свой путь этичного хакера? - Вадим Чакрян
С чего начать свой путь этичного хакера? - Вадим ЧакрянС чего начать свой путь этичного хакера? - Вадим Чакрян
С чего начать свой путь этичного хакера? - Вадим ЧакрянHackIT Ukraine
 
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...Stas Vyschepan
 
Игорь Павлов и Глеб Головин
Игорь Павлов и Глеб ГоловинИгорь Павлов и Глеб Головин
Игорь Павлов и Глеб ГоловинCodeFest
 
Профилирование кода на C/C++ в *nix системах
Профилирование кода на C/C++ в *nix системахПрофилирование кода на C/C++ в *nix системах
Профилирование кода на C/C++ в *nix системахAleksander Alekseev
 
Fabric для управления серверами
Fabric для управления серверамиFabric для управления серверами
Fabric для управления серверамиMaxim Kulsha
 
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...Iosif Itkin
 
Windbg: когда у нас не воспроизводится. Александр Головач ➠ CoreHard Autumn ...
Windbg: когда у нас не воспроизводится. Александр Головач ➠  CoreHard Autumn ...Windbg: когда у нас не воспроизводится. Александр Головач ➠  CoreHard Autumn ...
Windbg: когда у нас не воспроизводится. Александр Головач ➠ CoreHard Autumn ...corehard_by
 
Про асинхронное сетевое программирование
Про асинхронное сетевое программированиеПро асинхронное сетевое программирование
Про асинхронное сетевое программированиеPython Meetup
 
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVMДмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVMSergey Platonov
 
Целевые атаки: прицелься первым
Целевые атаки: прицелься первымЦелевые атаки: прицелься первым
Целевые атаки: прицелься первымPositive Hack Days
 
Алексей Рагозин (Deutsche Bank)
Алексей Рагозин (Deutsche Bank)Алексей Рагозин (Deutsche Bank)
Алексей Рагозин (Deutsche Bank)Ontico
 
Практика Lock-free. RealTime-сервер
Практика Lock-free. RealTime-серверПрактика Lock-free. RealTime-сервер
Практика Lock-free. RealTime-серверPlatonov Sergey
 
ХАРДЕНИНГ (Аринов Ильяс (determination))
ХАРДЕНИНГ (Аринов Ильяс (determination))ХАРДЕНИНГ (Аринов Ильяс (determination))
ХАРДЕНИНГ (Аринов Ильяс (determination))Kristina Pomozova
 
Rabovoluk presentation yaroslav-2
Rabovoluk presentation yaroslav-2Rabovoluk presentation yaroslav-2
Rabovoluk presentation yaroslav-2kuchinskaya
 

What's hot (20)

Восток — дело тонкое, или Уязвимости медицинского и индустриального ПО
Восток — дело тонкое, или Уязвимости медицинского и индустриального ПОВосток — дело тонкое, или Уязвимости медицинского и индустриального ПО
Восток — дело тонкое, или Уязвимости медицинского и индустриального ПО
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один go
 
РусКрипто CTF 2010 Full Disclosure (мастер класс)
РусКрипто CTF 2010 Full Disclosure (мастер класс)РусКрипто CTF 2010 Full Disclosure (мастер класс)
РусКрипто CTF 2010 Full Disclosure (мастер класс)
 
Gen server
Gen serverGen server
Gen server
 
Hunting for a C++ package manager
Hunting for a C++ package managerHunting for a C++ package manager
Hunting for a C++ package manager
 
С чего начать свой путь этичного хакера? - Вадим Чакрян
С чего начать свой путь этичного хакера? - Вадим ЧакрянС чего начать свой путь этичного хакера? - Вадим Чакрян
С чего начать свой путь этичного хакера? - Вадим Чакрян
 
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
 
Игорь Павлов и Глеб Головин
Игорь Павлов и Глеб ГоловинИгорь Павлов и Глеб Головин
Игорь Павлов и Глеб Головин
 
Профилирование кода на C/C++ в *nix системах
Профилирование кода на C/C++ в *nix системахПрофилирование кода на C/C++ в *nix системах
Профилирование кода на C/C++ в *nix системах
 
Fabric для управления серверами
Fabric для управления серверамиFabric для управления серверами
Fabric для управления серверами
 
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
 
Windbg: когда у нас не воспроизводится. Александр Головач ➠ CoreHard Autumn ...
Windbg: когда у нас не воспроизводится. Александр Головач ➠  CoreHard Autumn ...Windbg: когда у нас не воспроизводится. Александр Головач ➠  CoreHard Autumn ...
Windbg: когда у нас не воспроизводится. Александр Головач ➠ CoreHard Autumn ...
 
Про асинхронное сетевое программирование
Про асинхронное сетевое программированиеПро асинхронное сетевое программирование
Про асинхронное сетевое программирование
 
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVMДмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
 
JSQuest d:)
JSQuest   d:)JSQuest   d:)
JSQuest d:)
 
Целевые атаки: прицелься первым
Целевые атаки: прицелься первымЦелевые атаки: прицелься первым
Целевые атаки: прицелься первым
 
Алексей Рагозин (Deutsche Bank)
Алексей Рагозин (Deutsche Bank)Алексей Рагозин (Deutsche Bank)
Алексей Рагозин (Deutsche Bank)
 
Практика Lock-free. RealTime-сервер
Практика Lock-free. RealTime-серверПрактика Lock-free. RealTime-сервер
Практика Lock-free. RealTime-сервер
 
ХАРДЕНИНГ (Аринов Ильяс (determination))
ХАРДЕНИНГ (Аринов Ильяс (determination))ХАРДЕНИНГ (Аринов Ильяс (determination))
ХАРДЕНИНГ (Аринов Ильяс (determination))
 
Rabovoluk presentation yaroslav-2
Rabovoluk presentation yaroslav-2Rabovoluk presentation yaroslav-2
Rabovoluk presentation yaroslav-2
 

Viewers also liked

PHDays '14 Cracking java pseudo random sequences by egorov & soldatov
PHDays '14   Cracking java pseudo random sequences by egorov & soldatovPHDays '14   Cracking java pseudo random sequences by egorov & soldatov
PHDays '14 Cracking java pseudo random sequences by egorov & soldatovSergey Soldatov
 
New methods for exploiting ORM injections in Java applications
New methods for exploiting ORM injections in Java applicationsNew methods for exploiting ORM injections in Java applications
New methods for exploiting ORM injections in Java applicationsMikhail Egorov
 
Entity provider selection confusion attacks in JAX-RS applications
Entity provider selection confusion attacks in JAX-RS applicationsEntity provider selection confusion attacks in JAX-RS applications
Entity provider selection confusion attacks in JAX-RS applicationsMikhail Egorov
 
What should a hacker know about WebDav?
What should a hacker know about WebDav?What should a hacker know about WebDav?
What should a hacker know about WebDav?Mikhail Egorov
 
Opensource vs. Non-opensource
Opensource vs. Non-opensourceOpensource vs. Non-opensource
Opensource vs. Non-opensourceSergey Soldatov
 
Мониторинг своими руками
Мониторинг своими рукамиМониторинг своими руками
Мониторинг своими рукамиSergey Soldatov
 
Threat hunting as SOC process
Threat hunting as SOC processThreat hunting as SOC process
Threat hunting as SOC processSergey Soldatov
 
20% of investment and 80% of profit. How to implement security requirements a...
20% of investment and 80% of profit. How to implement security requirements a...20% of investment and 80% of profit. How to implement security requirements a...
20% of investment and 80% of profit. How to implement security requirements a...Igor Gots
 
Smartcard vulnerabilities in modern banking malware
Smartcard vulnerabilities in modern banking malwareSmartcard vulnerabilities in modern banking malware
Smartcard vulnerabilities in modern banking malwareAlex Matrosov
 
Unsafe JAX-RS: Breaking REST API
Unsafe JAX-RS: Breaking REST APIUnsafe JAX-RS: Breaking REST API
Unsafe JAX-RS: Breaking REST APIMikhail Egorov
 

Viewers also liked (11)

PHDays '14 Cracking java pseudo random sequences by egorov & soldatov
PHDays '14   Cracking java pseudo random sequences by egorov & soldatovPHDays '14   Cracking java pseudo random sequences by egorov & soldatov
PHDays '14 Cracking java pseudo random sequences by egorov & soldatov
 
New methods for exploiting ORM injections in Java applications
New methods for exploiting ORM injections in Java applicationsNew methods for exploiting ORM injections in Java applications
New methods for exploiting ORM injections in Java applications
 
Entity provider selection confusion attacks in JAX-RS applications
Entity provider selection confusion attacks in JAX-RS applicationsEntity provider selection confusion attacks in JAX-RS applications
Entity provider selection confusion attacks in JAX-RS applications
 
What should a hacker know about WebDav?
What should a hacker know about WebDav?What should a hacker know about WebDav?
What should a hacker know about WebDav?
 
Opensource vs. Non-opensource
Opensource vs. Non-opensourceOpensource vs. Non-opensource
Opensource vs. Non-opensource
 
Мониторинг своими руками
Мониторинг своими рукамиМониторинг своими руками
Мониторинг своими руками
 
Threat hunting as SOC process
Threat hunting as SOC processThreat hunting as SOC process
Threat hunting as SOC process
 
20% of investment and 80% of profit. How to implement security requirements a...
20% of investment and 80% of profit. How to implement security requirements a...20% of investment and 80% of profit. How to implement security requirements a...
20% of investment and 80% of profit. How to implement security requirements a...
 
A Threat Hunter Himself
A Threat Hunter HimselfA Threat Hunter Himself
A Threat Hunter Himself
 
Smartcard vulnerabilities in modern banking malware
Smartcard vulnerabilities in modern banking malwareSmartcard vulnerabilities in modern banking malware
Smartcard vulnerabilities in modern banking malware
 
Unsafe JAX-RS: Breaking REST API
Unsafe JAX-RS: Breaking REST APIUnsafe JAX-RS: Breaking REST API
Unsafe JAX-RS: Breaking REST API
 

Similar to Некриптографическое исследование носителей православной криптографии

Извлечение ключа из токена с неизвлекаемым ключом
Извлечение ключа из токена с неизвлекаемым ключомИзвлечение ключа из токена с неизвлекаемым ключом
Извлечение ключа из токена с неизвлекаемым ключомimbasoft ru
 
Михаил Щербаков "WinDbg сотоварищи"
Михаил Щербаков "WinDbg сотоварищи"Михаил Щербаков "WinDbg сотоварищи"
Михаил Щербаков "WinDbg сотоварищи"Mikhail Shcherbakov
 
еще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложенийеще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложенийsnowytoxa
 
WinDbg в руках .NET разработчика
WinDbg в руках .NET разработчикаWinDbg в руках .NET разработчика
WinDbg в руках .NET разработчикаMikhail Shcherbakov
 
WinDbg со товарищи
WinDbg со товарищиWinDbg со товарищи
WinDbg со товарищиCUSTIS
 
11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)Smolensk Computer Science Club
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Mikhail Kurnosov
 
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?Cisco Russia
 
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)Ontico
 
Convertor
ConvertorConvertor
Convertoraaa
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Mikhail Kurnosov
 
Series a manual_rus
Series a manual_rusSeries a manual_rus
Series a manual_rusarpisz1
 
Ievgen Kulyk - Advanced reverse engineering techniques in unpacking
Ievgen Kulyk - Advanced reverse engineering techniques in unpackingIevgen Kulyk - Advanced reverse engineering techniques in unpacking
Ievgen Kulyk - Advanced reverse engineering techniques in unpackingNoNameCon
 
Moscow Python Conf 2016. Почему 100% покрытие это плохо?
Moscow Python Conf 2016. Почему 100% покрытие это плохо?Moscow Python Conf 2016. Почему 100% покрытие это плохо?
Moscow Python Conf 2016. Почему 100% покрытие это плохо?Ivan Tsyganov
 
Методики и инструменты для самостоятельного решения проблем в сети
Методики и инструменты для самостоятельного решения проблем в сетиМетодики и инструменты для самостоятельного решения проблем в сети
Методики и инструменты для самостоятельного решения проблем в сетиCisco Russia
 
SECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступлений
SECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступленийSECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступлений
SECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступленийSECON
 
Владимир Назаров, HPE: Зачем нужна миграция с UNIX на Linux? Выводы на основ...
Владимир Назаров, HPE:  Зачем нужна миграция с UNIX на Linux? Выводы на основ...Владимир Назаров, HPE:  Зачем нужна миграция с UNIX на Linux? Выводы на основ...
Владимир Назаров, HPE: Зачем нужна миграция с UNIX на Linux? Выводы на основ...Банковское обозрение
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализацияYandex
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON
 

Similar to Некриптографическое исследование носителей православной криптографии (20)

Извлечение ключа из токена с неизвлекаемым ключом
Извлечение ключа из токена с неизвлекаемым ключомИзвлечение ключа из токена с неизвлекаемым ключом
Извлечение ключа из токена с неизвлекаемым ключом
 
Михаил Щербаков "WinDbg сотоварищи"
Михаил Щербаков "WinDbg сотоварищи"Михаил Щербаков "WinDbg сотоварищи"
Михаил Щербаков "WinDbg сотоварищи"
 
еще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложенийеще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложений
 
WinDbg в руках .NET разработчика
WinDbg в руках .NET разработчикаWinDbg в руках .NET разработчика
WinDbg в руках .NET разработчика
 
WinDbg со товарищи
WinDbg со товарищиWinDbg со товарищи
WinDbg со товарищи
 
11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
 
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
 
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)
 
Convertor
ConvertorConvertor
Convertor
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
 
Series a manual_rus
Series a manual_rusSeries a manual_rus
Series a manual_rus
 
Ievgen Kulyk - Advanced reverse engineering techniques in unpacking
Ievgen Kulyk - Advanced reverse engineering techniques in unpackingIevgen Kulyk - Advanced reverse engineering techniques in unpacking
Ievgen Kulyk - Advanced reverse engineering techniques in unpacking
 
Moscow Python Conf 2016. Почему 100% покрытие это плохо?
Moscow Python Conf 2016. Почему 100% покрытие это плохо?Moscow Python Conf 2016. Почему 100% покрытие это плохо?
Moscow Python Conf 2016. Почему 100% покрытие это плохо?
 
Методики и инструменты для самостоятельного решения проблем в сети
Методики и инструменты для самостоятельного решения проблем в сетиМетодики и инструменты для самостоятельного решения проблем в сети
Методики и инструменты для самостоятельного решения проблем в сети
 
Лекция № 3 Организация ЭВМ и систем
Лекция № 3 Организация ЭВМ и системЛекция № 3 Организация ЭВМ и систем
Лекция № 3 Организация ЭВМ и систем
 
SECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступлений
SECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступленийSECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступлений
SECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступлений
 
Владимир Назаров, HPE: Зачем нужна миграция с UNIX на Linux? Выводы на основ...
Владимир Назаров, HPE:  Зачем нужна миграция с UNIX на Linux? Выводы на основ...Владимир Назаров, HPE:  Зачем нужна миграция с UNIX на Linux? Выводы на основ...
Владимир Назаров, HPE: Зачем нужна миграция с UNIX на Linux? Выводы на основ...
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализация
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
 

More from Sergey Soldatov

Metrics in Security Operations
Metrics in Security OperationsMetrics in Security Operations
Metrics in Security OperationsSergey Soldatov
 
Сколько надо SOC?
Сколько надо SOC?Сколько надо SOC?
Сколько надо SOC?Sergey Soldatov
 
От мониторинга к форенсике и обратно
От мониторинга к форенсике и обратноОт мониторинга к форенсике и обратно
От мониторинга к форенсике и обратноSergey Soldatov
 
Роботы среди нас!
Роботы среди нас!Роботы среди нас!
Роботы среди нас!Sergey Soldatov
 
How MITRE ATT&CK helps security operations
How MITRE ATT&CK helps security operationsHow MITRE ATT&CK helps security operations
How MITRE ATT&CK helps security operationsSergey Soldatov
 
Практика обнаружения атак, использующих легальные инструменты
Практика обнаружения атак, использующих легальные инструментыПрактика обнаружения атак, использующих легальные инструменты
Практика обнаружения атак, использующих легальные инструментыSergey Soldatov
 
Reducing cyber risks in the era of digital transformation
Reducing cyber risks in the era of digital transformationReducing cyber risks in the era of digital transformation
Reducing cyber risks in the era of digital transformationSergey Soldatov
 
Kaspersky managed protection
Kaspersky managed protectionKaspersky managed protection
Kaspersky managed protectionSergey Soldatov
 
Hunting Lateral Movement in Windows Infrastructure
Hunting Lateral Movement in Windows InfrastructureHunting Lateral Movement in Windows Infrastructure
Hunting Lateral Movement in Windows InfrastructureSergey Soldatov
 
Трудовые будни охотника на угрозы
Трудовые будни охотника на угрозыТрудовые будни охотника на угрозы
Трудовые будни охотника на угрозыSergey Soldatov
 
Охота на угрозы на BIS summit 2016
Охота на угрозы на BIS summit 2016Охота на угрозы на BIS summit 2016
Охота на угрозы на BIS summit 2016Sergey Soldatov
 
модульный под к документир V5
модульный под к документир V5модульный под к документир V5
модульный под к документир V5Sergey Soldatov
 
IDM - это непросто!
IDM - это непросто!IDM - это непросто!
IDM - это непросто!Sergey Soldatov
 
Примерные критерии оценки IDM
Примерные критерии оценки IDMПримерные критерии оценки IDM
Примерные критерии оценки IDMSergey Soldatov
 
Infosecurity management in the Enterprise
Infosecurity management in the EnterpriseInfosecurity management in the Enterprise
Infosecurity management in the EnterpriseSergey Soldatov
 
Безопасность мобильных устройств
Безопасность мобильных устройствБезопасность мобильных устройств
Безопасность мобильных устройствSergey Soldatov
 
How to catch your “hacker” or makeshift security
How to catch your “hacker” or makeshift securityHow to catch your “hacker” or makeshift security
How to catch your “hacker” or makeshift securitySergey Soldatov
 
Drive by-download attack evolution zero nights v3
Drive by-download attack evolution zero nights v3Drive by-download attack evolution zero nights v3
Drive by-download attack evolution zero nights v3Sergey Soldatov
 

More from Sergey Soldatov (19)

Metrics in Security Operations
Metrics in Security OperationsMetrics in Security Operations
Metrics in Security Operations
 
Сколько надо SOC?
Сколько надо SOC?Сколько надо SOC?
Сколько надо SOC?
 
От мониторинга к форенсике и обратно
От мониторинга к форенсике и обратноОт мониторинга к форенсике и обратно
От мониторинга к форенсике и обратно
 
Роботы среди нас!
Роботы среди нас!Роботы среди нас!
Роботы среди нас!
 
How MITRE ATT&CK helps security operations
How MITRE ATT&CK helps security operationsHow MITRE ATT&CK helps security operations
How MITRE ATT&CK helps security operations
 
Практика обнаружения атак, использующих легальные инструменты
Практика обнаружения атак, использующих легальные инструментыПрактика обнаружения атак, использующих легальные инструменты
Практика обнаружения атак, использующих легальные инструменты
 
Reducing cyber risks in the era of digital transformation
Reducing cyber risks in the era of digital transformationReducing cyber risks in the era of digital transformation
Reducing cyber risks in the era of digital transformation
 
Kaspersky managed protection
Kaspersky managed protectionKaspersky managed protection
Kaspersky managed protection
 
Hunting Lateral Movement in Windows Infrastructure
Hunting Lateral Movement in Windows InfrastructureHunting Lateral Movement in Windows Infrastructure
Hunting Lateral Movement in Windows Infrastructure
 
Трудовые будни охотника на угрозы
Трудовые будни охотника на угрозыТрудовые будни охотника на угрозы
Трудовые будни охотника на угрозы
 
Охота на угрозы на BIS summit 2016
Охота на угрозы на BIS summit 2016Охота на угрозы на BIS summit 2016
Охота на угрозы на BIS summit 2016
 
Вопросы к DLP
Вопросы к DLPВопросы к DLP
Вопросы к DLP
 
модульный под к документир V5
модульный под к документир V5модульный под к документир V5
модульный под к документир V5
 
IDM - это непросто!
IDM - это непросто!IDM - это непросто!
IDM - это непросто!
 
Примерные критерии оценки IDM
Примерные критерии оценки IDMПримерные критерии оценки IDM
Примерные критерии оценки IDM
 
Infosecurity management in the Enterprise
Infosecurity management in the EnterpriseInfosecurity management in the Enterprise
Infosecurity management in the Enterprise
 
Безопасность мобильных устройств
Безопасность мобильных устройствБезопасность мобильных устройств
Безопасность мобильных устройств
 
How to catch your “hacker” or makeshift security
How to catch your “hacker” or makeshift securityHow to catch your “hacker” or makeshift security
How to catch your “hacker” or makeshift security
 
Drive by-download attack evolution zero nights v3
Drive by-download attack evolution zero nights v3Drive by-download attack evolution zero nights v3
Drive by-download attack evolution zero nights v3
 

Некриптографическое исследование носителей православной криптографии

  • 1. Некриптографическоеисследование носителей православной криптографии,или как мы проверяли безопасность хранения ключей на токенах… Сергей СолдатовМихаил Егоров КОНФЕРЕНЦИЯ 13-14 НОЯБРЯ WWW.ZERONIGHTS.RU
  • 2. Зачем нужны токены? для хранения ключей!
  • 3. Зачем нужны токены? Неизвлекаемогодля хранения ключей! Ключ не извлекается из памяти приложения Ключ не извлекается из трафика до приложения Ключ не извлекается из токенаимитацией работы легитимного приложения
  • 4. Зачем нужны токены? Неизвлекаемогодля хранения ключей! Ключ не извлекается из памяти приложения Ключ не извлекается из трафика до приложения Ключ не извлекается из токенаимитацией работы легитимного приложения Всеоперации с ключом должны выполняться в токене=> токенпо спецификации должен поддерживатьиспользуемые криптографические алгоритмы (есть сложности, если токензападного производства)
  • 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 = 56 -2 0x22 = 36 -2 0x03b4 = 948 = 952-4 0x6c = 0x6e -2 Секрет Имя контейнера Всякая описательная часть
  • 12. Демо №2: Извлечение контейнера непосредственно из токена •Условия: •Знание пароля пользователя на токен. •Почему это работает (уязвимости): •Нарушение ОП, •Как это работает: •Наше приложение отправляет на токенкоманды APDU,которые приводят к отправке контейнера с секретным ключом из токенав наше приложение.
  • 13. Аутентификация запрос-ответ в Aladdin eTokenPro 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) Salt Static SHA-1 SHA-1 998 раз 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],F0000000 611E1BC9 JE SHORT cpcspi.611E1BD8 611E1BCB DWORD PTR SS:[EBP+1C],8000 611E1BD2 JNZ cpcspi.611E1ECC 611E1BD8 TEST DWORD PTR SS:[EBP+1C],800 611E1BDF JE cpcspi.611E1ECC 998–не экспортируемый контейнер 99С–экспортируемый контейнер
  • 18. Патчинг памяти процесса (22 байта) 611E1BC2 DWORD PTR DS:[EDI+68],F0000000 611E1BC9 JE SHORT cpcspi.611E1BD8 611E1BCB DWORD PTR SS:[EBP+1C],8000 611E1BD2 JNZ cpcspi.611E1ECC 611E1BD8 TEST DWORD PTR SS:[EBP+1C],800 611E1BDF 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],800 611E1BDF 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 СПАСИБО! ВОПРОСЫ? WWW.ZERONIGHTS.RU