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

Содержание статьи

  • GRE
  • Лабораторная сеть
  • L3 GRE VPN поверх Cisco IOS
  • L3 GRE VPN поверх RouterOS
  • Обеспечение туннеля L2 GRE с поддержкой L2-атак
  • Возможные проблемы с MTU
  • Перехват трафика с помощью Cisco ERSPAN
  • Перехват трафика с помощью TZSP (Mikrotik)
  • Выводы

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

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

 

GRE

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

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

GRE-тун­нелиро­вание здесь под­разуме­вает три сущ­ности:

  • Delivery Header. Пред­став­ляет собой IP-пакет с пуб­личны­ми адре­сами источни­ка/наз­начения. Бла­года­ря ему инкапсу­лиро­ван­ный пакет смо­жет дос­тичь адре­сата в сети Интернет. Его раз­мер — 20 байт;
  • GRE-пакет. Его раз­мер 4 бай­та;
  • пас­сажир. Это полез­ные дан­ные, тра­фик, сге­нери­рован­ные легитим­ными служ­бами.

Слу­жеб­ные заголов­ки GRE

Струк­тура GRE вер­сии 0

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

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

www

Под­робнее о GRE читай в до­кумен­те RFC.

 

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

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

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

Это типич­ная кор­поратив­ная сеть с тре­мя уров­нями (уро­вень дос­тупа, рас­пре­деле­ния и ядра). В качес­тве динами­чес­кой мар­шру­тиза­ции исполь­зует­ся про­токол 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 для Kali и 172.16.0.2 для Cisco CSR);
  • за­дание адре­са источни­ка 212.100.144.100;
  • за­дание адре­са наз­начения 100.132.55.100.

EdgeGW(config)# interface tunnel 1EdgeGW(config-if)# tunnel mode gre ipEdgeGW(config-if)# ip address 172.16.0.2 255.255.255.0EdgeGW(config-if)# tunnel source 212.100.144.100EdgeGW(config-if)# tunnel destination 100.132.55.100

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

Здесь шаги такие:

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

c4s73r@kali:~$ sudo modprobe ip_gre
c4s73r@kali:~$ sudo ip link add name evilgre type gre local 100.132.55.100 remote 212.100.144.100
c4s73r@kali:~$ sudo ip addr add 172.16.0.1/24 dev evilgre
c4s73r@kali:~$ sudo ip link set evilgre up

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

Пинг ата­кующе­го до вто­рой сто­роны тун­неля

Пинг от Cisco CSR

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

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

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

c4s73r@kali:~$ sudo route add -net 10.10.50.0 netmask 255.255.255.0 gw 172.16.0.2
c4s73r@kali:~$ sudo route add -net 10.10.110.0 netmask 255.255.255.0 gw 172.16.0.2
c4s73r@kali:~$ sudo route add -net 10.10.140.0 netmask 255.255.255.0 gw 172.16.0.2
c4s73r@kali:~$ sudo route add -net 10.10.210.0 netmask 255.255.255.0 gw 172.16.0.2
c4s73r@kali:~$ sudo route add -net 192.168.20.0 netmask 255.255.255.0 gw 172.16.0.2
c4s73r@kali:~$ sudo nmap -n -p 22 -iL targets -oA result

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

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

 

L3 GRE VPN поверх RouterOS

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

info

Здесь при­веде­ны коман­ды имен­но для RouterOS v. 6.

Источник: xakep.ru

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *