ICMP туннелирование - 2 — HackZona.Ru

ICMP туннелирование - 2

ICMP туннелирование - 2

Тип статьи:
Со старой ХакЗоны.
Источник:
Чтобы понять как, как будет реализовывается данный туннель вам нужно иметь хотя бы базовые знания о протоколе ICMP.
В интернете есть множетсво статей на тему «ICMP туннелирование».
Но вся проблема в том, что в большинстве статей предполагается прямая связь
между 2-я хостами.

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

Итак, возьмем к примеру 3 хоста, и обозначим их условно :
«A» с ip адресом 10.10.10.1

«B» (Шлюз)
1-й интерфейс — 10.10.10.254
2-й интерфейс — 212.23.*.*

«С» 195.58.*.*

В данном случае хост «B» может общаться, как с внутренней сетью (10.10.10.*), так и с внешней (195.58.*.*).

Как видно из примера, хост «A» может общаться только с хостами находящимися в его подсети.
Задача состоит в том, чтобы с хоста «A» передать данные на хост «C».
Вся передача будет осуществляться через хост «B» он будет выступать в роли посредника при передачи данных.

Технология проста :
1) хост «A» отправляет ICMP[echo_request] на хост «B» с
ip_src = ip хоста «C» (195.58.*.*)
ip_dst = ip хоста «B» (10.10.10.254)

2) хост «B» получив ICMP[echo_request] отвечает на него ICMP[echo_reply], при этом,
при формирование пакета, ip адрес получателя будет указан ip адрес хоста «C»
ip_dst = ip адрес «C»
ip_src = свой (212.23.*.*)

3) хост «C» получает ICMP[echo_reply]

При передаче данных в обратную сторону, «C» -> «A» используется эта же схема.

Протокол ICMP был выбран с той целью, что при отправке ICMP[echo_request] мы можем
заполнить его данными — полезная нагрузка. А при ответе на него ICMP[echo_reply]
все данные которые были переданы в ICMP[echo_request] будут скопированы в ICMP[echo_reply],
таким образом производительность туннеля будет очень высокой.

Примечание: хост посредник (в примере хост «B») не всегда должен иметь 2-а или более интерфейсов,
не всегда должен выполнять роль шлюза, достаточным условием является то, что хост посредник имеет доступ как к вам, так и к хосту куда необходимо передать данные.


Этот метод может быть использован лишь в том случае, когда на хосте «B» — посреднике, неправильно настроена или вообще отсутствует фильтрация пакетов.

Для проверке работоспособности туннеля я выбрал своего провайдера:
Мой провайдер, как и многие другие, имеет гостевой вход для своих клиентов,
для выполнения операций над своим счетом.
при подключении мне был выдан ip адрес 10.10.10.128.
Просмотрев командой traceroute путь до сервера статистики я обнаружил что могу пинговать некоторые маршрутизаторы, и сам сервер статистики.
Проверив каждый я выяснил:
На самом первом маршрутизаторе стояла фильтрация,
зато на последующем маршрутизаторе и на самом сервере статистики фильтрации не было, что позволило мне передать данные на мой сервер.
Нравится
Не нравится

Комментарии

Нет комментариев. Ваш будет первым!