Взлом TLS с денежным призом
Разработчики 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); Теперь записываем и анализируем трафик.Сами же организатора конкурса признают, что нет никаких дополнительных условий. По идее, можно попытаться выманить у них ключ другим способом: фишинг, социальная инженерия, ректальный криптоанализ (в переносном смысле) или ещё какой-то хитрый приём.
Код и библиотеки BTC Piñata открыты.Список установленного ПО на демо-сервере.