2014-01-08 1 views
1

Это вопрос с вопросом, который я не мог решить:Как перехватить передачу файлов и отправить другой файл?

У вас есть клиент и сервер. Клиент может отправить файл на сервер, и сервер выполнит этот файл. Вот протокол связи:

  1. Клиент посылает команду HELLO к серверу
  2. Сервер отправляет запрос клиенту
  3. клиент отправляет файл, хэш файла, вызов, и хеш вызова.
  4. Сервер проверяет, что вызов и файл соответствуют их хешу, отправленному клиентом, и отправляет OK/Error, будет ли проверка успешной.

enter image description here

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

Какие здесь возможные решения?

Что я думал о том, чтобы попытаться изучить алгоритм хеширования, но они сказали, что он слишком сложный, и есть более простой способ.

+0

Должно ли это быть сделано после одной попытки соединения? –

+0

Вы можете использовать столько подключений, сколько хотите, и это можно сделать в любом из них –

+2

@AlonGubkin хорошо, если вы можете одновременно захватить два соединения, тогда вы отправляете поддельный файл в качестве задачи в одном подключении, а реальный вызов во втором подключении. Тогда у вас есть хэш обоих файлов и одна из проблем. Это то, что вам нужно для успешной атаки по одному соединению. Второе соединение должно быть каким-то образом прервано. –

ответ

3

Если вы можете захватить два соединения (либо одновременно или последовательно из них), то вы будете действовать следующим образом:

  • во время первого соединения MITM посылает свой фальшивый файл как вызов к клиенту. Клиент возвращает хэш поддельного файла. Теперь соединение должно быть прервано, чтобы избежать ненужных записей в журнале сервера или клиента (что произойдет, если вы продолжите процедуру).

  • Как мы прервали первое соединение, клиент снова подключится. На этом этапе MITM позволяет клиенту получить реальный вызов и отправить новый вызов, его хэш и файл клиента и его хэш в MITM. MITM заменяет файл и его хэш фальшивым файлом и фальшивым хэшем, полученным во время первой попытки, и отправляет все на сервер.

Эта схема требует, чтобы (а) клиент может обрабатывать большой файл как вызов (то есть. Он не имеет фиксированного размера буфера или длины проверки), (б) клиент будет повторно подключиться если первое соединение удалено, и (c) мы можем позволить записи о сброшенном подключении подключаться к журналам сервера или клиента.

Требование «a» кажется довольно серьезным, и в реальных условиях проверки действительности для входных параметров (таких как вызов) являются обязательными.