• [ Регистрация ]Открытая и бесплатная
  • Tg admin@ALPHV_Admin (обязательно подтверждение в ЛС форума)

Статья Безопасность в эфире. Строим систему защиты беспроводных сетей

stihl

bot
Moderator
Регистрация
09.02.2012
Сообщения
1,517
Розыгрыши
0
Реакции
888
Deposit
0.228 BTC
stihl не предоставил(а) никакой дополнительной информации.
Беспроводные сети — одна из важнейших составляющих сетевого периметра любой компании. В сегодняшней статье мы разберемся, как своими силами обезопасить корпоративный Wi-Fi от захвата WPA handshake, PMKID, противодействовать атакам GTC Downgrade, RogueAP, да еще и вывести из строя используемые хакером инструменты.
У любой компании практически всегда есть два периметра: тот, что смотрит в интернет, защищенный всем, чем можно, и физический — образованный многочисленными беспроводными устройствами, не защищенный практически никак. И это, пожалуй, самое большое слепое пятно в ИБ на сегодняшний день. Реальность такова, что если что‑то там окажется уязвимо, то хакер непременно возьмет свое.

В статье «Для просмотра ссылки Войди или Зарегистрируйся» мы попытались исправить эту несправедливость, восстановить баланс сил светлой и темной стороны и сделать некое подобие беспроводной IDS (Intrusion Detection System). И в результате мы научились детектить все актуальные на сегодня атаки на Wi-Fi.


info​

Эта статья основана на фрагменте только что вышедшей книги «Для просмотра ссылки Войди или Зарегистрируйся».
Но можно ли как‑то активно мешать проведению этих атак? В этой статье мы сделаем свою беспроводную IPS (Intrusion Prevention System), которая сможет предотвратить проведение большинства актуальных атак на Wi-Fi.


Противодействуем захвату WPA handshake​

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

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

Но давай посмотрим на эту атаку с другой стороны, к чему она приводит? А приводит она к повторной отправке и захвату хакером handshake. Так почему бы не дать хакеру то, что он хочет? Мы можем закидать его фейковыми handshake!

Следующий хитрый скрипт умеет генерировать half-handshake-фреймы — те самые, за которыми охотится хакер:

defence/wifi/prevent/m2.py​

#!/usr/bin/python3
from scapy.all import *
import hmac,hashlib,binascii
import random,string
from sys import argv

iface = argv[1]
ap = argv[2]
essid = argv[3]
sta = argv[4]
conf.verb = 0
COUNT = 20
WORDLIST = "/usr/share/wordlists/rockyou.txt"
words = open(WORDLIST).readlines(100000)

def get_password_brutable(min_len):
attempts = 10
while attempts:
word = random.choice(words).strip().lower()
if not "'" in word and min_len <= len(word):
return word
attempts -= 1

def get_password_unbrutable(len):
return "".join(map(lambda _:random.choice(string.printable[:95]), range(len)))

def beacon(ap, essid, count):
WPA = 'ESS+privacy'
RATE_1B = b"\x82"
RATE_2B = b"\x84"
RATE_5_5B = b"\x8b"
RATE_11B = b"\x96"
CHANNEL = 1
beacon = RadioTap()/Dot11(type=0, subtype=8, addr1='ff:ff:ff:ff:ff:ff', addr2=ap, addr3=ap)/\
Dot11Beacon(cap=WPA)/\
Dot11Elt(ID='SSID',info=essid, len=len(essid))/\
Dot11Elt(ID='Rates', info=RATE_1B+RATE_2B+RATE_5_5B+RATE_11B)/\
Dot11Elt(ID='ERPinfo', info=b"\x04")/\
Dot11Elt(ID='DSset', info=int(CHANNEL).to_bytes(1,'big'))/\
Dot11Elt(ID=48, len=20, info=b'\x01\x00\x00\x0f\xac\x04\x01\x00\x00\x0f\xac\x04\x01\x00\x00\x0f\xac\x02\x00\x00')
sendp(beacon, iface=iface, inter=0.01, count=count, verbose=False)

anonce = None
def m1(ap, sta, count):
global anonce
def get_rand(n):
o = b''
for _ in range(n):
o += int(random.random()*255).to_bytes(1, 'big')
return o

anonce = get_rand(32)
eapol_data_4 = bytearray(95)
eapol_data_4[0:1] = b"\x02" # Key Description_type
eapol_data_4[1:3] = b"\x00\x8a" # Key Information
eapol_data_4[3:5] = b"\x00\x10" # Key Length
eapol_data_4[5:13] = b"\x00\x00\x00\x00\x00\x00\x00\x01" # Replay Counter
eapol_data_4[13:45] = anonce
eapol_data_4[45:61] = b"\x00"*16 # Key IV
eapol_data_4[61:69] = b"\x00"*8 # WPA Key RSC
eapol_data_4[69:77] = b"\x00"*8 # WPA Key Id
eapol_data_4[77:93] = b"\x00"*16 # WPA Key Mic
eapol_data_4[93:95] = b"\x00"*2 # WPA Key Data Length
m1 = RadioTap() / Dot11(proto=0, FCfield=2, addr1=sta, addr2=ap, addr3=ap, subtype=8, SC=0, type=2, ID=55808) \
/ Dot11QoS(TID=6, TXOP=0, EOSP=0) \
/ LLC(dsap=0xaa, ssap=0xaa, ctrl=0x3) \
/ SNAP(OUI=0, code=0x888e) \
/ EAPOL(version=1, type=3, len=95) / bytes(eapol_data_4)
sendp(m1, iface=iface, count=count, inter=0.01, verbose=False)

def m2(ap, sta, count):
global anonce
def assemble_EAP_Expanded(self, l):
ret = ''
for i in range(len(l)):
if l[0] & 0xFF00 == 0xFF00:
ret += (l[1])
else:
ret += pack('!H', l[0]) + pack('!H', len(l[1])) + l[1]
return ret


def PRF_512(key,A,B):
return b''.join(hmac.new(key,A+chr(0).encode()+B+chr(i).encode(),hashlib.sha1).digest() for i in range(4))[:64]

def get_rand(n):
o = b''
for _ in range(n):
o += int(random.random()*255).to_bytes(1, 'big')
return o

def b(mac):
o = b''
for m in mac.split(':'):
o += int(m, 16).to_bytes(1, 'big')
return o

password = get_password_brutable(8)
#password = get_password_unbrutable(8)
print(f"[*] send {password}")
pmk = hashlib.pbkdf2_hmac('sha1', password.encode(), essid.encode(), 4096, 32)
snonce = get_rand(32)
ptk = PRF_512(pmk, b"Pairwise key expansion", min(b(ap),b(sta))+max(b(ap),b(sta))+min(anonce,snonce)+max(anonce,snonce))
kck = ptk[0:16]

rsn_cap = b"\x30\x14\x01\x00\x00\x0f\xac\x04\x01\x00\x00\x0f\xac\x04\x01\x00\x00\x0f\xac\x02\x00\x00"
eapol_data_4 = bytearray(117)
eapol_data_4[0:1] = b"\x02" # Key Description Type: EAPOL RSN Key
eapol_data_4[1:1+2] = b"\x01\x0a" # Key Information: 0x010a
eapol_data_4[3:3+2] = b"\x00\x00" # Key Length: 0
eapol_data_4[5:5+8] = b"\x00\x00\x00\x00\x00\x00\x00\x01" # Replay Counter: 1
eapol_data_4[13:13+32] = snonce # WPA Key Nonce
eapol_data_4[45:45+16] = b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" # WPA Key IV
eapol_data_4[61:61+8] = b"\x00\x00\x00\x00\x00\x00\x00\x00" # WPA Key RSC
eapol_data_4[69:69+8] = b"\x00\x00\x00\x00\x00\x00\x00\x00" # WPA Key ID
eapol_data_4[77:77+16] = b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" # WPA Key MIC
eapol_data_4[93:93+2] = b"\x00\x16" # WPA Key Data Length: 22
eapol_data_4[95:95+26] = bytes(rsn_cap) # WPA Key Data Length

mic = hmac.new(kck, b"\x01\x03\x00\x75" + bytes(eapol_data_4[:77]) + bytes.fromhex("00000000000000000000000000000000") + bytes(eapol_data_4[93:]), hashlib.sha1).digest()[0:16]
eapol_data_4[77:77+16] = mic

m2 = RadioTap() / Dot11(proto=0, FCfield=1, addr1=ap, addr2=sta, addr3=ap, subtype=8, SC=0, type=2, ID=55808) \
/ Dot11QoS(TID=6, TXOP=0, EOSP=0) \
/ LLC(dsap=0xaa, ssap=0xaa, ctrl=0x3) \
/ SNAP(OUI=0, code=0x888e) \
/ EAPOL(version=1, type=3, len=117) / bytes(eapol_data_4)
sendp(m2, iface=iface, count=count, inter=0.01, verbose=False)


for _ in range(COUNT):
beacon(ap, essid, 5)
m1(ap, sta, 5)
m2(ap, sta, 10)
Чтобы хакерское ПО среагировало в момент захвата handshake, мы должны отправить в радиоэфир три пакета: beacon, EAPOL M1 и M2. Добавляем строку вызова этого prevention-приема в detect-скрипт атаки деаутентификации:

defence/wifi/deauth.py​

...
def alert(src, dst, signal, essid):
...
system(f"prevent/m2.py {iface} {src} '{essid}' {dst}")
...

www​

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

Для просмотра ссылки Войди или Зарегистрируйся
Хакер же видит у себя весьма радужную, на первый взгляд, картину — ему один за другим начинают прилетать желаемые handshake.

Для просмотра ссылки Войди или Зарегистрируйся
Но он еще не знает, с чем столкнулся… Захватив handshake, хакер поспешит их извлечь в форме хеша, подходящего для брутфорса. И тут начинается самое интересное. Если хакер запустит стандартную команду извлечения хешей, то он получит всего один из них.

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

Для просмотра ссылки Войди или Зарегистрируйся
Совсем не тот пароль, что нужен для подключения к сети. Это один из фейковых handshake, что мы посылали в радиоэфир в самом начале. Похожая ситуация возникает, если хакер будет использовать классический инструмент Aircrack-ng.

Для просмотра ссылки Войди или Зарегистрируйся
Опять подобран не тот пароль. Разница тут в том, что по умолчанию hcxpcapngtool извлекает первый захваченный handshake из трафика для каждой пары STA-AP, тогда как Aircrack-ng берет последний. Все потому, что никто не ожидает подобного трюка. И в том и в другом случае у нас есть отличные шансы защитить точку доступа, ведь настоящий handshake будет пролетать точно не последним и, скорее всего, не первым, поскольку деаутентификация далеко не с первой попытки приводит к повторной аутентификации. В результате мы можем скрыть реальный handshake.

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

Для просмотра ссылки Войди или ЗарегистрируйсяДля просмотра ссылки Войди или Зарегистрируйся
То есть брутить он будет те самые несуществующие пароли, которые мы отправляли в самом начале. Даже если правильный пароль затесался где‑то среди остальных и хакер подобрал его, то придется потратить немало времени и сил, чтобы проверить каждый. Но мы можем отправить хакеру не двадцать handshake, а в сотни раз больше. Это вполне позволит защитить точку доступа даже с небезопасным словарным паролем.

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

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

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


Противодействуем атаке захвата PMKID​

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

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

Следующий скрипт умеет генерировать PMKID-хеши по произвольным парольным фразам и отправлять их в радиоэфир:

defence/wifi/prevent/m1.py​

#!/usr/bin/python3
from scapy.all import *
import hmac,hashlib
import random,string
from sys import argv

iface = argv[1]
ap = argv[2]
essid = argv[3]
sta = argv[4]
conf.verb = 0
COUNT = 20
WORDLIST = "/usr/share/wordlists/rockyou.txt"
words = open(WORDLIST).readlines(100000)

def get_password_brutable(min_len):
attempts = 10
while attempts:
word = random.choice(words).strip().lower()
if not "'" in word and min_len <= len(word):
return word
attempts -= 1

def get_password_unbrutable(len):
return "".join(map(lambda _:random.choice(string.printable[:95]), range(len)))

def beacon(ap, essid, count):
WPA = 'ESS+privacy'
RATE_1B = b"\x82"
RATE_2B = b"\x84"
RATE_5_5B = b"\x8b"
RATE_11B = b"\x96"
CHANNEL = 1
beacon = RadioTap()/Dot11(type=0, subtype=8, addr1='ff:ff:ff:ff:ff:ff', addr2=ap, addr3=ap)/\
Dot11Beacon(cap=WPA)/\
Dot11Elt(ID='SSID',info=essid, len=len(essid))/\
Dot11Elt(ID='Rates', info=RATE_1B+RATE_2B+RATE_5_5B+RATE_11B)/\
Dot11Elt(ID='ERPinfo', info=b"\x04")/\
Dot11Elt(ID='DSset', info=int(CHANNEL).to_bytes(1,'big'))/\
Dot11Elt(ID=48, len=20, info=b'\x01\x00\x00\x0f\xac\x04\x01\x00\x00\x0f\xac\x04\x01\x00\x00\x0f\xac\x02\x00\x00')
sendp(beacon, iface=iface, inter=0.01, count=count, verbose=False)

def m1(ap, sta, count):
def get_rand(n):
o = b''
for _ in range(n):
o += int(random.random()*255).to_bytes(1, 'big')
return o
def b(mac):
o = b''
for m in mac.split(':'):
o += int(m, 16).to_bytes(1, 'big')
return o
def calculate_pmkid(password, ap, essid, sta):
pmk = hashlib.pbkdf2_hmac("sha1", password.encode("utf-8"), essid.encode(), 4096, 32)
pmkid = hmac.new(pmk, b"PMK Name" + b(ap) + b(sta), hashlib.sha1).digest()[:16]
return pmkid

