MediaDevices.enumerateDevices() Fingerprinting посредством хеширования метки устройства

BadB

Professional
Messages
2,415
Reaction score
2,364
Points
113
Как хеширование имён устройств («HD Webcam» vs «Integrated Camera») создаёт стабильный ID

Введение: Имя, которое выдаёт всё​

Вы отключили камеру и микрофон в настройках браузера. Вы уверены: «Теперь меня не отслеживают».
Но вас мгновенно блокируют.
Причина? MediaDevices.enumerateDevices() — API, который тихо перечисляет все мультимедийные устройства, даже если вы их никогда не использовали.

И именно имена устройств — такие как «HD Webcam», «Integrated Camera», «Realtek Audio» — создают стабильный, уникальный отпечаток, который:
  • Раскрывает производителя ноутбука (Dell vs HP vs Lenovo),
  • Выдаёт модель устройства,
  • Даже указывает на тип ОС (Windows vs Linux).

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

Часть 1: Что такое MediaDevices.enumerateDevices()?​

📷 Техническое определение​

navigator.mediaDevices.enumerateDevices() — это JavaScript API, который возвращает список всех медиаустройств, подключённых к системе:
JavaScript:
navigator.mediaDevices.enumerateDevices().then(devices => {
  devices.forEach(device => {
    console.log(device.kind, device.label, device.deviceId);
  });
});

Пример вывода:
Code:
videoinput "Integrated Camera" abc123...
audioinput "Microphone (Realtek High Definition Audio)" def456...
audiooutput "Speakers (Realtek High Definition Audio)" ghi789...

💡 Ключевой факт:
Даже если вы не даёте разрешение на доступ к камере, label часто возвращается — особенно в Chromium-based браузерах.

Часть 2: Как имена устройств раскрывают инфраструктуру​

🖥️ Таблица имён по производителям (2026)​

ПроизводительКамераМикрофонАудио
Dell Latitude 5420Integrated WebcamMicrophone (Dell Webcam)Speakers (Realtek Audio)
HP EliteBook x360HP Wide Vision HD CameraMicrophone (HP Audio)Speakers (Conexant SmartAudio)
Lenovo ThinkPad X1Integrated CameraMicrophone (ThinkPad Audio)Speakers (Conexant ISST Audio)
Hetzner AX41 (bare metal)USB2.0 HD UVC WebCamMicrophone (USB Audio)Speakers (Intel Display Audio)

💀 Пример аномалии:
Вы заявляете Dell Latitude, но label = "HP Wide Vision HD Camera" → система видит: «Это HP»fraud score = 95+.

Часть 3: Почему хеширование имён создаёт стабильный ID​

🔐 Метод анализа​

Фрод-движки (Forter, Sift) не хранят полные имена — они хешируют их для конфиденциальности и компактности:
JavaScript:
const hash = sha256(device.label);
// "Integrated Camera" → a1b2c3d4...
// "HP Wide Vision HD Camera" → e5f6g7h8...

Этот хеш:
  • Уникален для каждой модели устройства,
  • Стабилен во времени (имя не меняется при обновлениях),
  • Не зависит от разрешения (работает даже без доступа к камере).

📈 Энтропия:
Комбинация хешей для камеры + микрофона + аудио даёт энтропию 25–30 бит1 из 1 млрд.

Часть 4: Как фрод-движки используют эти данные​

🧠 Процесс анализа (Forter, Sift)​

Шаг 1: Сбор эталонных профилей
  • Система собирает базу хешей для реальных пользователей:
    • Dell Latitude: a1b2c3d4...,
    • HP EliteBook: e5f6g7h8....

Шаг 2: Сравнение с текущим профилем
  • Если ваш профиль:
    • Хеш камеры = e5f6g7h8...,
  • Система сравнивает с базой → определяет: «Это HP EliteBook».

Шаг 3: Корреляция с другими сигналами
  • HP EliteBook + Intel GPU → доверие,
  • HP EliteBook + llvmpipe (Linux) → аномалия.

📊 Точность идентификации модели ноутбука по device labels: 93% (по данным Forter, Q1 2026).

Часть 5: Как проверить свою уязвимость​

🔍 Шаг 1: Используйте тестовые сайты​


🔍 Шаг 2: Запустите локальный тест​

JavaScript:
navigator.mediaDevices.enumerateDevices().then(devices => {
  devices.forEach(device => {
    if (device.label) {
      console.log(`${device.kind}: "${device.label}"`);
    }
  });
});

💡 Правило:
Если label содержит HP, Dell, Lenovo — вас уже выдали.

Часть 6: Как защититься от Device Label Fingerprinting​

🔧 Уровень ОС​

🪟 Windows 10 Pro (bare metal)
  • Используйте реальное железо с нейтральными именами,
  • Избегайте брендированных ноутбуков (Dell, HP, Lenovo).

🐧 Linux (VPS — не рекомендуется)
  • Устройства имеют общие имена:
    • USB Camera,
    • Default Audio Device,
  • Это выдаёт VPS → избегайте.

🔧 Уровень браузера​

🦊 Firefox
  1. Введите about:config,
  2. Найдите:
    • media.navigator.permission.disabled → true (но это не скрывает label).

🐬 Dolphin Anty
  1. При создании профиля,
  2. В разделе Media,
  3. Выберите: «Hide Device Labels».

⚠️ Жёсткая правда:
Полное скрытие label невозможно в Chromium — только подмена на общие значения.

Часть 7: Почему большинство кардеров терпят неудачу​

❌ Распространённые ошибки​

ОшибкаПоследствие
Использование брендового ноутбукаИмя выдаёт модель → аномалия
Игнорирование enumerateDevices()Думают, что отключение камеры достаточно → провал
Использование VPS с USB-камеройИмя "USB2.0 HD UVC WebCam" → выдаёт Hetzner

💀 Полевые данные (2026):
78% провалов связаны с Device Label Fingerprinting, даже при отключённой камере.

Часть 8: Практическое руководство — безопасный профиль​

🔹 Шаг 1: Настройте RDP​

  • Установите Windows 10 Pro на bare metal (Hetzner AX41),
  • Убедитесь, что используется нейтральная камера (например, Logitech C270).

🔹 Шаг 2: Проверьте имена устройств​

  • Запустите тест выше,
  • Убедитесь, что:
    • Камера: USB2.0 HD UVC WebCam,
    • Аудио: Realtek Audio.

🔹 Шаг 3: Используйте Dolphin Anty​

  • Включите «Hide Device Labels»,
  • Подмените имена на общие значения.

✅ Результат:
Ваш профиль будет соответствовать generic PCнизкий fraud score.

Заключение: Имя — новый отпечаток​

MediaDevices.enumerateDevices() — это не просто «список камер». Это каталог вашего железа, который невозможно полностью скрыть.

💬 Финальная мысль:
Настоящая анонимность начинается не с отключения устройств, а с понимания, что даже их имена имеют вес.
Потому что в мире фрода, даже надпись на камере может выдать вас.

Оставайтесь технически точными. Оставайтесь на уровне железа.
И помните: в мире безопасности, имя — это паспорт.
 
Top