Взлом TLS с денежным призом

7d785046a3ec489f946cd4f8a9346ab3.pngРазработчики TLS-имплементации на языке OCaml объявили конкурс BTC Piñata, чтобы доказать надёжность своей защиты. Известно, что конкурсы не могут быть настоящим доказательством, но этот очень уж забавный, да ещё с небольшим денежным призом.Итак, эти двое хакеров открыли демо-сервер ownme.ipredator.se.

На сервере лежит ключ от биткоин-адреса 183XuXTTgnfYfKcHbJ4sZeF46a49Fnihdh. Сервер отдаст нам ключ, если мы предъявим сертификат.

Организаторы предусмотрели механизм MiTM для нас. Мы можем пропускать через себя трафик между виртуальными машинами BTC Piñata (TLS-сервер и TLS-клиент). Как понятно, в этом трафике есть нужный сертификат, нужно его только извлечь каким-то образом.Интерфейс TLS-сервера находится на порту 10000, TLS-клиент на порту 10002, а порт 10001 используется для форвардинга трафика к нам на 40001.

Значит, инициируем общение сервера с клиентом и слушаем порт 40001.

Например, на Node.js это делается таким скриптом:

var net = require («net»); var server = net.connect ({ host: 'ownme.ipredator.se', port: 10002 }); var client = net.connect ({ host: 'ownme.ipredator.se', port: 10000 }); server.on ('data', console.log.bind (console, 'server')); client.on ('data', console.log.bind (console, 'client')); client.pipe (server).pipe (client); Теперь записываем и анализируем трафик.Сами же организатора конкурса признают, что нет никаких дополнительных условий. По идее, можно попытаться выманить у них ключ другим способом: фишинг, социальная инженерия, ректальный криптоанализ (в переносном смысле) или ещё какой-то хитрый приём.

a22b8b898efe4a8db09c83b768d2780e.gif

Код и библиотеки BTC Piñata открыты.Список установленного ПО на демо-сервере.

© Habrahabr.ru