#password = get_password_brutable(8)
password = get_password_unbrutable(8)
print(f"[*] send {password}")
eapol_data_4 = bytearray(95+22)
eapol_data_4[0:1] = b"\x02" # Key Description_type
eapol_data_4[1:3] = b"\x00\x8a" # Key Information
eapol_data_4[3:5] = b"\x00\x10" # Key Length
eapol_data_4[5:13] = b"\x00\x00\x00\x00\x00\x00\x00\x00" # Replay Counter
eapol_data_4[13:45] = get_rand(32) # WPA Key Nonce
eapol_data_4[45:61] = b"\x00"*16 # Key IV
eapol_data_4[61:69] = b"\x00"*8 # WPA Key RSC
eapol_data_4[69:77] = b"\x00"*8 # WPA Key Id
eapol_data_4[77:93] = b"\x00"*16 # WPA Key Mic
eapol_data_4[93:95] = b"\x00\x16" # WPA Key Data Length
eapol_data_4[95:117] = b"\xdd\x14\x00\x0f\xac\x04" + calculate_pmkid(password, ap, essid, sta) # WPA Keys Data (PMKID)
m1 = RadioTap() / Dot11(proto=0, FCfield=2, addr1=sta, addr2=ap, addr3=ap, subtype=8, SC=0, type=2, ID=55808) \
/ Dot11QoS(TID=6, TXOP=0, EOSP=0) \
/ LLC(dsap=0xaa, ssap=0xaa, ctrl=0x3) \
/ SNAP(OUI=0, code=0x888e) \
/ EAPOL(version=2, type=3, len=95+22) / bytes(eapol_data_4)
sendp(m1, iface=iface, count=count, inter=0.01, verbose=False)

for _ in range(COUNT):
beacon(ap, essid, 5)
m1(ap, sta, 10)
Все, что нужно для обмана хакерского ПО, — это отправить всего два радиопакета: beacon и EAPOL M1. Давай подключим этот prevent-прием к детекту:

defence/wifi/pmkid.py​

...
def alert(client, bssid, essid):
...
system(f"prevent/m1.py {iface} {bssid} '{essid}' {client}")
...
В результате мы получаем средство автоматического обнаружения атаки сбора PMKID и реагирования на нее. И как только наш скрипт начинает фиксировать сбор PMKID, он запускает генерацию в радиоэфир фейковых неподбираемых хешей.

Для просмотра ссылки Войди или Зарегистрируйся
Что же увидит у себя хакер?

Для просмотра ссылки Войди или Зарегистрируйся
Уже знакомая картина. Только в этом примере вместо брутабельных паролей мы отправили хакеру несколько десятков неподбираемых хешей.

Для просмотра ссылки Войди или Зарегистрируйся
Что же, пожелаем хакеру удачи в этом бесперспективном деле!


Противодействуем атаке GTC Downgrade​

Атака на понижение методов аутентификации сетей WPA Enterprise — одна из самых коварных и распространенных на сегодня атак в корпоративном беспроводном сегменте. Ее опасность заключается в возможности получения корпоративных учетных записей, нередко даже открытым текстом.

В случае же если твоя корпоративная беспроводная Enterprise-сеть построена исключительно на сертификатах, бояться особо нечего. Но не хочется так просто отпускать хакера ни с чем. Мы вновь пустим его по ложному следу, отправив ему массу фейковых учеток. И поможет нам в этом следующий простейший скрипт:

defence/wifi/prevent/gtc.sh​

#!/bin/bash

iface="$1"
bssid="$2"
COUNT=20

function connect(){
MAX_TIME=5
bssid="$1"
user="$2"
pass="$3"
cat <<E > /tmp/wpa_eap.conf
network={
bssid=$bssid
key_mgmt=WPA-EAP
eap=PEAP
identity="$user"
password="$pass"
phase1="peaplabel=0"
phase2="auth=MSCHAPV2"
}
E
sudo timeout $MAX_TIME wpa_supplicant -i "$iface" -c /tmp/wpa_eap.conf | while read line; do
if echo "$line" | grep -q 'authentication failed'; then
break
fi
done
}

for _ in seq $COUNT; do
user=$(shuf -n 1 /opt/wordlists/surnames-translit.txt)
pass=$(pwgen 10 1)
echo "[*] send $user:$pass"
connect "$bssid" "$user" "$pass"
done
Этот скрипт использует системный инструмент wpa_supplicant для подключения к беспроводной сети WPA Enterprise со случайными парами логина и пароля.

