우리는 수억 달러의 손실을 초래한 피싱 공격의 증가 추세를 관찰하고 있습니다. 따라서 기술적인 관점 외에도, 일반적인 피싱 방법을 사용자에게 알리고 피싱 공격을 피하는 방법을 교육해야 합니다.
피싱 공격의 유형
네 가지 일반적인 피싱 공격 유형이 존재합니다.
-
직접 토큰 전송: 공격자가 사용자를 유인하여 네이티브 토큰(Ether) 또는 ERC20/ERC711 토큰을 공격자가 통제하는 계정으로 직접 전송하도록 합니다.
-
승인 피싱: 승인은 사용자의 토큰을 서명된 승인 트랜잭션을 통해 지출자에게 위임하는 메커니즘입니다. 공격자는 사용자를 유인하여 자신의 토큰을 공격자에게 승인하는 트랜잭션에 서명하도록 하고, 이후 공격자는 피해자의 토큰을 전송할 수 있습니다.
-
주소 오염: 가짜 토큰 공격, 제로 값 공격, 더스트 전송 공격 등이 있습니다.
-
NFT 제로구매 피싱: 공격자가 사용자를 유인하여 자신의 NFT를 낮은 가격 또는 무료로 판매하는 트랜잭션에 서명하도록 합니다.
-
기타.
직접 토큰 전송
첫 번째 유형은 직접 토큰 전송이라고 합니다. 공격자는 사용자에게 Ether를 공격자가 통제하는 계정으로 직접 전송하는 트랜잭션에 서명하도록 요청합니다. 고급 방식은 SecurityUpdate 또는 ClaimRewards라는 이름의 함수가 있는 악성 스마트 계약을 활용하여 사용자가 트랜잭션에 서명하도록 유도합니다.


이전 그림(오른쪽)은 스마트 계약에 SecurityUpdate 함수가 있는 피싱 트랜잭션의 예시를 보여줍니다. 사용자가 이 트랜잭션에 서명하면, 그/그녀의 Ether가 이 스마트 계약으로 전송된 후 공격자에게 전달됩니다.
승인 피싱
승인은 사용자가 다른 사용자(지출자)에게 자신의 토큰을 사용할 수 있도록 허용하는 메커니즘입니다. 예를 들어, 사용자는 스마트 계약이 사용자를 대신하여 USDC 토큰을 운용할 수 있도록, 예를 들어 USDC를 다른 토큰으로 교환하기 위해 자신의 USDC를 스마트 계약에 승인할 수 있습니다. 사용자가 스마트 계약에 토큰을 승인했으므로, 스마트 계약이 사용자의 USDC 토큰에 대한 작업을 수행할 때 사용자의 추가 확인(또는 새로운 서명 메시지)이 필요하지 않습니다. 이를 통해 전체 흐름을 원활하게 만들 수 있습니다.
그러나 공격자들은 이 메커니즘을 악용해 왔습니다. 그들은 사용자를 유인하여 USDC(또는 다른 가치 있는 토큰)를 공격자가 통제하는 계약 또는 EOA 주소에 승인하는 트랜잭션에 서명하도록 할 수 있습니다. 이후 공격자는 사용자의 토큰을 공격자에게 전송할 수 있습니다.

이전 그림은 공격자에게 USDT를 승인하는 트랜잭션을 보여줍니다. 승인 권한은 사용자가 명시적으로 취소할 때까지 만료되지 않습니다. 따라서 악성 승인을 가능한 한 빨리 취소하십시오.
또한 합법적인 계약을 활용한 새로운 유형의 피싱 공격도 발견했으며, 이를 Web3 피싱 공격에서의 ROP라고 부릅니다. 자세한 내용은 우리 블로그를 참조하십시오.
주소 오염
이 영상에서는 가짜 토큰 공격, 제로 값 공격, 더스트 전송 공격을 포함하여 주소 오염이 어떻게 발생하는지, 그리고 Etherscan에서 수상한 트랜잭션을 어떻게 발견하는지 보여드립니다.
제로 값 전송: 공격자는 피해자로부터 피싱 주소로 인기 있는 토큰(예: USDC)의 제로 값 전송 기록을 만듭니다. 이 피싱 주소는 피해자의 트랜잭션 기록에 있는 주소와 유사합니다. 피해자가 다음 전송을 위해 주소를 직접 복사할 때, 트랜잭션 기록에서 피싱 주소를 복사할 수 있습니다. 우리 트위터, Coinbase 조사 1 2 3, 및 더 보기에서 자세히 읽어보세요.
NFT 제로구매 피싱
OpenSea와 같은 NFT 마켓에서 NFT를 판매할 때, 사용자는 먼저 자신의 NFT를 특정 가격에 판매하겠다는 의향을 명시한 트랜잭션에 서명합니다. 그런 다음 이 NFT를 구매하려는 사람은 서명된 주문 메시지를 가져가서 주문을 체결할 수 있습니다.
이는 사기꾼에게 사용자를 유인하여 특히 낮은 가격(또는 심지어 무료)으로 NFT를 판매하는 트랜잭션에 서명하도록 할 기회를 제공합니다. 공격자는 이 트랜잭션을 가져가서 NFT 마켓에서 주문을 체결하여 피해자의 NFT를 낮은 가격(또는 무료)으로 얻을 수 있습니다.
이 피싱은 사용자가 주문에 서명할 때 그 의미를 이해하는 데 도움이 필요하기 때문에 만연합니다.

이전 그림은 OpenSea 주문에 서명할 때 MetaMask의 UI를 보여줍니다. 안타깝게도 이러한 정보는 사용자가 이해하기 어렵습니다.
자신을 보호하는 방법
- 첫째, 이해하는 트랜잭션에만 서명하세요! 트랜잭션에 대해 의문이 있으면 서명하지 마세요.
- 둘째, 트랜잭션 수행을 위해 여러 지갑을 사용하세요. 일상적인 트랜잭션에는 소량의 토큰만 있는 지갑 주소를 사용하세요. 대부분의 토큰은 첫 번째 지갑으로 토큰을 전송하는 경우를 제외하고 트랜잭션에 서명하지 않는 별도의 지갑 주소에 보관하세요.
- 셋째, 승인 내역을 확인하고 불필요한 것은 제거하세요. 이를 위해 MetaSuites의 승인 진단 기능을 활용할 수 있습니다.



