Статья
aircrack-ng и как я перехватывал пароль своего wi-fi
Некоторое время назад, изучая инструмент hashcat на даннм рессурсе, я столкнулся с одним из способов его применения, а именно, для дехеширования пакетов, передаваемых между роутером и устройством, к нему подключенному. В самом модуле была подсказка о том, как это реализовать. Нужно всего лишь примениь старый советский ... aircrack-ng. Желая попрактиковаться в примнении hashcat, я пошёл изучать этот инструмент. Собственно, тут поделюсь своим опытом и заметками.
Во-первых, хочу сразу сказать, что пытаться вскрыть что-то, что не принадлежат вам - противозаконно (если только вас не нанял владелец этого чего-то, для тестирования на проникновение). Именно по этому, я создал гостевой сегмент для тренировки работы с этим инструментом, ну и чтобы, если чтото пойдёт не так, не выбить из сети не то устройство.
Во-вторых, Если вы, как и я, привыкли работать с linux через wsl, то aircrack-ng, попросту не запустится. Дело в том, что он взаимодействует с адаптерами сетевых устройств, а у wsl доступа к ним нет. По этому, я исполнил свою давнюю мечту, и заимел linux на флешке. Так же, с адаптерами может взаимодействовать linux на виртуальной машине. Как я понял, разницы никакой нет.
И так, после того как я заимел себе linux, создал отдельную сеть для практики, первое что стоит сделать - проверить, какие вообще адаптеры мне доступны?
Для того, чтобы это узнать, достаточно выполнить команду iwconfig :

Я получил список адаптеров на текущем устройстве. Если у вас их установленно несколько, то список будет состоять из нескольких наименований, типа wlan1, wlan2 и т.д. У мня, например, после установки внешнего wi-fi адаптера, появилось имя wlan1.
Посмотрю на вывод чуть внимателнее, чтобы понять что мне выдал iwconfig :
* ESSID - Наименование сети, к которой адаптер сейчас подключен;
* Mode - В каком режиме сейчас адаптер. Если он просто подкючен к сети на прием-передачу, то это Managed, когда мы начнем сканировать им окружение, это будет Monitor.
* Frequency - Частота передачи данных адаптера. Как можно понять из этого вывода, моя сеть сейчас вещает на частоте 5GHz.
* Access Point - Это Mac адресс роутера, к которому подключен наш адаптер
Базу я понял. О остальных выведенныхх параметрах не читал, но если у читателя есть желание, можете самостоятельно поискать информацию о том, что вообще выводит эта команда.
Кроме команды iwconfig , о доступных адаптерах можно узнать, так же, при помощи ip link . По итогу выполнения получаю такой вывод:

Тут, так же, как и для iwconfig вижу что доступно два адаптера (я, честно, без понятия, что за адаптер lo). В выводе этой команды вижу, что нет того разнообразия параметров, как в iwconfig , но тут отображается статус адаптеоа wlan0 - UP. Это означает, что wlan0 открыт для приема - передачи даных. Если бы он был в статусе DOWN, то, хоть, подключение к сеи и отображалось как "Подключено", никакие данные никуда бы не передавались. Можно, ради интереса изменить статус адаптера и посмотреть будет ли он передавать данные.
ip link set wlan0 down
ip link | grep 'wlan0' -A 2В итоге получим такой вывод:

Задал адаптеру статус DOWN. Ну и при попытке открыть что-то в браузере - выкидывает ошибку о отсутсвии сти. Хотя, на панели задачь отображается налиие подключения.
И так, в моем распоряжении имеется адаптер с именем wlan0. Что дальше? А дальше начинается процесс мониторинга и перехвата пакетов. Как, мне известно, известно, wi-fi это открытая сеть, данные по котрой передаются в зашифрованном виде между подключенным устройсвом и адаптером. Если вокруг вас много устройств, которые подключеных к сети wi-fi (не важно к какому роутеру), то эфир вокруг будет заполнен волнами частоты 2.24 и 5 GHz. Зная это, моя дальнейшая задача - посмотреть, а что вообще творится вокруг, какие даптеры кому что передают, по каким каналам, какие протоколы используют и прочее. Но начнем с малого. Послушаем эфир.
Сперва, хотел кое что уточнить. aircrack-ng - это название коробки с инструментами. Сами инструменты, которе в ней лежат называются по разномы ( airmon-ng, airodump-ng, aireplay-ng и т.д.) и сперва, нам надо получить этот ящик с иструментами. Установка максимально проста:
sudo apt update
sudo apt install aircrack-ngДля начала нам необходим инструмент airmon-ng. Он предназначен для того, чтобы наш адаптер перешёл из режима обмена данными с адаптером в режим мониторинга. Запускаем его. Для этого, нужно передать команду start и указать имя адаптера, который будет использоваться для монитооринга. В моем случае это wlan0 .
airmon-ng check kill
airmon-ng start wlan0airmon-ng check kill - Убиваем сетевые менеджеры, чтобы они не пытались вернуть адаптер в режим Managed,
airmon-ng start wlan0 - Заводим адаптер из режима managed в Monitor. По сути, он теперь не занимается приемом-передачей данных, он мониорит всё вокруг
После выполнеия этой комаанды можно заметить, что адаптер отключился. Это нормально, так и надо, так что не пугаемся отсутствию интернета.
Тепенрь, если я проверю доступные адаптеры, используя iwconfig, то увижу:

