April 25, 2024

Ethernet Abyss VIP. Пентестим Ethernet по всем правилам

  1. Сбор информации
  2. MITM
  3. Ethernet-туннели при пивотинге
  4. Таблица векторов
  5. Выводы

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

СБОР ИНФОРМАЦИИ

L2 — это каналь­ный уро­вень компь­ютер­ной сети. Тут про­исхо­дит ком­мутация кад­ров, сег­мента­ция сети. Ата­ки каналь­ного уров­ня могут быть очень опас­ными, пос­коль­ку ата­кующий, про­ник­нув в этот сег­мент, спо­собен нанес­ти боль­шой урон. А про­ник­нуть он может либо если его туда пус­тили, либо если он обес­печил себя L2-тун­нелем.

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

Первое подключение

Уже пос­ле под­клю­чения к сетево­му ком­мутато­ру ата­кующий может соз­дать шум в эфи­ре. Нап­ример, авто­мати­чес­ки активный NetworkManager с DHCP. Рекомен­дую не спе­шить с активным DHCP, сде­лай так, что­бы хотя бы интерфейс был в сос­тоянии UP.

Так­же сто­ит заметить, что по DHCP переда­ется имя устрой­ства, которое получи­ло адрес авто­мати­чес­ки. Вся эта информа­ция будет хра­нить­ся на DHCP-сер­вере. Это доволь­но неп­рият­ный рас­клад для пен­тесте­ра, одна­ко переда­чу хос­тней­ма по DHCP мож­но вык­лючить здесь:

sudo nano /etc/NetworkManager/system-connections/Wired\ connection\ 1 [ipv4]method=autodhcp-send-hostname=false

Пе­реда­ча hostname до кон­фигура­ции NM
Спря­тан­ный hostname сис­темы пос­ле кон­фигура­ции NM

Та­ким обра­зом мож­но спря­тать имя сис­темы от DHCP-сер­вера, прос­то не переда­вать его через нас­трой­ки NetworkManager.

Discovery-протоколы

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

Ин­форма­ция о CDP, получен­ная с помощью Above

Обнаружение 802.1Q-тегов

802.1Q — стан­дарт, име­ющий отно­шение к тегиро­ванию ком­мутаци­онных фрей­мов. В кон­тек­сте ком­мутато­ра при раз­биении сети VLAN на сег­менты исполь­зуют­ся два типа пор­тов:

  • Access — порт в режиме дос­тупа, обыч­но он нас­тра­ивает­ся на сто­роне конеч­ных стан­ций, что­бы они име­ли пер­вичный дос­туп к сети;
  • Trunk — при этом режиме про­исхо­дит инкапсу­ляция Ethernet-кад­ров.

Ког­да ата­кующий впер­вые под­клю­чает­ся к ком­мутато­ру, не исклю­чено, что он ока­жет­ся имен­но на Trunk-пор­те, где тегиру­ются фрей­мы. Если дей­стви­тель­но так про­изой­дет, то пен­тестер смо­жет ока­зать­ся во всех VLAN-сег­ментах, к которым под­клю­чен ком­мутатор. Вот при­мер­ные сце­нарии, при которых такое воз­можно:

  • Ра­бота­ющий порт по умол­чанию находит­ся в кон­тек­сте ком­мутато­ра Cisco. Там акти­вен про­токол DTP, при­чем все пор­ты работа­ют в режиме Dynamic Auto. Если ата­кующий сге­нери­рует и отпра­вит в сто­рону такого пор­та кадр DTP Desirable, это при­ведет к тому, что порт ата­кующе­го перек­лючит­ся в транк.
  • Порт ком­мутато­ра для Voice VLAN нас­тро­ен небезо­пас­но. Я встре­чал такие слу­чаи, в которых необ­ходимо было под­клю­чить в раз­рыв и VoIP-телефон, и компь­ютер и при этом порт ком­мутато­ра нас­тра­ивал­ся в режиме Trunk, хотя сто­ило бы гра­мот­но нас­тро­ить VLAN Access для компь­юте­ра и Voice VLAN для телефо­на. Если ата­кующий най­дет такой порт, фак­тичес­ки он уже пробь­ется во все VLAN-сег­менты.

