More Related Content Similar to Безопасные связи, Дмитрий Евдокимов (20) Безопасные связи, Дмитрий Евдокимов2. #whoami
©
2002—2014,
Digital
Security
Безопасные
связи
• Исследователь
информационной
безопасности
в
Digital
Security
Research
Group
• Редактор
рубрик
в
журнале
Xakep
• Один
из
организаторов
конференций
DEFCON
Russia
и
ZeroNights
• Специализируюсь
на
поиске
уязвимостей
в
бинарных
приложениях
без
исходного
кода
• Анализ
мобильных
приложений
для
Android,
iOS,
WindowsPhone
• Докладчик
на
конференциях
в
Польше,
Франции,
Германии,
ОАЭ
2
5. M3
–
Insufficient
Transport
Layer
Protecqon
©
2002—2014,
Digital
Security
5
Безопасные
связи
6. Атака
“MitM”
• Подключение
пользователя
к
поддельной
Wi-‐Fi-‐точке
доступа
• Подключение
к
поддельной
базовой
станции
оператора
• Использование
зараженного
сетевого
оборудования
• …
При
контролировании
канала
передачи
данных
между
приложением
и
сервером
злоумышленник
может
©
2002—2014,
Digital
Security
производить
любые
манипуляции
6
Безопасные
связи
8. Последствия
MiiM
• Модификация
©
2002—2014,
Digital
Security
данных
• Кража
сессии
• Раскрытие
данных
• Выполнение
произвольного
кода
• Отказ
в
обслуживании
клиента
• …
8
Безопасные
связи
9. Специфика
работы
мобильных
устройств
с
Wi-‐Fi-‐сетями
Подробнее:
Raúl
Siles
–
“Wi-‐Fi:
Why
iOS
(Android
and
others)
Fail
Inexplicably?”
www.slideshare.net/rootedcon/ral-‐siles-‐wifi-‐why-‐ios-‐android-‐and-‐others-‐fail-‐inexplicably-‐rooted-‐con-‐2013
©
2002—2014,
Digital
Security
9
Безопасные
связи
10. Виды
каналов
связи
• Открытые
• Защищенные
©
2002—2014,
Digital
Security
нестандартными
методами
‒ ~=
открытые
• Защищенные
стандартными
методами
‒ SSL/TLS
Ø Все
взаимодействие
основывается
на
паре
«открытый
и
закрытый
ключ»
сертификата
сервера
Ø Сертификат
должен
быть
действительным
10
Безопасные
связи
11. SSL
и
Android
• В
ОС
Android
до
версии
4.0
все
сертификаты
хранились
в
едином
файле
–
Bouncy
Castle
Keystore
File.
• Файл:
©
2002—2014,
Digital
Security
/system/etc/security/cacerts.bks
• C
Android
4.0,
подход
к
работе
с
сертификатами
изменился.
Теперь
все
сертификаты
хранятся
отдельными
файлами,
и
при
необходимости
можно
удалять
их
из
доверенных.
• Системные
хранятся
в:
/system/etc/security/cacerts
• Пользовательские
хранятся
в:
/data/misc/keychain/cacerts-‐added
11
Безопасные
связи
12. SSL
и
iOS
• В
ОС
iOS
посмотреть
встроенные
сертификаты
нельзя,
и
получить
информацию
о
них
можно
только
с
сайта
компании
Apple.
• h~p://support.apple.com/kb/HT5012?viewlocale=en_US
• Системные
©
2002—2014,
Digital
Security
хранятся
в:
/System/Library/Frameworks/
Security.framework/certsTable.data
• Для
просмотра
пользовательских
сертификатов
необходимо
зайти
в
меню
Настройки
-‐>
Основные
-‐>
Профиль(и).
• Пользовательские
хранятся
в:
/private/var/Keychains/TrustStore.sqlite3
12
Безопасные
связи
13. Некорректное
использование
SSL
• Использование
©
2002—2014,
Digital
Security
уязвимых
фреймворков
• Отключение
проверок
(отладочное
API)
• Некорректное
переопределение
стандартных
обработчиков
на
собственные
• Неправильная
конфигурация
API-‐вызовов
• Слабые
параметры
шифрования
• Использование
уязвимой
версии
библиотеки
• Неправильная
обработка
результатов
вызовов
• Отсутствие
проверки
на
имя
хоста
или
использование
неправильных
регулярных
выражений
для
проверки
13
Безопасные
связи
14. НЕ
делайте
так
(Android)
©
2002—2014,
Digital
Security
14
Безопасные
связи
15. НЕ
делайте
так
(Android)
©
2002—2014,
Digital
Security
15
Безопасные
связи
16. НЕ
делайте
так
(iOS)
©
2002—2014,
Digital
Security
16
Безопасные
связи
• NSURLRequest
class
• setAllowsAnyHTTPSCerqficate
• NSURLConnecqon
class
• allowsAnyHTTPSCerqficateForHost
• setAllowsAnyHTTPSCerqficate
• conqnueWithoutCredenqalForAuthenqcaqonChallenge
• CFStreams
sockets
• kCFStreamPropertySSLSe¢ngs
• kCFStreamSSLAllowsExpiredCerqficates
• kCFStreamSSLAllowsExpiredRoots
• kCFStreamSSLAllowsAnyRoot
17. Проблемы
frameworks
• Очень-‐очень
©
2002—2014,
Digital
Security
модно
• А
что
там
под
капотом?
Что
там
с
безопасностью?
• RCE
Apache
Cordova
• Cross-‐Applicaqon
Scripqng
–
выполнение
вредоносного
JS
в
контексте
Cordova-‐based
приложения
• h~p://cordova.apache.org/announcements/2014/08/04/
android-‐351.html
• Titanium
• RCE
+
отсутствие
проверки
сертификата
• h~p://www.appcelerator.com/blog/2012/11/the-‐qtanium-‐sdk-‐and-‐
cerqficate-‐validaqon/
• …
17
Безопасные
связи
19. Установка
сертификата
и
соц.
инженерия
1)
Пользователь
делает
все
сам
из-‐за
неосведомленности.
2)
Приобретается
подержанный
телефон
со
встроенным
вредоносным
сертификатом
3)
Сертификат
устанавливается
на
телефон
с
iOS
за
несколько
секунд,
если
оказывается
случайно
в
руках
злоумышленника
(например,
он
попросил
позвонить)
4)
Сетевое
оборудование
с
«хорошим»
сертификатом
–
тут
NSA
и
все
дела
5)
…
©
2002—2014,
Digital
Security
19
Безопасные
связи
20. Компрометация
SSL
• Компрометация
©
2002—2014,
Digital
Security
корневого
сертификата
• Установка
вредоносного
сертификата
с
помощью
соц.
инженерии
• Инциденты
с
Bit9,
DigiNator
и
Comodo
• Сертификаты
иностранных
государств
;)
20
Безопасные
связи
21. Если
CA-‐сертификат
скомпрометирован
• Пользователь
©
2002—2014,
Digital
Security
может
удалить
сертификат
из
доверенных
• В
ОС
Android
пользователь
может
это
сделать
как
со
встроенными
сертификатами,
так
и
с
пользовательскими
• В
iOS
пользователь
может
удалить
только
пользовательские
сертификаты
• Разработчик
ОС
может
выпустить
обновление
• Издатель
сертификата
может
отозвать
свой
сертификат.
Механизм
проверки
сертификата
может
динамически
проверить
это
• Android
не
поддерживает
ни
CRL,
ни
OCSP
• iOS
использует
OCSP
21
Безопасные
связи
22. SSL
pinning
В
качестве
защиты
от
компрометации
корневых
системных
сертификатов
и
специально
встроенных
пользовательских
можно
использовать
подход
SSL
Pinning.
Pinning
–
это
процесс
ассоциации
хоста
с
его
ожидаемым
X509-‐
сертификатом
или
публичным
ключом.
©
2002—2014,
Digital
Security
22
Безопасные
связи
23. SSL
Pinning
• app1
использует
SSL
Pinning
Ø Проверяет
«вшитый»
примитив
• app2
не
использует
SSL
Pinning
Ø Обращается
к
системному
хранилищу
©
2002—2014,
Digital
Security
23
Безопасные
связи
24. Подход
к
SSL
pinning
SSL
Pinning
бывает
двух
основных
типов:
• Cerqficate
©
2002—2014,
Digital
Security
Pinning:
• Простота
реализации
• Низкая
гибкость
подхода
• Public
Key
Pinning:
• Проблемы
с
реализацией
на
некоторых
платформах
• Хорошая
гибкость
подхода
Преимуществом
также
является
возможность
использовать:
• Self-‐Signed
сертификаты
• Private
CA-‐Issued
сертификаты
24
Безопасные
связи
25. Обход
SSL
Pinning
• SSL
Pinning
можно
обойти/отключить,
если
на
мобильном
устройстве
присутствует
jailbreak
или
root-‐доступ
• Как
правило,
это
нужно
только
исследователям
для
анализа
сетевого
трафика
• Android:
• Android
©
2002—2014,
Digital
Security
SSL
Bypass
• iOS:
• iOS
SSL
Kill
Switch
• TrustMe
• По
идее,
эти
же
подходы
могут
использовать
и
вредоносные
программы
• Как
и
любой
код,
проверки
при
SSL
Pinning
могут
быть
реализованы
некорректно,
и
на
это
стоит
обращать
внимание!
25
Безопасные
связи
26. Реализация
SSL
pinning
• Код
для
реализации
SSL
Pinning
уже
сейчас
можно
найти
на
сайте
OWASP
для
Android,
iOS
и
.NET.
• h~ps://www.owasp.org/index.php/Cerqficate_and_Public_Key_Pinning
• Проект
©
2002—2014,
Digital
Security
AndroidPinning
от
Moxie
• h~ps://github.com/moxie0/AndroidPinning
• Начиная
с
Android
4.2,
SSL
Pinning
поддерживается
на
системном
уровне.
• Не
получится
реализовать
в
случае
использования
WebView
в
Android
и
UIWebView
в
iOS
в
связи
с
их
спецификой
26
Безопасные
связи
27. Дополнительный
фактор
©
2002—2014,
Digital
Security
27
Безопасные
связи
Как
правило,
передается
по
тому
же
каналу,
что
и
контролирует
злоумышленник!
28. Рекомендую
к
прочтению
• «The
Most
Dangerous
Code
in
the
World:
Validaqng
SSL
Cerqficates
in
Non-‐Browser
So®ware»
• h~p://www.cs.utexas.edu/~shmat/shmat_ccs12.pdf
• «Rethinking
©
2002—2014,
Digital
Security
SSL
Development
in
an
Appified
World»
• h~p://android-‐ssl.org/files/p49.pdf
28
Безопасные
связи
29. Безопасная
разработка
• iOS
• Secure
©
2002—2014,
Digital
Security
Coding
Guide
from
Apple
• h~ps://developer.apple.com/library/ios/documentaqon/Security/
Conceptual/SecureCodingGuide/SecureCodingGuide.pdf
• IOS
Developer
Cheat
Sheet
• h~ps://www.owasp.org/index.php/IOS_Developer_Cheat_Sheet
• Android
• The
CERT
Oracle
Secure
Coding
Standard
for
Java
• h~ps://www.securecoding.cert.org/confluence/pages/viewpage.acqon?
pageId=111509535
• Analysis
of
Android
Applicability:
CERT's
Java
Coding
Guidelines
• h~ps://www.securecoding.cert.org/confluence/display/java/Analysis+of
+Android+Applicability%3A+CERT%27s+Java+Coding+Guidelines
• Security
Tips
from
Android
• h~p://developer.android.com/training/arqcles/security-‐qps.html
29
Безопасные
связи
30. Рекомендации
• Не
доверяйте
клиентской
стороне!
• Критичная
©
2002—2014,
Digital
Security
информация
не
должна
передаваться
в
открытом
виде!
• Не
изобретайте
собственное
шифрование!
• Используйте
SSL/TLS
• Используйте
безопасное
шифрование
(128
бит
и
больше)
• Проверяйте
сертификаты
• Используйте
SSL
pinning
30
Безопасные
связи
31. Безопасные
связи
Спасибо
за
внимание!
Вопросы?
Digital
Security
в
Москве:
(495)
223-‐07-‐86
Digital
Security
в
Санкт-‐Петербурге:
(812)
703-‐15-‐47
d.evdokimov@dsec.ru
@evdokimovds
©
2002—2014,
Digital
Security
31