Ага, имя адаптера wlan0 изменилось на wlan0mon. Ну, тут понятно, дообавили суфикс "monitoring". Так же, что сразу бросается в глаза, мод изменился на Monitor, а мы помним, что ранее он был Managed, следовательно, адаптер перешел в режим мониторинга. Этого мы и добивались. Ну и ещё можно заметить, что частота передачи данных упала с 5 GHz до 2.4 GHz.
Небольшое дополнение. Когда я закончу работу с мониторингом, мне надо будет вернуть менеджер сетей и адаптер в работу. Для этого, запускаем комманды:
systemctl start NetworkManager
airmoon-ng stop wlan0mon Но делать это нужно только в самом конце, когда уже промониторил всё что надо. В противном случае, инструменты aircrack-ng работать не будут, ведь они все для работы требуют адаптер в режиме Monitor.
Теперь, когда я мониторю окружение, надо бы как-то узнать что творится вокруг. С этим, мне поможет следующая тулза из коробки иннструментов: airodump-ng. Сама команда выглядит следующим образом:
airodump-ng wlan0mon -w /home/kali/AirDumps/TestCrack/TestDump --output-format cap -b abgwlan0mon - Имя адаптера, в режиме мониторинга;
-w /home/kali/AirDumps/TestCrack/ - Дирректория в которую будут сохраняться результаты;
TestDump - Шаблон наименования перехваченных файлов. Если не ввести названия, а просто указать путь, они будут сохраняться в формате "-01.cap", "-02.cap" и т.д.;
--output-format cap - Указываю что мне по итогу нужны только .cap файлы. Иначе в выводе получу много бессмысленных для мен сейчас файлов;
-b abg - Я так до конца и не разобрался как это работает. Но опция "-b" отвечает за то, сети какой частоты мониторить. Получив a и g я смотрю сети 5Ghz и 2.4GHz соответсвенно. Для чего параметр b, я не знаю. Можно пвывести и просто -b ag но, видимо, в таком случае, картина будет не полной;
По факту, на данном этапе, мне нужно просто посмотреть что творится вокруг, а значит все эти настройки не нужны. Но для того, чтобы все файлы (не важно нужны они или нет), изначально лежали аккуратно по дирректориям, а не по всей системе, я прописываю настройки сразу. Порядок на рабочей машине очень важен.
По исполнению этой команды, запускается процесс монитринга окружения и я получаю следующий вывод на экране:

Внушительно. Смотрю внимательнее и вижу, что:
BSSID - Мак адресса роутеров. Если присмотреться внимательнее, то видно, что у некоторых значения в этих полях совпадают, а значит, один роутер вещат на разных каналах.
PWR - Мощность. Тут всё просто.
Beacons - Количество кадров в секунду, которое отсылает роутер. Значение динамическое, но обычно, не превышает 100.
CH - Канал вещания.
ENC - Метод шифрования.
CIPHER - Протоколы шифрования. В данном случчае, для всех сетей это Counter-mode/CBC-MAC Protocol.
ESSID - Наименование сети.
Описание каких-то столбцов я пропустил, но, повторюсь, я их посчитал менее значимыми.
На этом этапе, можно спокойно остановить выполнение команды airodump-ng. Я получил нужную мне информацию. Главное - запомнить BSSID и CH. Эти параметры будут нужны мне в дальнейшем.
Из вывода дампера, становиться видно, насколько много сетей могут окружать человека, проживающего в многоквартирном доме. Именно для того, чтобы не запутаться и не начать сучайно ломиться в wi-fi соседей, я и создал свою тестовую сеть: Test_for_dumping.
Окей, я поняли что вокруг меня большое количество сетей. Но что дальше? А дальше я хочу посмотреть интересующую меня точку доступа и её взаимодействия с подключенными к ней устройствами.
Как я писал выше, нужную мне информацию я получил. Я увидел наименование сети, которую хочу пощупать, это Test_for_dumping. Мне нужен только Mac роутера: 52:FF:20:11:02:3F (Смотри BSSID) и канал, по которому роутер передает инфо: 8 (Смотри CH). И снова запускаем airodump-ng
airodump-ng wlan0mon -w /home/kali/AirDumps/TestCrack/TestDump --output-format cap -b abg --bssid 52:FF:20:11:02:3F -c 8Выше я говорил, что надо запомнить параметры BSSID и CH. Так вот, из новых опций, только --bssid 52:FF:20:11:02:3F но как я говорл ранее, это указание Mac адреса роутера, чтобы смотреть не на всё подряд, а мониторить одну конкретную сеть. А так же, -c 8 , котрая указывает, что нужно смотреть только 8-й канал. Иначе сканер будет бегать по всем каналам указанного BSSID в надежде что-то найти. И когда я попытаюсь запулить полезную нагрузку на указанный Mac адресс, прыжки по канаам собъют атаку.
По итогу выполнеия команды получаю такой вывод:

Тут уже интереснее. Я вижу не просто наличие роутера с мак-ом 52:FF:20:11:02:3F, но и подключенное к этому роутеру устройство, обитаюшее в сети Test_for_dumping.
Mac адресс подключеного устройства отображается в поле STATION и это A6:13:3F:EC:39:AE (как удачно, что Mac адресс, моего смартфона, подключенного к этой сети совпадает с мак-ом на скрине).
Соответсвенно, если бы в этой сети крутилось больше одного устройства, я бы видел адресса их всех. Кончно, мне это мало что сможет дать. Я не знаю где какое устройство и точечно пробивать нужные мне подключеия не получится. Однако, поскольку я настроил запись данных в нужный мне каталог, я кое что уже имею. Перейдя по пути /home/kali/AirDumps/TestCrack/ я вижу появившийся файл TestDumpRouter-01.cap. Значит информация о передаче данных всё таки записывается. Это просто здорово!
Но записывается вообще не то, что мне необходимо. Мне нужен пароль, а при обмене информацией после подключения никакой пароль уже не передается. Выходит, мне нужно, либо ждать, пока кто-нибудь новый войдёт в сеть, либо кто-то, кто уже владеет кридами, переподключится.
Как вы понимаете, ожидание не наш метод. Мы форсируем отключение пользователя или пользователей, от сети. Для этого, применим очередной инструмент из ящика aircrck-ng, На этот раз, воспользуемся aireplay-ng.
Что делает этот инструмент? Он бомбит сессию устройства и роутера большим числом пакетов, заставляя прерывать её и пытаться преподключиться друг к другу, заново отправляя криды. А поскольку иногда, мы не знаем кого лучше бомбить, aireplay-ng позволяет бомбить ВСЕ устройства в указанной сети. Для примера, я всё же, покажу как я отрубал только одно устройство, потому что для атаки на всю сеть (не точечно), достаточно просто НЕ указать целевой девайс, который ведёт обмен данными с роутером.
При этом, важно не отключать airodump-ng, следящий за конкретным рутером, так как именно он поможет нам осуществить атаку MitM (Man In The Middle), перехватив, во время повтороного подключения, криды.
Запускаем бомбежку:
aireplay-ng -0 5 -a 52:FF:20:11:02:3F -c A6:13:3F:EC:39:AE wlan0mon-0 5 - Указываю режим 0, означающий, обыкновенное закидывание пакетами, по 5 пакетов за кадр. Этого размера долдно хватить для обрыва связи.
-a 52:FF:20:11:02:3F - Мас адресс атакуемого роутера
-c A6:13:3F:EC:39:AE - Mac адресс атакуемого устройства. Если оно не указано, то бомбятся все устройства в одной сети с атакуемым роутером.
wlan0mon - Имя адаптера, который проиводит атаку.
Если посмотреть на подключенный телефон, в моент атаки, то можно успеть увидеть, что соединение между ним. и wi-fi разрывается. А в термиале выводится небольшой лог атаки:

А по пути, который был прописан при запуске airodump-ng (который, всё это время, продолжал мониторить ситуацию и ловил рукопожатия), теперь появился свежий файл .cap с данными рукопожатий.
Ну а дальше, я не буду сильно вдаватсься в подробности. Те, кто уже прощёл модуль hashcat (или работал с этим инструментом) знают порядок дейтвий.Те, кто ещё не проходил, могут пройти, чтобы лучше понять что я сейчас сделаю.
Прогоняем .cap файл через hcxpcapngtool для преобразования его в .hccapx формат
hcxpcapngtool /home/kali/AirDumps/TestCrack/TestDumpRouter-01.cap \
-o /home/kali/AirDumps/TestCrack/TestDumpRouterHash-01.hccapxПолучив стильный и удобный .hccapx файл, запускаем hashcat по словарю rockyou.txt
hashcat -a 0 -m 22000 AirDumps/TestCrack/hash-01.hccapx /home/kali/Dictionaries/Rockyou/rockyou.txtИ вот он, верный пароль:

В инструмент aircrack-ng я полез копаться исключительно из любопытства и, пока искал по нему информацию, ломал кучу дров. Перезапускал всё раз по 100 и очень долго думал, "а почему у меня не работает что-то?"
Надеюсь, те, кто будут искать полезную информацию при первой настройке этого инсрумента, и наткнуться на эту статью, сочтут её полезной, а опытные хацкеры, не будут слишком строги и критичны к ней, так как это просто конспект моих действий при попытке разобраться самостоятельно.