Coinnoti
☰
한국어ko
블로그로 돌아가기

보내지 않은 송금이 지갑에 표시되는 이유: 금액 0 거래와 주소 포이즈닝

알 수 없는 출금 거래가 있다고 해서 지갑이 해킹당했다는 뜻은 아닙니다. 금액이 0인 기록, 비슷하게 생긴 주소, 실제 자산 이동이 각각 무엇을 입증하는지 알아보세요.

이 내역은 내 지갑에 관해 무엇을 증명하나요?

거래 내역에 갑자기 모르는 주소로 0 USDT를 보냈다고 표시되더라도, 그 기록만으로 누군가 내 개인 키에 접근했다고 결론 내릴 수는 없습니다. 제삼자는 내 서명이나 0보다 큰 금액을 지출할 권한 없이도 내 주소를 발신자로 표시하는 특정한 0토큰 전송 기록을 만들 수 있습니다. 내가 거래를 시작하지 않았더라도 해당 기록은 블록체인에 존재할 수 있습니다.

확인해야 할 질문은 더 구체적입니다. 어떤 자산인가요? 실제 이동한 수량은 얼마인가요? 누가 거래를 제출했나요? 실제 지출은 어떤 권한으로 이루어졌나요?

  • 수량이 0인 토큰 이벤트는 내가 서명하거나 자산을 지출했다는 증거가 아닙니다. 진짜 토큰에서 수량이 정확히 0이라면 해당 전송에서 이동한 토큰은 없습니다.
  • 익숙한 토큰 이름으로 표시된 전송만으로 자산을 식별할 수 없습니다. 무관한 컨트랙트가 동일한 이름과 심볼을 사용할 수 있습니다.
  • 소액 입금은 실제일 수 있지만, 동시에 거래 내역에 오해를 부르는 발신 주소를 심을 수도 있습니다.
  • 실제 자산이 빠져나간 것으로 확인되지만 이유를 알 수 없는 거래는 조사해야 합니다. 다른 필드가 0이라고 해서 무시하지 마세요.

이 안내서는 Ethereum, BNB Smart Chain(BSC), 그리고 Ethereum 방식의 토큰 컨트랙트를 사용하는 유사 네트워크를 다룹니다. 예시는 이해를 돕기 위해 단순화해 만든 가상 기록이며 특정 지갑의 화면이나 조사 결과가 아닙니다.

먼저 어떤 필드가 0인지 확인하세요

금액 0 거래라는 표현은 서로 다른 상황을 가리킬 수 있습니다. 아래 중 토큰 수량이 0임을 나타내는 것은 한 가지뿐입니다.

  • 토큰 수량: 0 USDC. 진짜 USDC 컨트랙트에서 수량이 정확히 0이면 해당 전송으로 USDC가 이동하지 않습니다.
  • 거래 가치: 0 ETH. 기본 거래에 ETH가 첨부되지 않았다는 뜻입니다. 그래도 토큰 이동이나 컨트랙트 동작은 실행될 수 있습니다.
  • 추정 가치: $0.00. 화면에 법정통화 환산 가치가 표시된 것입니다. 토큰 수량을 증명하지는 않습니다.

BSC에서는 네이티브 코인 필드에 보통 ETH 대신 BNB가 표시됩니다. 네이티브 가치가 0인 컨트랙트 상호작용도 토큰 전송, 지출 권한 변경, 다른 작업을 일으킬 수 있습니다. 네이티브 가치는 거래의 입력 데이터와 별개입니다.

작은 양수 금액도 반올림되어 $0.00으로 표시될 수 있습니다. 신뢰할 만한 가격이 없는 자산 역시 법정통화 표시가 도움이 되지 않을 수 있습니다. 토큰 수량을 최대 정밀도로 펼쳐 확인하세요. 화면에 0.00으로 표시된 토큰 수량에도 더 작은 양수가 숨어 있을 수 있습니다. 변동하는 포트폴리오 평가액은 계정에 들어오고 나간 실제 단위 수량을 신뢰성 있게 보여 주지 않습니다.

0은 허용되는 토큰 수량이므로 0만으로 공격을 입증할 수 없습니다. 비슷한 주소나 복제된 결제 정보는 조사할 단서입니다.

두 From 필드가 서로 다른 이유

