Представлено нову техніку прихованої ідентифікації системи та браузера

Група дослідників із Грацького технічного університету (Австрія), раніше відома розробкою методів атак MDS, NetSpectre и Throwhammer, розкрила відомості про нову техніку аналізу сторонніми каналами, що дозволяє визначити точну версію браузера, використовувану операційну систему, архітектуру CPU і застосування доповнень для боротьби з прихованою ідентифікацією.

Для визначення зазначених параметрів достатньо виконання у браузері підготовленого дослідниками JavaScript коду. На практиці метод може застосовуватися не тільки як додаткове джерело для непрямої ідентифікації користувача, але і для визначення параметрів системного оточення для цільового застосування експлоїтів з урахуванням ОС, архітектури та браузера. Метод ефективний у тому числі при застосуванні браузерів з реалізацією механізмів блокування прихованої ідентифікації, таких як Tor Browser. Вихідні тексти прототипу коду з реалізацією методу опубліковано під ліцензією MIT.

Визначення проводиться на основі виділення властивих для різних браузерів шаблонів стану властивостей JavaScript і характеристик часу виконання операцій, що залежать від особливостей роботи JIT, CPU і механізмів виділення пам'яті. Визначення властивостей здійснюється через створення списку всіх об'єктів, доступних з JavaScript. Як виявилося, кількість об'єктів безпосередньо корелює з браузерним двигуном і його версією.

function getProperties(o) {
var result = [];
while (o !== null) {
result = result.concat(Reflect.ownKeys(o));
o = Object.getPrototypeOf(o);
}
повернути результат;
}

Наприклад, для Firefox в документації заявлена ​​підтримка 2247 властивостей, у той час як реальна кількість певних властивостей з урахуванням недокументованих складає 15709 (у Tor Browser - 15639), для Chrome заявлено 2698 властивостей, а реально пропонується 13570 (в Chrome для Android - 13119) . Число та значення властивостей змінюються від версії до версії браузера та при застосуванні різних операційних систем.

Значення та наявність тих чи інших властивостей можна використовувати визначення типу ОС. Наприклад, у Kubuntu властивість window.innerWidth виставляється значення 1000, а Windows 10 — 1001. У Windows доступна властивість window.navigator.activeVRDisplays, а Linux його немає. Android надається безліч специфічних викликів, але немає window.SharedWorker. Для ідентифікації операційної системи пропонується використовувати аналіз параметрів WebGL, стан яких залежить від драйверів. Крім того, виклик WEBGL_debug_renderer_infoextension дозволяє отримати інформацію про рушійне зображення OpenGL, який для кожної операційної системи різний.

Для визначення CPU застосовується оцінка відмінностей у часі виконання різних типових блоків коду, обробка яких залежить від архітектури набору команд з урахуванням поведінки JIT (визначається скільки регістрів CPU буде задіяно і в яких випадках JIT згенерує ефективний код з оптимізаціями та залученням розширених інструкцій, а коли ні ). Для визначення типу системи розподілу пам'яті та операційної системи також вимірюється відмінність часу виділення пам'яті для різних структур, якими можна судити про розмір блоків пам'яті.

Визначені під час виконання скрипту параметри порівнюються з еталонними значеннями, властивими для протестованих оточень. У ході перевірки розроблена техніка дозволила точно визначити 40 різних тестових оточень, визначивши версії браузерів, виробника CPU, застосовувану операційну систему і факт запуску на реальному обладнанні або у віртуальній машині.

Окремо наголошується на можливості визначення браузерних доповнень і навіть окремих налаштувань доповнень, у тому числі доповнень призначених для блокування методів прихованої ідентифікації або активності приватного режиму перегляду. У контексті запропонованого методу такі доповнення стають ще одним джерелом даних для ідентифікації. Доповнення визначаються оцінкою спотворень параметрів вихідного оточення, вносяться доповненнями.

З інших методів ідентифікації можна назвати облік таких непрямих даних, як Роздільна здатність екрану, список підтримуваних MIME-типів, специфічні параметри в заголовках (HTTP / 2 и HTTPS), аналіз встановлених плагінів та шрифтів, доступність певних Web API, специфічні для відеокарт Особливості малювання за допомогою WebGL та Полотно, маніпуляції з CSS, аналіз особливостей роботи з мишею и клавіатурою.

Джерело: opennet.ru

Додати коментар або відгук