Статья

Лента / Публикация

aircrack-ng и как я перехватывал пароль своего wi-fi

Pumpkin 10 мин чтения
Обложка публикации

Некоторое время назад, изучая инструмент 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 wlan0

airmon-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 abg

wlan0mon - Имя адаптера, в режиме мониторинга;

-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 и очень долго думал, "а почему у меня не работает что-то?"

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