54
SSL/TLS: история уязвимостей Лепихин Владимир Учебный центр «Информзащита»

SSL/TLS: история уязвимостей

Embed Size (px)

Citation preview

SSL/TLS: история уязвимостей

Лепихин Владимир

Учебный центр «Информзащита»

Предпосылки (1)2

Предпосылки (2)3

TLS Connection 1 TLS Connection 2

Multifunction Man-in-the-Middle gateway

Вместо вступления…4

Two main types of handshakes in TLS5

Протокол Согласование ключей

Аутентификация

RSA handshake RSA RSA

DH handshake DH RSA/DSA

DH handshake6

Client Hello { …Client Random …}

Server Hello { …Server RandomServer CertificateServer DH parameter …}

ClientKeyExchange { …Client DH parameter …}

Premaster secret Premaster secret

Server DH parameters (RFC 5246)7

Тяжёлое наследие прошлого8

Client Hello { …Client Random …CipherSuite TLS_DHE_EXPORT….}

Вариант атаки9

Client Hello

TLS_DHE_...

Client Hello

TLS_DHE_EXPORT...

Server Hello

TLS_DHE_...

Server Hello

TLS_DHE_EXPORT...

Server CertificateServer DH parameter (dh_p512,… )

master secret

Вычисление master secret

Server Hello Done

ClientKeyExchange

ServerFinished

Что это было?TLS Logjam – очередной вариант атаки на SSL/TLS

https://weakdh.org/

10

Как всё начиналось?11

… - 1994 Версия 1.0 Внутренняя разработка компании Netscape Communications

Февраль 1995

Версия 2.0

Ноябрь1996

Версия 3.0

1999 TLS 1.0 RFC 2246

2006 TLS 1.1 RFC 4346

2008 TLS 1.2 RFC 5246

Схемы атак на SSL/TLS 12

«Лучший» вариант13

«Многофункциональный» шлюз

3G, 4G

Атаки на SSL

Часть 1 «Обычный» человек посередине (атаки на механизм аутентификации)

Часть 2 BEAST CRIME…

«Обычный» человек посередине (HTTPS)

TLS Connection 1 TLS Connection 2

HTTP HTTPS

«Обычный» человек посередине (HTTPS)

TLS Connection 1 TLS Connection 2

Основная проблема: «выдержать» проверку сертификата клиентом

Пример 1: проверка CN

TLS Connection 1 TLS Connection 2

CN (Common Name)

www.example.com

Пример 1: проверка CN

TLS Connection 1 TLS Connection 2

CN = www.example.com\0.evil.com

www.example.comevil.com

*\0.evil.com - ?

Пример 2: OCSP

Запрос OCSP

tryLater (3)

Ещё варианты

SSL Rebinding SSL Cache poisoning

http://www.google.com

https://ssl.com

foo.js

SSL Strip

HTTP HTTPS

1. Переход в результате «редиректа»2. Переход по ссылке

Multifunction Man-in-the-Middle gateway22

Linux Mallory apache sslstrip transparent proxy configuration …

Пример: mallory&sslstrip23

Sslstrip Log Mallory DB

SQLite DB

Поиск&Парсинг

Пример: mallory&sslstrip24

Просмотр результатов

Всё, что нужно знать о шифровании Алгоритмы шифрования

Симметричные Асимметричные

Симметричные шифры Потоковые Блочные

Симметричные алгоритмы и режимы шифрования

ECB CBC OFB

DES DES-ECB DES-CBC DES-OFB

AES AES-ECB AES-CBC AES-OFB

BF BF-ECB BF-CBC BF-OFB

Cipher Block ChainingВ режиме CBC добавляется механизм обратной связи: результаты шифрования предыдущих блоков влияют на шифрование текущего блока.

В первом блоке используется вектор инициализации (IV), передаваемый по сети в открытом виде

26

Сообщение (пакет, record)

Вектор инициализации в TLS (RFC 5246)

Расшифрование Пример: расшифрование 1-го блока

28

Ciphertext

Block cipher decryption

Key

IV

Plaintext

BEASTBrowser Exploit Against SSL/TLS Attack (BEAST)

29

Шаг 1: перехват сообщения

Ci = Encrypt (Key, Password XOR Ci-1)

30

Password

Pi

Сi

Шаг 2: формирование сообщения

Первый блок P1 = Ci-1 XOR IV XOR Password

С1 = Encrypt (Key, Р1 XOR IV) С1 = Encrypt (Key, Ci-1 XOR Password) = Ci

31

Password

Pi

Сi

P1

С1

POST запрос

POST /default/login.asp?folder=18 HTTP/1.1Content-Type: application/x-www-form-urlencodedContent-Length: 78

login=user1&passwd=12345&Authorize.x=25&Authorize.y=6

P O S T / d e f a u l t / l o g i n . a s p ?

