Микрофон ноутбука выдаёт пароль: атака восстанавливает набор клавиш с 85% точностью
На pwn.guide вышел гайд: микрофон ноутбука по записи нажатий клавиш позволяет CNN на 250 тыс. параметров восстанавливать набираемый текст с точностью 82–88%, а top-3 предсказаний — 95–97%. Угроза для паролей реальная — что включить в защиту прямо сегодня.
Новости TprogerМикрофон, который вы добровольно держите включённым во время видеозвонков, по 6 часов в день записывает каждое нажатие клавиши на вашей клавиатуре — включая пароль, который вы набрали в alt-tab перед логином в продакшен-БД. На pwn.guide вышел подробный гайд, как восстановить набираемый текст из аудио ноутбучного микрофона с точностью 82–88% на одной CNN на 250 тыс. параметров, тренируемой на ноутбуке за 5 минут.
Атака не теоретическая. Первая практическая демонстрация вышла в 2004 году; в 2005 поверх неё надстроили языковые модели. В 2023 исследовательская группа из университетов Surrey, Durham и Royal Holloway показала 95%+ top-1 точности (то есть угадывания клавиши с первой попытки) на MacBook Pro — по записи со смартфона на расстоянии 17 см. Изменилось одно — теперь обучить такую модель может любой разработчик за полдня на собственном ноутбуке.
Главное
Ключевые выводы
Реальная угроза. Не подложенный микрофон в офисе, а Zoom, Teams, Meet, Discord, голосовые сообщения, заражённые браузерные вкладки, ноутбук в кафе. Везде, где вы сами включили микрофон.
Точность. Мини-CNN на 250 тыс. параметров: top-1 82–88%, top-3 95–97% на 35 классах (буквы + знаки) при 3000 семплов на пару пользователь/клавиатура.
Пароли особенно уязвимы. Языковая модель не помогает (пароли не из словаря), зато сужается перебор: top-3 предсказаний на символ → 3⁸ = 6 561 кандидат для 8-символьного пароля. Online brute force против большинства сервисов.
Что работает в защите. Мьют микрофона перед вводом пароля + менеджер паролей (auto-fill полностью убирает акустический сигнал) + аппаратные ключи (FIDO2/YubiKey).
Что НЕ работает. «Печатать тише», случайный ритм набора, программные шумодавы (RNNoise, Krisp). Шумодавы оптимизированы под речь — клик клавиши проходит почти без потерь.
Что именно слышит микрофон
Когда вы нажимаете клавишу A, микрофон ловит три события: push (механический клик дна хода клавиши, ~5–10 мс, широкий спектр), release (возврат купола вверх, ниже по амплитуде, через 10–30 мс) и — главное — резонанс корпуса. Удар по клавише заставляет шасси ноутбука кратко звенеть на собственных частотах, а разные клавиши находятся на разных расстояниях от резонансных узлов и возбуждают чуть разные моды.
Эти отличия микроскопические — человек на слух разные клавиши не различит — но они стабильные и повторяемые. Этого достаточно, чтобы маленькая нейросеть научилась их разделять. Плюс поведенческий бонус: каждый человек жмёт клавиши пальцами под чуть разными углами и с разной силой — это добавляет ещё один разделяющий слой.
Релевантная полоса частот — 400 Гц … 12 кГц. Ниже — комнатный шум и кондиционер; выше — тишина и собственный шум микрофона. Стандартного 44,1 кГц моно более чем достаточно: фирменный микрофон не нужен.
Что собирает атакующий
Авторы pwn.guide публикуют полный пайплайн на Python — около 200 строк кода, всё через pip-зависимости (numpy, scipy, librosa, soundfile, sounddevice, pynput, torch). Шаги:
- Сбор: 3 000 размеченных нажатий (≈15 минут естественного набора). Скрипт
collect.pyпараллельно ведёт лог нажатий черезpynputи пишет аудио. Используетсяtime.perf_counter(), чтобы NTP-коррекция не сбила метки. - Нарезка: аудио рубится на 100-мс окна вокруг каждого нажатия. Между событием в ОС и пиком в аудио есть 5–40 мс задержки — её надо выровнять поиском пика по огибающей. Без этого точность падает с 85% до 60%.
- Фичи: для каждого окна — log-mel спектрограмма (64 mel-бина, fmin=400, fmax=12 000). Тензор (64 × 35), один клип ≈ 9 КБ.
- Модель: компактная CNN на ~250 тыс. параметров — четыре свёрточных блока + AdaptiveAvgPool. На GPU тренируется за 5 минут, на CPU — за 30.
- Инференс: предсказание для 100-мс окна занимает доли миллисекунды.
Цифры, ради которых это страшно
На самостоятельно собранном датасете из ~3 000 нажатий и 35 классов:
- Top-1 точность: 82–88%, в зависимости от шума при сборе данных.
- Top-3 точность: 95–97% — почти всегда правильная клавиша входит в тройку лучших предсказаний.
- Распределение по классам неровное. Space, Enter, Backspace — около 99% (механически отличаются от обычных клавиш). Соседние буквы основного ряда (F/G, J/K) — иногда 60% top-1.
85% точности на уровне символов звучит не страшно — в предложении будет 2–3 ошибки. Но если прогнать top-5 предсказаний через beam search с словарём частотности слов, восстановление связного текста на естественном языке выходит на 95%+ точности на уровне слов. Это исследовали ещё Zhuang и соавторы в 2005 году; современные char-LM делают этот шаг тривиальным.
Почему пароли беззащитнее обычного текста
Языковая модель — главное усиление атаки на обычный текст — на паролях не работает: их специально проектируют непохожими на слова. Зато у атакующего другое преимущество: пространство поиска ограничено. Если модель выдаёт top-3 предсказания на символ с 96% точностью, у 8-символьного пароля максимум 3⁸ = 6 561 кандидат для перебора. Это в зоне online brute force против большинства сервисов и тривиально оффлайн против любого слитого хеша.
В 2026 году аудиозапись того, как вы набираете пароль, эквивалентна передаче пароля.
Что реально защищает — и что нет
Авторы прямо сортируют защиты по эффективности.
Работает:
- Мьют микрофона перед вводом любого секрета. Единственная полностью надёжная защита и стоит ноль.
- Менеджер паролей с auto-fill. Нет нажатий — нет акустического сигнала. Самая большая практическая мера именно против атаки на пароли.
- Аппаратные ключи (FIDO2/WebAuthn, YubiKey). Один тап = один акустический след, восстанавливать нечего.
- Внешняя клавиатура подальше от микрофона. Механика не безопаснее — она громче. Но USB-клавиатура на дальнем краю стола, на отдельной поверхности, материально снижает SNR.
- Акустическое демпфирование. Толстый коврик или сложенное полотенце под ноутбуком — снижение резонанса корпуса на 3–6 дБ. Помогает, но не панацея.
Не работает (вопреки ожиданиям):
- «Печатать тише». Амплитуда падает, спектральный отпечаток сохраняется. Минус 5% точности.
- Случайный ритм набора. Атака работает по отдельным нажатиям, не учитывает межударные интервалы.
- Программные шумодавы (RNNoise, Krisp). Тюнятся под сохранение речи и удаление широкополосного шума. Клавишные транзиенты выглядят как короткие речевые звуки и проходят насквозь — некоторые шумодавы даже «чистят» нажатия от окружающего фона.
- Белый шум на фоне. Современные модели учатся с шумовой аугментацией — постоянный фон сдвигает точность на копейки. Прерывистые звуки (музыка с резкими пиками) мешают сильнее, но и для оператора некомфортнее.
Часто задаваемые вопросы
Какие сценарии самые опасные?
Видеозвонки (Zoom, Teams, Meet, Discord) — у других участников или у любого, кто получил запись, есть стерео-капчер каждого вашего нажатия за весь созвон. Голосовые сообщения и звонки с громкой связью — ноутбук на столе становится микрофоном ближнего поля. Скомпрометированные эндпоинты — на десктопных ОС вредоносу не нужны root или ядро, чтобы записывать аудио (иногда даже браузерной вкладке не нужны). Публичные пространства — телефон на соседнем столе с современным микрофоном — достаточный устройство записи.
Это работает на чужой клавиатуре?
Хуже. Модели, обученные на одной клавиатуре, плохо переносятся на другую модель ноутбука — у каждой свой рисунок резонанса корпуса. Те же модели на той же клавиатуре, но другом пользователе, теряют примерно половину точности. Серьёзные атакующие сначала снимают акустический отпечаток клавиатуру жертвы (модель ноутбука часто видна в видеозвонке), потом собирают пару минут «базовой» аудио-записи, и только потом включают режим записи.
Поможет ли механическая клавиатура с громким кликом?
Нет, наоборот: механика обычно громче и «утечнее», чем chiclet ноутбука. Главное правило защиты — расстояние между клавиатурой и микрофоном. USB-клавиатура на дальнем краю стола на отдельной поверхности (которая не делит резонанс с шасси ноутбука) — материально лучше, чем набор на ноутбучной клаве.
Что должна сделать команда безопасности уже сейчас?
Три простых шага. (1) Включить в гайд по работе с паролями обязательное использование менеджера с auto-fill — это закрывает основной вектор. (2) Для входа в продовые системы оставить только аппаратные ключи (FIDO2/WebAuthn). (3) Закрепить в правилах созвонов: при вводе любого секрета — мьют. Эти три меры вместе закрывают ≈99% реальной поверхности атаки без апгрейдов оборудования.
Чек-лист «что сделать сегодня»
- Проверить, что у вас стоит password manager с auto-fill (1Password, Bitwarden, KeePassXC, Яндекс.Ключ — что вам ближе) и им активно пользуются для всех проводных логинов.
- Купить или подключить аппаратный ключ для критичных аккаунтов (root в облаках, GitHub, банк-клиент). YubiKey 5 серии или Token2 — общедоступно в РФ.
- Поставить хоткей на «mute mic» в Zoom/Teams/Discord, чтобы рефлекторно нажимать перед вводом любого секрета.
- Если работаете из публичного пространства — внешняя клавиатура подальше от ноутбука, либо bluetooth-наушники с шумодавом + далеко отнесённый телефон вместо встроенного микрофона.
- Команды разработки: добавить «mute при работе с секретами» в общий гайд по безопасности, а аппаратные ключи — в onboarding для новых сотрудников.
Выводы
Технический барьер атаки за два десятилетия упал до уровня «студент за выходные обучит модель на ноутбуке». Это значит, что угроза перестала быть теоретической — это рабочий инструмент в руках любого, у кого есть доступ к записи вашего созвона. Главная мысль: рассматривать включённый микрофон рядом с клавиатурой как реальный канал утечки секретов, а не как абстрактный риск из академических статей.
Хорошая новость в том, что защита дёшева и не требует новых технологий — менеджер паролей (про бесплатный open-source Bitwarden у нас уже выходил материал) плюс мьют микрофона закрывают практически весь сценарий. Аппаратные ключи (см. обзор YubiKey 5) закрывают остаток.
Источник: Acoustic Keystroke Recovery — Reconstructing Typed Text from a Laptop Microphone (pwn.guide).