Атака Базарова. Evil Twin поверх динамической маршрутизации

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

  • Как работает OSPF
  • Что может помешать атакующему?
  • Вмешательство в процесс маршрутизации
  • Структура лабораторной сети
  • Анализ трафика
  • Обход аутентификации (Authentication Bypassing)
  • Evil Twin и перехват NetNTLM
  • Начало атаки
  • Как защититься?
  • Аутентификация
  • Используй пассивные интерфейсы
  • Выводы

Ата­ки на домены динами­чес­кой мар­шру­тиза­ции могут устро­ить нас­тоящий хаос в сети, так как наруша­ют сам про­цесс мар­шру­тиза­ции. В этой статье я поделюсь сво­ей модифи­каци­ей ата­ки Evil Twin для перех­вата дан­ных в сетях на осно­ве про­токо­ла OSPF. Так­же про­демонс­три­рую спо­соб под­клю­чения к авто­ном­ной сис­теме, покажу, как мож­но обой­ти аутен­тифика­цию и выпол­нить вре­донос­ную LSU-инъ­екцию.

warning

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

 

Как работает OSPF

OSPF (open shortest path first) — это про­токол внут­ридомен­ной динами­чес­кой мар­шру­тиза­ции, осно­ван­ный на матема­тичес­ком алго­рит­ме Эдсге­ра Дей­кстры. Это link-state-про­токол, и во вре­мя переда­чи дан­ных по OSPF ана­лизи­рует­ся сос­тояние канала. На осно­ве сос­тояния канала OSPF струк­туриру­ет таб­лицы мар­шру­тиза­ции, под­держи­вает их акту­аль­ность и выпол­няет авто­мати­чес­кий обмен мар­шрут­ной информа­цией со сво­ими соседя­ми. OSPF — откры­тый стан­дарт, который под­держи­вают все вен­доры сетево­го обо­рудо­вания. И это самый рас­простра­нен­ный про­токол внут­ридомен­ной мар­шру­тиза­ции в рам­ках про­дак­шена.

В этой статье я буду говорить о вто­рой вер­сии OSPF. Харак­терис­тики ее таковы:

  • OSPF для тран­сля­ции слу­жеб­ной информа­ции исполь­зует IP-адрес груп­повой рас­сылки 224.0.0.5;
  • под­держи­вает IPv4;
  • ра­бота­ет исклю­читель­но на сетевом уров­не;
  • в качес­тве объ­явле­ний сос­тояния каналов исполь­зует сооб­щения LSA (link-state advertisement);
  • под­держи­вает VLSM;
  • име­ет высокий коэф­фици­ент уров­ня схо­димос­ти по срав­нению с дис­танци­онно‑век­торны­ми про­токо­лами;
  • стро­ит дерево крат­чай­ших путей (так как осно­ван на алго­рит­ме Дей­кстры);
  • ис­поль­зует фор­мулу reference bandwidth / link bandwidth для оцен­ки сто­имос­ти мар­шру­та. То есть кон­стан­та полосы про­пус­кания делит­ся на фак­тичес­кую ско­рость полосы про­пус­кания. Одна­ко зна­чение reference bandwdith может быть изме­нено.

Ус­танов­ление соседс­тва в OSPF 

Что может помешать атакующему?

Про­токол OSPF ата­ковать куда слож­нее, чем его родс­твен­ников — дис­танци­онно‑век­торные про­токо­лы мар­шру­тиза­ции (нап­ример, RIP или EIGRP). Обоз­начу основные проб­лемы:

  • AS OSPF может быть раз­бита на зоны. Инже­неры могут спро­екти­ровать домен мар­шру­тиза­ции OSPF с нес­коль­кими зонами, что­бы умень­шить наг­рузку на вычис­литель­ные ресур­сы мар­шру­тиза­торов. Нуж­но учи­тывать это в домене мар­шру­тиза­ции OSPF, как и воз­можность про­хож­дения пакетов меж­ду эти­ми зонами. Нап­ример, если ты собира­ешь­ся выпол­нять инъ­екции мар­шру­тов.
  • На­личие пакетов при­ветс­твия Hello. Под­клю­чить­ся к домену мар­шру­тиза­ции OSPF будет воз­можно, если сетевой адми­нис­тра­тор не позабо­тил­ся о кон­фигура­ции пас­сивных интерфей­сов, сама кон­фигура­ция поз­воля­ет отклю­чать рас­сылку пакетов при­ветс­твия на уров­не самих анон­сиру­емых сетей. Если в сетевом ана­лиза­торе не встре­тишь пакеты OSPF — либо OSPF нет, либо нас­тро­ены пас­сивные интерфей­сы. А это дела­ет невоз­можным про­веде­ние ата­ки на домен динами­чес­кой мар­шру­тиза­ции.

 

Вмешательство в процесс маршрутизации

Что­бы ата­ковать домен динами­чес­кой мар­шру­тиза­ции, нуж­но под­клю­чить­ся непос­редс­твен­но к самому про­цес­су мар­шру­тиза­ции. Это мож­но сде­лать через нас­тоящий роутер (имею в виду желез­ку) либо вос­поль­зовать­ся FRR.

info

