Как перенаправить соединение приложения через туннель Socks5 / SSH / HTTPS?Любые рекомендации SDK для выполнения такой задачи? - PullRequest
1 голос
/ 07 мая 2010

Мне нужно туннелировать соединения (в основном TCP), установленные приложением через Socks5, SSH или HTTPS.

До сих пор я нашел 3 способа сделать это: хуки api, winsock lsp и драйвер.

Я ищу совет о том, как лучше всего справиться с этим, и любые рекомендации по SDK, которые могли бы абстрагировать эту задачу для меня (предпочтение отдается бесплатному / с открытым исходным кодом, но коммерческие приветствуются, если цена не высока). для начинающей компании с одним человеком, чтобы позволить себе).

пс. Я использую .Net (C # и / или C ++ / CLI)

edit: я не имею никакого контроля над целевым приложением.

1 Ответ

1 голос
/ 07 мая 2010

В качестве прямого пути вы можете вызвать plink командную строку, чтобы создать туннель, а затем подключиться к локальному узлу из вашего приложения.Plink - это версия Putty для командной строки, у вас есть множество опций, и это очень популярное, безопасное и протестированное приложение.

У вас есть приложение ( SSH Tunnel Client ), которое делает это дляВы с хорошим интерфейсом.Это немного глючит, но работает просто отлично.

В этом примере порт 80 на удаленном компьютере подключается к порту 8000 вашего локального хоста.

plink.exe -L 127.0.0.1:8000:127.0.0.1:80 -C -pw 1234 -2  -l user myserver.com

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

Редактировать

Теперь представьте, что ваше приложение подключается к «yahoo.com» для получения некоторых данных, вы не можете изменить приложение, но вы можете настроить Человек в середине.Вы можете выполнить следующую команду:

plink.exe -L 127.0.0.1:80:google.com:80 -C -pw 1234 -2  -l user myserver.com

Где myserver.com - сервер SSH, который позволяет вам создавать туннели и имеет доступ к google.com. Теперь перейдите к файлу hosts вC: \ windows \ system32 \ drivers \ etc \ от имени администратора и добавьте следующую запись:

127.0.0.1 yahoo.com

Вы можете проверить настройку с помощью браузера и перейти на yahoo.com, после чего вы увидите google.com.стр.Это кажется простым, но реальная сила в том, что весь трафик проходит через myserver.com.

Некоторые преимущества:

  1. Весь трафик на yahoo.com шифруется
  2. С помощью этого метода можно обойти ограничения прокси
  3. Вы можете получитьдоступ к интрасети, где расположен myserver.com, если вы можете подключиться к нему извне
  4. Вы можете войти или изменить данные соединения

Имейте в виду, что этот методочень вероятно, что будут проблемы с соединениями HTTPS из-за проверки подлинности сертификатов.

...