HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Автоматический захват рукопожатий и PMKID от всех точек доступа
Эта инструкция посвящена программе, которая умеет собирать хэндшейки и PMKID от всех точек доступа. Программа может работать в полностью автономном режиме:
- сканировать в поисках ТД
- инициировать подключения для сбора PMKID
- деаутентифицировать клиентов найденных ТД
- прослушивать и сохранять рукопожатия
- повторять все эти действия по циклу без участия пользователя
Если вы пропустили и не знаете, что такое PMKID, то смотрите статью «Взлом Wi-Fi без пользователей» — там есть объяснение.
Про похожую программу, которая умеет собирать рукопожатия, но не умеет захватывать PMKID — про Hashcatch, смотрите статью «Автоматический сбор хешей точек доступа для взлома Wi-Fi» — там же вы найдёте ссылки на другие программы для автоматизации этих процессов.
В этой же инструкции мы рассмотрим bettercap. Вторая версия программы получила очень много изменений и новых функций. Программа находится в активной разработке и постоянно получает новые возможности. Обзор основ работы с bettercap смотрите в статье «Новая версия bettercap 2.x: как установить и использовать в Kali Linux» и я настоятельно рекомендую начать знакомство с той статьи.
В статье, на которую дана ссылка, уже упоминается работа с Wi-Fi сетями, но, во-первых, с тех пор много было добавлено именно по wifi модулю, а, во-вторых, эта инструкция сфокусирована на Wi-Fi возможностях bettercap и в ней будет показано, как сделать автономную систему, которая сама будет собирать хеши для взлома Wi-Fi.
Начнём с обзора нововведений. Добавлен новая команда wifi.assoc для выполнения атаки без клиентов RSN PMKID.
Ещё добавлены параметры wifi.region и wifi.txpower. Они отвечают за регион, в котором как бы работает Wi-Fi адаптер и за его мощность. Больше подробностей вы найдёте в статье «Как увеличить мощность (TX Power) Wi-Fi карты в Kali Linux и BlackArch». Эти параметры являются важными даже не потому, что они могут что-то улучшить, а из-за того, что они могут ухудшить! Дело в том, что у меня УЖЕ настроен нужный регион и мощность увеличена до максимальной. Но программа bettercap также имеет значения по умолчанию, она сразу устанавливает регион на BO и пытается повысить мощность до 30. Для моего адаптера это не работает! То есть ДО запуска bettercap у меня Wi-Fi адаптеры работают на 30 dBm, а ПОСЛЕ запуска bettercap у меня адаптеры переключаются на 20 dBm… Вполне возможно, что у вас аналогичная ситуация, поэтому мы рассмотрим, как избежать проблем с этим.
Добавлены новые возможности парсинга WPS и команда wifi.show.wps. Кстати, в целом собираемая информация выглядит так:
Теперь модуль wifi.recon перехрватывает, парсит и сохраняет в файл полное 4 ступенчатое WPA рукопожатие автоматически.
Другие изменения менее значительны:
- добавлена новая команда wifi.clear для очистки точек доступа, собранных с помощью wifi.recon
- wifi.deauth и wifi.assoc теперь поддерживают автодополнение BSSID (начните печатать MAC точки доступа и нажмите кнопку TAB)
- новый параметр wifi.rssi.min
- wifi.recon теперь сообщают о событиях wifi.client.new и wifi.client.lost
- wifi.show.wps теперь поддерживает ‘*‘ и ‘all‘ в качестве сокращений для ‘ff:ff:ff:ff:ff:ff‘.
- wifi.deauth теперь поддерживает ‘*‘ and ‘all‘ в качестве сокращений для ‘ff:ff:ff:ff:ff:ff‘.
- если беспроводной интерфейс в состоянии down, то теперь вместо ошибки, wifi.recon будет активировать интерфейс (переводить в up)
- столбцы wifi.show и net.show теперь украшены в соответствии с сортировкой
- новые параметры wifi.show.filter, wifi.show.limit и wifi.show.sort для контроля wifi.show
Атака на Wi-Fi из bettercap
Программа bettercap умеет переводить беспроводной интерфейс в режим монитора и умеет переводить его из состояния down в состояние up, но мне НЕ нравится как она это делает )))) Поэтому я буду делать это вручную.
Это необязательно, но я предпочитаю останавливать службу NetworkManager:
Смотрим имя беспроводного интерфейса:
У меня интерфейс называется wlp0s20f0u2, поэтому я перевожу его в режим монитора командами (замените в них wlp0s20f0u2 на имя вашего интерфейса):
Запускаю bettercap, указав имя своего Wi-Fi интерфейса:
Запускаю сбор данных о Wi-Fi в округе:
Данные выводятся в виде списка по мере обнаружения новых устройств:
Для вывода таблицы выполните команду:
Чтобы анализировать только определённые каналы, можно установить значение переменной wifi.recon.channel следующим образом:
Но изменения не вступят в силу сразу — нужно было их устанавливать или до запуска Wi-Fi разведки, или перезапустить модуль сбора информации:
Хотя лично у меня, установка wifi.recon.channel ни на что не влияет — карта продолжает сканировать все частоты, которые поддерживает.
Как происходил захват рукопожатий раньше? Нужно было настроить и запустить модуль сниффинга следующим образом:
Теперь этого делать НЕ нужно!
Модуль wifi сам умеет сохранять рукопожатия. По умолчанию они записываются в файл
/bettercap-wifi-handshakes.pcap. Это значение можно поменять, установив переменную wifi.handshakes.file:
Обратите внимание, что
указывает не на домашний каталог текущего пользователя, а на каталог рута, поскольку программа запускается с sudo.
Для захвата PMKID какой-то определённой точки доступа, выполните команду
где вместо BSSID укажите MAC-адрес целевой ТД.
Если нужно попытаться захватить PMKID всех ТД в пределах досягаемости, то выполните:
Аналогично с захватам полноценного четырёхэтапного рукопожатия — для атаки на целевую ТД:
Для атаки на все ТД:
Общее количество захваченных рукопожатий покажет команда:
Для более тщательного анализа рекомендуется использовать aircrack-ng:
pwnagotchi
Автор bettercap, его зовут Simone Margaritelli (evilsocket), завёл твиттер аккаунт для pwnagotchi. Устройство pwnagotchi — это ARM компьютер с батарейкой и с экранчиком на электронных чернилах, на котором установлен bettercap и кастомное ПО. Pwnagotchi умеет самостоятельно собирать PMKID и полноценные рукопожатия от Wi-Fi сетей. Если я правильно понимаю, Simone собрал пока всего два таких устройства. В реплаях к твитам народ пишет, «да, да, уже заждались». В принципе, ждать необязательно — весь функционал уже есть в самом bettercap, нужно лишь написать небольшой каплет с командами, всё это можно запустить на ноутбуке и получится pwnagotchi-годзила. Ну или тоже можете купить себе ARM плату, батарейку, экранчик и синюю изоленту.
Здорова, щеглы, сегодня своими руками мы будем делать pwnagotchi. Для этого нам понадобится создать файл pwnagotchi.cap:
Запускать надо так (вместо wlp0s20f0u2 впишите имя вашего беспроводного интерфейса):
Таким образом я погулял по округе с ноутбуком и, как меня уверяет bettercap, набрал несколько десятков рукопожатий. Но строгий aircrack-ng далеко не все из них признаёт пригодными для работы:
В этом каплете всё довольно понятно. Закомментированные строки:
не работают, вы можете их расскомментировать и, в случае необходимости, подправить под свои значения. У меня у интерфейса wlp0s20f0u2 уже настроена txpower на 30.00 dBm. Если вы тоже настроили себе повышенную мощность и после запуска bettercap мощность падает, то посмотрите исходное значение, при котором мощность нормальная:
И впишите в качестве wifi.region. Больше по теме мощности смотрите в статье «Как увеличить мощность (TX Power) Wi-Fi карты в Kali Linux и BlackArch».
устанавливает повторение цикла команд каждые 20 секунд.
А сам набор команд для цикла описан этой строкой:
То есть wifi.show — показывает обобщённую таблицу с собранной информацией. Затем запускается команда wifi.assoc all для инициации подключения ко всем ТД и сбора PMKID от всех точек доступа. Затем sleep 7 включает паузу на 7 секунд — я НЕ знаю, действительно ли необходима пауза и сколько времени для неё требуется, попробуйте потестировать разные варианты. Затем идёт команда wifi.deauth all, которая деаутентифицирует всех клиентов — на эту команду отводятся оставшиеся 13 секунд из 20 секундного цикла.
При этом сбор информации о ТД и прослушивание рукопожатий выполняются непрерывно.
Вы можете попробовать разные тайминги и выбрать то, что покажет лучшие результаты, особенно при перемещении — делитесь своими наблюдениями в комментариях! Хотя, как мне кажется, здесь всё индивидуально — зависит от плотности Wi-Fi точек доступа и скорости передвижения.
Кстати, поскольку все собранные данные дампятся в один единственный файл, вам придётся, во-первых, внимательно изучить статью «Как извлечь рукопожатия из файла захвата с несколькими рукопожатиями» и, во-вторых, извлекать нужные вам рукопожатия практически вручную, как описано в той статье.
Про взлом PMKID хеша смотрите все статьи по тегу pmkid.
На картинке AWUS1900 самого Simone Margaritelli (возможно подключена к pwnagotchi):
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Как извлечь рукопожатия из файла захвата с несколькими рукопожатиями
В одном файле захвата сетевых данных (формат pcap) может содержаться более чем одно рукопожатие (handshake). Такое можно происходить, например, при продолжительной работе Airodump-ng, в результате чего она может перехватить несколько рукопожатий от одной или разных точек доступа. Рукопожатия из файлов, захваченных в «шумных» условиях нуждаются в дополнительной проверке и очистке.
Несколько рукопожатий в одном файле можно получить искусственно, просто объединяя их в один файл. К примеру, программа Besside-ng (автоматически захватывает рукопожатия от всех дочек доступа в пределах досягаемости, для этого проводит атаку деаутентификация) создаёт единый файл .cap для всех захваченных пакетов рукопожатий.
Т.е. это не редкая ситуация, и для проведения атаки на сети, чьи рукопожатия находятся в одном файле, может потребоваться извлечь каждое рукопожатие.
Как разделить рукопожатия по разным файлам
Важно понимать разницу между файлом, в котором просто слито несколько рукопожатий, и файлом захвата в шумной среде. Пример анализа файла первого типа (с помощью aircrack-ng):
Пример файла второго типа:
Видно, что во втором файле имеется много мусора, и во всём файле всего два пригодных для взлома рукопожатия. Среди мусора много отдельных фреймов EAPOL (составляющих хендшейка), которые непригодны для подбора пароля.
Для просмотра содержимого файла можно использовать Wireshark. После открытия файла установите фильтр:
Ручное разбитие файлов рукопожатий с помощью Wireshark
Если вы работаете с файлом из слитых рукопожатий, то с ним не должно быть особых проблем. Открываем файл в Wireshark:
Можно использовать фильтр
Но он может оказаться и не нужным, поскольку и без того имеются только нужные пакеты.
Чтобы отфильтровать пакеты для определённой точки доступа, укажите её BSSID со следующим фильтром:
Теперь с помощью CTRL+m выделите нужные пакеты:
И в меню File выберите Export Specified Packets:
Введите имя файла и поставьте переключатель на Marked packets only:
Проверяем наш файл:
Всё отлично. Можно сделать ещё одну проверку с помощью coWPAtty, запустив команду вида:
Например, в моём случае:
Фраза «Collected all necessary data to mount crack against WPA2/PSK passphrase» означает, что собраны все необходимые данные для взлома пароля.
Для вычленения рукопожатия из захвата, выполненного в шумных условиях, необходимо приложить некоторые усилия. Начинам с фильтрации (замените 84:C9:B2:52:F6:37 на BSSID интересующей вас сети):
Хендшейк подходит для взлома пароля если:
- обязательно включает в себя второй элемент (M2), а также третий (M3) (гарантирует, что было сделано подключение к сети) или вместо третьего элемента содержит первый элемент (M1) (рукопожатие подходит для взлома пароля, но нет гарантий, что было выполнено подключение и что вообще был введён верный пароль). Лучше, если удалось захватить все четыре элемента;
- элементы рукопожатия должны следовать в нужном порядке;
- между ними не должно быть слишком большого интервала времени (измеряется миллисекундами и микросекундами).
Смотрим следующий пример.
Первый набор фреймов EAPOL (выделен чёрным) – не соблюдено правило, что кроме второго должно быть третье или первое сообщение.
Второй набор (красный) – только одно сообщение.
Третий набор (жёлтый) – нет третьего или первого сообщения.
Четвёртый набор (оранжевый) – нет второго сообщения.
Пятый набор (зелёный) – подходит, поскольку имеется второе и первое сообщение. Время между сообщениями кажется приемлемым.
Выделяем и сохраняем нужные фреймы (я также выделил фрейм Beacon):
Наш файл проходит проверки:
Выделение рукопожатия с помощью tshark
tshark – это Wireshark, но без графического интерфейса. Эту программу можно также использовать для разделения большого файла захвата на отдельные рукопожатия. Для этого команда запускается следующим образом:
В ней нужно вставить свои значения для:
- ИСХОДНЫЙ_ФАЙЛ.cap – файл с несколькими хендшейками
- BSSID – MAC-адрес интересующей точки доступа
- ИТОГОВЫЙ_ФАЙЛ.cap – файл, куда будет сохранено выделенное рукопожатие
Пример реальной команды:
Решение ошибки Unsupported file format (not a pcap or IVs file). Read 0 packets. No networks found, exiting.
У некоторых пользователей при использовании tshark, а затем последующем открытии полученного файла в aircrack-ng возникает ошибка:
Чтобы этой ошибки не было, во время сохранения программой tshark к ней нужно указывать опцию -F pcap, которая задаёт правильный формат файла.
Скрипт для разделения рукопожатий
Для автоматизации разделения одного файла на рукопожатия, я написал скрипт. Помните, что если вы разбиваете файл полученный с помощью Besside-ng или искусственно при слиянии хендшейков, то скрипт отработает без проблем.
Если вы разделяете на отдельные хендшейки файл захвата, полученный в шумных условиях (например, во время длительной работы Airodump-ng), то скрипт будет работать так:
- если для какой-либо точки доступа не найдено ни одного рабочего хендшейка, то все данные для неё будут отброшены (не будет создаваться файл вывода)
- если для точки доступа найдено хотя бы одно рабочее рукопожатие, то все фреймы EAPOL будут сохранены в один файл.
Т.е. вам нужно будет самостоятельно открыть файлы вывода и проверить, нет ли в них лишних данных.
Хотя aircrack-ng вроде бы правильно находит нужный хендшейк, но с cap2hccapx (из набора hashcat-utils, используется для конвертации в формат хеша Hashcat) замечены проблемы, если предварительно не почищены ненужные фреймы EAPOL от непригодных хендшейков.
Создайте файл handshakes_extractor.sh:
Для запуска укажите .(p)cap файл, из которого нужно извлечь рукопожатия.
Пример работы программы:
Если найдено хотя бы одно рабочее рукопожатие, то в текущей директории создаётся папка вида 2018-04-13-155818, в которую в виде отдельных файлов сохраняются хендшейки для всех точек доступа.
Выводится информация об имени файла с сохранёнными фреймами, а также информация о самих сохранённых фреймах.
Когда не нужно разделять файл на отдельные рукопожатия
Вам необязательно предварительно разделять файл на отдельные хендшейки, если вы собираетесь использовать программу aircrack-ng. Для выбора цели вы можете воспользоваться опциями:
Программа cap2hccapx запишет все хеши (для взлома в Hashcat) в один файл .hccapx.
Чтобы записать хеш только для одной ТД, укажите её ESSID: