웹 3.0 기술이 발전하면서 승인 피싱, 유니스왑 퍼밋2 피싱, 클레임 피싱, 모달 피싱과 같은 다양한 공격이 등장했습니다. 이 글에서는 이러한 공격을 식별하고 예방하여 사용자가 암호화폐 자산을 안전하게 보호할 수 있는 방법을 자세히 설명합니다.
Salus 인사이트 작성
웹3 피싱이란?
웹3 피싱은 공식 웹사이트로 위장한 가짜 웹사이트를 만들어 암호화폐 사용자의 인증, 서명, 암호화폐 자산을 탈취하는 온라인 사기 수법의 한 형태입니다. 웹3.0 기술이 발전함에 따라 새로운 유형의 웹3 피싱 사기가 등장하고 있습니다. 여기에서는 새로운 웹3.0 피싱 공격인 승인 피싱, 유니스왑 퍼밋2 피싱, 클레임 피싱, 모델 피싱에 대해 소개하고, 사용자가 이러한 공격을 식별하고 예방할 수 있는 효과적인 방법인 승인 피싱 예방 방법을 알려드리겠습니다. 허가2의 서명 식별, 클레임 피싱 공격 방지, 모달 피싱 공격 방지.
1. 승인 호출 공격
대부분의 웹3 피싱 공격은 승인, 증액 허용 작업과 관련이 있습니다. 공격자는 위조된 이메일이나 메시지, 가짜 웹사이트나 애플리케이션, 소셜 엔지니어링, 악성 광고나 팝업을 통해 사용자가 승인 작업을 수행하도록 속입니다. 결과적으로 사용자는 불필요한 승인을 취소해야 합니다. 또한 피싱 공격자들은 인증 취소를 악용할 수도 있습니다.
승인 취소 피싱 공격은 어떻게 이루어지나요?
공격자는 가짜 ERC-20 토큰 컨트랙트를 배포하고 승인 기능을 수정합니다;
공격자는 수많은 온체인 주소의 승인을 수동으로 위조하고 사용자에게 승인을 취소하라는 알림을 보냅니다;
사용자가 이 알림을 받고 클릭해 승인을 취소하면 트랜잭션을 전송하는 작업이 트리거됩니다. 이 트랜잭션으로 컨트랙트 배포자의 지갑에서 토큰이 발행됩니다.
증액 권한 부여 피싱 트랜잭션 링크
https://arbiscan.io/tx/0xd598336fac79123952319c9cd9cc62aa275162ce5f39d08ccac0c5e6ef0538e5
"승인 취소" 피싱 트랜잭션 링크 https://etherscan.io/tx/0xd4d606caddebf185dc6902ffcec78f3cc915826e1c0e37319d407d01681980ab
2. 유니스왑 퍼밋2 피싱 공격
유니스왑 퍼미트2를 사용하면 여러 애플리케이션에서 토큰 권한을 공유하고 관리할 수 있습니다. 사용자는 한 번의 트랜잭션으로 승인과 거래를 할 수 있어 거래 가스 비용을 절감하고 거래 프로세스를 간소화할 수 있습니다. 그러나 퍼밋 2는 사용자의 작업을 오프체인 서명으로 전환하는데, 이는 사용자가 가장 쉽게 방심할 수 있는 부분이며, 대부분의 사람들은 서명을 면밀히 검토하거나 이해하지 않습니다.
유니스왑 퍼밋2 서명 피싱 공격은 어떻게 작동하나요?
- 사용자는 자신의 토큰으로 허가 2 계약을 승인하는데, 이는 중요한 전제 조건이며, 이는 승인 시점의 서명이 이미 피싱 사기의 위험에 노출되어 있다는 것을 의미합니다.
- 해커는 사용자의 서명을 가지고 있으며, 이를 기반으로 허가2 컨트랙트에서 허가 및 전송 작업을 수행하여 사용자의 자산을 전송합니다.
- 해커는 허가 함수를 호출하고, 이 함수에서 검증 함수와 _updateApproval 함수가 호출됩니다. 검증 함수는 사용자의 서명을 확인하는 데 사용됩니다. verify 함수는 사용자의 서명을 확인하는 데 사용되며, _updateApproval 함수는 확인 후 실행됩니다. 업데이트 승인 함수는 승인 값을 업데이트하는 데 사용됩니다.
승인된 당사자는 transferFrom 함수를 호출하여 승인 한도 내에서 지정된 주소로 토큰을 전송할 수 있습니다.
Permit2 피싱 트랜잭션 링크
https://etherscan.io/tx/0x1d8fa25f8f16d52cd4c5716e0cefd9b1cdbbbc060901cea223bab9de79b17ea3
3. 클레임 피싱 공격
클레임 피싱 공격은 신뢰할 수 있는 기관의 요청을 스푸핑하여 사용자가 개인 정보, 로그인 자격 증명 또는 액세스 권한을 제공하도록 속이는 공격입니다. 이러한 클레임 피싱 계약은 종종 제로 주소로 위장하여 사용자가 이를 신뢰하도록 속여 암호화 자산에 액세스하도록 유도합니다.
클레임 피싱 공격은 어떻게 진행되나요?
- 피셔는 스캠 컨트랙트와 허브 컨트랙트를 배포하고 훔친 사용자 자금을 받기 위해 EOA를 생성합니다. 스캠 컨트랙트는 사용자의 이더리움, ERC20 토큰, NFT를 훔칠 수 있습니다. 스캠 컨트랙트는 오픈소스는 아니지만 온체인 거래 데이터를 기반으로 두 가지 주요 기능을 포함하고 있습니다. 클레임과 멀티콜입니다.
- 클레임 함수가 호출되면 피해자가 보유한 토큰이 내부 트랜잭션의 허브 컨트랙트로 전송됩니다.
- 멀티콜 기능은 피해자가 승인한 토큰을 전송하는 데 사용됩니다.
- 허브 컨트랙트는 각 사기 컨트랙트에서 탈취한 자금의 수금 지점으로 사용됩니다. 피셔가 생성한 EOA는 허브 컨트랙트의 인출 기능을 호출하여 자금을 인출할 수 있습니다.
클레임 피싱 트랜잭션으로 연결되는 링크
https://etherscan.io/tx/0xfe70f1b0a92e719bff0d291b7a79987e6e93ed129d52be8e8918c2b9acb1f3b0
4. 모달 피싱 공격
공격자는 웹 3.0 암호화폐 지갑의 특정 사용자 인터페이스(UI) 요소를 제어하여 모달 피싱이라는 피싱 공격을 수행할 수 있습니다. 웹 3.0 암호화폐 지갑의 일반적인 모달 디자인은 일반적으로 사용자가 서명 등 요청을 확인하는 데 필요한 정보와 요청을 승인 또는 거부하는 버튼을 제공합니다.
메타마스크 지갑을 예로 들어 모달 피싱 공격이 어떻게 발생하는지 살펴봅시다.
- 피셔는 결제 기능이 있는 보안 업데이트 기능이 있는 피싱 스마트 컨트랙트를 배포하고 피해자가 해당 스마트 컨트랙트로 자금을 이체할 수 있도록 합니다;
- 피셔는 또한 SignatureReg를 사용하여 SecurityUpdate 함수 서명을 사람이 읽을 수 있는 문자열 "SecurityUpdate"로 등록합니다.
- 피해자는 위의 피싱 스마트 컨트랙트를 메타마스크 지갑에 연결합니다;
- 메타마스크는 피싱 스마트 컨트랙트를 파싱하고, 함수 서명 바이트를 사용하여 해당 함수 메서드인 "SecurityUpdate"를 조회합니다.
- 메타마스크 모델에 "SecurityUpdate"가 표시되고 사용자에게 이를 확인하라는 메시지가 표시됩니다. 사용자가 "보안 업데이트" 버튼을 클릭하면 피싱이 성공합니다. 이때 피셔가 작성한 피싱 스마트 컨트랙트가 실행되고 피해자의 자금이 스마트 컨트랙트로 이체됩니다.
웹 3.0 피싱 공격 방지 방법
1. 승인 피싱에 대한 예방 조치
승인, 증액, 취소 승인 피싱 사기는 승인 작업의 세부 사항을 이해하고 승인 정보를 확인하여 올바른 채널에서 승인을 취소하면 효과적으로 피할 수 있습니다.
다음 콘텐츠는 사용자가 인증 작업의 구체적인 내용을 이해하는 데 도움이 될 수 있습니다:
사용자가 승인할 때 승인 금액, 승인 통화 및 승인 주소를 고려해야 합니다. 승인 금액과 통화를 지정함으로써 사용자는 승인된 상대방이 자신의 계정에서 이체할 수 있는 자산의 양을 제한하고 이 상호 작용과 관련이 없는 통화로 승인하는 것을 방지할 수 있습니다. 또한 사용자는 승인 주소를 다시 확인하고 여러 채널을 통해 주소를 확인하여 올바른 주소로 승인이 이루어질 수 있도록 해야 합니다.
- 사용자는 정식으로 승인하기 전에 적절한 토큰 컨트랙트에서 승인 트랜잭션을 시뮬레이션하여 승인 정보를 얻을 수 있습니다.
- 승인 또는 승인 증가, 승인 감소 및 기타 승인 관련 기능을 찾아 다음 정보를 입력하여 승인 트랜잭션을 시뮬레이션합니다.
- 승인 시뮬레이션이 완료되면 Phalcon에서 시뮬레이션된 거래의 세부 정보를 확인할 수 있으며, 입력 데이터에서 승인 주소와 승인 금액을 확인할 수 있습니다.
위의 결과가 사용자가 예상한 것과 같으면 정식 승인을 진행할 수 있습니다.
다음은 체인에서 승인 정보를 추적하고 승인 정보를 취소하는 구체적인 단계입니다:
승인 완료 후 토큰 승인 상태를 주기적으로 추적하고 관련 승인을 취소할 수 있습니다. 토큰 승인 확인 기능은 이더스캔, Bsc스캔, 폴리곤스캔 블록체인 브라우저에서 사용할 수 있습니다.
- 주소를 입력하면 해당 주소에 대한 승인 거래 내역을 확인할 수 있으며, 각 거래의 오른쪽에 있는 취소 버튼을 통해 승인을 취소할 수 있습니다.
- 검색된 승인 거래에서 승인 통화, 승인 주소, 승인 금액을 확인할 수 있습니다.
2. 허가2에서 서명 식별하기
서명의 세부 사항을 이해하고 인식하며 면밀히 조사할 수 있다면 퍼밋2 피싱 사기를 효과적으로 피할 수 있습니다.
서명 형식에는 일반적으로 소유자, 지출자, 값, 논스, 마감일이라는 주요 필드가 포함됩니다:
1. 소유자: 토큰 소유자의 주소를 나타내며, 서명을 승인할 주소를 지정하는 데 사용됩니다.
2. 발신자: 토큰을 사용할 권한이 있는 사람의 주소로, 권한이 부여될 주소를 지정하는 데 사용됩니다. 3. 값: 권한이 부여될 토큰의 값입니다.
값: 승인하려는 토큰의 개수로, 지출자에게 승인할 토큰의 특정 개수를 지정할 수 있습니다.
논스: 토큰 소유자를 위한 거래 카운터로, 승인된 각 거래에 고유 식별자가 있는지 확인하는 데 사용됩니다.
5. 기한: 서명의 유효 기한으로, 서명의 유효 기간을 제한하는 데 사용됩니다. 만료일이 지나면 서명은 무효화됩니다.
기본 최대값을 선택하기보다는 필요에 맞게 특정 값과 기한을 설정하는 것이 좋습니다.
유니스왑 허가2 컨트랙트를 호출하기 전에 권한 부여 기능을 시뮬레이션하여 권한 부여의 세부 사항을 이해할 수 있습니다. 시뮬레이션 버튼을 클릭합니다.
승인 기능을 선택하고 다음 매개변수를 입력하여 허가 2 컨트랙트에 대한 사용자 승인을 시뮬레이션합니다.
3. 클레임 피싱 공격 예방하기
클레임 피싱의 함정에 빠지지 않으려면 사용자의 경계를 완화하기 위해 종종 제로 주소로 위장하는 피싱 컨트랙트 주소를 인식해야 합니다. 아래는 클레임 피싱 사기에 사용되는 일부 사기 계약서 목록으로, 거래 시 주소 앞뒤에 '0000'이 포함된 주소를 주의해야 합니다.
https://etherscan.io/address/0x0000b514c923f55180fc12428e05695666620000
https://etherscan.io/address/0x0000438e0f00fc35dff19d0062608057a1d20000
https://etherscan.io/address/0x0000a4998724e52f0886edff693aca33f9900000
https://etherscan.io/address/0x000062accd1a9d62ef428ec86ca3dd4f45120000
https://etherscan.io/address/0x000038f1e0c4417a3650c3f9a9a920b2e52e0000
https://etherscan.io/address/0x000056c346441ef8065e56b0cddd43fdec100000
클레임 피싱 역시 사용자로부터 토큰 인증을 획득하는 것이므로 인증 상황을 계속 주시해야 합니다.
4. 모달 피싱 공격 예방하기
모달 피싱 공격의 근본 원인은 지갑 애플리케이션이 표시되는 UI 요소의 적법성을 철저하게 검증하지 않기 때문입니다. 이러한 피싱 공격을 방지하려면 지갑 앱 개발자는 항상 들어오는 데이터를 신뢰할 수 없다고 가정해야 합니다. 사용자도 위에서 설명한 대로 서명 및 인증 정보를 확인할 수 있습니다.
요약
지금까지 네 가지 새로운 유형의 웹 3.0 피싱 공격과 그에 따른 식별 및 예방 조치에 대해 자세히 알아보았습니다. 사용자의 인식 제고와 더불어 인증 및 서명에 대한 철저한 이해, 정기적인 인증 확인, 불필요한 인증은 적시에 취소하는 것이 좋습니다. 또한 공격자가 서명을 입수하여 악용하는 것을 방지하기 위해 임의로 서명하지 않는 것이 중요하다는 점을 강조합니다.