Так что не будет лиш­ним поис­кать на пор­те фрей­мы 802.1Q, вдруг тебе удас­тся прыг­нуть в осталь­ные VLAN-сег­менты. Такие мис­конфи­ги встре­чают­ся на ком­мутато­рах, и ты слу­чай­но можешь ока­зать­ся на тран­ке. Конеч­но, это ред­кое явле­ние, но я не мог не упо­мянуть такой век­тор.

При­мер 802.1Q-тега в кад­ре

Най­ти фрей­мы 802.1Q мож­но, ана­лизи­руя тра­фик с помощью инс­тру­мен­та HIVE. Дос­таточ­но запус­тить его, ука­зав два аргу­мен­та: интерфейс ата­кующе­го и вре­мя на ана­лиз тра­фика. Пос­ле поис­ка всех тегов инс­тру­мент авто­мати­чес­ки соз­даст необ­ходимые вир­туаль­ные интерфей­сы для прыж­ка в дру­гие VLAN-сег­менты.

HIVE

Как видишь, HIVE поз­волил ата­кующе­му прыг­нуть в четыре сег­мента VLAN. Век­тор край­не ред­кий, но иног­да встре­чает­ся в кор­поратив­ных сетях.

LLMNR/NBT-NS Poisoning

От­равле­ние LLMNR/NBT-NS — одна из самых рас­простра­нен­ных сетевых атак. Она поз­воля­ет получить учет­ные дан­ные поль­зовате­ля Windows в зашиф­рован­ном виде, а так­же откры­вает дорогу для про­веде­ния атак NTLM Relay. Чаще все­го для отравле­ния зап­росов LLMNR/NBT-NS исполь­зуют ути­литу Responder.

Для такой ата­ки нужен имен­но L2-дос­туп в целевой сети, пос­коль­ку зап­росы дан­ных про­токо­лов рас­простра­няют­ся толь­ко в рам­ках широко­веща­тель­ных доменов. Либо ата­кующий может прос­то вот­кнуть патч‑корд в розет­ку, либо в кон­тек­сте сце­нария пивотин­га у него есть L2-тун­нель.

Про­токол LLMNR исполь­зует муль­тикас­товый адрес 224.0.0.252, в NBNS при­меня­ется широко­веща­тель­ный тра­фик, про­ходя­щий по UDP-пор­ту 137, а MDNS работа­ет по адре­су 224.0.0.251.

Инс­тру­мент Above поз­волит обна­ружить в тра­фике эти про­токо­лы. Если такое про­изой­дет, то ата­кующий смо­жет вос­поль­зовать­ся век­тором ата­ки LLMNR/NBT-NS Spoofing и перех­ватит учет­ные дан­ные.

ARP/NBNS-разведка

При запус­ке ARP-ска­ниро­вания ты дол­жен иметь в виду, что можешь ока­зать боль­шую наг­рузку на обо­рудо­вание, да и сис­тема Storm Control подаст сиг­нал тре­воги, если ты пре­высишь порог допус­тимого широко­веща­тель­ного тра­фика. Ког­да запус­каешь инс­тру­мент, про­водя­щий ARP-ска­ниро­вание, обя­затель­но нас­трой его ско­рость, то есть чис­ло пакетов в секун­ду.

Рас­простра­нен­ные инс­тру­мен­ты для L2-ска­ниро­вания — это netdiscover и nbtscan. Рекомен­дую вни­матель­но изу­чить все нас­трой­ки и ста­рать­ся не запус­кать эти прог­раммы в режиме «Халк кру­шить».

Для netdiscover в качес­тве пер­вичной раз­ведки хорошо выбирать Passive ARP: инс­тру­мент в авто­ном­ном режиме будет ана­лизи­ровать все ARP-кад­ры вок­руг себя и выс­тра­ивать спи­сок хос­тов.

sudo netdiscover -i eth0 -p

Ре­зуль­тат работы пас­сивно­го ARP

Обнаружение динамической маршрутизации

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

DRP-про­токо­лы исполь­зуют муль­тикас­товую рас­сылку, и, что­бы доб­рать­ся до пакетов этих про­токо­лов, ата­кующе­му необ­ходим имен­но L2-дос­туп (либо физичес­кое под­клю­чение к сети, либо L2-тун­нель пос­ле мероп­риятий пивотин­га). Нап­ример, OSPF для муль­тикас­товой рас­сылки исполь­зует адрес 224.0.0.5, а EIGRP — 224.0.0.10.