지갑 거래 내역에는 서로 다른 계층의 정보가 합쳐져 있을 수 있습니다.

  1. 거래: 네트워크에 제출된 서명된 명령입니다. 일반적인 Ethereum 거래에서 기본 From 필드는 서명한 계정을 가리킵니다.
  2. 토큰 이벤트: 실행 과정에서 컨트랙트가 내보낸 기록입니다. Transfer 이벤트에는 자체 From, To, 수량 필드가 있습니다.
  3. 거래 내역 행: 지갑이나 탐색기가 이러한 정보를 표시하는 방식입니다. 이벤트에서 내 주소를 발신자로 표시하면 OUT으로 분류할 수 있습니다.

두 From 필드는 같은 의미가 아닙니다. 이벤트 안에 내 주소가 있다고 해서 내 지갑이 서명한 것은 아닙니다. 악성 컨트랙트는 이벤트 데이터에 내 주소를 넣을 수 있지만, 그렇다고 그 로그가 진짜 토큰 컨트랙트에서 나온 것은 아닙니다. 따라서 이벤트를 발생시킨 컨트랙트가 핵심 증거입니다.

마찬가지로 거래 해시는 거래를 식별할 뿐 내 동의를 입증하지 않습니다. 블록에 포함된 거래의 상태가 Success라면 바깥쪽 실행이 되돌려지지 않았다는 뜻입니다. 토큰, 수신자 또는 목적의 정당성을 보증하지 않습니다.

설명이 포함된 거래 내역 사례 다섯 가지

사례 1: 서명한 적 없는 0토큰 출금

거래 내역: OUT · 0 USDC · 내 주소에서 낯설지만 비슷한 주소로.

  • 거래 From: 무관한 계정이 거래를 제출했습니다.
  • 토큰 이벤트 From: 이벤트에는 내 주소가 표시됩니다.
  • 이벤트 발생 토큰 컨트랙트: 해당 네트워크의 진짜 USDC 컨트랙트입니다.
  • 정확한 토큰 수량: 0입니다.

입증되는 사실: 진짜 토큰 컨트랙트가 내 주소를 발신자로 명시한 0토큰 전송을 기록했습니다. 이 특정 전송에서 USDC는 이동하지 않았습니다. 내 지갑이 해당 거래에 서명했거나, 호출자에게 양수 수량을 사용할 권한이 있거나, 내 키가 탈취되었다는 뜻은 아닙니다.

발생 원리: 널리 쓰이는 토큰 표준 ERC-20은 수량 0의 전송에도 Transfer 이벤트가 발생하도록 요구합니다. 일반적인 구현에서 위임 전송 함수 transferFrom은 요청 수량이 호출자에게 부여된 허용량을 초과하는지 검사합니다. 0은 허용량 0을 초과하지 않습니다. 컨트랙트의 다른 규칙을 충족하면 사전 승인 없이도 호출이 성공할 수 있습니다.

모든 토큰에서 반드시 그렇다는 뜻은 아닙니다. 개별 컨트랙트는 추가 제한을 둘 수 있습니다.

다음 확인 사항: 거래의 나머지 부분을 살펴보세요. 0인 행은 해당 행만 설명하며 다른 작업은 다른 영향을 줄 수 있습니다. 의심스러운 지출이나 권한 변경이 없는 단독 포이즈닝 기록이라면 지갑을 바꿔야 한다고 가정하기보다 심어진 주소를 피하는 것이 적절합니다.

사례 2: 큰 토큰 수량을 보여 주는 가짜 거래

거래 내역: OUT · 2,500 USDC · 내 주소에서 낯선 주소로.

  • 표시된 토큰 심볼: USDC.
  • 이벤트 발생 컨트랙트: 진짜 USDC가 아닌 무관한 컨트랙트입니다.
  • 이벤트에 기록된 수량: 2,500.
  • 이 거래에서 실제 USDC 이동: 없음.

입증되는 사실: 다른 컨트랙트가 USDC라는 이름표로 표시된 기록을 만들었습니다. 실제 USDC 2,500개가 내 계정에서 나갔다는 증거는 아닙니다.

지갑에 보이는 가짜 거래도 오해를 일으키는 방식으로 해석된 실제 블록체인 데이터일 수 있습니다. 공격자는 토큰 이름과 심볼을 복제하고 금액까지 포함해 과거 결제와 비슷한 이벤트를 생성할 수 있습니다. 비표준 컨트랙트는 자체 잔액 변화와 일치하지 않는 전송 기록을 발생시킬 수도 있습니다.

다음 확인 사항: 이벤트가 발생한 네트워크와 정확한 컨트랙트를 확인하세요. 그 주소를 해당 네트워크에 관해 발행자로부터 독립적으로 확보한 컨트랙트 정보와 비교하세요. 익숙한 티커, 로고, 소스 코드 검증 표시만으로 발행자 신원을 입증할 수 없습니다.

사례 3: 비슷한 주소에서 들어온 아주 작은 실제 입금

거래 내역: IN · 0.000001 USDC · 모르는 주소에서 내 주소로.

진짜 토큰 컨트랙트가 전송을 확인했고 내 토큰 잔액이 그만큼 늘었다고 가정해 봅시다. 이 경우 실제 토큰이 들어온 것입니다. 수신을 위해 발신자를 승인할 필요는 없었으며 입금만으로 발신자에게 지출 권한이 부여되지도 않습니다.

함정은 주소에 있습니다. 모든 문자가 보이도록 공백으로 구분한 다음 가상 예시를 살펴보세요. 실제 주소에는 공백이 없으며 굵게 표시된 중간 부분이 서로 다릅니다.

확인된 수신자: 0x7a2f 1111 2222 3333 4444 5555 6666 7777 8888 9c4d

심어진 주소: 0x7a2f aaaa bbbb cccc dddd eeee ffff 0000 1111 9c4d

시작과 끝만 보여 주는 화면에서는 두 주소 모두 0x7a2f...9c4d로 보일 수 있습니다.

입증되는 사실: 누군가 해당 주소에서 내게 소액을 보냈습니다. 발신자가 평소의 수신자이거나 내가 관리하는 계정이라는 뜻은 아닙니다. 화면에 보이는 문자가 같다고 소유자가 같다는 증거는 아닙니다.

다음 확인 사항: 별도로 검증한 연락처 또는 수신자의 신뢰할 수 있는 계정 페이지에서 원래 의도한 목적지를 다시 확인하세요. 주소 전체를 비교하세요. 주소 포이즈닝은 거래 내역에 심은 주소를 나중에 결제할 때 선택하도록 유도합니다. 손실은 잘못된 목적지로 정상적인 전송을 승인하는 미래 시점에 발생할 수 있습니다.

사례 4: ETH는 0이지만 실제 토큰 2,500개가 나간 경우

거래 헤더: Value · 0 ETH.

  • 호출에 첨부된 네이티브 가치: 0 ETH.
  • 진짜 토큰 전송: 내 주소에서 2,500 USDC.
  • 이 거래로 인한 USDC 잔액 변화: 2,500 USDC 감소.
  • 실행 상태: Success.

입증되는 사실: 이 예시에서는 진짜 USDC가 빠져나갔습니다. 0은 호출에 첨부된 ETH를 뜻하며 USDC 전송량을 뜻하지도, 가스 비용이 없다는 뜻도 아닙니다.

여전히 알 수 없는 사실: 왜 결제가 이루어졌고 내가 의도했는지입니다. 스왑, 예치, 예약된 작업, 잘못된 주소로의 결제 또는 무단 지출일 수 있습니다. 판단하기 전에 실제 수행한 행동과 원래 의도한 목적지를 대조하세요.

사례 5: 진짜 토큰이 나갔지만 다른 계정이 거래를 제출한 경우

거래 내역: OUT · 진짜 USDC 500개 · 알 수 없는 목적지.

성공한 거래로 실제 USDC 잔액이 500 감소했지만 기본 From 필드에 다른 사람이 표시되어 있다고 가정해 봅시다.

입증되는 사실: 토큰이 실제로 이동했습니다. 거래 제출자가 다르다고 해서 이동이 가짜가 되지는 않습니다.

미리 승인받은 지출자는 출금할 때마다 새 거래에 서명해 달라고 요청하지 않고도 토큰 허용량을 사용할 수 있습니다. 일부 토큰은 다른 사람이 제출할 수 있는 서명된 메시지로 허용량을 승인하는 permit 서명도 지원합니다. 스마트 계정과 위임 지갑에서는 제삼자가 허가된 작업을 제출하는 다른 방식도 가능합니다.

