Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

[SOLVED] Перенаправление TCP трафика и расшифровка SSL с помощью самодельного сертификата


(Artur Korobeynyk) #1

Вот и от меня вопрос, а то я всё время отвечаю и отвечаю. Допустим есть приложения работающее по SSL протоколу поверх TCP. Всё обычно, клиент, сервер, сертификат, порт 443. Мне нужно (всё на винде, так что линукс проги не предлагать, а ещё лучше - вобще никакие проги не предлагать, а предложить cmd комманды, можно cygwin, или исходники кода на любом языке, кроме асма, его читать долго):

  1. Создать свой сертификат (сделал)
  2. Перенаправить весь входящий на порт 443 трафик от сервера к приложению на другой порт где будет стоять прослушка из шага 3 (должно с netsh работать, но у меня пока не вышло, wireshark трафик на получаемом порте не регистрирует)
  3. Поставить прослушку, которая подменит сертификат, расшифрует ssl трафик, даст возможность его изменить и отправит дальше на программу.

Вобщем нужно сделать вот такое MITM SSL тестирование. Кто делал, как делал? Буду признателет в помощи. ARP отравление не предлагать, у меня здесь общественные шлюзы )
Вобщем мне нужна идея фиддлера, только для всего TCP, а не HTTP


(Александр Таранков) #2

Что тестируется-то? Какой функционал?


(Artur Korobeynyk) #3

Общение между моим клиентом и не моим сервером по SSL протоколу. Нужно зафазить данные получаемые от сервера на клиенте, но для этого их хотя бы надо поймать и расшифровать. Секретного ключа нету.


(Sergey Korol) #4

Разработчики сервера, насколько я понимаю, не в курсе ваших коварных планов? Мне одному кажется, что это - чистой воды хакерство? :smile: Вы ведь понимаете, что SSL протокол не просто так вообще придумали. Наверное, компания, которая его использует, гарантирует клиентам сохранность передаваемых данных. А вы сейчас просите форумчан дать вам советы по взлому чьих-то данных, внедрению кода неизвестного содержания и перенаправлению на ваш клиент? Почему-то мне кажется, что это уголовно наказуемо. :wink: Вы то можете сколь угодно утверждать, что все это делается с благими намерениями, но подобные хаки - не тема для обсуждения на данном форуме.


(Artur Korobeynyk) #5

Хакерство в уголовном кодексе имеет четкое определение. И тестирование безопасности к нему не относится. На этом сайте можно обсуждать всё что относится к тестированию, в том числе и взлом, перехват сообщений, возможности MITM атак, переполнения буффера и ДоС атаки 4-го уровня. 7-й никому не интересен )
И да, разработчики в курсе, но я не сервер ломаю, а свой клиент.


(Александр Таранков) #6

Возможности протестировать без SSL нету или намеренно не рассматривается? Или есть какая-то особенность при общении клиента с сервером по защищенному протоколу, которой нет при общении без защиты?


(Artur Korobeynyk) #7

Возможности нету, тестирование ведется на продакшин версии, отключать защиту в этом случае никто не будет.


(Александр Таранков) #8

Очень странная задача если честно. Для тестирования. Начиная с того, что на бою вообще тестировать надо крайне аккуратно не надо. Редко кто занимается таким “тестированием”, поэтому вряд ли мы тут сможем помочь конкретными советами. Тут скорее на хакерский форум нужно


(Sergey Korol) #9

Для тестирования безопасности существуют специализированные продукты, которые разработаны далеко не глупыми людьми. С подобными вашему вопросами, как уже написали выше, обращайтесь на хакерские форумы. Тут люди учатся созидать, а не ломать.


(Artur Korobeynyk) #10

Ну так созидайте где-нибудь в другой ветке, если по теме нечего ответить. У меня вопрос к разбирающимся людям.


(Sergey Korol) #11

Первое предупреждение за флейм.


(Artur Korobeynyk) #12

Вам?
А мне давайте сразу бан, я гордый.


(Artur Korobeynyk) #13

Наиболее простое решение нашел в использование mitmproxy библиотеки для питона. В принципе есть всё что нужно - использование сертификатов, возможность темперить входящий и исходящий потоки.

Идея такова:

  1. Создаем свой CA сертификат, которым будем подписывать CN сертификаты и добавить его в Trusted Root.
  2. С помощью CA сертификата подписываем CN сертификат. ВАЖНО: В сертификате нужно указать владельца, хост которого будет совпадать с реальным тестируемым сервером.
  3. Ставим прокси на какой-то порт и используем для неё CN сертификат.
  4. В приложении установите настройки вашей прокси.

По-скольку рут сертификату доверяет ваше приложение (потому что вы его добавили в trusted root сертификаты локально), и сертификат сервера подписан доверенным CA сертификатом, то ваша прокся сможет расшифровывать траффик сгенерированный клиентом. Так как в нашем сертификате владельцем указан сервер реального хоста, то клиент будет думать что он обменивается данными с реальным сервером. Никаких ошибок поддельных сертификатов не будет. В свою очередь реальный сервер будет думать что ваша прокся и есть настоящий клиент, поделится с вами ключем дешифровки и трафик от сервера вы тоже сможете расшифровать.

Кроме подготовки сертификатов, все действия описанные выше выполняет mitmproxy.

Результат тестирования (для тех комментаторов, кто любит созидать) - найдены баги, которые позволяют выполнить любой код на стороне клиента. Так что, созидающие мои, ваше дело не творить, а искать ошибки. Хотите творить - идите в программисты, тестировщик, в первую очередь, должен улучшать качество продукта через всеобъемлющее покрытие продукта абсолютно разносторонними тестами, включая тестирование безопасности, которое вы называете хакингом, так как явно не разбираетесь в теме.
Я поздравляю вас, если вы сутками поднимаете CI у себя на проэкте, но от CI постоянно гоняющего Hello World толку не будет.


(Sergey Korol) #14

Пользователь @arturk заблокирован сроком на 3 дня по причине продолжения флейма. В случае повторного прецедента после разблокировки, будет выдан перманентный бан.


(Александр Таранков) #15

Спасибо за описанное решение - это действительно интересно и хорошо, что ты решил задачу и рассказал как это сделал.

Но к чему эта патетика и хвастовство? Как маленький. Тебе неоднократно было написано, что с этим вопросом тебе вряд ли здесь помогут. Поэтому твой менторский тон здесь не уместен.

Если есть возражения, пожалуйста пиши в личку.