Ча­ще все­го DRP-пакеты ходят в поль­зователь­ских сег­ментах баналь­но из‑за того, что не заданы нас­трой­ки пас­сивно­го интерфей­са. Ког­да мар­шру­тиза­тор анон­сиру­ет ту или иную сеть, в ту же сеть отправ­ляют­ся эти пакеты при­ветс­твия. Если ата­кующий доберет­ся до них, то смо­жет под­клю­чить­ся к домену мар­шру­тиза­ции, узнать о сущес­тво­вании тех или иных под­сетей, инъ­екции мар­шру­тов и про­чего.

Ре­зуль­тат обна­руже­ния EIGRP с помощью Above

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

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

Обнаружение системы резервирования

FHRP обес­печива­ют отка­зоус­той­чивость на уров­не мар­шру­тиза­ции. Основная идея зак­люча­ется в том, что­бы объ­еди­нить нес­коль­ко мар­шру­тиза­торов в одну логичес­кую груп­пу. Внут­ри нее будет вир­туаль­ный мар­шру­тиза­тор с вир­туаль­ным IP-адре­сом, который будет наз­начать­ся как адрес шлю­за по умол­чанию.

До­мен FHRP может под­вер­гнуть­ся спу­финг‑ата­ке про­тив Master-роуте­ра, при­ори­тет которо­го менее 255. Ата­кующий в таком слу­чае смо­жет стать «челове­ком посере­дине» и перех­ватывать тра­фик всей сети, которую обслу­жива­ют FHRP-спи­керы.

В класс FHRP вхо­дят сле­дующие про­токо­лы:

  • HSRP (Hot Standby Redundancy Protocol);
  • VRRP (Virtual Router Redundancy Protocol);
  • GLBP (Gateway Load Balancing Protocol).

Как и в слу­чае с DRP-пакета­ми, для обна­руже­ния FHRP тоже нужен L2-дос­туп, и этот про­токол тоже исполь­зует муль­тикас­товую рас­сылку:

  • HSRP: 224.0.0.2, для вто­рой вер­сии 224.0.0.102 (UDP/1985);
  • VRRP: 224.0.0.18;
  • GLBP: 224.0.0.102 (UDP/3222).
Ин­форма­ция о при­сутс­твии HSRP
Ин­форма­ция о при­сутс­твии VRRP

Та­ким обра­зом ата­кующий получа­ет информа­цию о сис­теме резер­вирова­ния мар­шру­тиза­ции и может про­вес­ти ата­ку.

MITM

MITM-ата­ки внут­ри инфраструк­туры самые мощ­ные по импакту. MITM не толь­ко поз­воля­ет перех­ватывать учет­ные записи, но и откры­вает воз­можность для Relay-атак. Но MITM одновре­мен­но и самая опас­ная ата­ка с точ­ки зре­ния воз­можнос­ти нарушить работу сети. Она не про­щает оши­бок. Я дам нес­коль­ко советов, которые поз­волят про­водить MITM более акку­рат­но.

Мощность железа

По­заботь­ся о мощ­ности сво­его железа, оно дол­жно быть готово к тому, что через него пой­дет тра­фик нес­коль­ких десят­ков легитим­ных хос­тов. Это каса­ется и тво­его интерфей­са. Если ты собира­ешь­ся спу­фить хос­ты с гигабит­ным интерфей­сом, а у тебя кон­нект 100 Мбайт/с, то ско­рость сети серь­езно пос­тра­дает и может про­изой­ти кол­лапс. Поль­зовате­ли быс­тро заметят, что сеть ста­ла зависать, и позовут сисад­минов, а те (если не зря получа­ют зар­пла­ту) пой­мут, в чем дело. Так пен­тест перес­танет быть сек­ретом, и при­дет­ся крас­неть перед адми­нами.

Вот рекомен­дован­ные парамет­ры железа:

  • цен­траль­ный про­цес­сор от четырех ядер;
  • опе­ратив­ная память от 8 Гбайт;
  • се­тевой интерфейс с пол­ным дуп­лексом, 1 Гбит/с и выше. Хорошо, если вый­дет под­клю­чить Ethernet-адап­тер через высокос­корос­тной интерфейс Thunderbolt 3/4.

Од­нако, ско­рее все­го, ты упрешь­ся в воз­можнос­ти пор­та ком­мутато­ра, к которо­му ты под­клю­чен. Если там линк в 1 Гбит/с, выше это­го ты прыг­нуть не смо­жешь. Обя­затель­но сле­ди за поведе­нием сети.