f o l d e r = 1 8 H T T P / 1 . 1 \r \n C o n t

Граница блока

CRIME

Compression Ratio Info-leak Made Easy (CRIME)

33

POST запрос

POST / HTTP/1.1Host: example.comUser-Agent: Mozilla /5.0….Cookie: sessionid =1234567890abcdefgh

<body>

Length (encrypt(compress(header + body))

Модифицированный POST запрос

POST / HTTP/1.1Host: example.comUser-Agent: Mozilla /5.0….Cookie: sessionid=1234567890abcdefgh

<body>

POST /sessionid =0 HTTP/1.1Host: example.comUser-Agent: Mozilla /5.0….Cookie: sessionid=1234567890abcdefgh

<body>

Модифицированный POST запрос

POST / HTTP/1.1Host: example.comUser-Agent: Mozilla /5.0….Cookie: sessionid=1234567890abcdefgh

<body>

POST /sessionid =1 HTTP/1.1Host: example.comUser-Agent: Mozilla /5.0….Cookie: sessionid=1234567890abcdefgh

<body>

Фрагментированный запрос

POST /Padddddddddding HTTP/1.1Host: example.comUser-Agent: Mozilla /5.0….Cookie: sessionid=1

234567890abcdefgh

<body>

TIME – продолжение темы

Timing Info-leak Made Easy (TIME)

38

GET /somefile.html HTTP/1.1User-Agent: Mozilla /5.0….

HTTP/1.1 200 OKContent-Length: 340Content-Type: text/htmlLast-Modified: Wed, 10 Jul 2002 09:42:51 GMTServer: Microsoft-IIS/6.0

<HTML><HEAD>…..

Критерии сравнения39

Техника плавающего окна для ТСР

BREACH Browser Reconnaissance & Exfiltration via Adaptive Compression of Hypertext (BREACH)

40

GET /somefile.html HTTP/1.1User-Agent: Mozilla /5.0….

HTTP/1.1 200 OKContent-Length: 340Content-Type: text/htmlLast-Modified: Wed, 10 Jul 2002 09:42:51 GMTServer: Microsoft-IIS/6.0

<HTML><HEAD>…..

LUCKY 1341

Payload MAC Padding

Шифртекст

«Очередной» блок42

Блок Ci

POST /path Cookie: name=value...\r\n\r\nbody ‖ 20byteMAC ‖ padding

Шифруемое сообщение (запрос)

P O S T / p a t h C o o k i e :

Граница блока

Примеры заполнителей43

G E T 5 5 5 5 5

Граница блока

P O S T 4 4 4 4

P R O T O C O L S 7 7 7 7 7 7 7

P R O T O C O L 8 8 8 8 8 8 8 8

Вариант атаки

44

Заполнитель корректный?

Шифртекст

Сообщение об ошибке

Расшифрование Происходит с использованием предыдущего блока

45

Ciphertext2

Block cipher decryption

Key

Ciphertext1

Plaintext

предыдущий

текущий

Кто здесь?

Ciphertext1 XOR Plaintext

Ещё раз по-другому46

Вычисление Р1 - РN

P1 = Decrypt (Key, Ci) XOR Ci-1

Проверка и удаление заполнителя

Проверка и удаление МАС

Расшифрованное сообщение

Формирование Ciphertext1Меняем последний байт

47

Ciphertext2

Block cipher decryption

Key

Plaintext

текущий

Кто здесь?

256 попыток

Ciphertext1

… … … … … 0х00

Формирование Ciphertext1Меняем последний байт

48

0x1

Ciphertext2

Ciphertext1 (IV)

Plaintext

Кто здесь?

Decrypt

Меняем

Корректный заполнитель

The POODLE Attack

49

Padding Oracle On Downgraded Legacy Encryption

CVE-2014-3566

В отличие от BEAST и Lucky 13, не имеет workaround

The POODLE Attack

50

Многие реализации TLS в целях обратной совместимости поддерживают SSL 3.0

Как правило, в процессе TLS Handshake выбирается максимальная поддерживаемая обеими сторонами версия

Многие TLS-клиенты используют так называемый «downgrade dance»: если связь не устанавливается, делается новая попытка, но уже по более старому протоколу

SSL 3.0

TLS 1.2

Fail

OK

The POODLE Attack51

Нарушитель может намеренно «помешать» установлению соединения и создать условия для выбора SSL 3.0

Далее могут быть использованы уязвимости SSL 3.0, в частности, padding oracle attack

Небольшое дополнение: SSL Renegotiation Attack

SSL Renegotiation Attack

TLS Handshake 11

2

TLS Handshake 2

3

GET /example.com/sendmoney

4

renegotiation

5

6GET /example.com/sendmoney

Возвращаясь к Logjam: FREAK54

FREAK (Factoring Related Attack on Keys)