Теперь активируем этот механизм противодействия в детекторе:

defence/wifi/eap.py​

...
def alert(ap):
...
system(f"prevent/gtc.sh wlan1 {ap}")
...
В результате мы получаем автоматическое средство обнаружения атаки GTC Downgrade и реагирования на нее. Теперь, как только в зоне действия нашего монитора оказывается очередная сеть WPA Enterprise, мы автоматически подключаемся к ней и пытаемся определить предлагаемый метод аутентификации. Если замечена точка доступа с явно пониженным методом аутентификации, то запускается скрипт, который начнет слать хакерской точке доступа фейковые пары логина и пароля под видом доменных корпоративных учеток.

Для просмотра ссылки Войди или Зарегистрируйся
Несмотря на то что атака GTC Downgrade часто приводит к отправке учетных данных открытым текстом, мы не отсылаем их хакеру в открытом виде. А нарочно отправляем в виде хеша, заставляя тем самым еще и брутить их.

Для просмотра ссылки Войди или Зарегистрируйся
Учитывая высокие, по мнению хакера, шансы на успех, он будет просто вынужден брутить их все.

На данный момент хеш‑функция NetNTLMv1 считается криптографически нестойкой и любой ее хеш может быть гарантированно подобран за умеренное время (несколько дней). Правда, это потребует от хакера немалых вычислительных мощностей. В случае если хакер справится с этой задачей (сейчас появились еще и радужные таблицы), он будет вынужден повторно приехать к зоне действия целевых точек доступа и проверять каждую подобранную учетную запись, что, конечно же, не даст никакого успеха — ведь учетки фейковые.

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


Противодействуем всему семейству атак RogueAP​

Все беспроводные атаки, выполняемые с позиции точки доступа и направленные на клиентов и их устройства, могут быть достаточно легко обнаружены по используемой ими технике KARMA, отзывающейся на любой Probe Request. Но с похожей простотой мы можем и превентить все атаки RogueAP, и поможет нам в этом старый хакерский прием — деаутентификация.

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

defence/wifi/prevent/deauth.py​

#!/usr/bin/python3
from scapy.all import *
from threading import Thread
from sys import argv

iface = argv[1]
ap = argv[2]
sta = argv[3]
conf.verb = 0
COUNT = 1000

def deauth(src, dst, count):
deauth = RadioTap() / Dot11(addr1=dst, addr2=src, addr3=ap) / Dot11Deauth()
sendp(deauth, iface=iface, count=count, inter=0.1, verbose=False)

threads = []
threads.append( Thread(target=deauth, args=(ap, sta, COUNT)) )
threads.append( Thread(target=deauth, args=(sta, ap, COUNT)) )
print(f"[*] deauth {ap} <--> {sta}")
[t.start() for t in threads]
[t.join() for t in threads]
Подключая этот prevent-прием к детектору точек доступа RogueAP, мы получаем простое и надежное средство автоматического обнаружения данного типа атак и реагирования на них:

defence/wifi/karma.py​

...
def alert(ap, essid, signal):
...
system(f"prevent/deauth.py {iface} {ap} ff:ff:ff:ff:ff:ff")
...
После детекта точки доступа RogueAP запускается механизм ее логического глушения с использованием широковещательной деаутентификации.

Для просмотра ссылки Войди или Зарегистрируйся
И как мы можем видеть, наш скрипт полностью парализовал хакерскую точку доступа — теперь к ней невозможно подключиться.

Для просмотра ссылки Войди или Зарегистрируйся
Клиентские устройства, которые пытаются подключиться к вредоносной точке доступа, тут же отваливаются, не давая возможности хакеру развить последующие атаки. Как бы жертва ни стремилась подключиться к хакерской точке доступа, ничего у нее не выйдет. Наш deauth-щит надежно накрывает хакера.

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

Заключение​

Мы увидели, что атаки на беспроводные сети не такие уж и неуловимые. В наших силах не только обнаруживать их, но и даже предотвращать. Беспроводной периметр современной компании образуется не только Wi-Fi-сетями, но именно эта технология является самой первой мишенью хакерских атак. Каким бы ни был размер периметра, дешевые и доступные одноплатные компьютеры с представленными в статье скриптами прекрасно справятся с задачей защиты беспроводных сетей и сделают это минимальными усилиями и минимальной ценой. В будущем, возможно, все это вырастет в проект первой полноценной Wireless IDS/IPS.
 
Activity
So far there's no one here
Сверху Снизу