SlideShare uma empresa Scribd logo
1 de 24
Бечеда за жизнь о криптах
Омар Ганиев
QIWI Friday Security Party
Москва, 2015
Дисклеймер
• Бечседа о криптах
• Я мало знаю о криптах
• Я мало находил багов в криптах в работе
• Хочу пожаловаться об этом
• И услышать success-story от вас =)
Крипота
В игре
• В цтфах много хардкора, и есть
джентельменский набор криптоатак,
некоторые из которые встречаются с
завидной регулярностью
В игре
• Цезари, Виженеры, подстановки и т.д.
• Всевозможные глупые (или не очень) ксоры
да Вернамы
• Взлом RSA (атаки Винера, Франклина-
Райтера, Ферма, Копперсмита, …)
• Атака расширения длины для хеш-функций
• Атаки на эллиптические алгоритмы (типа
«быстрого» дискретного логарифма)
• Распаковка рюкзаков
В игре
• Разные оракулы в реализации, padding
oracle
• Линейный, дифференциальный
криптоанализ
• Логические атаки с блочными шифрами
(типа использования ECB или
неправильного порядка в EDE)
• Разбор каких-то неведомых алгоритмов и
прочие интересности
Жизнь – игра?
• Авторы тасков берут идеи вовсе не с
потолка, а подумав, какие могут быть
ошибки в реализации того или иного
алгоритма, либо найдя ошибки в
конкретном продукте
• Расскажите в конце, какие хардкорные
криптобаги, компрометирующие систему,
вы находили при анализе защищённости?
Жиза
• Пригодятся ли эти хардкорные тренировки
пентестовебоэникейщикам?
• Далее несколько примеров
околокриптографических багов, которые
мне доводилось обнаружить на пентестах
Умный брут
• Нет, не тот, который убил Цезаря
• Представьте себе форму авторизации в
ДБО, где часть логики зашита в JS
• Для сброса 8-циферного пароля
используется фиксированный ключ PIN2. У
него есть ограничения по формату, они
проверяются в JS
• Также в JS проверяется сложность пароля,
что отсеивает 1-2% плохих паролей
Умный брут
• При отправке PAN сервер зачем-то в ответ
отдаёт PIN2ENC = 3DES(PIN2,
hashwithmd5(salt, password))
• Поскольку PIN2 имеет определённый
формат, можно перебирать всевозможные
8-циферные пароли (кроме плохих),
дешифровать ими PIN2ENC и проверять
соответствие формату
• Статистика показала, что подходящих
паролей остаётся всего около 400 000
Умный брут
• Пусть в интернет-банке есть 100 000 юзеров.
На каждого есть 3 попытки ввода пароля
• Посчитаем вероятность того, что мы
взломаем хоть одну учётку, сделав 300 000
попыток:
>>> p=1/400000.+1/399999.+1/399998.
>>> 100-pow(1-p,100000)*100
52.76356614876912
• Итак, вероятность больше 50%, вин!
Оракул набивки
• А что если такой вот PIN2ENC, получаемый от
клиента, расшифровывался бы на сервере?
• Классический баг реализации блочного
шифрования с утечкой данных по побочному
каналу
• Периодически встречается на цтфах, чаще
всего в вебе
• Одна из наиболее прикладных криптоатак
(была в ASP.NET, например), но не слишком
частая
Оракул набивки
• Из жизни: хотите отписаться от рассылки?
Жмите на /unsubscribe?long_str_in_base64
• Хм, а флипнем последний бит
• 500? Padding Oracle!
• Если даже токен не содержит интересных
данных, а бит-флиппинг не позволяет
сделать какую-либо инъекцию, можно
расшифровывать любые другие данные,
получаемые от сервера
Некриптовые крипты
• Есть страшно баянистый факт из доков PHP,
который с завидной регулярностью всех
шокирует
• == не проверяет на идентичность в отличие от
===!
• true === “0” == “00e123123”
• Это всё лирика, а вот прикольно проверить это
в жизни, да ещё и блекбоксом, предположив,
что разрабы допустили ошибку
Некриптовые крипты
• /api/payment/?sum=1337&to=hacker&md5=
…
• Хм… Почитаем доки SDK для API платёжки
• Есть параметры, не влияющие на платёж,
но меняющие строку
• Фаззим, что туда можно подавать строки из
байтов от 32 до 128
• Регаем акк и получаем легитимный ключ
Некриптовые крипты
• Теперь нужен PoC. Если попытаться
комбинаторно прикинуть шансы на
эксплуатацию, получается не слишком
радужная картина
>>> 2**128 / sum([10**(30 - i) for i in xrange(30)])
306254130L
• Но почему-то на практике у меня
получается находить коллизии гораздо
быстрее, надо потестить статистику ещё
Некриптовые крипты
• Плевать на реальность, мы хотим PoC
• Берём ключ своего аккаунта, формируем
строку запроса к API, подлежащую подписи
• Берём степень свободы (дополнительный
ненужный параметр) и фаззим её, пока не
получится хеш вида ^0+ed+$
• Делаем это на плюсах с потоками:
https://github.com/beched/php_hash_collisio
n_finder
Некриптовые крипты
• Оп, получили строчку и пробуем что-то
вроде
/api/payment/?dummy=%40a`/&sum=1337&t
o=hacker&md5=0
• Вин! Значит, в коде написано ==, а не ===
• Сломали подпись для своего аккаунта,
значит, можем сломать для любого, заслав
дохреннилион запросов на сервак
Ода блокам
Ода блокам
• Ode to ECB:
https://twitter.com/travisgoodspeed/status/6
17746044760268800
• Тривиальные с криптографической точки
зрения баги (уровня crypto100 на цтфах),
связанные с повторным использованием
шифроблоков, порой приводят к весёлым
последствиям
Ода блокам
• Снова представьте себе ДБО
• Там есть интерфейс перевода с карты, при
этом, то ли согласно правилам PCI, то ли по
ошибке платёжные данные зачем-то
сохраняются в сессии в зашифрованном
виде
• Сессия у многих фреймворков хранится у
клиента в куках (с подписью, конечно)
Ода блокам
• Итак, в сессии лежит
Crypto.encryptAES(userInput), при этом
валидации для userInput нет
• Представьте, что мобильный интерфейс
этого интернет-банка традиционно облегчил
аутентификацию и логинит без 2FA по токену
• Токен – это Crypto.encryptAES(login + “|” +
timestamp)
• Finita la commedia
Стенд-ап
• А теперь жду ваших рассказов, если вы
ещё/уже не совсем пьяны
• Или кидайте зиродеи сюда:
beched@incsecurity.ru
admin@ahack.ru
Заголовок слайда

Mais conteúdo relacionado

Mais procurados

Технологии анализа бинарного кода приложений: требования, проблемы, инструменты
Технологии анализа бинарного кода приложений: требования, проблемы, инструментыТехнологии анализа бинарного кода приложений: требования, проблемы, инструменты
Технологии анализа бинарного кода приложений: требования, проблемы, инструментыPositive Development User Group
 
Подходы к сигнатурному статическому анализу
Подходы к сигнатурному статическому анализуПодходы к сигнатурному статическому анализу
Подходы к сигнатурному статическому анализуPositive Development User Group
 
Формальная верификация кода на языке Си
Формальная верификация кода на языке СиФормальная верификация кода на языке Си
Формальная верификация кода на языке СиPositive Development User Group
 
разработка бизнес приложений (8)
разработка бизнес приложений (8)разработка бизнес приложений (8)
разработка бизнес приложений (8)Alexander Gornik
 
CodeFest 2012 - Пентест на стероидах
CodeFest 2012 - Пентест на стероидахCodeFest 2012 - Пентест на стероидах
CodeFest 2012 - Пентест на стероидахSergey Belov
 
Автоматизация построения правил для Approof
Автоматизация построения правил для ApproofАвтоматизация построения правил для Approof
Автоматизация построения правил для ApproofPositive Development User Group
 
Автоматизация построения правил для Approof
Автоматизация построения правил для ApproofАвтоматизация построения правил для Approof
Автоматизация построения правил для ApproofPositive Hack Days
 
Waf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScriptWaf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScriptPositive Hack Days
 
Sim sim-2
Sim sim-2Sim sim-2
Sim sim-2gorad
 
От экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летОт экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летPositive Development User Group
 
Sergii Tsypanov: "Tricky enterprise"
Sergii Tsypanov: "Tricky enterprise"Sergii Tsypanov: "Tricky enterprise"
Sergii Tsypanov: "Tricky enterprise"LogeekNightUkraine
 
Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...
Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...
Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...Ontico
 
Хорошо поддерживаемое приложение
Хорошо поддерживаемое приложениеХорошо поддерживаемое приложение
Хорошо поддерживаемое приложениеNikolay Sivko
 
Цена ошибки
Цена ошибкиЦена ошибки
Цена ошибкиAndrey Karpov
 
Прикладная теория Application Security
Прикладная теория Application SecurityПрикладная теория Application Security
Прикладная теория Application SecurityVladimir Kochetkov
 
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)Ontico
 
Современные подходы к SAST
Современные подходы к SASTСовременные подходы к SAST
Современные подходы к SASTVladimir Kochetkov
 

Mais procurados (20)

Технологии анализа бинарного кода приложений: требования, проблемы, инструменты
Технологии анализа бинарного кода приложений: требования, проблемы, инструментыТехнологии анализа бинарного кода приложений: требования, проблемы, инструменты
Технологии анализа бинарного кода приложений: требования, проблемы, инструменты
 
Подходы к сигнатурному статическому анализу
Подходы к сигнатурному статическому анализуПодходы к сигнатурному статическому анализу
Подходы к сигнатурному статическому анализу
 
Кто сказал «WAF»?
Кто сказал «WAF»?Кто сказал «WAF»?
Кто сказал «WAF»?
 
Формальная верификация кода на языке Си
Формальная верификация кода на языке СиФормальная верификация кода на языке Си
Формальная верификация кода на языке Си
 
Трущобы Application Security
Трущобы Application SecurityТрущобы Application Security
Трущобы Application Security
 
разработка бизнес приложений (8)
разработка бизнес приложений (8)разработка бизнес приложений (8)
разработка бизнес приложений (8)
 
CodeFest 2012 - Пентест на стероидах
CodeFest 2012 - Пентест на стероидахCodeFest 2012 - Пентест на стероидах
CodeFest 2012 - Пентест на стероидах
 
Автоматизация построения правил для Approof
Автоматизация построения правил для ApproofАвтоматизация построения правил для Approof
Автоматизация построения правил для Approof
 
Автоматизация построения правил для Approof
Автоматизация построения правил для ApproofАвтоматизация построения правил для Approof
Автоматизация построения правил для Approof
 
Waf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScriptWaf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScript
 
Sim sim-2
Sim sim-2Sim sim-2
Sim sim-2
 
От экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летОт экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 лет
 
Sergii Tsypanov: "Tricky enterprise"
Sergii Tsypanov: "Tricky enterprise"Sergii Tsypanov: "Tricky enterprise"
Sergii Tsypanov: "Tricky enterprise"
 
Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...
Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...
Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...
 
Хорошо поддерживаемое приложение
Хорошо поддерживаемое приложениеХорошо поддерживаемое приложение
Хорошо поддерживаемое приложение
 
Цена ошибки
Цена ошибкиЦена ошибки
Цена ошибки
 
Прикладная теория Application Security
Прикладная теория Application SecurityПрикладная теория Application Security
Прикладная теория Application Security
 
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
 
Remote Highload
Remote HighloadRemote Highload
Remote Highload
 
Современные подходы к SAST
Современные подходы к SASTСовременные подходы к SAST
Современные подходы к SAST
 

Semelhante a Криптология в анализе защищённости

Как взломать телеком и остаться в живых
Как взломать телеком и остаться в живыхКак взломать телеком и остаться в живых
Как взломать телеком и остаться в живыхqqlan
 
2.3. Java cracking random_utils
2.3. Java cracking random_utils2.3. Java cracking random_utils
2.3. Java cracking random_utilsdefconmoscow
 
Владимир Иванов - Криптография и шифрование
Владимир Иванов - Криптография и шифрованиеВладимир Иванов - Криптография и шифрование
Владимир Иванов - Криптография и шифрованиеYandex
 
инфраструктура открытых ключей (Pki)
инфраструктура открытых ключей (Pki)инфраструктура открытых ключей (Pki)
инфраструктура открытых ключей (Pki)Yandex
 
Андрей Карпов, Приватные байки от разработчиков анализатора кода
Андрей Карпов, Приватные байки от разработчиков анализатора кодаАндрей Карпов, Приватные байки от разработчиков анализатора кода
Андрей Карпов, Приватные байки от разработчиков анализатора кодаSergey Platonov
 
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)Ontico
 
CodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
CodeFest 2012. Аксёнов А. — Как мы разрабатываем SphinxCodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
CodeFest 2012. Аксёнов А. — Как мы разрабатываем SphinxCodeFest
 
Алгоритмы шифрования и их применение в .Net приложениях для защиты данных.
Алгоритмы шифрования и их применение в .Net приложениях для защиты данных.Алгоритмы шифрования и их применение в .Net приложениях для защиты данных.
Алгоритмы шифрования и их применение в .Net приложениях для защиты данных.Pavel Tsukanov
 
Татьяна Новикова (Казахстан), ЦАРКА. Как мы мониторим Казнет с помощью WebTotem
Татьяна Новикова (Казахстан), ЦАРКА. Как мы мониторим Казнет с помощью WebTotemТатьяна Новикова (Казахстан), ЦАРКА. Как мы мониторим Казнет с помощью WebTotem
Татьяна Новикова (Казахстан), ЦАРКА. Как мы мониторим Казнет с помощью WebTotemKazHackStan
 
True Token: Squire – разрушитель легенд о HTML5
True Token: Squire – разрушитель легенд о HTML5True Token: Squire – разрушитель легенд о HTML5
True Token: Squire – разрушитель легенд о HTML5DevGAMM Conference
 
Роман Еникеев - PHP обязан умирать
Роман Еникеев - PHP обязан умиратьРоман Еникеев - PHP обязан умирать
Роман Еникеев - PHP обязан умиратьDataArt
 
Как взломать телеком и остаться в живых. Сергей Гордейчик
Как взломать телеком и остаться в живых. Сергей ГордейчикКак взломать телеком и остаться в живых. Сергей Гордейчик
Как взломать телеком и остаться в живых. Сергей ГордейчикPositive Hack Days
 
Обнаружение атак - из конца 90-х в 2018-й
Обнаружение атак - из конца 90-х в 2018-йОбнаружение атак - из конца 90-х в 2018-й
Обнаружение атак - из конца 90-х в 2018-йAleksey Lukatskiy
 
Информационная безопасность и web-приложения
Информационная безопасность и web-приложенияИнформационная безопасность и web-приложения
Информационная безопасность и web-приложенияMaxim Krentovskiy
 
Сергей Парамонов — Что наша жизнь — игра!
Сергей Парамонов — Что наша жизнь — игра!Сергей Парамонов — Что наша жизнь — игра!
Сергей Парамонов — Что наша жизнь — игра!Daria Oreshkina
 
Методы современных кибепреступников
Методы современных кибепреступниковМетоды современных кибепреступников
Методы современных кибепреступниковCisco Russia
 
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Ontico
 
Н.Романов (Trend micro) - Скрытые угрозы: можно ли тайное сделать явным?
Н.Романов (Trend micro) - Скрытые угрозы: можно ли тайное сделать явным?Н.Романов (Trend micro) - Скрытые угрозы: можно ли тайное сделать явным?
Н.Романов (Trend micro) - Скрытые угрозы: можно ли тайное сделать явным?Expolink
 
Цена абстракции, Андрей Аксёнов (Sphinx)
Цена абстракции, Андрей Аксёнов (Sphinx)Цена абстракции, Андрей Аксёнов (Sphinx)
Цена абстракции, Андрей Аксёнов (Sphinx)Ontico
 

Semelhante a Криптология в анализе защищённости (20)

Как взломать телеком и остаться в живых
Как взломать телеком и остаться в живыхКак взломать телеком и остаться в живых
Как взломать телеком и остаться в живых
 
2.3. Java cracking random_utils
2.3. Java cracking random_utils2.3. Java cracking random_utils
2.3. Java cracking random_utils
 
Владимир Иванов - Криптография и шифрование
Владимир Иванов - Криптография и шифрованиеВладимир Иванов - Криптография и шифрование
Владимир Иванов - Криптография и шифрование
 
инфраструктура открытых ключей (Pki)
инфраструктура открытых ключей (Pki)инфраструктура открытых ключей (Pki)
инфраструктура открытых ключей (Pki)
 
Андрей Карпов, Приватные байки от разработчиков анализатора кода
Андрей Карпов, Приватные байки от разработчиков анализатора кодаАндрей Карпов, Приватные байки от разработчиков анализатора кода
Андрей Карпов, Приватные байки от разработчиков анализатора кода
 
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
 
CodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
CodeFest 2012. Аксёнов А. — Как мы разрабатываем SphinxCodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
CodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
 
Алгоритмы шифрования и их применение в .Net приложениях для защиты данных.
Алгоритмы шифрования и их применение в .Net приложениях для защиты данных.Алгоритмы шифрования и их применение в .Net приложениях для защиты данных.
Алгоритмы шифрования и их применение в .Net приложениях для защиты данных.
 
Татьяна Новикова (Казахстан), ЦАРКА. Как мы мониторим Казнет с помощью WebTotem
Татьяна Новикова (Казахстан), ЦАРКА. Как мы мониторим Казнет с помощью WebTotemТатьяна Новикова (Казахстан), ЦАРКА. Как мы мониторим Казнет с помощью WebTotem
Татьяна Новикова (Казахстан), ЦАРКА. Как мы мониторим Казнет с помощью WebTotem
 
True Token: Squire – разрушитель легенд о HTML5
True Token: Squire – разрушитель легенд о HTML5True Token: Squire – разрушитель легенд о HTML5
True Token: Squire – разрушитель легенд о HTML5
 
Роман Еникеев - PHP обязан умирать
Роман Еникеев - PHP обязан умиратьРоман Еникеев - PHP обязан умирать
Роман Еникеев - PHP обязан умирать
 
Как взломать телеком и остаться в живых. Сергей Гордейчик
Как взломать телеком и остаться в живых. Сергей ГордейчикКак взломать телеком и остаться в живых. Сергей Гордейчик
Как взломать телеком и остаться в живых. Сергей Гордейчик
 
Обнаружение атак - из конца 90-х в 2018-й
Обнаружение атак - из конца 90-х в 2018-йОбнаружение атак - из конца 90-х в 2018-й
Обнаружение атак - из конца 90-х в 2018-й
 
Информационная безопасность и web-приложения
Информационная безопасность и web-приложенияИнформационная безопасность и web-приложения
Информационная безопасность и web-приложения
 
Сергей Парамонов — Что наша жизнь — игра!
Сергей Парамонов — Что наша жизнь — игра!Сергей Парамонов — Что наша жизнь — игра!
Сергей Парамонов — Что наша жизнь — игра!
 
Методы современных кибепреступников
Методы современных кибепреступниковМетоды современных кибепреступников
Методы современных кибепреступников
 
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
 
Криптография
КриптографияКриптография
Криптография
 
Н.Романов (Trend micro) - Скрытые угрозы: можно ли тайное сделать явным?
Н.Романов (Trend micro) - Скрытые угрозы: можно ли тайное сделать явным?Н.Романов (Trend micro) - Скрытые угрозы: можно ли тайное сделать явным?
Н.Романов (Trend micro) - Скрытые угрозы: можно ли тайное сделать явным?
 
Цена абстракции, Андрей Аксёнов (Sphinx)
Цена абстракции, Андрей Аксёнов (Sphinx)Цена абстракции, Андрей Аксёнов (Sphinx)
Цена абстракции, Андрей Аксёнов (Sphinx)
 

Mais de beched

Attacks against machine learning algorithms
Attacks against machine learning algorithmsAttacks against machine learning algorithms
Attacks against machine learning algorithmsbeched
 
Hacking as eSports
Hacking as eSportsHacking as eSports
Hacking as eSportsbeched
 
Find maximum bugs in limited time
Find maximum bugs in limited timeFind maximum bugs in limited time
Find maximum bugs in limited timebeched
 
Owasp web application security trends
Owasp web application security trendsOwasp web application security trends
Owasp web application security trendsbeched
 
Vulnerabilities in data processing levels
Vulnerabilities in data processing levelsVulnerabilities in data processing levels
Vulnerabilities in data processing levelsbeched
 
Что общего у CTF и тестов на проникновение?
Что общего у CTF и тестов на проникновение?Что общего у CTF и тестов на проникновение?
Что общего у CTF и тестов на проникновение?beched
 
Алгоритмы пентестов. BaltCTF 2012
Алгоритмы пентестов. BaltCTF 2012Алгоритмы пентестов. BaltCTF 2012
Алгоритмы пентестов. BaltCTF 2012beched
 

Mais de beched (7)

Attacks against machine learning algorithms
Attacks against machine learning algorithmsAttacks against machine learning algorithms
Attacks against machine learning algorithms
 
Hacking as eSports
Hacking as eSportsHacking as eSports
Hacking as eSports
 
Find maximum bugs in limited time
Find maximum bugs in limited timeFind maximum bugs in limited time
Find maximum bugs in limited time
 
Owasp web application security trends
Owasp web application security trendsOwasp web application security trends
Owasp web application security trends
 
Vulnerabilities in data processing levels
Vulnerabilities in data processing levelsVulnerabilities in data processing levels
Vulnerabilities in data processing levels
 
Что общего у CTF и тестов на проникновение?
Что общего у CTF и тестов на проникновение?Что общего у CTF и тестов на проникновение?
Что общего у CTF и тестов на проникновение?
 
Алгоритмы пентестов. BaltCTF 2012
Алгоритмы пентестов. BaltCTF 2012Алгоритмы пентестов. BaltCTF 2012
Алгоритмы пентестов. BaltCTF 2012
 

Криптология в анализе защищённости

  • 1. Бечеда за жизнь о криптах Омар Ганиев QIWI Friday Security Party Москва, 2015
  • 2. Дисклеймер • Бечседа о криптах • Я мало знаю о криптах • Я мало находил багов в криптах в работе • Хочу пожаловаться об этом • И услышать success-story от вас =)
  • 4. В игре • В цтфах много хардкора, и есть джентельменский набор криптоатак, некоторые из которые встречаются с завидной регулярностью
  • 5. В игре • Цезари, Виженеры, подстановки и т.д. • Всевозможные глупые (или не очень) ксоры да Вернамы • Взлом RSA (атаки Винера, Франклина- Райтера, Ферма, Копперсмита, …) • Атака расширения длины для хеш-функций • Атаки на эллиптические алгоритмы (типа «быстрого» дискретного логарифма) • Распаковка рюкзаков
  • 6. В игре • Разные оракулы в реализации, padding oracle • Линейный, дифференциальный криптоанализ • Логические атаки с блочными шифрами (типа использования ECB или неправильного порядка в EDE) • Разбор каких-то неведомых алгоритмов и прочие интересности
  • 7. Жизнь – игра? • Авторы тасков берут идеи вовсе не с потолка, а подумав, какие могут быть ошибки в реализации того или иного алгоритма, либо найдя ошибки в конкретном продукте • Расскажите в конце, какие хардкорные криптобаги, компрометирующие систему, вы находили при анализе защищённости?
  • 8. Жиза • Пригодятся ли эти хардкорные тренировки пентестовебоэникейщикам? • Далее несколько примеров околокриптографических багов, которые мне доводилось обнаружить на пентестах
  • 9. Умный брут • Нет, не тот, который убил Цезаря • Представьте себе форму авторизации в ДБО, где часть логики зашита в JS • Для сброса 8-циферного пароля используется фиксированный ключ PIN2. У него есть ограничения по формату, они проверяются в JS • Также в JS проверяется сложность пароля, что отсеивает 1-2% плохих паролей
  • 10. Умный брут • При отправке PAN сервер зачем-то в ответ отдаёт PIN2ENC = 3DES(PIN2, hashwithmd5(salt, password)) • Поскольку PIN2 имеет определённый формат, можно перебирать всевозможные 8-циферные пароли (кроме плохих), дешифровать ими PIN2ENC и проверять соответствие формату • Статистика показала, что подходящих паролей остаётся всего около 400 000
  • 11. Умный брут • Пусть в интернет-банке есть 100 000 юзеров. На каждого есть 3 попытки ввода пароля • Посчитаем вероятность того, что мы взломаем хоть одну учётку, сделав 300 000 попыток: >>> p=1/400000.+1/399999.+1/399998. >>> 100-pow(1-p,100000)*100 52.76356614876912 • Итак, вероятность больше 50%, вин!
  • 12. Оракул набивки • А что если такой вот PIN2ENC, получаемый от клиента, расшифровывался бы на сервере? • Классический баг реализации блочного шифрования с утечкой данных по побочному каналу • Периодически встречается на цтфах, чаще всего в вебе • Одна из наиболее прикладных криптоатак (была в ASP.NET, например), но не слишком частая
  • 13. Оракул набивки • Из жизни: хотите отписаться от рассылки? Жмите на /unsubscribe?long_str_in_base64 • Хм, а флипнем последний бит • 500? Padding Oracle! • Если даже токен не содержит интересных данных, а бит-флиппинг не позволяет сделать какую-либо инъекцию, можно расшифровывать любые другие данные, получаемые от сервера
  • 14. Некриптовые крипты • Есть страшно баянистый факт из доков PHP, который с завидной регулярностью всех шокирует • == не проверяет на идентичность в отличие от ===! • true === “0” == “00e123123” • Это всё лирика, а вот прикольно проверить это в жизни, да ещё и блекбоксом, предположив, что разрабы допустили ошибку
  • 15. Некриптовые крипты • /api/payment/?sum=1337&to=hacker&md5= … • Хм… Почитаем доки SDK для API платёжки • Есть параметры, не влияющие на платёж, но меняющие строку • Фаззим, что туда можно подавать строки из байтов от 32 до 128 • Регаем акк и получаем легитимный ключ
  • 16. Некриптовые крипты • Теперь нужен PoC. Если попытаться комбинаторно прикинуть шансы на эксплуатацию, получается не слишком радужная картина >>> 2**128 / sum([10**(30 - i) for i in xrange(30)]) 306254130L • Но почему-то на практике у меня получается находить коллизии гораздо быстрее, надо потестить статистику ещё
  • 17. Некриптовые крипты • Плевать на реальность, мы хотим PoC • Берём ключ своего аккаунта, формируем строку запроса к API, подлежащую подписи • Берём степень свободы (дополнительный ненужный параметр) и фаззим её, пока не получится хеш вида ^0+ed+$ • Делаем это на плюсах с потоками: https://github.com/beched/php_hash_collisio n_finder
  • 18. Некриптовые крипты • Оп, получили строчку и пробуем что-то вроде /api/payment/?dummy=%40a`/&sum=1337&t o=hacker&md5=0 • Вин! Значит, в коде написано ==, а не === • Сломали подпись для своего аккаунта, значит, можем сломать для любого, заслав дохреннилион запросов на сервак
  • 20. Ода блокам • Ode to ECB: https://twitter.com/travisgoodspeed/status/6 17746044760268800 • Тривиальные с криптографической точки зрения баги (уровня crypto100 на цтфах), связанные с повторным использованием шифроблоков, порой приводят к весёлым последствиям
  • 21. Ода блокам • Снова представьте себе ДБО • Там есть интерфейс перевода с карты, при этом, то ли согласно правилам PCI, то ли по ошибке платёжные данные зачем-то сохраняются в сессии в зашифрованном виде • Сессия у многих фреймворков хранится у клиента в куках (с подписью, конечно)
  • 22. Ода блокам • Итак, в сессии лежит Crypto.encryptAES(userInput), при этом валидации для userInput нет • Представьте, что мобильный интерфейс этого интернет-банка традиционно облегчил аутентификацию и логинит без 2FA по токену • Токен – это Crypto.encryptAES(login + “|” + timestamp) • Finita la commedia
  • 23. Стенд-ап • А теперь жду ваших рассказов, если вы ещё/уже не совсем пьяны • Или кидайте зиродеи сюда: beched@incsecurity.ru admin@ahack.ru