2 РАЗРАБОТКА ПРОГРАММНОГО КОМПЛЕКСА 2.1 Разработка функциональной модели программного комплекса защиты Wi-Fi сетей Функциональная модель программного комплекса включает в себя следующие процессы (рис 2.1). Получение списка доступных сетей. Прежде чем подключиться к точке доступа необходимо выбрать необходимую сеть из списка доступных. Данный список также должен содержать информацию о методе шифрования. Подключение к Wi-Fi сети. Если для точки доступа установлен пароль, то пользователю нужно ввести требуемый пароль. Получение списка устройств. Основная часть программного средства – получение списка подключенных устройств в сети. Также необходимо отобразить информацию об устройствах. IP-адрес, MAC-адрес, название устройства в сети и дату обнаружения. Сортировка устройств. Программный комплекс должен включать в себя сортировку устройств с помощью списка разрешенных устройств. Создание отчета. Программному комплексу необходимо иметь возможность сохранить данные в виде отчета для последующего их анализа. Входные данные включают в себя: данные операционной системы для считывания информации о сетевом интерфейсе пользовательского компьютера и списка доступных сетей, данные роутера для получения информации точки доступа, а также данные пользователя в виде пароля, необходимого для подключения к точке доступа и адреса электронной почты, на которую будет отправлен отчет. На выходе мы получаем список устройств, информацию о событиях и электронное письмо с отчетом.
42 Рис. 2.1 – функциональная модель программного комплекса защиты Wi-Fi сети. 2.2 Разработка архитектуры программного комплекса защиты Wi-Fi сети Рис. 2.2 – Архитектура программного комплекса защиты Wi-Fi сетей. Программный комплекс включает в себя несколько модулей. Модуль сканирования доступных сетей, модуль подключения к сети и отключения от сети, модуль проверки надежности пароля, модуль обработки устройств,
43 подключенных к сети, модуль проверки состояния соединения, модуль отправки электронного письма, а также списки доступных сетей, подключенных устройств и журнал событий. Модуль сканирования доступных сетей отображает список доступных сетей, а также тип шифрования этих сетей. Модуль подключения и отключения производит соответствующие действия с выбранной сетью из списка доступных сетей. Модуль обработки устройств отображает подключенные устройства к точке доступа, а также работает со списком разрешенных устройств - выделяет устройства, не входящие в данный список, добавляет в список выбранные устройства, а также удаляет их из списка. Все действия с данным списком отображаются в журнале событий. Модуль проверки настроек точки доступа. Проверяет пароль на соответствие критериям надежности. Отображает алгоритм шифрования точки доступа. Результат проверки отображается в журнале событий. Критерии надежности пароля: Иметь не менее 8 символов. Включать в себя большие и маленькие буквы алфавита. Включать в себя цифры и спецсимволы. Модуль проверки состояния соединения. При разрыве соединения программа отобразит данное явление в журнале событий. Модуль отправки электронного письма. Вся информация из журнала событий отправляется на указанную пользователем электронную почту. 2.3 Разработка интерфейса программного комплекса защиты Wi-Fi сети Интерфейс программного комплекса отображен на рисунках 2.3.1, 2.3.2 и 2.3.3. Он содержит следующие основные компоненты: 1) Таблица, отображающая список доступных Wi-Fi сетей. 44 2) Кнопка «сканировать». Выполняет подключение к выбранной Wi-Fi сети. 3) Текстовое поле «пароль». В данное поле вводится пароль для подключения к Wi-Fi сети. Оно остается пустым если пароль для подключения к выбранной Wi-Fi сети не требуется. 4) Кнопки «подключиться», «отключиться», а также текстовое поле информирующее о статусе подключения. 5) Кнопка, вызывающая модуль обработки списка устройств, подключенных к данной сети. 6) Кнопка, вызывающая модуль проверки надежности пароля. 7) Таблица, отображающая список подключенных устройств к точке доступа. В красных строках отображены устройства, не входящие в список разрешенных. 8) Таблица, отображающая список разрешенных устройств. 9) Кнопки «добавить устройство в список разрешенных» и «удалить устройство из списка разрешенных». Выполняют соответствующие действия. 10) Кнопка «отправить отчет администратору». Вызывает меню, иллюстрируемое на рисунке 2.3.3. 11) Таблица «логи событий». Отображает действия, связанные с устройствами, подключенными к точке доступа, результат проверки надежности пароля, а также информирует и потере соединения. 12) Текстовое поле для ввода адреса электронной почты. 13) Кнопка, выполняющая подготовку и отправку электронного письма. 14) Текстовое поле, отображающее статус отправки электронного письма. Изначально оно пустует.
45 Рис. 2.3.1 – Интерфейс стартового окна программного комплекса. Рис. 2.3.2 – Основное окно программного комплекса.
46 Рис. 2.3.3 – Окно для отправки электронной почты. 2.4 Разработка модулей программного комплекса защиты Wi-Fi сетей 2.4.1 Разработка алгоритма стартового меню программного комплекса защиты Wi-Fi сетей Алгоритм стартового меню программного комплекса представлен на рисунке 2.4.1. 1) В блоке 1 выясняется подключено ли устройство к сети. Если да, то переходим в блок 2, затем в блок 4, иначе переходим в блок 3, затем в блок 4. 2) В блоке 4 проверяется, нажал ли пользователь какую-либо кнопку. Если да, то переходим в бок 5. Если нажал нет, переходим в блок 14. 3) В блоке 5 проверяем, нажал ли пользователь кнопку «сканирование». Если да, то переходим в блок 10, затем в блок 4. Если нет – переходим в блок 6. 4) В блоке 6 проверяем, нажал ли пользователь кнопку «подключение». Если да, то переходим в блок 11, иначе – в блок 7. 5) В блоке 7 проверяем, нажал ли пользователь кнопку «отключение». Если да, то переходим в блок 12, иначе – в блок 8. 6) В блоке 8 проверяем, нажал ли пользователь кнопку «монитор устройств». Если да, то переходим в блок 13, иначе – в блок 4. 7) В блоке 14 проверяем, остановил ли пользователь программу. Если да, то завершаем программу, иначе переходим в блок 4.
47 Рис. 2.4.1 – Алгоритм стартового меню программного комплекса. 2.4.2 Разработка алгоритма модуля сканирования доступных сетей. Алгоритм модуля сканирования доступных сетей программного комплекса представлен на рисунке 2.4.2 1) В блоке 1 проверяется, подключен ли компьютер к сети. Если да, то переходим в блок 3, иначе в блок 2. Затем модуль завершает работу.
48 Рис. 2.4.2 – Алгоритм модуля сканирования доступных сетей. 2.4.3 Разработка алгоритма модуля подключения к сети и отключения от сети Алгоритм подключения к сети представлен на рисунке 2.4.3.1. 1) В блоке 1 проверяется, выбрана ли сеть для подключения. Если выбрана, то переходим в блок 3, иначе – в блок 2. После блока 3 модуль завершает работу. 2) В блоке 3 проверяется, верный ли пароль для подключения к данной сети. Если верный, то переходим в блок 5, иначе – в блок 4. После блока 2, 4 и 5 модуль завершает работу.
49 Рис. 2.4.3.1 – Алгоритм подключения к сети Алгоритм отключения от сети представлен на рисунке 2.4.3.2. Рис. 2.4.3.2 – Алгоритм отключения от сети. 2.4.4 Разработка алгоритма модуля проверки настроек точки доступа. Данный модуль включает в себя две функции: Функция проверки надежности пароля. Функция проверки алгоритма шифрования.
50 Алгоритм модуля проверки настроек точки доступа представлен на рисунке 2.4.4.1. 1) В блоке 1 проверяем, подключено ли устройство к сети. Если да, то переходим в блок 3, иначе – переходим в блок 2 и затем модуль завершает работу. 2) В блоке 3 проверяем, содержит ли пароль большие и маленькие буквы алфавита, спецсимволы, цифры и его длина больше или равно 8. Если да, то переходим в блок 8, затем в блок 12 и завершаем работу. Иначе переходим в блок 4. 3) В блоке 4 проверяем, содержит ли пароль большие и маленькие буквы алфавита, цифры и его длина больше или равно 8. Если да, то переходим в блок 9, затем в блок 12 и завершаем работу. Иначе переходим в блок 5. 4) В блоке 5 проверяем, содержит ли пароль большие буквы и маленькие алфавита и его длина больше или равно 8. Если да, то переходим в блок 10, затем в блок 12 и завершаем работу. Иначе переходим в блок 6. 5) В блоке 6 проверяем, содержит ли пароль цифры и его длина больше или равно 8. Если да, то переходим в блок 11, затем в блок 12 и завершаем работу. Иначе переходим в блок 7 и затем модуль завершает работу.
51 Рис. 2.4.4.1 – Алгоритм модуля проверки надежности пароля. Алгоритм функции проверки алгоритма шифрования точки доступа представлен на рисунке 2.4.4.2. Рис. 2.4.4.2 – Алгоритм считывания метода шифрования точки доступа.
52 2.4.5 Разработка алгоритма модуля обработки устройств, подключенных к точке доступа Данный модуль включает в себя несколько функций: 1) Отображение и сортировка устройств, подключенных к точке доступа Wi-Fi сети. 2) Добавление устройств в список разрешенных и удаление из него. 3) Проверка состояния соединения. Алгоритм функций отображения и сортировки устройств, подключенных к точке доступа представлен на рисунке 2.4.5.1. 1) В блоке 1 получаем адрес шлюза и переходим в блок 2. 2) В блоке 2 проверяем, равен ли адрес шлюза нулю. Если да – переходим в блок 4, затем в блок 17. Иначе переходим в блок 3. 3) В блоке 3 проверяем, было ли прервано соединение. Если да, то переходим в блок 5, затем в блок 6. Иначе переходим в блок 6. 4) В блоке 6 запускается цикл от 0 до 255, если цикл не закончился переходим в блок 7, затем в блок 8. Иначе переходим в блок 17. 5) В блоке 8 проверяем, есть устройство с данным адресом в сети. Если да, то переходим в блок 9, затем в блок 10. Иначе переходим в блок 7. 6) В блоке 10 проверяем, было ли найдено данное устройство в предыдущем цикле. Если да, то переходим в блок в 12, иначе переходим в блок 11, затем в блок 12. 7) В блоке 12 проверяем, есть ли данное устройство в списке разрешенных. Если есть, то переходим в блок 14, затем в блок 15. Иначе переходим в блок 13, затем в блок 15. 8) В блоке 15 проверяем, присутствует ли в памяти результат проверки пароля. Если присутствует, то переходим в блок 16, затем возвращаемся в начало цикла. Иначе – возвращаемся в начало цикла.
53 Рис. 2.4.5.1 – Алгоритм функции отображения, сортировки устройств и проверки соединения. Алгоритм функций добавления устройств в список разрешенных устройств представлен на рисунке 2.4.5.2. 1) В блоке 1 запускаем цикл, который перебирает все устройства, отображенные программным комплексом. Если цикл не завершился, то переходим в блок 2. Иначе завершаем работу модуля. 2) В блоке 2 проверяем, выбрано ли какое-либо устройство из списка отображенных устройств. Если да, то переходим в блок 3, иначе возвращаемся в начало цикла. 3) Из блока 3 переходим в блок 4, затем возвращаемся в начало цикла.
54 Рис. 2.4.5.2 – Алгоритм функции добавления устройства в список разрешенных устройств. Алгоритм функций удаления устройств из списка разрешенных устройств представлен на рисунке 2.4.5.3. 1) В блоке 1 запускаем цикл и перебираем все устройства, находящиеся в списке разрешенных. Если цикл не закончен – переходим в блок 3, иначе переходим в блок 2. 2) В блоке 3 проверяем, выбрано ли данное устройство в списке. Если да, то переходим в блок 4, иначе – возвращаемся в начало цикла. 3) В блоке 4 запускаем цикл и перебираем список разрешенных устройств. Если цикл не закончен, то переходим в блок 5, иначе в блок 1. 4) В блоке 5 проверяем, присутствует ли данное устройство в списке разрешенных. Если присутствует, то переходим в блок 6, затем в блок 7 и возвращаемся в начало цикла. Иначе – возвращаемся в начало цикла. 5) В блоке 2 проверяем, было ли в итоге найдено устройство в списке разрешенных. Если нет, то переходим в блок 8. Затем модуль завершает данную функцию.
55 Рис. 2.4.5.3 – Алгоритм функции удаления устройства из списка разрешенных. 2.4.6 Разработка алгоритма модуля создания отчета. Алгоритм модуля создания отчета представлен на рисунке 2.4.6. 1) В блоке 1 вводим почту и переходим в блок 2. 2) В блоке 2 записываем данные из журнала событий в заготовку письма и переходим в блок 3. 3) В блоке 3 проверяем, корректно ли введена почта. Если да, то переходим в блок 5 и завершаем работу. Иначе переходим в блок 4 возвращаемся в начало функции.
56 Рис. 2.4.6 – Алгоритм модуля создания отчета. 2.5 Выводы по второй главе Была разработана функциональная модель программного комплекса защиты Wi-Fi сетей. Разработаны архитектура и интерфейс программы. Данный программный комплекс включает в себя: модуль сканирования доступных сетей, модуль подключения к сети и отключения от сети, модуль проверки настроек точки доступа Wi-Fi сети, модуль обработки устройств, подключенных к сети, модуль проверки состояния соединения, модуль отправки электронного письма, а также списки доступных сетей, подключенных устройств и журнал событий. Разработаны алгоритмы работы модулей программного средства. 57 3 ПРОВЕДЕНИЕ ЭКСПЕРИМЕНТАЛЬНЫХ ИССЛЕДОВАНИЙ 3.1 Постановка задачи проведения экспериментального исследования, определение методов проведения экспериментальных исследований Для проверки нашего программного комплекса проведем несколько экспериментов. Цель наших экспериментов – реализация защиты Wi-Fi сетей. С помощью программы попробуем обнаружить атаки на точку доступа Wi-Fi сети. Задачи экспериментальных исследований: 1. Определить корректность настроек Wi-Fi сети и сформировать отчет; 2. Создать БД белых MAC адресов, сформировать отчет; 3. Обнаружить разрыв соединения, сформировать отчет; 3.2 Проведение экспериментальных исследований 3.2.1 Эксперимент №1 Проверим работу такого модуля как «проверка надежности пароля». Запустим программу. Рис. 3.1.1 – Стартовое окно программного средства.
58 Затем просканируем доступные Wi-Fi сети. Рис. 3.1.2 – Мониторинг Wi-Fi сети Требуемая для нас точка доступа имеет название «Wi-Fi», пароль – «qNjKoPkk». Подключимся к выбранной точке доступа. Рис. 3.1.3 – Подключение к точке доступа
59 Далее, нажатием кнопки «проверка настроек точки доступа» вызовем исполнение соответствующий функции программного комплекса. Мы получим сообщение. Рис. 3.1.4 – Активация модуля «проверка надежности точки доступа» Зайдя в основное меню программы, мы обнаружим соответствующую надпись в журнале событий. 60 Рис. 3.1.5 – Запись в журнале событий программного комплекса Активируем кнопку «отправить отчет администратору» и отправим отчет на электронную почту «galaxyrus@outlook.com». Рис. 3.1.6 – Окно отправки отчета Спустя некоторое время мы получим электронное письмо на указанный адрес электронной почты.
61 Рис. 3.1.7 – Электронное письмо с отчетом Таким образом, мы пронаблюдали работу модуля программного средства, отвечающего за проверку надежности пароля, а затем отправили отчет на указанную электронную почту. 3.2.2 Эксперимент №2 Проверим работу программного комплекса со списком разрешенных устройств для подключения к точке доступа. Для начала просканируем список сетей. Рис. 3.2.1 – Сканирование доступных сетей Далее подключимся к точке доступа.
62 Рис. 3.2.2 – Подключение к точке доступа Затем запустим монитор устройств и пронаблюдаем следующий процесс. Рис. 3.2.3 – Основное окно программного комплекса
63 Как мы можем заметить, программа отобразила неизвестные нам MAC- адреса, отсутствующие в списке разрешенных, красным цветом. Также в журнале событий появились соответствующие записи. Теперь добавим одно устройство в список разрешенных устройств выделением нужного устройства в списке и нажатием кнопки «добавить устройство в список разрешенных». Рис. 3.2.4 – Добавление устройства в список разрешенных устройств Программа отобразила сообщение, что MAC-адрес успешно добавлен в список разрешенных. Теперь запись с данным устройством помечена зеленым цветом. В журнале событий появилась соответствующая запись.
64 Рис. 3.2.5 – Добавление устройств в список разрешенных Теперь, при подключении к сети данного устройства, программа не будет указывать, что это устройство является чужим в точке доступа. Удалим устройство из списка разрешенных устройств, нажатием соответствующей кнопки. 65 Рис. 3.2.6 – Удаление устройства из списка разрешенных устройств Отправим отчет на электронную почту. Спустя небольшое количество времени мы получим электронное письмо с отчетом. Рис. 3.2.7 – Электронное письмо с отчетом Таким образом, программный комплекс позволяет выявлять «чужих» пользователей, подключенных к точке доступа. Данное свойство помогает обнаружить атаку «человек по середине». 3.2.3 Эксперимент №3 Проверим работу программного комплекса на возможность обнаружения обрыва соединения. Для начала просканируем доступные сети.
66 Рис. 3.3.1 – Сканирование доступных сетей Затем подключимся к нашей точке доступа. Рис. 3.3.2 – Подключение к точке доступа
67 Рис. 3.3.3 – Основное окно программного комплекса Отключим всех пользователей от точки доступа. Журнал событий оповестит об обрыве соединения.
68 Рис. 3.3.4 – Журнал событий оповестил о потере соединения Затем, восстановив соединение, мы отправляем отчет на электронную почту. Рис. 3.3.5 – Отчет, уведомляющий о кратковременной потере соединения Таким образом, программный комплекс имеет возможность обнаружить разрыв соединения, что может свидетельствовать о применении атаки «деаутентификации».
69 3.3 Выводы по третьей главе Была продемонстрирована возможность программного комплекса своевременно обнаружить аномальную активность сети, или же, другими словами, обнаружить признаки применения атаки «человек по середине». Также продемонстрирована возможность программного комплекса проводить проверку надежности пароля от точки доступа Wi-Fi сети.
70 ЗАКЛЮЧЕНИЕ Было проведено исследование терминологии предметной области на основе библиографического поиска. Был проведен анализ угроз безопасности Wi-Fi сети. Самая распространенная угроза – атака «человек по середине». Проведен анализ методов защиты Wi-Fi сети. Выбранный метод защиты – мониторинг точки доступа. Исходя из анализа популярных программных комплексов для мониторинга точки доступа был сделан вывод, что ни одна из этих программ в полной мере не соответствует критериям обеспечения полноценного мониторинга точки доступа. Была поставлена цель разработать программный комплекс, соответствующий всем требованиям. Была разработана функциональная модель программного комплекса защиты Wi-Fi сетей. Разработаны архитектура и интерфейс программы. Данный программный комплекс включает в себя: модуль сканирования доступных сетей, модуль подключения к сети и отключения от сети, модуль проверки настроек точки доступа, модуль обработки устройств, подключенных к сети, модуль проверки состояния соединения, модуль отправки электронного письма, а также списки доступных сетей, подключенных устройств и журнал событий. Разработаны алгоритмы работы модулей программного средства. Была продемонстрирована возможность программного комплекса своевременно обнаружить аномальную активность сети, или же, другими словами, обнаружить признаки применения атаки «человек по середине». Также продемонстрирована возможность программного комплекса проводить проверку настроек точки доступа Wi-Fi сети.
71 СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 1) Wi-Fi сети: проникновение и защита. / электронный ресурс habr.com/ru/post/224955/ 2014. 2) Взлом WPA3: DragonBlood // habr.com 2019. 3) Книга «Взлом Wi-Fi сетей с Kali Linux и BlackArch» // hackware.ru 2015 4) Захват рукопожатий (handshake) в Kali Linux. // hackware.ru 2015 5) Взлом паролей / электронный ресурс /helpugroup.ru/vzlom- parolej-wpa-i-wpa2-wi-fi-pri-pomoshhi-pixie-dust-ataki-cherez-bash-skript- airgeddon/WPA и WPA2 Wi-Fi при помощи Pixie-Dust атаки // helpugroup.ru 2018 6) Атака «злой двойник» , Airgeddon, Атака "злой двойник". / электронный ресурс hackfix.ru/ethicalhacking/ataka-zloj-dvojnik-airgeddon- ugon-parolya-ot-wi-fi/Wi-Fi. // hackfix.ru 7) Безопасность беспроводных сетей. Гордейчик С.В., Дубровин В.В. 2008 г 8) Технология современных беспроводных сетей Wi-Fi. Учебное пособие. МГТУ им. Н. Э. Баумана. 2017 9) Анализ защищенности и мониторинг компьютерных сетей. Методы и средства. Бондарев В.В. 2017 10) Анализ методов защиты беспроводной сети Wi-Fi от известных способов взлома злоумышленником. Варлатая С. К., Рогова О. С., Юрьев Д. Р. // Молодой ученый. — 2015. — №1. — С. 36-37. 11) Беспроводные сети. Топология беспроводной сети / электронный ресурс masters.donntu.org/2014/frt/kurinnoy/library/article4.htm 2014 12) Исследование: незащищенные Wi-Fi-сети по всему миру // электронный ресурс securelist.ru 2016 13) «Wi-Fi-стандарты» / [Электронный ресурс] http://wi-life.ru.- 2013.- http://wi-life.ru/texnologii/wi-fi/wi-fi-standarty.
72 14) «Стандарты беспроводных сетей Wi-Fi» / [Электронный ресурс].- http://qpcs.ru.- http://qpcs.ru/standarty-besprovodnyh-setei.html 15) «WPS- что такое и как настроить?» / [Электронный ресурс].- http://fb.ru.-2014.-http://fb.ru/article/133083/wps---chto-takoe-i-kak-nastroit-kak- nastroit-wps-na-routere. 16) «Сети Wi-Fi: защищай да проверяй» / [Электронный ресурс].- http://www.osp.ru.-2012.-http://www.osp.ru/pcworld/2012/05/13015279/. 17) «WPA2-Enterprise, или правильный подход к безопансости Wi-Fi сети» / [Электронный ресурс]. - http://habrahabr.ru. – 2012. - http://habrahabr.ru/post/150179/. 18) «7 советов по настройке домашнего Wi-Fi роутера» / [Электронный ресурс].- http://blog.kaspersky.ru.-2014.- http://blog.kaspersky.ru/how-to-setup-wi-fi-router/6403/ 19) Банк угроз ФСТЭК / Электронный ресурс bdu.fstec.ru 20) WPA2-Enterprise. Как создать безопасную Wi-Fi-сеть / Электронный ресурс https://wifi-solutions.ru/zashita-korporativnoy-seti-s-wpa2- enterprise/ 21) Sadeghian, Amir. (2013). Analysis of WPS Security in Wireless Access Points. 10.13140/2.1.1869.2164. 22) Атака Флюрера, Мантина и Шамира. / hmong.ru / https://hmong.ru/wiki/Fluhrer,_Mantin_and_Shamir_attack 23) Самые популярные виды кибератак 2021 года. / 10guards.com / https://10guards.com/ru/articles/the-most-common-types-of-cyber-attacks-in-2021/ 24) A new form of initialization vectors in the FMS attack of RC4 in WEP. / YuanZhe Feng, Teng Guo, YuHan Fu, 2021 / https://www.researchgate.net/publication/351018733_A_new_form_of_initializati on_vectors_in_the_FMS_attack_of_RC4_in_WEP 25) Основы построения беспроводных локальных сетей стандарта 802.11. Руководство Cisco / М.: «Вильямс», 2004. — С. 304. — ISBN 5-8459- 0701-2
73 26) Что такое брутфорс? Способы защитить сайт от взлома. / iPipe.ru / https://ipipe.ru/info/chto-takoe-brutfors 27) Кухта А. И. Анализ методов защиты беспроводной сети Wi-Fi // Молодой исследователь Дона. 2020. №2 (23). URL: https://cyberleninka.ru/article/n/analiz-metodov-zaschity-besprovodnoy-seti-wi-fi 28) Habibi Lashkari, Arash & Sendón Varela, Juan & Samadi, Behrang. (2009). A survey on wireless security protocols (WEP, WPA and WPA2/802.11i). 10.1109/ICCSIT.2009.5234856. 29) Nguyen, Thuc D .; Нгуен, Дык HM; Тран, Бао Н .; Ву, Хай; Миттал, Нирадж (август 2008 г.), «Легкое решение для защиты от атак деаутентификации / диссоциации в сетях 802.11», Труды 17-й Международной конференции IEEE по компьютерным коммуникациям и сетям (ICCCN) , Сент-Томас, Виргинские острова, США, стр. . 185-190, CiteSeerX 10.1.1.310.1319 , DOI : 10.1109 / ICCCN.2008.ECP.51 , ISBN 978-1- 4244-2389-7. 30) Rogue AP — фальшивые точки доступа. / habr.com, 2016 / https://habr.com/ru/post/277793/ 31) Сеть компании и MitM. Часть 2. / habr.com, 2019 / https://habr.com/ru/company/acribia/blog/461305/ 32) Wi-Fi Eavesdropping. / doubleoctopus.com / https://doubleoctopus.com/security-wiki/threats-and-tools/wi-fi-eavesdropping/ 33) Kanaujia, Swati. “Rogue Access Point Detection through Statistical Analysis.” (2010). 34) Alsahlany, Ali & Almusawy, Alhassan & Alfatlawy, Zainalabdin. (2018). Risk analysis of a fake access point attack against Wi-Fi network. International Journal of Scientific and Engineering Research. 9. 322-326. 35) Alodat, Iyas, Effect Man-In the Middle on the Network Performance in Various Attack Strategies (May 27, 2021). Available at SSRN: https://ssrn.com/abstract=3863782 or http://dx.doi.org/10.2139/ssrn.3863782
74 36) Что такое атака Man-in-the-Middle (MITM)? Определение и предотвращение / securitylab.ru, 2022 / https://www.securitylab.ru/blog/company/PandaSecurityRus/351898.php 37) Paul, Goutam; Субхамой Майтра (2011). Потоковый шифр RC4 и его варианты. CRC Press. ISBN 9781439831359. 38) Режимы аутентификации беспроводной безопасности Wi-Fi. / coderlessons.com, 2018 / https://coderlessons.com/tutorials/kachestvo- programmnogo-obespecheniia/izuchite-besprovodnuiu-bezopasnost/rezhimy- autentifikatsii-besprovodnoi-bezopasnosti-wi-fi 39) Диаграмма последовательности атак деаутентификации Wi-Fi. / pngwing.com / https://www.pngwing.com/ru/free-png-tebio 40) "WiFi Eavesdropping: Attack Overview and Challenegs." UKEssays. ukessays.com, November 2018. Web. 14 June 2022. https://www.ukessays.com/essays/computer-science/wifi-eavesdropping-attack- overview-and-challenegs.php 41) Veroni, Eleni & Ntantogian, Christoforos & Xenakis, Christos. (2022). A large-scale analysis of Wi-Fi passwords. Journal of Information Security and Applications. 67. 103190. 10.1016/j.jisa.2022.103190. 42) Patel, Manthan & Amritha, P.P & jasper, R.. (2021). Active Dictionary Attack on WPA3-SAE. 10.1007/978-981-33-6977-1_46. 43) Hegde, Seema & Ranjan, Aditya & Raj, Aman & Paul, Krishanu & Santra, Smritimay. (2021). WPA2 Based Wireless Enterprise Configuration. 1-8. 10.1109/ICMNWC52512.2021.9688387. 44) Najar, Zahoor & Mir, Roohe. (2021). Wi-Fi: WPA2 Security Vulnerability and Solutions. Wireless Engineering and Technology. 12. 15-22. 10.4236/wet.2021.122002. 45) [Беспроводное устройство] Как настроить WPS соединение? / asus.com, 2021 / https://www.asus.com/ru/support/FAQ/1011434/ 46) Какова оптимальная длина пароля? / habr.com, 2020 / https://habr.com/ru/company/domclick/blog/515064/
75 47) Сложность пароля. / topuch.ru, 2021 / https://topuch.ru/slojnoste- parolya/index.html 48) Elgili, Mustafa & Ahmed, Awad & Talab, Samani. (2021). WEP and WPA Improvement. 49) Vanhoef, Mathy & Piessens, Frank. (2017). Key Reinstallation Attacks: Forcing Nonce Reuse in WPA2. 10.1145/3133956.3134027. 50) Мониторинг беспроводной сети. / wifi-solutions.com / https://wifi- solutions.ru/monitoring_besprovodnoi_seti/ 51) Most Popular Types of WiFi Cyberattacks. / socialwifi.com / https://socialwifi.com/knowledge-base/network-security/most-popular-types-wifi- cyberattacks/ 52) Top 5 most dangerous Public WIFI attacks. / e-channelnews.com, 2018 / https://www.e-channelnews.com/top-5-most-dangerous-public-wifi-attacks/ 53) Cyber Security Wi-Fi Attacks. / w3schools.com / https://www.w3schools.com/cybersecurity/cybersecurity_wifi_attacks.php 54) Typical Wi-Fi attacks. / splone.com, 2020 / https://splone.com/blog/2020/10/13/typical-wi-fi-attacks/ 55) Attacks on corporate Wi-Fi networks. / ptsecurity.com, 2017 / https://www.ptsecurity.com/ww-en/analytics/attacks-on-corporate-wi-fi-networks/ 56) Mateti, Prabhaker (2005), Hacking Techniques in Wireless Networks: Forged Deauthentication, Department of Computer Science and Engineering, Wright State University. 57) Common Wireless Network Attacks and How to Avoid Them. / en.naneedigital.com / https://en.naneedigital.com/article/common_wireless_network_attacks_and_how_t o_avoid_them 58) Андреев Филипп Игоревич, Трегубов Сергей Вадимович Как работает Wi-Fi // StudNet. 2020. №3. URL: https://cyberleninka.ru/article/n/kak- rabotaet-wi-fi/
76 59) Wi-Fi (Wireless Fidelity) стандарт беспроводной связи. / tadviser.ru 2022 / https://www.tadviser.ru/index.php/%D0%A1%D1%82%D0%B0%D1%82%D1%8 C%D1%8F:Wi-Fi_(Wireless_Fidelity)_- _%D1%81%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82_ %D0%B1%D0%B5%D1%81%D0%BF%D1%80%D0%BE%D0%B2%D0%BE% D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D0%B2%D1%8F%D0%B7% D0%B8_802.11 60) Открытый и небезопасный. 9 простых советов по использованию публичного Wi-Fi. / esetnod32.ru 2019 / https://club.esetnod32.ru/articles/analitika/otkrytyy-i-nebezopasnyy/
77 ПРИЛОЖЕНИЕ А Листинг программного комплекса. using SimpleWifi; using SimpleWifi.Win32; using SimpleWifi.Win32.Interop; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Text.RegularExpressions; using System.Windows.Forms; namespace WiFiScanBrute { /// /// реализовано на базе simplewifi /// https://www.nuget.org/packages/SimpleWifi /// https://github.com/DigiExam/simplewifi /// Алгоритмы аутентификации /// https://github.com/emoacht/ManagedNativeWifi/blob/master/Source/ManagedNati veWifi/AuthenticationAlgorithm.cs /// public partial class UI : Form {
78 Wifi _wifiConnectClient = new Wifi(); // используется при подключения к сети WlanClient _wifiScanClient = new WlanClient(); // используется при сканировании сетей List _wifiNetworks = new List(); public UI() { InitializeComponent(); } private bool connect_check = false; private void UI_Load(object sender, EventArgs e) { _ui_update_connect_state(); } private void button_scan_Click(object sender, EventArgs e) { if (_wifiConnectClient.ConnectionStatus == WifiStatus.Connected) { MessageBox.Show("Сканирование доступно только при отключении от сетей WiFi"); return; } // сканирование сети и получение списка доступных WiFi сетей
79 _wifiNetworks = _wifiScanClient.Interfaces[0].GetAvailableNetworkList(0).ToList(); // формирование модели представления списка доступных сетей var netListVM = _wifiNetworks.Select(x => new { SSID = _getStringForSSID(x.dot11Ssid), AuthAlgo = x.dot11DefaultAuthAlgorithm, SignalQuality = x.wlanSignalQuality.ToString() + "%" }) .OrderBy(x=>x.SSID) .ToList(); // загрузка данных модели представления в UI dataGridView_networks.Rows.Clear(); netListVM.ForEach(x => { dataGridView_networks.Rows.Add(new object[] { x.SSID, x.AuthAlgo, x.SignalQuality }); }); dataGridView_networks.Invalidate(); } static string _getStringForSSID(Dot11Ssid ssid) { return Encoding.ASCII.GetString(ssid.SSID, 0, (int)ssid.SSIDLength);
80 } private void button_disconnect_Click(object sender, EventArgs e) { _wifiConnectClient.Disconnect(); _ui_update_connect_state(false); } private void button_connect_Click(object sender, EventArgs e) { string selectedNetwork = null; // проверка, выбрана ли сеть для подключения if (dataGridView_networks.SelectedRows.Count > 0) selectedNetwork = (string)dataGridView_networks.SelectedRows[0].Cells["SSID"].Value; if (string.IsNullOrEmpty(selectedNetwork.Trim())) { MessageBox.Show($"Не выбрана сеть для подключения"); return; } List aps = _wifiConnectClient.GetAccessPoints(); AccessPoint ap = aps.Where(x => x.Name == selectedNetwork).FirstOrDefault(); AuthRequest ar = new AuthRequest(ap);
81 ar.Password = textBox_password.Text; bool res = ap.Connect(ar, true); _ui_update_connect_state(res); if (!res) { MessageBox.Show($"Подключение к сети {selectedNetwork} - не установлено!"); } else { } } private void _ui_update_connect_state(bool? connected = null) { if ( connected == null && _wifiScanClient.Interfaces[0].InterfaceState == WlanInterfaceState.Connected) { label_status.Text = "Статус: подключен к " + _getCurrentNetworkName(); connect_check = true; //DevicesList devlist = new DevicesList(); //devlist.ShowDialog();
82 } else if (connected != null && connected.Value) { label_status.Text = "Статус: подключен к " + _getCurrentNetworkName(); connect_check = true; } else label_status.Text = "Статус: отключен от сети."; } private string _getCurrentNetworkName() { string res = string.Empty; try { res = _wifiScanClient.Interfaces[0].CurrentConnection.profileName; } catch { } return res; } private void dataGridView_networks_CellContentClick(object sender, DataGridViewCellEventArgs e) { }
83 private void button1_Click(object sender, EventArgs e) { if (connect_check == true) { DevicesList devlist = new DevicesList(); devlist.Show(); } else { MessageBox.Show("Подключитесь к сети!"); } } private void button2_Click(object sender, EventArgs e) { if(connect_check == true) { DateTime dateTime = new DateTime(); var password = textBox_password.Text; string result = ""; var regex = new Regex(@"([a - z])"); var regex2 = new Regex(@"([a-zA-Z])"); var regex1 = new Regex(@"([0 - 9])"); var regex3 = new Regex(@"([!,@,#,$,%,^,&,*,?,_,])"); if (password.Length >= 8 && regex1.IsMatch(password) && regex2.IsMatch(password) && regex3.IsMatch(password)) { result = (DateTime.Now.ToString() + "Пароль удовлетворяет всем условиям.");
84 //return; } if (password.Length >= 8 && regex1.IsMatch(password) && regex2.IsMatch(password)) { result = (DateTime.Now.ToString() + " Пароль не содержит спец. символы."); //return; } if (password.Length >= 8 && regex2.IsMatch(password)) { result = (DateTime.Now.ToString() + " Пароль не содержит спец. сиволы и цифры."); //return; } if (password.Length >= 8 && regex1.IsMatch(password) == true) { result = (DateTime.Now.ToString() + " Пароль не содержит спец. сиволы, большие буквы алфавита."); //return; } if (password.Length < 8 && regex.IsMatch(password)) { result = (DateTime.Now.ToString() + " Пароль не содержит спец. сиволы, цифры, большие буквы алфавита, длина меньше 8 знаков."); //return; } MessageBox.Show("Готово! Проверьте логи событий."); DevicesList.Result_pas = result; }
85 else { MessageBox.Show("Нет подключения к сети"); } } } } using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Net.NetworkInformation; using System.Net.Sockets; using System.Net; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using Timer = System.Threading.Timer; namespace WiFiScanBrute { public partial class DevicesList : Form { public DevicesList() {
86 InitializeComponent(); } public List devList = new List(); public bool Try_connect = true; static public string Result_pas = ""; private void DevicesList_Load(object sender, EventArgs e) { listBox1.Items.Add("Этот компьютер"); devList.Add("0"); listView1.View = View.Details; listView1.Clear(); listView1.GridLines = true; listView1.FullRowSelect = true; listView1.BackColor = System.Drawing.Color.White; listView1.Columns.Add("IP", 100); listView1.Columns.Add("Имя хоста", 150); listView1.Columns.Add("MAC адрес", 150); listView1.Columns.Add("Обнаружено", 150); Ping_all(); timer1.Enabled = true; } static string NetworkGateway() { string ip = null; foreach (NetworkInterface f in NetworkInterface.GetAllNetworkInterfaces()) {
87 if (f.OperationalStatus == OperationalStatus.Up) { foreach (GatewayIPAddressInformation d in f.GetIPProperties().GatewayAddresses) { ip = d.Address.ToString(); } } } return ip; } public void Ping_all() { string gate_ip = NetworkGateway(); try { string[] array = gate_ip.Split('.'); if (Try_connect == false) { Try_connect = true; listBox2.Items.Add(DateTime.Now.ToString() + " Соединение восстановлено."); } for (int i = 2; i <= 255; i++) { string ping_var = array[0] + "." + array[1] + "." + array[2] + "." + i;
88 //время в мс Ping(ping_var, 1, 4000); } } catch { listBox2.Items.Add(DateTime.Now.ToString() + " Ошибка. Соединение потеряно..."); Try_connect = false; devList.Clear(); } } public void Ping(string host, int attempts, int timeout) { for (int i = 0; i < attempts; i++) { new Thread(delegate () { try { System.Net.NetworkInformation.Ping ping = new System.Net.NetworkInformation.Ping(); ping.PingCompleted += new PingCompletedEventHandler(PingCompleted); ping.SendAsync(host, timeout, host); } catch {
89 } }).Start(); } } private void PingCompleted(object sender, PingCompletedEventArgs e) { DateTime dateTime = new DateTime(); string ip = (string)e.UserState; if (e.Reply != null && e.Reply.Status == IPStatus.Success) { string hostname = GetHostName(ip); string macaddres = GetMacAddress(ip); string[] arr = new string[4]; //параметры которые идут в ListView arr[0] = ip; arr[1] = hostname; arr[2] = macaddres; arr[3] = DateTime.Now.ToLongTimeString(); ListViewItem item; if (this.InvokeRequired) { this.Invoke(new Action(() => { item = new ListViewItem(arr); listView1.Items.Add(item);
90 for (int i = 0; i < listView1.Items.Count; i++) { for (int j = 0; j < listBox1.Items.Count; j++) { if (listView1.Items[i].SubItems[2].Text == listBox1.Items[j].ToString()) { listView1.Items[i].BackColor = Color.Aquamarine; break; } else { listView1.Items[i].BackColor = Color.OrangeRed; } } } string comparelist = arr[0] + " | " + arr[2]; bool comp = false; for (int i = 0; i < devList.Count; i++) { if (comparelist == devList[i]) { break; } else { if (i == (devList.Count - 1)) { devList.Add(comparelist);
91 listBox2.Items.Add(DateTime.Now.ToString() + " Обнаружено новое устройство в сети: " + comparelist); for (int j = 0; j { if(listBox1.Items[j].ToString() == arr[2]) { listBox2.Items.Add("Данный MAC адрес присутствует в списке разрешенных устройств."); comp = true; break; } if((j == (listBox1.Items.Count -1)) && comp == false) { listBox2.Items.Add("Данный MAC адрес отсутствует в списке разрешенных устройств!"); } } } } } if (Result_pas != "") { listBox2.Items.Add(Result_pas); Result_pas = ""; } })); } } else
92 { } } public string GetHostName(string ipAddress) { try { IPHostEntry entry = Dns.GetHostEntry(ipAddress); if (entry != null) { return entry.HostName; } } catch (SocketException) { } return null; } //получаем MAC адрес public string GetMacAddress(string ipAddress) { string macAddress = string.Empty; System.Diagnostics.Process Process = new System.Diagnostics.Process(); Process.StartInfo.FileName = "arp"; Process.StartInfo.Arguments = "-a " + ipAddress; Process.StartInfo.UseShellExecute = false;
93 Process.StartInfo.RedirectStandardOutput = true; Process.StartInfo.CreateNoWindow = true; Process.Start(); string strOutput = Process.StandardOutput.ReadToEnd(); string[] substrings = strOutput.Split('-'); if (substrings.Length >= 8) { macAddress = substrings[3].Substring(Math.Max(0, substrings[3].Length - 2)) + "-" + substrings[4] + "-" + substrings[5] + "-" + substrings[6] + "-" + substrings[7] + "-" + substrings[8].Substring(0, 2); return macAddress; } else { return "Этот компьютер"; } } private void timer1_Tick(object sender, EventArgs e) { listView1.Items.Clear(); Ping_all(); } private void label1_Click(object sender, EventArgs e) {
94 } private void button1_Click(object sender, EventArgs e) { for (int i = 0; i < listView1.Items.Count; i++) { if (listView1.Items[i].Selected == true) { listBox1.Items.Add(listView1.Items[i].SubItems[2].Text); MessageBox.Show("MAC адрес успешно добавлен в список разрешенных: " + listView1.Items[i].SubItems[2].Text); listBox2.Items.Add(DateTime.Now.ToString() + " MAC адрес добавлен в список разрешенных: " + listView1.Items[i].SubItems[2].Text); } } } private void button2_Click(object sender, EventArgs e) { DateTime dateTime = new DateTime(); for (int i = 0; i { Data_jump.rep.Add(listBox2.Items[i].ToString()); } sending snd = new sending(); snd.ShowDialog(); } private void button3_Click(object sender, EventArgs e) {
95 } private void button4_Click(object sender, EventArgs e) { bool chck_res = false; for (int i = 0; i < listView1.Items.Count; i++) { if (listView1.Items[i].Selected == true) { for (int j = 0; j < listBox1.Items.Count; j++) { if (listView1.Items[i].SubItems[2].Text == listBox1.Items[j].ToString()) { chck_res = true; listBox1.Items.RemoveAt(j); MessageBox.Show("MAC адрес удален из списка разрешенных MAC устройств"); listBox2.Items.Add(DateTime.Now.ToString() + " MAC адрес удален из списка разрешенных: " + listView1.Items[i].SubItems[2].Text); } } } } if(chck_res == false) { MessageBox.Show("Данного MAC адреса нет в списке разрешенных."); }
96 } } } using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Net.Mail; using System.Net; using System.Windows.Forms; namespace WiFiScanBrute { public partial class sending : Form { public sending() { InitializeComponent(); } private void sending_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e)
97 { try { // отправитель - устанавливаем адрес и отображаемое в письме имя MailAddress from = new MailAddress("oieutyoieuoyttytoiyty@outlook.com", "Monitor_info"); // кому отправляем MailAddress to = new MailAddress(textBox1.Text); // создаем объект сообщения MailMessage m = new MailMessage(from, to); // тема письма m.Subject = "Отчет " + DateTime.Now.ToString(); // текст письма string reporting = ""; for (int i = 0; i < Data_jump.rep.Count; i++) { reporting += Data_jump.rep[i]; reporting += "\t"; } m.Body = " " + reporting + " "; // письмо представляет код html m.IsBodyHtml = true; // адрес smtp-сервера и порт, с которого будем отправлять письмо SmtpClient smtp = new SmtpClient("smtp-mail.outlook.com", 587); // логин и пароль smtp.Credentials = new NetworkCredential("oieutyoieuoyttytoiyty@outlook.com", "qwerty12345"); 98 smtp.EnableSsl = true; smtp.Send(m); label2.Text = ("Отчет отправлен на адрес."); } catch { label2.Text = ("Ошибка. Неправильно введен E-mail адрес."); } } } } using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WiFiScanBrute { static class Data_jump { public static List rep = new List(); }
|