저자: Lisa & Aro
편집자: 리즈
오늘날의 인터넷 환경에서는 맬웨어, 바이러스, 피싱 공격과 같은 위협이 끝없이 쏟아져 나옵니다. 바이러스 백신 소프트웨어(AVG, Bitdefender, Kaspersky, Malwarebytes 및 기타 국제적으로 유명한 제품)를 설치하면 사용자가 악성 프로그램을 예방하고 시스템 보안을 개선하는 데 도움이 될 수 있습니다. 그러나 바이러스 백신 소프트웨어의 역할은 기본적인 보안 보호를 제공하는 것입니다. 위험을 줄일 수는 있지만 절대적인 보안을 보장할 수는 없습니다. 대립은 역동적인 과정이며, 바이러스 백신 소프트웨어를 설치하는 것은 보안을 강화하기 위한 첫 단계에 불과합니다. 동시에, 바이러스 백신 소프트웨어 자체도 거짓 양성 판정을 내려 추가적인 위험을 초래할 수 있습니다.
최근 일부 사용자들이 바이러스 백신 소프트웨어를 사용한 후 일부 브라우저 확장 프로그램(특히 암호화폐 지갑 확장 프로그램)이 실수로 맬웨어로 신고되어 해당 확장 프로그램의 JavaScript 파일이 격리되거나 삭제되었고, 궁극적으로 확장 프로그램 지갑이 손상되어 정상적으로 사용할 수 없게 되었다고 보고했습니다.
이러한 상황은 Web3 사용자에게 특히 심각한데, 암호화폐 지갑 확장 프로그램은 일반적으로 개인 키를 저장하는데, 이를 올바르게 처리하지 않으면 지갑 데이터가 손실되거나 자산을 복구하지 못할 수도 있기 때문입니다. 따라서, 거짓 양성으로 인해 격리된 확장 데이터를 올바르게 복구하는 방법을 이해하는 것이 중요합니다.
어떻게 처리하나요?
바이러스 백신 소프트웨어의 거짓 양성 반응으로 인해 브라우저 확장 프로그램이 손상된 경우, 아래 단계에 따라 복원하는 것이 좋습니다.
1. 격리에서 파일을 복원하고 확장 프로그램을 제거하지 마십시오.
소프트웨어나 확장 프로그램을 실행할 수 없는 경우, 바이러스 백신 소프트웨어의 "격리" 또는 "기록"을 즉시 확인하여 거짓 양성 파일을 찾으세요. 격리된 파일은 삭제하지 마세요.
- 파일이 여전히 격리되어 있는 경우, 복원을 선택하고 해당 파일이나 확장자를 신뢰할 수 있는 목록에 추가하여 향후에 거짓 양성 반응이 발생하는 것을 방지하세요.
- 파일이 삭제된 경우 자동 백업이 있는지 확인하거나 데이터 복구 도구를 사용하여 파일을 검색하세요.
- 중요: 확장 프로그램을 제거하지 마세요! 확장 프로그램이 손상되더라도 암호화된 개인 키 관련 파일은 여전히 로컬에 저장되어 있을 수 있으며 복구가 가능합니다.
2. 백업 및 로컬 확장 데이터 찾기
확장 프로그램의 데이터는 일반적으로 로컬 디스크에 저장됩니다. 확장 프로그램을 열 수 없더라도 관련 데이터는 여전히 복구를 위해 찾을 수 있습니다(확장 프로그램 ID는 MetaMask를 예로 들어 설명합니다: nkbihfbeogaeaoehlefnkodbefgpgknn):
- Windows 경로 참조: C:\Users\USER_NAME\AppData\Local\Google\Chrome\User Data\Default\Local Extension Settings\nkbihfbeogaeaoehlefnkodbefgpgknn
- Mac 경로 참조:
~/라이브러리/애플리케이션 지원/Google/Chrome/기본값/로컬 확장 설정/nkbihfbeogaeaoehlefnkodbefgpgknn
Chrome이 여러 계정으로 구성된 경우 경로의 기본값이 Profile 1/Profile 2가 될 수 있습니다. 구체적인 Profile 디렉토리를 확인하고 실제 상황에 맞게 경로를 조정해야 합니다. 문제가 발생할 경우 복구를 용이하게 하기 위해 대상 확장자의 전체 디렉터리를 가능한 한 빨리 백업하는 것이 좋습니다.
3. 대략적인 복구 방법: 로컬 확장 디렉토리를 덮어쓰기
거짓 경보로 인해 확장 프로그램이 손상된 경우 가장 직접적인 방법은 백업된 확장 프로그램 데이터를 새 컴퓨터 또는 새 브라우저 환경에서 로컬 경로에 해당하는 확장 프로그램 디렉터리에 직접 덮어쓴 다음 확장 프로그램을 다시 여는 것입니다.
4. 고급 복구 방법: 개인 키 데이터를 수동으로 복호화
여전히 확장 프로그램을 열 수 없거나 데이터가 누락된 경우, 개인 키 데이터를 수동으로 해독하여 복구하는 보다 진보된 복구 방법을 시도할 수 있습니다. 예를 들어 MetaMask를 살펴보겠습니다.
- 컴퓨터에서 로컬로 MetaMask 확장 프로그램 ID를 검색하고 다음 디렉토리를 찾으세요: C:\Users\[사용자]\AppData\Local\Google\Chrome\User Data\Default\Local Extension Settings\nkbihfbeogaeaoehlefnkodbefgpgknn
- 이 디렉토리에는 암호화된 개인 키 데이터를 저장하는 ldb/log 파일이 들어 있을 수 있습니다. MetaMask의 공식 Vault 복호화 도구(https://metamask.github.io/vault-decryptor/)를 사용하여 복호화할 수 있습니다.
- 복호화 단계: MetaMask Vault 복호화 도구를 엽니다. -> ldb/log 파일에 암호화된 내용을 복사합니다. -> 확장된 원래 비밀번호를 사용하여 복호화합니다. -> 개인 키를 얻은 후 지갑을 다시 가져옵니다.
MetaMask 확장 프로그램이 특정 페이지(예: chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/home.html)를 여전히 열 수 있는 경우 다음 코드를 실행하여 암호화된 개인 키 데이터를 얻을 수 있습니다.
chrome.storage.local.get('데이터', 결과 => { var vault = 결과.데이터.KeyringController.vault; console.log(vault);});
그런 다음, 볼트 데이터를 MetaMask Vault 암호 해독 도구로 복사하여 암호 해독합니다.
5. 사용자 정의 복구 도구 작성
위의 방법으로 지갑 데이터를 복구하지 못하는 경우, 사용자는 자신의 스크립트를 작성하여 로컬 데이터베이스 파일에서 확장 저장 데이터를 추출한 다음 암호를 해독할 수 있습니다. 여기에서 PhantomKeyRetriever는 다음과 같이 다양한 지갑 복구 도구의 기본 원칙과 구현을 작성하기 위한 템플릿으로 사용됩니다.
지갑 플러그인은 종종 민감한 데이터를 로컬 시스템의 데이터베이스나 파일에 저장합니다. 브라우저 확장 지갑(Phantom, MetaMask 등)은 브라우저가 제공하는 저장 API를 사용하여 암호화된 데이터를 브라우저의 로컬 저장 영역(일반적으로 LevelDB 또는 IndexedDB와 같은 데이터베이스 시스템)에 저장합니다. 지갑 유형에 관계없이 가장 중요한 원칙은 데이터가 항상 암호화된 형태로 저장된다는 것입니다. 즉, 데이터가 복사되더라도 올바른 비밀번호가 없으면 액세스할 수 없습니다.
대부분의 암호화폐 지갑은 강화된 보안을 위해 다중 계층 암호화 아키텍처를 사용합니다. 먼저, 사용자의 마스터 비밀번호는 중간 키(종종 "암호화 키" 또는 "복호화 키"라고 함)를 암호화하는 데 사용됩니다. 이 중간 키는 실제 개인 키나 니모닉을 암호화하는 데 사용됩니다. 이러한 설계는 지갑 애플리케이션 코드가 변조되더라도 공격자가 사용자 비밀번호만 알면 개인 키를 얻을 수 있도록 보장합니다. 이러한 다중 계층 설계를 통해 지갑 애플리케이션은 각 작업에 대해 마스터 비밀번호를 다시 입력하지 않고도 사용자가 로그인한 후에만 중간 키를 해독할 수 있습니다.
지갑 복구 도구를 작성하는 과정에는 일반적으로 다음이 포함됩니다.
- 암호화된 데이터를 찾아 추출합니다(LevelDB/IndexedDB에서 데이터를 읽습니다).
- 데이터 구조를 분석하고 암호화된 개인 키/니모닉을 식별합니다.
- 사용자는 지갑 비밀번호를 입력해야 하며, 복호화 키는 KDF(예: PBKDF2 또는 Scrypt)를 통해 계산됩니다.
- 중간 키를 복호화한 다음 개인 키/니모닉을 복호화합니다.
이 프로세스에는 지갑의 암호화 체계와 데이터 저장 형식에 대한 정확한 지식이 필요하며, 이는 일반적으로 역엔지니어링이나 지갑의 오픈 소스 코드 분석을 통해 얻을 수 있습니다.
예를 들어 PhantomKeyRetriever 도구를 살펴보겠습니다. 이것은 Chrome 브라우저 데이터에서 Phantom 지갑 니모닉 또는 개인 키를 추출하도록 특별히 설계된 스크립트입니다. SlowMist는 이제 GitHub(https://github.com/slowmist/PhantomKeyRetriever)에서 이 도구를 오픈 소스로 공개했습니다. 핵심 원칙은 다음과 같습니다.
- Chrome LevelDB 데이터베이스를 읽고 관련 데이터를 임시 디렉토리에 복사합니다.
- 데이터베이스를 탐색하여 Phantom 지갑에 저장된 암호화 키와 지갑 시드 정보를 찾습니다.
- 사용자가 팬텀 비밀번호를 입력하고 스크립트는 PBKDF2/Scrypt를 사용하여 암호 해독 키를 계산합니다.
- 지갑 볼트 데이터를 해독하고 BIP39 니모닉 또는 Base58 개인 키를 추출합니다.
이 2계층 복호화 과정에서 스크립트는 PBKDF2와 Scrypt라는 두 가지 키 파생 함수를 지원하고 NaCl 라이브러리의 SecretBox를 사용하여 안전한 복호화를 수행합니다. 마지막으로, 복호화된 데이터의 유형에 따라 스크립트는 BIP39 호환 니모닉을 생성하거나 Base58로 인코딩된 개인 키를 추출합니다.
확장 지갑을 지원하는 다른 브라우저(예: Edge 및 Firefox)도 비슷한 원칙을 따르므로 여기서는 자세히 설명하지 않습니다.
어떻게 예방할 수 있나요?
거짓 양성의 위험을 줄이려면 사용자는 다음 작업을 수행할 수 있습니다.
- 중요한 파일과 브라우저 확장 프로그램 데이터를 정기적으로 백업해 두면, 거짓 양성 반응이 발생하는 경우 신속하게 복원할 수 있습니다.
- 바이러스 백신 소프트웨어에서 신뢰 규칙을 수동으로 추가합니다. 중요한 소프트웨어나 확장 프로그램(예: MetaMask)의 경우, 이를 신뢰 목록에 수동으로 추가하여 거짓 양성을 방지할 수 있습니다.
- 공식 채널을 이용해 소프트웨어를 다운로드하고, 비공식 버전이나 수정된 버전의 애플리케이션을 설치하지 않도록 하여 바이러스 백신 소프트웨어에서 잠재적인 위험으로 표시되는 가능성을 줄이세요.
요약하다
대립은 늘 역동적으로 변화하고 있고, 보안 전략 또한 끊임없이 조정되어야 합니다. 바이러스 백신 소프트웨어를 설치하는 것은 중요하지만, 궁극적으로 사용자는 자산에 대한 최후의 방어선입니다. 거짓 양성 반응이 발생하면 사용자는 침착하게 처리하고 중요한 파일을 직접 삭제하지 말고 적절한 복구 방법을 사용해야 합니다. 올바른 보안 지식을 습득해야만 데이터 보안을 확실히 보장할 수 있습니다.