암호화 반해킹 가이드: 다양한 조치로 개인 자산 보호하기
원제목:《How To Never Get Rugged In Crypto Again》
저자:INSIGHTFUL
편집:심조 TechFlow
면책 조항
본 가이드는 어떤 내용도 보장하지 않으며, 「암호화폐 또는 사이버 보안 전문가」의 관점에서 작성된 것이 아니라 여러 출처와 개인 경험을 바탕으로 한 지속적인 학습의 결과입니다.
예를 들어, 제가 이 분야에 처음 들어갔을 때 FOMO(놓치는 것에 대한 두려움)와 탐욕으로 인해 사기(가짜 라이브 방송 사기 및 가짜 MEV 봇 사기)에 당한 경험이 있습니다. 그래서 저는 시간을 들여 안전성을 진지하게 학습하고 설정하며 이해하게 되었습니다.
모든 것을 잃거나 대규모 자산을 잃고 나서야 안전성을 배우는 사람이 되지 마세요.
해킹 공격인가 사용자 오류인가?
모든 종류의 지갑, 토큰 또는 NFT의 「해킹」 또는 타협은 대체로 두 가지 유형으로 나눌 수 있습니다:
- 이전에 부여된 토큰 승인 남용.
- 개인 키 또는 니모닉 문구 유출(주로 핫 월렛에서 발생).
토큰 승인
토큰 승인은 실제로 스마트 계약이 귀하의 지갑에서 특정 유형 또는 수량의 토큰에 접근하고 이동할 수 있는 권한을 부여하는 것입니다.
예를 들어:
- OpenSea에 귀하의 NFT를 이동할 수 있는 권한을 부여하여 판매할 수 있습니다.
- Uniswap에 귀하의 토큰을 사용하여 교환할 수 있는 권한을 부여합니다.
배경 정보로, 기본적으로 이더리움 네트워크의 모든 것은 ETH를 제외하고는 ERC-20 토큰입니다.
ERC-20 토큰의 한 가지 특징은 다른 스마트 계약에 승인 권한을 부여할 수 있다는 것입니다.
핵심 DeFi 상호작용(예: 토큰 교환 또는 브리징)을 하려면 이러한 승인이 어느 시점에서 필요합니다.
NFT는 각각 ERC-721 및 ERC-1155 토큰이며, 이들의 승인 메커니즘은 ERC-20과 유사하지만 NFT 시장에 적용됩니다.
MetaMask(MM)의 초기 토큰 승인 프롬프트는 몇 가지 정보를 제공합니다. 그 중 가장 관련성이 높은 것은:
- 귀하가 승인하고 있는 토큰
- 귀하가 상호작용하고 있는 웹사이트
- 귀하가 상호작용하고 있는 스마트 계약
- 토큰 권한 수량을 편집할 수 있는 능력
전체 세부정보 드롭다운 메뉴에서 우리는 추가 정보를 볼 수 있습니다: 승인 기능.
모든 ERC-20 토큰은 ERC-20 표준에서 개요한 특정 특성과 속성을 가져야 합니다.
그 중 하나는 스마트 계약이 승인된 수량에 따라 토큰을 이동할 수 있는 능력입니다.
이러한 승인에 대한 위험은 악의적인 스마트 계약에 토큰 권한을 부여할 경우 귀하의 자산이 도난당하거나 소진될 수 있다는 것입니다.
무제한 및 사용자 정의 제한 승인(ERC-20 토큰)
많은 DeFi 애플리케이션은 기본적으로 ERC-20 토큰에 대해 무제한 승인을 요청합니다.
이렇게 하는 것은 사용자 경험을 개선하기 위해서이며, 더 편리하고 미래에 추가 승인이 필요하지 않아 시간을 절약하고 가스 비용을 줄일 수 있습니다.
왜 이것이 중요한가?
무제한 수량의 토큰에 대한 승인을 허용하면 귀하의 자금이 위험에 처할 수 있습니다.
토큰 승인을 특정 수량으로 수동으로 설정하면 해당 dApp이 새로운 더 큰 승인에 서명하기 전까지 이동할 수 있는 토큰의 최대 수량을 제한할 수 있습니다.
이렇게 하면 스마트 계약이 악용될 때의 위험을 줄일 수 있습니다. 만약 귀하가 특정 dApp에 무제한 승인을 부여했는데, 해당 dApp에 취약점이 발견되면 승인된 모든 토큰을 잃을 수 있습니다. 이 토큰들은 이러한 자산을 보유하고 해당 승인을 부여한 지갑에서 나온 것입니다.
예를 들어, Multichain WETH(WETH는 ETH의 ERC-20 토큰 포장)는 이러한 취약점을 겪은 적이 있습니다.
이 자주 사용되는 브리지는 이전의 무제한 토큰 권한 남용으로 공격을 받아 사용자 자금이 도난당했습니다.
아래는 기본 무제한 승인을 수동 승인으로 변경하는 방법을 보여주는 예시(사용: Zerion 지갑)입니다.
NFT 승인
「setApprovalForAll」은 NFT에 사용됩니다.
이는 일반적으로 NFT를 판매하고자 할 때 신뢰할 수 있는 NFT 시장에 부여하는 일반적이지만 잠재적으로 위험한 승인입니다.
이것은 시장의 스마트 계약이 귀하의 NFT를 이전할 수 있도록 합니다. 따라서 귀하가 NFT를 구매자에게 판매할 때, 시장의 스마트 계약이 자동으로 NFT를 구매자에게 이동할 수 있습니다.
이 승인은 특정 컬렉션 또는 계약 주소의 모든 NFT 토큰에 대한 접근 권한을 부여합니다.
이것은 악의적인 웹사이트나 계약이 귀하의 NFT를 훔치는 데 사용될 수도 있습니다.
악의적인 행위자가 「setApprovalForAll」을 남용하는 예시
클래식한 「지갑 계좌 축소」는 FOMO 무료 민팅 상황에서 다음과 같습니다:
- 사용자가 자신이 합법적이라고 생각하는 악의적인 웹사이트에 접속합니다.
- 그들이 지갑을 웹사이트에 연결할 때, 웹사이트는 지갑의 내용만 볼 수 있습니다.
- 그러나 악의적인 웹사이트는 지갑에서 가장 가치 있는 NFT를 스캔하고 사용자가 MetaMask(MM)에서 해당 NFT의 계약 주소에 대해 「모든 승인 설정」을 하도록 유도합니다.
- 사용자는 자신이 NFT를 민팅하고 있다고 생각하지만, 실제로는 악의적인 계약에 이러한 토큰을 이동할 수 있는 권한을 부여하고 있습니다.
- 이후 사기꾼은 토큰을 훔치고, 물품이 도난으로 표시되기 전에 OpenSea 또는 Blur의 입찰로 청산합니다.
서명과 승인
승인은 가스 비용을 지불해야 하며, 이는 거래 처리와 관련이 있습니다.
서명은 가스가 필요 없으며, 일반적으로 dApp에 로그인하기 위해 사용되어 귀하가 해당 지갑을 제어하고 있음을 증명합니다.
서명은 일반적으로 낮은 위험의 작업이지만, 여전히 OpenSea와 같은 신뢰할 수 있는 웹사이트에 대해 이전에 부여된 승인을 악용하는 데 사용될 수 있습니다.
ERC-20 토큰의 경우, 최근 이더리움에서 도입된 기능을 통해 가스 없이 서명으로 승인을 수정할 수 있습니다.
1inch와 같은 분산형 거래소(DEX)를 사용하면 이를 확인할 수 있습니다.
토큰 승인 요점
어떤 승인을 부여할 때는 주의하고, 어떤 토큰을 어떤 스마트 계약에 승인하고 있는지 확실히 아는 것이 중요합니다(etherscan을 활용할 수 있습니다).
승인 위험을 제한하는 방법:
- 여러 지갑을 사용하세요(승인은 지갑별로 특정됨) ------ 귀하의 보험금이나 고가치 지갑에 승인을 서명하지 마세요.
- 이상적으로는 ERC-20 토큰에 대해 무제한 승인을 줄이거나 완전히 피하세요.
- 정기적으로 etherscan 또는 revoke.cash를 통해 승인을 확인하고 철회하세요.
하드웨어 / 콜드 월렛
핫 월렛은 귀하의 컴퓨터나 휴대폰을 통해 인터넷에 연결되며, 키와 지갑 자격 증명은 온라인 또는 로컬에서 귀하의 브라우저에 저장됩니다.
콜드 월렛은 하드웨어 장치로, 키는 완전히 오프라인 상태에서 생성 및 저장되며, 물리적으로 귀하 가까이에 있습니다.
Ledger의 가격이 약 $120인 것을 고려할 때, $1000 이상의 암호 자산이 있다면 Ledger를 구매하고 설정하는 것이 좋습니다. Ledger 지갑을 MetaMask(MM)에 연결하여 일정한 보안을 유지하면서 다른 핫 월렛과 동일한 기능을 누릴 수 있습니다.
Ledger와 Trezor는 가장 인기 있는 선택입니다. 저는 Ledger를 선호하는데, 이는 브라우저 지갑(예: Rabby 및 MM)과의 호환성이 가장 좋기 때문입니다.
Ledger 구매 시 모범 사례
항상 공식 제조업체 웹사이트에서 구매하고, 절대 Ebay나 Amazon에서 구매하지 마세요 ------ 변조되거나 악성 소프트웨어가 사전 설치될 수 있습니다.
물품을 받을 때 포장이 밀봉되어 있는지 확인하세요.
Ledger를 처음 설정할 때, 니모닉 문구가 생성됩니다.
니모닉 문구는 반드시 물리적인 종이에만 기록해야 하며, 나중에 강철판에 기록하여 방화 및 방수 기능을 보장해야 합니다.
절대 사진을 찍거나 어떤 키보드(휴대폰 포함)에도 니모닉 문구를 입력하지 마세요 ------ 이는 니모닉 문구를 디지털화하여 귀하의 콜드 월렛이 안전하지 않은 핫 월렛이 됩니다.
암호 자산은 하드웨어 지갑에 저장되는 것이 아니라, 「니모닉 문구」로 생성된 지갑에 「있습니다」.
니모닉 문구(12-24 단어)는 모든 것의 핵심이며, 반드시 어떤 대가를 치르더라도 보호하고 안전하게 지켜야 합니다.
이것은 해당 니모닉 문구 아래 생성된 모든 지갑에 대한 완전한 제어 및 접근 권한을 제공합니다.
니모닉 문구는 특정 장치에 국한되지 않으며, 필요할 경우 다른 하드웨어 지갑에 「가져올」 수 있습니다.
니모닉 문구가 분실되거나 손상되고, 원래 하드웨어 지갑도 분실, 손상되거나 잠겨버리면 모든 자산에 대한 접근 권한을 영구적으로 잃게 됩니다.
니모닉 문구를 저장하는 방법에는 여러 가지가 있으며, 여러 부분으로 나누어 물리적 거리를 늘리거나 눈에 띄지 않는 곳(예: 냉장고 바닥의 수프 통, 귀하의 재산 지하의 어딘가 등)에 보관하는 방법이 있습니다.
최소한 2-3개의 복사본을 보관해야 하며, 그 중 하나는 강철로 만들어져야 방수 및 방화 기능을 갖추어야 합니다.
「개인 키」는 니모닉 문구와 유사하지만 특정 지갑에만 해당됩니다. 이는 일반적으로 핫 월렛을 새로운 MetaMask(MM) 계정으로 가져오거나 자동화 도구(예: 거래 봇)에서 사용됩니다.
25번째 단어 - Ledger
원래의 24개 단어 니모닉 문구 외에도, Ledger는 선택적인 추가 보안 기능을 제공합니다.
비밀번호 문구는 고급 기능으로, 귀하가 선택한 최대 100자의 25번째 단어를 복구 문구에 추가할 수 있습니다.
비밀번호 문구를 사용하면 24개 단어의 복구 문구로는 접근할 수 없는 완전히 다른 주소 세트를 생성합니다.
보안 레이어를 추가하는 것 외에도, 비밀번호 문구는 귀하가 위협을 받을 때 합리적인 부인 가능성을 제공합니다.
비밀번호 문구를 사용할 경우, 반드시 안전하게 저장하거나 정확히 기억해야 하며, 문자 하나하나를 구분하여 대소문자를 구별해야 합니다.
이는 「$5 렌치 공격」과 같은 물리적 위협 상황에 대한 유일하고 최종적인 방어 수단입니다.
왜 하드웨어 지갑을 설정하는 데 이렇게 많은 수고를 해야 할까요?
핫 월렛은 개인 키를 인터넷에 연결된 위치에 저장합니다.
인터넷을 통해 이러한 자격 증명을 유출하도록 속이거나 조작하는 것은 극히 간단합니다.
콜드 월렛을 소유하면, 사기꾼이 귀하의 Ledger 또는 니모닉 문구를 물리적으로 찾아서 확보해야만 이러한 지갑 및 그 내부 자산에 접근할 수 있습니다.
니모닉 문구가 유출되면, 모든 핫 월렛 및 그 안의 자산이 위험에 처하게 되며, 악의적인 웹사이트나 계약과 상호작용하지 않은 자산도 예외가 아닙니다.
과거 사람들이 「해킹 공격」을 당한 일반적인 방법
과거 사람들이 핫 월렛을 통해 「해킹 공격」(니모닉 문구 유출)을 당한 일반적인 방법은 다음과 같습니다:
- 악성 소프트웨어를 다운로드하도록 속임, 예를 들어 취업 기회 PDF, 베타 게임, Google 스프레드시트를 통한 매크로 실행 또는 합법적인 웹사이트와 서비스를 모방하는 경우.
- 악의적인 계약과 상호작용: 모방 웹사이트에서 FOMO 민팅을 하거나, 알려지지 않은 에어드롭 또는 수신된 NFT 계약과 상호작용하는 경우.
- 키와 니모닉 문구를 「고객 지원」이나 관련 프로그램/양식에 삽입하거나 전송하는 경우.