Как узнать точное расположение пользователя
В этой статье будет показано, как с помощью социальной инженерии узнать точное (до дома) расположение пользователя. Это будет важно и тем, кто хочет защититься от подобных атак — вы увидите, чего категорически нельзя делать на ненадёжных сайтах и узнаете, какую информацию о вас может получить лицо, приславшее вам ссылку.
Описанная атака сработает, если пользователь откроет нашу ссылку с мобильного телефона (для точного определения расположения нужен GPS на устройстве «жертвы») и разрешит сайту использовать расположение пользователя. Независимо от того, включён ли GPS, при открытии пользователем ссылки мы получим следующую информацию:
- Операционная система
- Платформа
- Количество ядер процессора
- Объем оперативной памяти — приблизительные результаты
- Разрешение экрана
- Информация о GPU
- Имя и версия браузера
- Публичный IP-адрес
Если будут получено разрешение на доступ к расположению, мы можем получить:
- долготу
- широту
- точность
- высоту над уровнем моря — не всегда доступна
- направление — доступно только если пользователь движется
- скорость — доступно только если пользователь движется
Алгоритм действий очень простой:
- Мы запускаем фишинговый сайт, который под предлогом, например, поиска новых знакомств рядом запрашивает разрешение на определение расположения пользователя.
- Отправляем пользователю ссылку на наш сайт.
- Если пользователь даёт разрешение сайту на получение его местоположения, то мы узнаём с точностью до десятков метров, где он сейчас находится.
- Даже если пользователь не даёт разрешения, но кликает ссылку, то мы узнаём его IP адрес, модель веб-браузера и некоторые другие характеристики его телефона или компьютера.
Программы для поиска расположения пользователя
Нам понадобятся две программы:
- seeker — запускает фишинговый сайт и анализирует полученные данные.
- ngrok — на тот случай, если у вас нет белого IP адреса (или хостинга); эта программа позволяет создавать ссылки на ваш сайт, благодаря чему сайт на вашем локальном компьютере можно открыть в Интернете. Больше подробностей об этой программе вы найдёте в статье «Как без белого IP локальный веб-сервер сделать доступным из Интернета».
Я покажу пример атаки из Kali Linux, если у вас другой дистрибутив, то инструкции по установке смотрите по ссылкам выше в карточках этих программ.
Установка seeker в Kali Linux
sudo apt update sudo apt install python3 python3-pip php ssh git pip3 install requests git clone https://github.com/thewhiteh4t/seeker cd seeker/ python3 ./seeker.py -h
Установка ngrok в Kali Linux
wget `curl -s https://ngrok.com/download | grep -o -E 'https://bin.equinox.io/c/[A-Za-z0-9]{4,}/ngrok-stable-linux-amd64.zip'` unzip ngrok-stable-linux-amd64.zip chmod +x ./ngrok ./ngrok -h
Инструкция по использованию seeker
Далее всё очень просто, запускаем seeker:
python3 ./seeker.py -t manual
На выбор присутствует два готовых шаблона:
[+] Select a Template : [1] NearYou [2] Google Drive
Допустим, выбираю первый.
Затем выводится информация:
[+] Starting PHP Server......[ Success ] [+] Waiting for User Interaction...
В ней сказано, что PHP сервер успешно запущен и ожидается взаимодействие с пользователем.
Теперь для создания тоннеля из Интернета до нашего локального сервера, в другом окне запускаем ngrok:
./ngrok http 8080
Сгенерирована ссылка https://1fa595b3.ngrok.io. Её нужно отправить «жертве». Предположим, пользователь открыл ссылку на настольном компьютере. В этом случае он увидит:
Страница выглядит очень профессионально, красивая анимация. Надписи говорят о том, что этот сервис позволяет найти людей рядом с вами и завести новых друзей. Предположим, пользователь нажал кнопку «Continue»:
Возникает запрос на доступ к местоположению.
В окне seeker мы видим следующее:
Мы узнали IP и User Agent пользователя, но данные о местоположении не получены, просто потому, что у компьютера нет GPS модуля:
[-] Location information is unavailable
Откроем теперь фишинговую ссылку на мобильном телефоне.
Запрос данных о местоположении:
В этот раз получены данные локации:
[+] Location Information : [+] Latitude : 12.458610728197513 deg [+] Longitude : 99.97342079401619 deg [+] Accuracy : 3.4233226776123047 m [+] Altitude : 65.55902099609375 [+] Direction : Not Available [+] Speed : 0.23704902827739716 m/s
Для удобство дана ссылка на Гугл Карты: https://www.google.com/maps/place/12.458610728197513+99.97342079401619
Также сказано, что данные сохранены в файл по пути ./seeker/db/results.csv (относительно папки с файлами seeker). В этом файле хранятся все данные, в том числе с предыдущих атак.
Что можно улучшить для реальной атаки
Несмотря на полную реализацию и упаковку в удобную и простую программу, это скорее инструменты для демонстрации рабочего концепта атаки, чем для реальной атаки.
При выполнении реальной атаки можно сделать следующие улучшения:
- перевести шаблоны фишинговых сайтов на язык целевого пользователя
- создать свои собственные шаблоны
- использовать сократитель ссылок
- использовать подходящий для легенды домен или субдомен
- если продолжать использовать ngrok, то хотя бы переместить шаблоны в подпапку, чтобы в ссылке присутствовал подходящий по ситуации путь
- усовершенствовать алгоритм: если данные местоположения не получены, то написать пользователю рекомендацию открыть ссылку с телефона
- записывать все случаи, когда ссылка была открыта, даже если пользователь не нажал кнопку (можно узнать хотя бы IP адрес пользователя)