Разрешение маршрутизации

Глав­ное пра­вило MITM — раз­решить мар­шру­тиза­цию тра­фика со сво­ей сто­роны:

sudo sysctl -w net.ipv4.ip_forward=1

Ина­че при ата­ке легитим­ный тра­фик будет упи­рать­ся в твой хост и даль­ше он не прой­дет, а это DoS, то есть видимый приз­нак ата­ки. И сно­ва пен­тест перес­танет быть сек­ретом.

Потенциальный Storm Control

Ес­ли на пор­те ата­кующе­го есть Storm Control с кон­тро­лем тра­фика UCAST/MCAST/BCAST, может сра­ботать тре­вога обо­рудо­вания, потому что порт ата­кующе­го при MITM нач­нет обра­баты­вать гораз­до боль­ше тра­фика, чем ожи­далось по нас­тро­енно­му THRESHOLD. Имей в виду!

Обход трассировки (TTL Shift)

Сме­щение TTL в таб­лице mangle поможет спря­тать IP-адрес ата­кующе­го из трас­сиров­ки пакетов. MITM-ата­ки соз­дают избы­точ­ный хоп, и если про­вес­ти трас­сиров­ку со сто­роны легитим­ной машины, то IP-адрес ата­кующе­го ока­жет­ся в самой трас­сиров­ке. Такой рас­клад событий SOC точ­но не оце­нит.

sudo iptables -t mangle -A PREROUTING -i eth0 -J TTL --ttl-inc 1

Восстановление ARP-таблицы после атаки

Твой инс­тру­мент обя­затель­но дол­жен генери­ровать обратные IS-AT-кад­ры, которые вос­ста­нав­лива­ют сос­тояние ARP-таб­лиц хос­тов еще до ата­ки. Это очень важ­ный момент. Хост или сер­вис могут и не зап­росить ARP, они будут думать, что ты все еще их шлюз. А это DoS. Это очень важ­ный момент, который сто­ит учи­тывать. Кста­ти говоря, Ettercap и Arpspoof отлично дела­ют эту работу, а по окон­чании генери­руют необ­ходимые IS-AT-кад­ры и вос­ста­нав­лива­ют струк­туру ARP-таб­лиц хос­тов.

ICMP Redirect

Во вре­мя MITM-ата­ки твоя машина может генери­ровать пакеты ICMP Redirect, что встре­вожит IDS/IPS, поэто­му обя­затель­но вык­лючай на сво­ей сто­роне сооб­щения ICMP Redirect в sysctl.conf.

sudo sysctl -w net.ipv4.conf.all.send_redirects=0 sudo sysctl -w net.ipv4.conf.eth0.send_redirects=0

Конфигурация NAT

Од­но из глав­ных пра­вил MITM — нас­трой­ка NAT. Обыч­но ата­кующие обхо­дят­ся одной коман­дой:

sudo iptables -t nat -A POSTROUTING -o eth0 -J MASQUERADE

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

Модуль nf_conntrack для протоколов No NAT Friendly

Сквозь тебя может ходить тра­фик FTP, H.323 и SIP. Это про­токо­лы No NAT Friendly, и тебе понадо­бит­ся модуль nf_conntrack, что­бы они работа­ли с NAT. При MITM ата­кующий дол­жен вклю­чить NAT, что­бы видеть тра­фик, иду­щий в обе сто­роны.

sudo modprobe nf_conntrack

Выбор масок подсетей при ARP Spoofing

При про­веде­нии ARP-спу­фин­га сле­ди за мас­кой под­сети, с которой собира­ешь­ся работать. Если ты возь­мешь слиш­ком боль­шую мас­ку, твое железо может прос­то не выдер­жать наг­рузки и воз­никнет DoS.

Особенность атаки при STP (MITM)

При­сутс­твие STP-кад­ров внут­ри сети — одно из самых час­тых явле­ний при ана­лизе тра­фика. Сущес­тву­ют ата­ки на про­токол STP, свя­зан­ные с инъ­екци­ей BPDU-кад­ров. Нап­ример, что­бы про­вес­ти MITM, нуж­но отпра­вить в ответ BPDU-кадр с наимень­шим зна­чени­ем при­ори­тета. Тог­да компь­ютер ата­кующе­го получит роль кор­невого ком­мутато­ра.

Од­нако на деле не все так прос­то. При экс­плу­ата­ции STP ты получишь толь­ко час­тичную MITM, так как не весь тра­фик будет ходить через кор­невой ком­мутатор. Поэто­му в таких слу­чаях не рас­счи­тывай на боль­шой поток тра­фика.

ETHERNET-ТУННЕЛИ ПРИ ПИВОТИНГЕ

Пен­тесте­рам иног­да нуж­но про­водить ата­ки каналь­ного уров­ня. Нап­ример, при­менить тот же Responder, что­бы перех­ватить учет­ные дан­ные. Ата­кующий эска­лиру­ет свое при­сутс­твие в сети с помощью пивотин­га, одна­ко для про­веде­ния атак каналь­ного уров­ня ему необ­ходимы имен­но L2-тун­нели. L2-тун­нелиро­вание при­мени­мо при пивотин­ге, если ата­кующе­му тре­бует­ся L2-дос­туп до целевых хос­тов.

Су­щес­тву­ет два вида VPN-интерфей­сов:

  • TAP — вир­туаль­ный сетевой драй­вер, который эму­лиру­ет Ethernet. Работа­ет на каналь­ном уров­не, опе­рируя Ethernet-кад­рами;
  • TUN — вир­туаль­ный сетевой драй­вер, который исполь­зует­ся для пос­тро­ения L3-тун­нелей. Работа­ет на сетевом уров­не, опе­рируя IP-пакета­ми.

Ес­ли ата­кующий стре­мит­ся к ата­кам каналь­ного уров­ня в целевой сети, ему нуж­но исполь­зовать имен­но TAP-интерфей­сы, с которы­ми он будет стро­ить L2-тун­нель. Для это­го есть мно­го спо­собов, начиная с SSH и OpenVPN и закан­чивая более экзо­тичес­кими вещами, такими как EoIP, GRETAP, L2TPv3, VXLAN. Пен­тестер может стро­ить тун­нели как угод­но, но я рас­ска­жу о двух глав­ных нюан­сах.

Пе­ред тем как проб­росить L2-тун­нель, про­писы­вай явный мар­шрут /32 до целево­го хос­та, с которым будешь уста­нав­ливать тун­нель. Без это­го мар­шру­та при получе­нии адре­са на L2-интерфей­се может воз­никнуть раз­рыв тун­неля, так как тун­нель будет перек­рывать мар­шрут до хос­та. Коман­да нес­ложна — прос­то про­пиши этот мар­шрут через свой умол­чатель­ный шлюз:

sudo ip route add X.X.X.X/32 via X.X.X.X

Ата­кующий обес­печива­ет себя L2-тун­нелем с помощью спе­циаль­ных вир­туаль­ных интерфей­сов. Но что­бы вза­имо­дей­ство­вать с целевой сетью, необ­ходимо сна­чала получить адрес. Обыч­но ата­кующий узна­ет его с помощью DHCP, одна­ко по DHCP может при­лететь дру­гая информа­ция о шлю­зе, что спо­соб­но негатив­но пов­лиять на сетевую связ­ность. Поэто­му, ког­да получа­ешь адрес на L2-интерфей­се при пивотин­ге, сра­зу же вто­рой коман­дой уда­ляй при­летев­ший умол­чатель­ный мар­шрут:

sudo dhclient -v tap0; sudo route del default

Итак, мы с тобой разоб­рались в осо­бен­ностях Ethernet-пивотин­га: какие пра­вила хороше­го тона нуж­но при­менять, что­бы добить­ся успе­ха при экс­плу­ата­ции L2.

ТАБЛИЦА ВЕКТОРОВ

Я сде­лал неболь­шую мат­рицу самых эффектив­ных атак каналь­ного уров­ня, от которых есть ощу­тимый импакт.

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

ВЫВОДЫ

В этой статье я изло­жил основные момен­ты при пен­тесте Ethernet. Этой тех­нике уже нес­коль­ко десят­ков лет, но она по‑преж­нему при­меня­ется на пен­тестах при внут­реннем ана­лизе защищен­ности. Наде­юсь, что этой стать­ей я смо­гу подарить нес­коль­ко новых тех­ник для пен­тесте­ров, а адми­нис­тра­торы сетей повысят осве­дом­ленность.