다음 확인 사항: 지출자, 해당 허용량 또는 서명된 권한, 지갑 작업을 살펴보세요. 출금 이유가 끝내 설명되지 않으면 보안 사고로 취급하세요. 악의적인 승인, 기만적인 서명, 계정 통제권 침해가 원인일 수 있지만 그 행만으로는 구분할 수 없습니다.

일반적인 직접 서명 거래에서 기본 From 필드에 내 주소가 있다면 해당 계정에 대한 유효한 서명이 있다는 증거입니다. 그러나 내가 행동을 이해했는지, 그 수신자를 의도했는지, 직접 시작했는지까지 증명하지는 않습니다. 토큰 이벤트의 From 필드는 훨씬 약한 증거입니다.

270 million건의 주소 포이즈닝 시도가 실제로 측정한 것

2022년 7월 1일부터 2024년 6월 30일까지 Ethereum과 BSC 활동을 2년간 분석한 연구에서는 약 17 million개 주소를 겨냥한 270 million건의 포이즈닝 전송 기록이 확인되었습니다.

기록은 세 범주로 나뉘었습니다.

  • 147.7 million건의 금액 0 전송.
  • 118.4 million건의 위조 토큰 전송.
  • 4.0 million건의 극소액 전송.

공격자가 기록을 한데 묶을 수 있으므로 이는 약 18.2 million건의 거래에 포함된 전송 기록입니다. 공격 대상 주소의 수는 사람, 침해된 지갑 또는 실제 금전 피해자 수와 같지 않습니다.

분석에서는 최소 $83.8 million에 달하는 6,633건의 성공적인 피해 송금을 찾아냈습니다. 일부 피해자는 여러 번 송금했습니다. 탐지는 특정 스테이블코인에 집중되었으므로 손실 추정치는 그 범위에서의 하한값이지 모든 토큰과 체인의 총액이 아닙니다.

실질적인 교훈은 수량 0만 확인해서는 공격의 상당 부분을 놓친다는 것입니다. 위조 항목은 의미 있는 결제를 흉내 낼 수 있고, 소액 입금은 실제 토큰을 이동시키면서 위험한 주소를 노출할 수 있습니다.

알 수 없는 거래 내역을 확인하는 방법

  1. 올바른 네트워크에서 거래를 여세요. 지갑의 탐색기 기능이나 Etherscan, BscScan 같은 알려진 탐색기를 사용하고 거래 상태를 확인하세요. 공개 거래 정보를 읽는 데 지갑 연결, 토큰 승인, 메시지 서명, 복구 문구 입력은 필요하지 않습니다.
  2. 실제 자산을 식별하세요. 네이티브 ETH 또는 BNB와 그 이름을 사용하는 토큰을 구별하세요. 토큰이라면 정확한 네트워크와 이벤트 발생 컨트랙트를 신뢰할 수 있는 발행자 정보와 비교하세요.
  3. 최대 정밀도로 수량을 읽으세요. 토큰 수량, 거래의 네이티브 가치, 법정통화 추정액을 구분하세요.
  4. 거래 발신자와 이벤트 발신자를 구분하세요. 스마트 계정이라면 지갑 작업과 권한도 살펴보세요. 다른 사람이 가스를 냈다고 해서 내 자산이 이동하지 않았다는 뜻은 아닙니다.
  5. 전체 거래를 검토하세요. 모든 토큰 이동, 네이티브 코인 전송, 관련 권한 변경을 살펴보세요. 탐색기가 거래별 잔액 변화를 제공한다면 이를 통해 결과를 맞춰 보세요. 오늘 잔액이 그대로라는 사실은 증거력이 낮습니다. 이후 입금이나 상쇄 거래로 과거 이동이 가려질 수 있습니다.
  6. 목적지를 독립적으로 검증하세요. 수신자의 신뢰할 수 있는 결제 정보나 이전에 확인한 주소록 항목을 사용하세요. 최근 거래 내역은 검토할 증거이지 올바른 목적지라는 증명이 아닙니다.

탐색기만으로 명확히 확인할 수 없다면 지갑 제공업체의 공식 지원팀에 네트워크와 공개 거래 해시를 알려 주세요. 예상했던 작업이 있다면 설명하세요. 이를 통해 지갑의 비밀 정보를 공개하지 않고도 낯설지만 의도된 작업과 설명되지 않는 지출을 구별하는 데 도움을 받을 수 있습니다.

