Сегодня существует большое слепое пятно безопасности - беспроводные сети. Ещё один периметр, который есть почти у каждой компании и который практически никогда ни чем не охраняется. В итоге все мы привыкли к тому что все атаки на этом поле невидимы и хакеру все сходит с рук.
В своих постах, а так же в статье ( https://xakep.ru/2025/01/10/wireless-self-defence/) я показал, что это может быть не так, и продемонстрировал как детектить все актуальные атаки на wifi.
Но сейчас я хотел бы поделиться тем, как можно активно мешать хакеру.
И это будет маленький цикл постов про предотвращение/смягчение атак на wifi.
Что бы помешать хакеру провести захват WPA handshake через деаутентификацию, в момент детекта атаки мы можем начать отправлять в радиоэфир фейковые хэши. И что бы хакерский софт среагировал, достаточно отправить пакеты: beacon, EAPOL m1 и m2. А собрать произвольный handshake мы можем примерно так:
import hmac,hashlib
import random
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
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]
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
Добавив вызов этого prevent-скрипта ( https://github.com/s0i37/defence/blob/main/wifi/prevent/m2.py) в detect-скрипт ( https://github.com/s0i37/defence/blob/main/wifi/deauth.py) мы получаем готовое решение для автоматического реагирования на атаку деаутентификации (скрин).