Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
«Злая горничная»  атакует  PGP <ul><li>Александр Терешкин </li></ul><ul><li>независимый исследователь </li></ul><ul><li>[e...
Отказ от ответственности Презентация содержит результаты исследования безопасности программного продукта, и представлена и...
Сценарий и реализация атаки «Злая горничная» Возможные методы противодействия Системы безопасности  PGP WDE ...  и другие ...
Сценарий и реализация атаки «Злая горничная»
Полнодисковое шифрование используется для предотвращения несанкционированного доступа к хранилищам данных . Так что, если ...
Полагаясь на шифрование, вы начинаете меньше обращать внимание на физическую безопасность  –  например, оставляете ноутбук...
Двухэтапная атака <ul><li>Ноутбук оставлен в номере без присмотра </li></ul><ul><li>Атакующая  ( злая горничная )  входит ...
Различные методы двухфакторной аутентификации типа смарт-карт и токенов не добавляют здесь защищенности :  мы не записывае...
Для этого мы изменяем код  FDE  в том месте, где он уже готов расшифровывать диск и может передавать управление загрузчику...
PGP WDE:  расположение кода <ul><li>Во время установки  PGP WDE  занимает на диске  1Mb  свободных секторов подряд в задан...
PGP WDE:  заражение <ul><li>Основная логика загрузочной части  WDE  находится в модуле, именованном  “stage2”  в их мини -...
PGP WDE:  полезная нагрузка <ul><li>Нет необходимости иметь сложный код для передачи ключей по сети сразу после их перехва...
 
 
 
 
В демонстрационных целях   заражение «Злой горничной» можно сделать более наглядным . Например, можно зашить перехваченный...
 
Возможные методы противодействия
 
Доверенная загрузка <ul><li>Важнейшей задачей является установка цепочки доверия во время исполнения кода .  Недоверенный ...
Статический  RTM <ul><li>Начиная с некоего доверенного кода – например, прошивки, – каждый компонент предварительно  измер...
Статический  RTM <ul><li>Сразу после установки системы полнодискового шифрования пользователь удостоверяется, что система ...
Динамический  RTM <ul><li>SRTM  строит цепочку доверия начиная с прошивки,  BIOS,  и заканчивая ядром ОС, что делает общую...
Системы безопасности  PGP WDE
PGP WDE  поддерживает  TPM,  так ведь ? https://pgp.custhelp.com/app/answers/detail/a_id/1448/~/using-trusted-platform-mod...
Документация не говорит о том, что  WDE  поддерживает доверенную загрузку через  SRTM  или  DRTM –  он рассчитан только на...
Поддержка  TPM <ul><li>PGP WDE  использует несколько 32-битных плагинов для выполнения разных задач .  Плагины читаются за...
Поддержка  TPM <ul><li>PGPTPM  получает на вход несколько адресов памяти с данными </li></ul><ul><li>Активно хэширует данн...
PGP WDE  не запечатывает никакие ключи шифрования в  TPM,  что делает плагин  TPM  функцией  «безопасности путем сокрытия»
Другие проблемы   PGP WDE
Представим, что  PGP WDE  поддерживает цепочку доверия для своего кода ,  так что мы не можем нигде модифицировать его так...
Анализ показывает, что режим работы  AES,  используемый в  PGP WDE , это  CFB  с небольшими изменениями
Измененная схема  AES-CFB <ul><li>Каждый  0x200 -байтный   сектор делится на две  0x100 -байтных части, обрабатываемых по ...
CFB  подвержен ковкости шифротекста  ( ciphertext malleability )
Ковкость шифротекста Алгоритм шифрования является  ковким ,   если атакующий может трансформировать шифротекст в другой ши...
Расшифровка  в режиме  CFB courtesy of Wikipedia
Это может быть не так важно для обмена сообщениями, где открытый текст сложно предсказуем. Однако, предсказуемость загрузч...
Существует не так много различающихся загрузчиков  Windows.  Обычно атакующий знает точную версию ОС, что еще больше умень...
Что находится под контролем атакующего? <ul><li>Для каждой из двух половин сектора ведется две  CFB  сессии, что дает  16+...
Изначально зашифрованный сектор, содержащий только нули,   с наложенным  XOR 0x01  в помеченных участках ,  после расшифро...
<ul><li>Зашифрованная точка входа, которую легко изменить без потери работоспособности </li></ul><ul><li>Достаточно большо...
Ищем точку заражения <ul><li>MBR  и загрузочные сектора имеют точку входа в их начале ,  которое мы можем изменять. Это де...
Ищем свободное место <ul><li>Первый раздел  Windows  обычно начинается по смещению  0x7e00 </li></ul><ul><li>После загрузо...
Решения ? <ul><li>Очевидно, нужен некий метод аутентификации данных, чтобы атакующий не мог вносить осмысленные и целенапр...
Решения ? <ul><li>Microsoft  реализовала распылитель открытого текста, работающий с ключом, ( keyed plaintext diffuser ) д...
Решения ? <ul><li>Переход на  AES-XTS </li></ul><ul><li>Этот режим не был стандартизован, когда  Microsoft  искал подходящ...
В любом случае, смена шифра будет означать перешифрование всех клиентских дисков, что занимает гораздо большее время, чем ...
Спасибо за внимание ! Вопросы ? [email_address]
Upcoming SlideShare
Loading in …5
×

Positive Hack Days. Терешкин. "Злая горничная" атакует PGP

3,806 views

Published on

Полнодисковое шифрование широко применяется для защиты информации от несанкционированного доступа. Наиболее часто с помощью таких систем защищают информацию на жестких дисках ноутбуков и сменных носителях, так как они легко могут быть потеряны или украдены. В докладе рассматривается, может ли владелец полагаться на надежность полнодискового шифрования в свое отсутствие в случае, если злоумышленник имеет возможность не только завладеть носителем, но и произвести незаметные манипуляции над ним. Речь пойдет о доверенной загрузке, контроле целостности, статическом и динамическом контроле корней доверия и их использовании в системах полнодискового шифрования.
Будет показано, насколько надежно подобный контроль реализован в продукте PGP® Whole Disk Encryption и нет ли в нем недочетов с криптографической точки зрения.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Positive Hack Days. Терешкин. "Злая горничная" атакует PGP

  1. 1. «Злая горничная» атакует PGP <ul><li>Александр Терешкин </li></ul><ul><li>независимый исследователь </li></ul><ul><li>[email_address] </li></ul>Positive Hack Days 2011, 19 мая, Москва
  2. 2. Отказ от ответственности Презентация содержит результаты исследования безопасности программного продукта, и представлена исключительно в обучающих целях на форуме Positive Hack Days . Исследования проводились на PGP WDE версии 9.12
  3. 3. Сценарий и реализация атаки «Злая горничная» Возможные методы противодействия Системы безопасности PGP WDE ... и другие проблемы PGP WDE 1 2 3 4
  4. 4. Сценарий и реализация атаки «Злая горничная»
  5. 5. Полнодисковое шифрование используется для предотвращения несанкционированного доступа к хранилищам данных . Так что, если вы теряете полностью шифрованный ноутбук , или кто-то его крадет, вы думаете : « Ничего страшного, злодеи не получат данные – а у меня есть бэкапы »
  6. 6. Полагаясь на шифрование, вы начинаете меньше обращать внимание на физическую безопасность – например, оставляете ноутбук в номере отеля, когда идете в бассейн. Но давайте дополним вашу модель атаки ( кражу ноутбука ) еще одним пунктом : злоумышленник может покопаться в вашем ноутбуке, и вы это не заметите.
  7. 7. Двухэтапная атака <ul><li>Ноутбук оставлен в номере без присмотра </li></ul><ul><li>Атакующая ( злая горничная ) входит в номер и заражает загрузочный код жесткого диска ноутбука сниффером ключей шифрования путем загрузки со специально подготовленной USB- флэшки или путем подсоединения жесткого диска к ее собственному ноутбуку </li></ul><ul><li>Владелец возвращается в номер, включает ноутбук и вводит ключ </li></ul><ul><li>Ключ шифрования перехватывается сниффером, установленным в загрузочном коде, и сохраняется где-нибудь на диске или передается по сети ; на диске восстанавливается исходный немодифицированный загрузчик для скрытия факта атаки </li></ul><ul><li>Теперь атакующая может красть ноутбук – ей известен ключ для дешифровки жесткого диска </li></ul>
  8. 8. Различные методы двухфакторной аутентификации типа смарт-карт и токенов не добавляют здесь защищенности : мы не записываем клавиши во время ввода пароля, мы перехватываем ключ шифрования после того, как он был предоставлен пользователем
  9. 9. Для этого мы изменяем код FDE в том месте, где он уже готов расшифровывать диск и может передавать управление загрузчику ОС . Там мы получаем ключи шифрования и делаем с ними, что захотим.
  10. 10. PGP WDE: расположение кода <ul><li>Во время установки PGP WDE занимает на диске 1Mb свободных секторов подряд в заданном разделе и сохраняет там свой код и данные . </li></ul><ul><li>Номер первого сектора этого региона сохраняется в MBR . Этот номер будет использован загрузчиком при чтении основного кода . </li></ul><ul><li>WDE не испытывает жесткой нехватки места на диске, поэтому сжатие кода или данных не применяется. </li></ul>
  11. 11. PGP WDE: заражение <ul><li>Основная логика загрузочной части WDE находится в модуле, именованном “stage2” в их мини - файловой системе. </li></ul><ul><li>Так как WDE поддерживает несколько типов аутентификации ( пароли, смарт-карты, токены ), ключ может быть получен в разных участках кода, поэтому надо перехватить их все. </li></ul><ul><li>Фактически, имеется две основных ветки кода, которые надо перехватить : </li></ul><ul><ul><li>Аутентификация по паролю </li></ul></ul><ul><ul><li>Все остальные типы аутентификации ( authentication on offload target ) </li></ul></ul><ul><li>Оба места в коде могут быть легко найдены по шаблону. </li></ul>
  12. 12. PGP WDE: полезная нагрузка <ul><li>Нет необходимости иметь сложный код для передачи ключей по сети сразу после их перехвата, так как ноутбук все равно будет украден в будущем </li></ul><ul><li>Достаточно записать их на диск ( возможно, не открытым текстом), откуда атакующий их впоследствии прочтет </li></ul><ul><li>Также, неплохо вычистить все остальные следы заражения путем восстановления исходного загрузочного кода до загрузки ОС, с целью избежать обнаружения антивирусами </li></ul><ul><li>В коде WDE есть удобная функция для чтения и записи секторов – нет необходимости вызывать сервисы BIOS из 32 -битного кода самим (код загрузочной части WDE – 32- битный) . Эта функция также может быть найдена по шаблону </li></ul><ul><li>BOCHS оказывает неоценимую помощь при отладке и исследовании загрузочного кода </li></ul>
  13. 17. В демонстрационных целях заражение «Злой горничной» можно сделать более наглядным . Например, можно зашить перехваченный ключ в код PGP WDE , так что независимо от того, какой пароль вводится, ключ все равно остается корректным.
  14. 19. Возможные методы противодействия
  15. 21. Доверенная загрузка <ul><li>Важнейшей задачей является установка цепочки доверия во время исполнения кода . Недоверенный код (код атакующего) не должен быть разрешен к исполнению без санкции пользователя. </li></ul><ul><li>Этого можно добиться с помощью контроля корней доверия ( Root of Trust Measurement ) , статического ( Static, SRTM) или динамического ( Dynamic, DRTM – Trusted Execution Technology от Intel) </li></ul>
  16. 22. Статический RTM <ul><li>Начиная с некоего доверенного кода – например, прошивки, – каждый компонент предварительно измеряется до передачи на него управления путем хэширования SHA-1 </li></ul><ul><li>Измерение сохраняется в регистре чипа TPM (PCRn) путем его расширения : результат измерения присоединяется к имеющемуся значению PCR и хэшируется ; результат сохраняется в PCR </li></ul><ul><li>Невозможно записать требуемое значение в PCR , можно только расширить существующее </li></ul><ul><li>Таким образом, набор значений PCR , основанный на хэшах доверенных участков кода, представляет собой доверенное состояние системы </li></ul><ul><li>Приложение может запечатать секретный ключ в TPM для указанного набора значений PCR; этот же набор значений PCR будет необходим для распечатывания ключа из TPM </li></ul>
  17. 23. Статический RTM <ul><li>Сразу после установки системы полнодискового шифрования пользователь удостоверяется, что система находится в доверенном состоянии, и запечатывает ключ шифрования (или его часть) в TPM для доверенного набора значений PCR </li></ul><ul><li>Позже, если любой элемент цепочки исполнения будет модифицирован атакующим, хэш измененного модуля не совпадет с хэшем доверенного модуля, что приведет к записи в PCR значений, отличающихся от представляющих доверенное состояние </li></ul><ul><li>Таким образом, система полнодискового шифрования не сможет получить ключ шифрования путем распечатывания его из TPM </li></ul><ul><li>Пользователь увидит, что система не может быть загружена, поскольку ее состояние не является доверенным </li></ul>
  18. 24. Динамический RTM <ul><li>SRTM строит цепочку доверия начиная с прошивки, BIOS, и заканчивая ядром ОС, что делает общую доверенную кодовую базу ( TCB ) очень большой </li></ul><ul><li>DRTM позволяет запустить доверенный код в изолированной среде, ограничивая TCB только этой средой, которая может быть небольшой (к примеру, гипервизором) </li></ul><ul><li>Мы не знакомы ни с одной системой полнодискового шифрования, использующей DRTM </li></ul><ul><li>tboot и LUKS могут быть отправной точкой в таком проекте </li></ul>
  19. 25. Системы безопасности PGP WDE
  20. 26. PGP WDE поддерживает TPM, так ведь ? https://pgp.custhelp.com/app/answers/detail/a_id/1448/~/using-trusted-platform-module-%28tpm%29-authentication-with-pgp-wde---pgp-desktop
  21. 27. Документация не говорит о том, что WDE поддерживает доверенную загрузку через SRTM или DRTM – он рассчитан только на защиту от кражи жесткого диска . Как это реализовано ?
  22. 28. Поддержка TPM <ul><li>PGP WDE использует несколько 32-битных плагинов для выполнения разных задач . Плагины читаются загрузочным кодом с диска . Для этого WDE использует мини – файловую систему </li></ul><ul><li>Плагин, работающий с TPM, называется PGPTPM . Он взаимодействует с TPM через прерывание BIOS под номером 0x1A ( переключаясь в реальный режим из защищенного и обратно ) </li></ul>
  23. 29. Поддержка TPM <ul><li>PGPTPM получает на вход несколько адресов памяти с данными </li></ul><ul><li>Активно хэширует данные (не код) с помощью SHA-1 </li></ul><ul><li>Распечатывает секрет из TPM </li></ul><ul><li>Немного хэширует распечатанный секрет </li></ul><ul><li>Сравнивает два хэша с помощью memcmp() </li></ul><ul><li>Булевское значение – это все, что основной код хочет узнать от плагина TPM </li></ul><ul><li>“ xor eax, eax / ret” работает </li></ul>
  24. 30. PGP WDE не запечатывает никакие ключи шифрования в TPM, что делает плагин TPM функцией «безопасности путем сокрытия»
  25. 31. Другие проблемы PGP WDE
  26. 32. Представим, что PGP WDE поддерживает цепочку доверия для своего кода , так что мы не можем нигде модифицировать его так, чтобы не помешать загрузке пользовательской ОС . Возможно ли каким-нибудь образом получить ключи шифрования, не меняя ни одного байта кода или данных PGP WDE?
  27. 33. Анализ показывает, что режим работы AES, используемый в PGP WDE , это CFB с небольшими изменениями
  28. 34. Измененная схема AES-CFB <ul><li>Каждый 0x200 -байтный сектор делится на две 0x100 -байтных части, обрабатываемых по отдельности </li></ul><ul><li>Для каждой пары векторы инициализации AES в режиме CFB берутся из определенных 16 байт шифротекста другой пары ; ведутся две CFB сессии, у каждой из которых – свой IV. Блоки дешифруются по очереди: первый – с первым IV, второй – со вторым, затем опять с первым и так далее </li></ul><ul><li>Байты шифротекста по смещениям [0xe0..0xf0) используются как IV для второй части сектора [0x100..0x1FF] , которая дешифруется первой по счету </li></ul><ul><li>Затем расшифрованный по AES-CFB ( но еще не являющийся открытым текстом ) 16 -байтный вектор по смещению 0x1f0 используется как первый IV, и его инверсия используется как второй IV для дешифровки первой части сектора </li></ul><ul><li>16 -байтный вектор по смещению 0x1f0 окончательно расшифровывается путем исключения контрольной суммы </li></ul>
  29. 35. CFB подвержен ковкости шифротекста ( ciphertext malleability )
  30. 36. Ковкость шифротекста Алгоритм шифрования является ковким , если атакующий может трансформировать шифротекст в другой шифротекст, который расшифровывается в зависимый от исходного открытый текст . То есть, имея шифротекст открытого текста m , есть возможность сгенерировать другой шифротекст, расшифровывающийся в f(m) , для известной функции f , не обязательно зная или получая m . В случае CFB атакующий должен знать исходный открытый текст, чтобы создавать шифротекст, расшифровывающийся в требуемый открытый текст без знания ключа.
  31. 37. Расшифровка в режиме CFB courtesy of Wikipedia
  32. 38. Это может быть не так важно для обмена сообщениями, где открытый текст сложно предсказуем. Однако, предсказуемость загрузчика ОС и прилежащих секторов очень велика. Разработчики явно упустили это при составлении модели атак на WDE!
  33. 39. Существует не так много различающихся загрузчиков Windows. Обычно атакующий знает точную версию ОС, что еще больше уменьшает количество вариантов. Также, данные около загрузочного кода тоже очень постоянны.
  34. 40. Что находится под контролем атакующего? <ul><li>Для каждой из двух половин сектора ведется две CFB сессии, что дает 16+16 байт ковкого шифротекста на два раунда двух сессий – мы можем контролировать раунд CFB в каждой сессии за счет повреждения открытого текста в следующем раунде текущей сессии ; также, контрольная сумма нарушается, и из-за этого ее исключение разрушает открытый текст последнего 16-байтного региона сектора ( на него накладывается XOR контрольной суммы ) . </li></ul><ul><li>На сектор приходится 4 сессии CFB, по 8 раундов в каждой , итого 32 раунда – значит, мы можем, теоретически, контролировать 16 из них, но : </li></ul><ul><li>Дли расшифровки первых 32-х байт первой половины сектора AES-CFB получает IV из (почти) открытого текста второй половины по смещению 0x1F0, значит, шифротекст по смещению 0x1D0 не должен быть изменен (иначе открытый текст 0x1F0 будет поврежден), если мы хотим модифицировать открытый текст по смещению [0x0..0x1F] . </li></ul><ul><li>Это дает нам 7*32 + 16 = 240 байт, которые мы можем выставить по желанию, если нам известен открытый текст сектора. </li></ul>
  35. 41. Изначально зашифрованный сектор, содержащий только нули, с наложенным XOR 0x01 в помеченных участках , после расшифровки
  36. 42. <ul><li>Зашифрованная точка входа, которую легко изменить без потери работоспособности </li></ul><ul><li>Достаточно большой зашифрованный регион для хранения кода сниффера ключей </li></ul>Чтобы успешно перехватить ключи путем изменения только шифротекста мы должны найти два региона, открытый текст которых известен :
  37. 43. Ищем точку заражения <ul><li>MBR и загрузочные сектора имеют точку входа в их начале , которое мы можем изменять. Это делает возможным вместить загрузчик основного кода сниффера и трамплин к нему в 240 байт. </li></ul><ul><li>Маркер MBR (0xAA55 по смещению 0x1FE) должен присутствовать в модифицированном секторе после расшифровки – это надо учитывать, так как WDE делает исключение (нарушенной) контрольной суммы из последнего 16-байтного региона сектора. </li></ul><ul><li>Основной код должен восстановить поврежденные модификацией сектора, так что необходимо где-то хранить их копию. </li></ul>
  38. 44. Ищем свободное место <ul><li>Первый раздел Windows обычно начинается по смещению 0x7e00 </li></ul><ul><li>После загрузочного сектора и загрузчика NTLDR расположено очень много секторов, содержащих одни нули </li></ul><ul><li>Можно быть уверенным, что полное количество последовательно расположенных нулевых секторов не меньше 400 </li></ul><ul><li>Мы можем контролировать до 240 байт в каждом секторе , что дает 93Kb общего объема </li></ul><ul><li>Это более чем достаточно для сохранения там тела сниффера вместе с загрузчиком-сборщиком </li></ul>
  39. 45. Решения ? <ul><li>Очевидно, нужен некий метод аутентификации данных, чтобы атакующий не мог вносить осмысленные и целенаправленные изменения в систему </li></ul><ul><li>MAC нельзя использовать по ряду причин : </li></ul><ul><ul><li>Шифрование происходит на секторном уровне, каждый сектор может быть шифрован и расшифрован отдельно </li></ul></ul><ul><ul><li>Шифротекст не может быть больше открытого текста </li></ul></ul>
  40. 46. Решения ? <ul><li>Microsoft реализовала распылитель открытого текста, работающий с ключом, ( keyed plaintext diffuser ) для BitLocker, так как они были вынуждены признать, что единственный жизнеспособный метод аутентификации дисковых данных это «шифрование и вера в то, что изменения в шифротексте не приводят к семантически целесообразным изменениям в открытом тексте» </li></ul><ul><li>Для детальных объяснений, почему MAC неприменимы к дисковому шифрованию, и общим рассуждениям на тему использования распылителей обращайтесь к статье Niels Ferguson “AES-CBC + Elephant diffuser”: http://download.microsoft.com/download/0/2/3/0238acaf-d3bf-4a6d-b3d6-0a0be4bbb36e/BitLockerCipher200608.pdf </li></ul>
  41. 47. Решения ? <ul><li>Переход на AES-XTS </li></ul><ul><li>Этот режим не был стандартизован, когда Microsoft искал подходящий шифр ( стал стандартом NIST 27 -го января 2010 ) </li></ul>
  42. 48. В любом случае, смена шифра будет означать перешифрование всех клиентских дисков, что занимает гораздо большее время, чем развертывание обычного обновления ПО
  43. 49. Спасибо за внимание ! Вопросы ? [email_address]

×