Зміст статті
тизер
Почну з невеликого тізера. У наступному номері у нас буде матеріал, в якому ми зібрали самі різні утиліти з останніх атак конференцій. Переглядаючи його, я натрапив на утиліти HoneyBadger & PushPin і подумав: «Де ж ви були раніше?» Поясню: за останній час мене не раз питали, як можна визначити місце розташування якогось користувача. Причини у людей різні, але мета завжди була одна - зрозуміти, де фізично знаходиться людина. Точкою на карті, не інакше :).
визначення місця розташування
Тут треба сказати, що раніше можливості дізнатися розташування були дуже убогі. Можна було хіба що заманити користувача на потрібний ресурс, визначити його IP-адресу і по мізерним GeoIP-баз з'ясувати в кращому випадку місто, з якого об'єкт, що цікавить підключений. Втім, як нам відомо, знання IP дуже часто взагалі нічого не дає. Особливо коли сучасні користувачі вже спокійно юзают весь арсенал засобів для анонімізації: проксі, VPN, Tor і інші інструменти.
Все змінилося з появою в HTML5 геолокаційні можливостей. Тепер будь-який сайт з лякаючою точністю може визначити, де знаходиться користувач, - зрозуміло, якщо той це дозволив. Вимальовується вже цілком робочий сценарій: якщо заманити користувача на сайт з потрібним JS-кодом і той через незнання дозволить визначення місця розташування, цілком можна отримати досить точні (а часом дуже точні) його координати.
творці HoneyBadger пішли далі і написали цілий фреймворк, який допомагає обчислити місце розташування користувача. Свою розробку вони представили на конференції ShmooCon 2013. Загальний принцип роботи я вже описав: за допомогою HTML5 і Java-аплетів браузер користувача змушують розкрити свій реальне місце розташування, навіть якщо користувач використовує анонімізація (кому потрібен його IP?).
Як це працює
Весь код написаний на PHP і Python, тому їх інтерпретатори потрібні для установки необхідної серверної частини HoneyBadger. Також буде потрібно SQLite. Власне, описувати процедуру розгортання самого звичайного застосування немає сенсу - головне, скачавши репозиторій з кодом, ти вже через п'ять хвилин отримаєш доступ до адмінки утиліти. API фреймворка має різні способи отримання даних про розташування клієнта, але почнемо з веб-агентів. Тут є три варіанти:
- Web_http. Генерується звичайна HTML-сторінка з тегом . Коли користувач заходить на сайт або відкриває HTML-лист, відбувається звернення до веб-сервера за картинкою і в балках виявляється його IP. Відповідно, IP пробивається по базі GeoIP.
- Web_html5. На сайті генерується сторінка, яка використовує механізми HTML5 для геолокації. Якщо користувач зайде на таку сторінку і настройки браузера дозволять видати його розташування, його координати виявляться в нашому розпорядженні. Запит до API здійснюється знову ж через тег .
- Web_applet. Це варіант працює не завжди, так як використовує Java. Сенс в тому, що за допомогою аплету збирається інформація про бездротових пристроях навколо клієнта. Дані про точках доступу навколо з великою ймовірністю дають точне розташування за допомогою Google Geolocation API.
Модулі для Metasploit
Для зручності додаткові способи були реалізовані у вигляді модулів для Метасплоіта. З їх допомогою спрощується створення HTML-листи або, наприклад, PDF'кі.
- badger_smtpimg. Просте створення HTML-листи, яке відправляється користувачеві. Від користувача не потрібно переходити на якийсь сайт, але визначити можна тільки IP (і тільки за умови рендеринга HTML його поштовим клієнтом).
- badger_pdftrack. Як нескладно здогадатися, для обчислення користувача спеціальним чином генерується PDF-файл з ін'ектірованним JS-кодом (AcroJS), який намагається запустити браузер і виконати в ньому знайомі прийоми геолокації.
Думаю, що вже цього в найпростіших випадках буде досить, щоб при вдалому збігу обставин обчислити користувача. Але розробники HoneyBadger пішли далі і реалізували ще парочку більш агресивних способів постексплуатаціі. По суті, розробники відповіли на питання: як визначити, де знаходиться користувач, якщо є доступ до віддаленого комп'ютера? (До речі, ось тобі ще один спосіб знайти вкрадений бук, якщо до нього залишився якийсь SSH / RDP-доступ.) Деякі з таких модулів:
- badger_wlansurvey. Включає на віддалений хост Wi-Fi-картку, визначає точки доступу навколо і обчислює координати за допомогою Google Geolocation API.
- badger_mobilescrape. Витягає координати з резервної копії iPhone / iPad, який зберігається в iTunes.
- badger_browserscrape. Він спробує знайти дані про розташування в історії Firefox'а (в URL до тих же самим Google Maps часто фігурують параметри довготи і широти).
Цей плагін визначає розташування за сигналом від сусідніх точок доступу Wi-Fi
Додаткова штука
Це ще не все. Разом з HoneyBadger розробники показали ще й утиліту PushPin - Python-скрипт, який намагається в залежності від заданих координат витягти з соціальних мереж обговорення, зображення і відео, які могли б допомогти на етапі фізичної розвідки при проведенні тесту на проникнення. Для роботи треба просто задати широту і довготу шуканої мети в градусах (власне, розташування користувача) і радіус сканування в кілометрах - після чого PushPin надасть всі твіти, відео з YouTube і зображення з Flickr, які запостив з заданої області.
Подивився, що вона знайшла для мене. Задумався :).
Переглядаючи його, я натрапив на утиліти HoneyBadger & PushPin і подумав: «Де ж ви були раніше?Кому потрібен його IP?
По суті, розробники відповіли на питання: як визначити, де знаходиться користувач, якщо є доступ до віддаленого комп'ютера?