Автор: Лиза & Аро
Редактор: Лиз
В современном интернет-пространстве угрозы, такие как вредоносные программы, вирусы, фишинговые атаки и т.д., появляются очень часто. Установка антивирусного программного обеспечения (таких как AVG, Bitdefender, Kaspersky, Malwarebytes и других известных международных продуктов) может помочь пользователям защититься от вредоносных программ и повысить безопасность системы. Однако роль антивирусного ПО заключается в предоставлении базовой защиты; оно может только снизить риски, но не гарантировать абсолютную безопасность. Противодействие - это динамический процесс, установка антивируса - это лишь первый шаг к повышению безопасности. В то же время, само антивирусное ПО также может ошибочно срабатывать, создавая дополнительные риски.
Недавно пользователи сообщали, что после использования антивирусного ПО некоторые браузерные расширения (особенно расширения для криптовалютных кошельков) были ошибочно помечены как вредоносные, что привело к изоляции или удалению JavaScript файлов расширения, в результате чего кошелек расширения был поврежден и не смог нормально функционировать.
Для пользователей Web3 это особенно критично, так как расширения криптовалютного кошелька обычно хранят приватный ключ, и если с ними неправильно обращаться, это может привести к потере данных кошелька, даже к невозможности вернуть активы. Поэтому крайне важно понимать, как правильно восстановить данные расширения, ошибочно изолированные.
Как поступить?
Если антивирусная программа ошибочно определила браузерное расширение как вредоносное и оно было повреждено, рекомендуется выполнить восстановление по следующим шагам:
1. Восстановите файлы из карантина, не удаляйте расширение
Если вы обнаружили, что какое-либо программное обеспечение или расширение не работают, в первую очередь проверьте "Карантин" антивируса или "Историю", чтобы найти ошибочно помеченные файлы, не удаляйте файлы из карантина.
Если файл все еще находится в карантине, выберите "Восстановить" и добавьте этот файл или расширение в список доверенных, чтобы предотвратить повторное ложное срабатывание.
Если файл был удален, проверьте, есть ли автоматическая резервная копия или используйте инструменты восстановления данных для его восстановления.
Помните: не удаляйте расширение! Даже если расширение повреждено, на локальном компьютере могут быть файлы, связанные с зашифрованными приватными ключами, которые все еще могут быть восстановлены.
2. Создайте резервную копию и найдите локальные данные расширения
Данные расширения обычно хранятся на локальном диске, даже если расширение не открывается, все равно можно найти соответствующие данные для восстановления (ID расширения в качестве примера: nkbihfbeogaeaoehlefnkodbefgpgknn):
Справочная информация по пути Windows: C:\Users\USER_NAME\AppData\Local\Google\Chrome\User Data\Default\Local Extension Settings\nkbihfbeogaeaoehlefnkodbefgpgknn
Справочная информация по пути Mac:
~/Library/Application Support/Google/Chrome/Default/Local Extension Settings/nkbihfbeogaeaoehlefnkodbefgpgknn
Важно отметить, что если Chrome использует несколько учетных записей, путь может измениться с Default на Profile 1/Profile 2, поэтому нужно проверить конкретный каталог Profile и при необходимости скорректировать путь. Рекомендуется в первую очередь создать резервную копию полной директории целевого расширения, чтобы можно было восстановить в случае проблем.
3. Грубо восстановление: перезапись локальной директории расширения
Если ложное срабатывание привело к повреждению расширения, самым простым решением будет на новом компьютере или в новой среде браузера просто перезаписать резервные данные расширения в соответствующую директорию локального пути, а затем заново открыть расширение.
4. Расширенные методы восстановления: ручное расшифрование данных приватного ключа
Если расширение все еще не открывается или данные отсутствуют, можно попробовать более продвинутые методы восстановления, а именно ручное расшифрование данных приватного ключа для восстановления. Например, для MetaMask:
На локальном компьютере найдите ID расширения MetaMask и найдите следующую директорию: C:\Users\[User]\AppData\Local\Google\Chrome\User Data\Default\Local Extension Settings\nkbihfbeogaeaoehlefnkodbefgpgknn
В этой директории могут находиться файлы ldb/log, которые хранят зашифрованные данные приватного ключа. Вы можете использовать официальный инструмент расшифрования Vault от MetaMask (https://metamask.github.io/vault-decryptor/) для расшифрования.
Шаги по расшифрованию: откройте инструмент расшифрования MetaMask Vault -> скопируйте зашифрованное содержимое из файла ldb/log -> используйте первоначальный пароль расширения для расшифрования -> после получения приватного ключа снова импортируйте кошелек.
Если расширение MetaMask все еще может открывать некоторые страницы (например, chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/home.html), попробуйте выполнить следующий код, чтобы получить данные зашифрованного приватного ключа:

Затем скопируйте данные хранилища в инструмент расшифрования MetaMask Vault для расшифрования.
5. Напишите инструмент для восстановления
Если вышеуказанные методы не позволяют восстановить данные кошелька, пользователь может самостоятельно написать скрипт для извлечения данных, хранящихся в локальном файле базы данных, а затем произвести расшифрование. В качестве шаблона используется PhantomKeyRetriever, написан принцип и реализация для различных инструментов восстановления кошельков:
Плагины кошельков обычно хранят чувствительные данные в базе данных или файлах локальной системы. Браузерные расширения для кошельков (такие как Phantom, MetaMask и т.д.) используют API хранения, предоставляемый браузером, чтобы сохранять зашифрованные данные в локальной области хранения браузера, обычно в системах баз данных LevelDB или IndexedDB. Независимо от типа кошелька, ключевым принципом является то, что данные всегда хранятся в зашифрованном виде, что гарантирует, что даже если данные копируются, без правильного пароля доступ невозможен.
Большинство криптовалютных кошельков используют многослойную архитектуру шифрования для повышения безопасности. Во-первых, основной пароль пользователя используется для шифрования промежуточного ключа (обычно называемого "шифровальным ключом" или "ключом расшифрования"). Затем этот промежуточный ключ используется для шифрования фактического приватного ключа или мнемонической фразы. Такой дизайн делает так, что даже если код приложения кошелька будет изменен, злоумышленник должен знать пароль пользователя, чтобы получить доступ к приватному ключу. Эта многослойная архитектура также позволяет приложению кошелька расшифровывать лишь промежуточный ключ после входа пользователя, без необходимости повторного ввода основного пароля при каждой операции.
Процесс написания инструмента восстановления кошелька обычно включает в себя:
Локализуйте и извлеките зашифрованные данные (чтение данных из LevelDB/IndexedDB).
Анализируйте структуру данных, идентифицируйте зашифрованный приватный ключ/мнемоническую фразу.
Попросите пользователя ввести пароль от кошелька и вычислите ключ расшифрования с помощью KDF (например, PBKDF2 или Scrypt).
Расшифруйте промежуточный ключ, а затем расшифруйте приватный ключ/мнемоническую фразу.
Этот процесс требует точного понимания схемы шифрования кошелька и формата хранения данных, что обычно требует реверсивного проектирования или анализа открытого кода кошелька.
Что касается инструмента PhantomKeyRetriever, это скрипт, специально разработанный для извлечения мнемонических фраз или приватных ключей из данных браузера Chrome, SlowMist в настоящее время разместила этот инструмент в открытом доступе на GitHub (https://github.com/slowmist/PhantomKeyRetriever), его основная идея такова:
Чтение базы данных Chrome LevelDB, копирование соответствующих данных во временную директорию.
Перебор базы данных для поиска зашифрованных ключей и информации о семенах кошелька Phantom.
Пользователь вводит пароль Phantom, скрипт использует PBKDF2/Scrypt для вычисления ключа расшифрования.
Расшифруйте данные хранилища кошелька, извлеките BIP39 мнемоническую фразу или приватный ключ Base58.
В этом процессе двойного расшифрования скрипт поддерживает два типа функций производных ключей: PBKDF2 и Scrypt, и использует библиотеку NaCl SecretBox для безопасного расшифрования. В конце, в зависимости от типа расшифрованных данных, скрипт генерирует мнемоническую фразу стандарта BIP39 или извлекает приватный ключ в кодировке Base58.
Важно отметить, что другие браузеры, поддерживающие расширения для кошельков (такие как Edge, Firefox), используют аналогичный принцип, поэтому не будем повторяться.
Как предотвратить?
Чтобы снизить риск ложных срабатываний, пользователи могут предпринять следующие меры:
Регулярно создавайте резервные копии важных файлов и данных браузерных расширений, чтобы в случае ложного срабатывания можно было быстро восстановить.
Вручную добавьте правила доверия в антивирусное ПО для важных программ или расширений (например, MetaMask), чтобы вручную добавить их в список доверенных и избежать ложных срабатываний.
Используйте официальные каналы для загрузки программ, избегайте установки неофициальных или модифицированных приложений, чтобы уменьшить вероятность их пометки антивирусом как потенциального риска.
Итоги
Противодействие всегда динамично, и стратегии безопасности также нуждаются в постоянной настройке. Установка антивирусного ПО, безусловно, важна, но в конечном итоге именно пользователь является последней защитной линией для своих активов. При возникновении ложного срабатывания пользователь должен действовать спокойно, избегать немедленного удаления ключевых файлов и применять адекватные методы восстановления. Только обладая правильными знаниями о безопасности, можно действительно обеспечить безопасность своих данных.