확인 후 취할 조치

단독 포이즈닝 기록만 발견했다면

지갑에서 지원한다면 스팸을 숨기거나 신고하고 해당 주소를 사용하지 마세요. 내역을 숨겨도 화면만 바뀔 뿐 블록체인 기록이 삭제되거나 권한이 취소되지는 않습니다.

허용량이 0이어도 0토큰 전송은 발생할 수 있으므로 해당 기록 하나만을 이유로 모든 승인을 취소하거나 자금을 전부 옮길 필요는 없습니다. 취소할 지출 권한 자체가 없을 수도 있습니다. 지갑을 “정리”한다며 토큰이 광고하는 웹사이트나 낯선 사람이 보낸 복구 링크를 이용하지 마세요.

의심스러운 지출 권한을 발견했다면

지갑에서 제공하는 신뢰할 수 있는 승인 관리 경로를 이용해 관련 허용량을 확인하고 취소하세요. 지갑에서 웹사이트 연결을 해제해도 블록체인상의 기존 토큰 승인은 취소되지 않습니다. 권한 취소는 해당 권한만 해결할 뿐 탈취된 개인 키를 복구하지는 못합니다.

의도하지 않았는데 실제 자산이 이동했다면

거래 해시, 네트워크, 영향받은 자산과 관련 주소를 보관하세요. 공식 지원 경로를 통해 최근 서명, 승인, 지갑 작업을 확인하세요.

복구 문구 또는 개인 키가 노출되었다는 증거가 있다면 신뢰할 수 있는 기기에서 새 복구 문구로 새 지갑을 만들고 남은 자산을 신중한 계획에 따라 옮기세요. 유출된 문구에서 파생된 다른 계정을 쓰는 것으로는 노출 문제가 해결되지 않습니다. 자금이 자동으로 사라진다면 가스용 자금을 계속 넣지 마세요. 자금 자동 탈취 프로그램이 가져갈 수 있습니다.

직접 결제에 서명했지만 포이즈닝된 목적지를 복사했다면 그 차이를 기록하세요. 결제가 정상적으로 서명되고 실행되었어도 잘못된 수신자에게 전송되었을 수 있습니다. 이 사실만으로 개인 키가 탈취되었다고 단정할 수는 없습니다.

알 수 없는 거래에 대한 자주 묻는 질문

공격자가 내게 가스비를 내게 했나요?

일반적인 포이즈닝 상황에서는 공격자가 거래를 제출하고 네트워크 수수료를 냅니다. 토큰 이벤트에 내 주소를 기재하는 것만으로 내 계정에 비용이 청구되지 않습니다. 다만 후원 거래와 스마트 계정에서는 수수료 지불자만 보고 작업이 무해했는지 판단할 수 없습니다. 실제 결과를 확인하세요.

거래가 실패했다면 어떻게 되나요?

되돌려진 토큰 전송은 완료되지 않았지만 가스비는 부과될 수 있습니다. 지갑에서 계정 위임을 사용한다면 별도로 확인하세요. Ethereum은 이후 실행이 실패하더라도 위임을 유지할 수 있습니다. 낯선 위임은 검토해야 합니다.

하드웨어 지갑이 주소 포이즈닝을 막아 주나요?

서명 전에 목적지를 확인할 수 있는 추가 수단을 제공합니다. 그러나 공격자가 관리하는 목적지를 내가 승인했다면 올바른 주소로 바꿔 주지는 못합니다. 신뢰할 수 있는 서명 화면에 표시된 전체 주소를 별도로 확인한 수신자 정보와 대조하세요.

낯선 사람이 이런 내역을 추가하지 못하게 할 수 있나요?

일반적으로 제삼자가 공개 주소에 자산을 보내거나 관련 기록을 만드는 것을 막을 수는 없습니다. 지갑과 탐색기의 필터는 표시되는 내역을 줄일 수 있습니다. 검증된 수신자를 저장하고 송금하기 전에 전체 주소를 확인하세요. 금액 0 내역만 숨기는 것으로는 모든 위조 및 극소액 전송 공격을 탐지할 수 없습니다.