Upload
positive-hack-days
View
178
Download
2
Embed Size (px)
Citation preview
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
Вариант атаки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
Как всё начиналось?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
Часть 1 «Обычный» человек посередине (атаки на механизм аутентификации)
Часть 2 BEAST CRIME…
«Обычный» человек посередине (HTTPS)
TLS Connection 1 TLS Connection 2
Основная проблема: «выдержать» проверку сертификата клиентом
Пример 1: проверка CN
TLS Connection 1 TLS Connection 2
CN = www.example.com\0.evil.com
www.example.comevil.com
*\0.evil.com - ?
Multifunction Man-in-the-Middle gateway22
Linux Mallory apache sslstrip transparent proxy configuration …
Всё, что нужно знать о шифровании Алгоритмы шифрования
Симметричные Асимметричные
Симметричные шифры Потоковые Блочные
Симметричные алгоритмы и режимы шифрования
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)
Расшифрование Пример: расшифрование 1-го блока
28
Ciphertext
Block cipher decryption
Key
IV
Plaintext
Шаг 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
Граница блока
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>…..
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>…..
«Очередной» блок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
Расшифрование Происходит с использованием предыдущего блока
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
TLS Handshake 11
2
TLS Handshake 2
3
GET /example.com/sendmoney
4
renegotiation
5
6GET /example.com/sendmoney