FRRouting — это спе­циаль­ный вир­туаль­ный мар­шру­тиза­тор, который может интегри­ровать­ся с тво­ей ОС и работать как нас­тоящий роутер. Очень кру­тая шту­ка, пос­коль­ку под­держи­вает мно­жес­тво инте­рес­ных про­токо­лов: BGP, IS-IS, OSPF, EIGRP, VRRP, BFD и так далее. В этой статье я вос­поль­зуюсь имен­но FRR.

В пер­вую оче­редь нуж­но акти­виро­вать демоны FRR. За каж­дый про­токол будет отве­чать отдель­ный демон. Нам понадо­бят­ся демоны ospfd и staticd.

root@kali:~# nano /etc/frr/daemons
ospfd=yesstaticd=yes

Пе­ред запус­ком демона перек­люча­ем сетевой интерфейс в promiscuous mode, раз­реша­ем мар­шру­тиза­цию и акти­виру­ем работу NAT Helper (NFCONNTRACK).

in9uz@kali:~$ sudo ip link set eth0 promisc on
in9uz@kali:~$ sudo sysctl -w net.ipv4.ip_forward=1
in9uz@kali:~$ sudo modprobe nf_conntrack
root@kali:~# echo "1" > /proc/sys/net/netfilter/nf_conntrack_helper

Пос­ле это­го вклю­чаем демон FRR и про­веря­ем его сос­тояние.

in9uz@kali:~$ sudo systemctl start frr
in9uz@kali:~$ sudo systemctl status frr

Сос­тояние FRR

С помощью коман­ды vtysh попада­ем на панель управле­ния мар­шру­тиза­тором:

in9uz@kali:~$ sudo vtysh
kali# show ver

Па­нель управле­ния FRR 

Структура лабораторной сети

В качес­тве лабора­тории мы с тобой выс­тро­им тре­хуров­невую сеть. Для SMB-шары я выделил отдель­ный сег­мент (WAREHOUSE), но на самом деле это прос­то ком­мутатор уров­ня рас­пре­деле­ния. Так­же есть нес­коль­ко вир­туаль­ных сетей, они находят­ся на ком­мутато­рах уров­ня дос­тупа, а на ком­мутато­рах уров­ня рас­пре­деле­ния про­исхо­дит уже мар­шру­тиза­ция меж­ду самими VLAN.

От­казо­устой­чивость сети обес­печива­ет HSRPv2. Начиная с уров­ня рас­пре­деле­ния, я нас­тро­ил динами­чес­кую мар­шру­тиза­цию OSPF, все хра­нит­ся в нулевой BACKBONE-зоне.

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

  • 10.10.20.1 — Fake (VLAN 20) (Windows 10 LTSC);
  • 10.10.30.1 — Boundless (VLAN 30) (Windows 10 LTSC);
  • 10.10.50.2 — Attacker (VLAN 50) (Kali Linux);
  • 10.10.50.100 — Dist-SW1 (HSRPv2 Active) (Cisco vIOS L2 Image);
  • 10.10.50.101 — Dist-SW2 (HSRPv2 Standby) (Cisco vIOS L2 Image);
  • 192.168.100.1 — SMB Share (Windows Server 2019 Standard).

 

Анализ трафика

Пер­вым делом нам нуж­но изу­чить тра­фик OSPF, узнать об ID зоны, наличии аутен­тифика­ции, router-id и так далее. Из пакета OSPF Hello, получен­ного от Dist-SW1 (10.10.50.100), мож­но заметить, что исполь­зует­ся нулевая зона 0.0.0.0.

Дамп OSPF-тра­фика

Так­же исполь­зует­ся MD5-аутен­тифика­ция. Она не поз­воля­ет неаутен­тифици­рован­ным роуте­рам вхо­дить в про­цесс мар­шру­тиза­ции. Не зная ключ, под­клю­чить­ся к сети OSPF не вый­дет.

 

Обход аутентификации (Authentication Bypassing)

Ха­рак­терис­тики клю­ча

На скрин­шоте некото­рые харак­терис­тики клю­ча. Иден­тифика­тор клю­ча (ID) — еди­ница.

Для сниф­финга крип­тогра­фичес­кого MD5-хеша вос­поль­зуем­ся ути­литой Ettercap. Перед этим перек­люча­емся в promisc.

in9uz@kali:~$ sudo ip link set eth0 promisc on
in9uz@kali:~$ sudo ettercap -G

Ettercap обна­ружил MD5-хеш

Ко­пиру­ем эти хеши и бру­тим. Кста­ти говоря, очень удоб­но, что хеши сра­зу пред­став­лены в фор­мате John the Ripper.

in9uz@kali:~$ cat >> ospf-hashes
in9uz@kali:~$ john ospf-hashes --wordlist=ospfwordlist

Взло­ман­ный пароль от домена OSPF

Па­роль уда­лось сбру­тить, это flatl1ne. С этим клю­чом мы можем под­клю­чить­ся к сети OSPF.

 

Evil Twin и перехват NetNTLM

 

Начало атаки

Ос­новной прин­цип ата­ки зак­люча­ется в редис­три­буции ста­тичес­кого мар­шру­та в сеть OSPF с наимень­шей мет­рикой. Эта сеть выс­тупит в качес­тве век­тора для инъ­екции лож­ного мар­шру­та. FRR поз­воля­ет опе­риро­вать ста­тичес­кой мар­шру­тиза­цией и ее редис­три­буци­ей, что осво­бож­дает нас от исполь­зования дис­крет­ных ути­лит (Loki, Scapy и про­чих).

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

Ответить

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