메타마스크 피싱 탐방기
개요
ChainLight은 사기 목적의 트윗을 작성하는 공격자에게 접근해, 어떤 식으로 추가 피해를 양산하는지 조사했습니다. 공격자는 이미 피해를 본 피해자들에게 자산 복구 방법이 있다며, 트윗을 통해 유도하고 자신들에게 이메일을 전송하도록 하고 답장을 통해 공격자가 만든 피싱 사이트에 접속하게 합니다.
이미 잘 알려진 mnemonic 입력을 유도하는 피싱 수법과는 다르게, eth_sign 메소드로 악의적인 트랜잭션에 서명을 유도하는 방식을 사용했습니다. 메일 답장을 일일이 수동으로 대응하는 것과, 잘 알려진 방법이 아닌 유저가 식별하기 어려운 방식의 피싱을 하는 점을 보아 정교하게 피해자를 겨냥해 공격하는 것처럼 보였습니다. 이번 글에서는 새로운 피싱 공격 유형을 알아보고, Web3 커뮤니티에서는 어떻게 대응하고 있는지, 생태계에 참여하는 개인은 어떤 준비를 해야 할지 알아봅니다.
Crypto phishing에 대해
피싱이란 사용자를 기만하여 민감 정보를 누설하도록 유도하는 사기 수법으로, 익히 알려진 서비스나 업체, 기관의 이름을 사칭하여 사용자를 포획하는 방식을 자주 이용합니다. 크립토에서는 특히 이런 피싱이 기성인데, 그 이유는 하기의 목록으로 추려볼 수 있습니다.
자산 관리를 유저가 직접 책임져야 함
친화적이지 않은 UX
유저들의 정보보안 지식 부족
자금 세탁의 용이성
자산을 유저가 직접 관리하며 UX가 친화적이지 않기 때문에 공격자로부터의 유저 스스로에 대한 보호가 어렵습니다. 또한 자산을 세탁하는 데에도 큰 비용이 들지 않기 때문에 악성 유저들은 충분히 이런 지점을 악용할 수 있습니다.
수상한 유저 추적
ChainLight는 저희가 올린 트윗을 인용한, 이상한 트윗과 계정을 발견했습니다. 아래는, ChainLight 계정으로 올린 트윗을 인용한 트윗의 내용입니다:
“I’ve had a similar issue Contact their support team directly , send ’em an email Community.metamask.us@gmail.com, they’ll assist you.”
저희가 작성한 트윗은 “Gitcoin, Lido Finance의 스캠 사이트를 발견했고 유저들은 지갑을 연결할 때 조심해야 한다.”는 내용이었는데, 수상한 한 유저는 이 트윗을 인용해서 위와 같이 트윗을 인용한 문구를 작성했습니다.
스캠 계정 탐방 시작
수상한 유저는 위와 같이 비슷한 종류의 트윗을 지속적으로 자동 업로드하는듯 했습니다. 그래서 저희는 이 유저가 정말 악의가 있는 유저인지 알아보기 위해 미끼를 던져보기로 했습니다.
우선, 해당 유저가 언급한 이메일 주소로 해킹당했으니 도와달라는 이메일을 보냈습니다.
그러자, 6시간 뒤 MetaMask Support라는 이름으로 메일이 왔습니다. 그들은 문제를 파악하기 위해 지갑 주소를 제공해달라는 내용과 문제를 해결하기 위한 방법을 찾아줄 것처럼 답신했습니다.
그래서 그들이 원할 법한 지갑 주소를 기재해서 답신했습니다. 이메일 답장 속도로 보아 수동으로 답장을 하는 것으로 추측했고 지갑 정보를 확인해볼 수도 있을 것 같아, 최대한 의심을 피하고자 Ethereum 고래 중 상위 지갑 주소를 기재해서 보냈습니다.
지갑 주소를 기재해서 보내자, 이번에는 이메일 답장이 이전보다 더 빠르게 왔습니다. 그들은 도난당한 자산을 복구하기 위해 작업 중이라고 했고, 이 작업을 수행하기 위해서는 제공한 웹사이트 내의 restore page에서 지갑을 연결해야 한다고 언급하며 어떻게 자산을 찾을 수 있을지 친절하게 알려줬습니다.
Go to the settings of your MetaMask wallet, navigate to “advanced”, then ensure the “toggle eth_sign requests” option of your wallet is turned on.
Open the link to our restore page on your Mobile phone browser (i.e android or IOS) (this process cannot be initiated from a laptop browser or MetaMask chrome extension) and connect your MetaMask wallet as provided to our support.
Click on “restore wallet” as displayed on the home menu of your MetaMask wallet
Sign and approve the following prompts which appear on your screen to authorize MetaMask to run the auto-reboot protocol in your wallet.
그들이 요구한 첫 번째 사항은 MetaMask wallet 설정에서 ‘toggle eth_sign requests’ 옵션을 turn on 하라는 것인데, 이 옵션은 Dapp이 연결된 지갑의 통제 권한을 가져갈 수 있는 옵션을 의미합니다.
Test
만약 ‘toggle eth_sign requests’ 옵션 활성화 시 ‘eth_sign request’가 발생할 때 MetaMask extension은 어떻게 반응할까요? Metmask에서 만든 Test-dapp 사이트를 이용해 테스트해보겠습니다.
토글 비활성화 시
토글을 비활성화시킨 상태에서, 지갑 연결 버튼을 이용해 지갑을 연결한 뒤, Eth Sign 버튼을 이용해 서명합니다.
그럼 eth_sign이 비활성화되어 있으며 Advanced settings를 통해 활성화를 시켜야 한다는 경고문이 표출됩니다. 비활성화 시에는 MetaMask extension이 반응하지 않았습니다.
토글 활성화 시
토글 활성화 시에는, 서명 요청 메시지가 표출되고 서명 버튼을 클릭하면 또 한 번 경고 문구가 표출됩니다. 경고 문구에는, 서명 시 계정의 전체 통제 권한을 Test-dapp에 넘겨주는 것이니 자산들이 위험한 상황에 노출될 수도 있다는 내용이 포함되어 있습니다. 위 요청에 서명한다면 계정 내의 자산 접근 권한을 Test-dapp 측에 할당하는 셈이 됩니다.
만약 무시하고 계속 서명 절차를 밟는다면 어떻게 될까요?
결과값을 표출하며, Eth Sign 서명이 승인됩니다.
Test-dapp에서 시도해보았으니 이번에는 악성 유저가 보낸 메일 속의 스캠 사이트에 접속해서 시도해봅시다. ‘toggle eth_sign requests’를 활성화한 상태이니 웹사이트에서도 경고문을 표출할 것입니다.
그들이 요구했던 ‘Restore Wallet’ 버튼을 클릭해보도록 합시다.
지갑을 연결하자마자 계정의 통제 권한에 대한 요청이 뜨면서 MetaMask의 경고문이 표출됩니다. 만약 큰 금액의 자산을 탈취당한 사람이라면, 자금을 돌려받을 수 있다는 가능성에, 표출된 경고문을 무시할 가능성이 있으니 내용을 정독하고 경고를 유의해야 합니다.
Test — Mobile version
그들이 보내온 메일의 2번 항목처럼 요구한 대로 모바일로 웹사이트에 접속한 후 MetaMask mobile과 상호작용을 시도해보겠습니다. MetaMask의 mobile에서도 ‘toggle eth_sign requests’를 활성/비활성화할 수 있어 해당 기능을 활성화한 뒤 접속 및 지갑 연결을 해봤습니다.
어김없이 MetaMask의 경고문을 볼 수 있습니다. 유저는 스캠을 피하기 위해 MetaMask가 보내는 경고문을 유심히 살펴봐야 할 필요가 있습니다.
MetaMask 내의 기능은 많은 사용자의 피해, 혹은 피해 가능성이 높은 지점을 MetaMask 팀뿐만이 아닌 다른 유저들도 참여해서 개선합니다. 이 점을 참고해서 MetaMask 내의 기능을 사용하시기를 바랍니다. MetaMask의 기능 추가 및 반영에 관한 내용은 MetaMask community나 Github에서 논의가 이루어지고 있는 것을 쉽게 찾아볼 수 있습니다. 아래의 웹사이트들을 통해 참고할 수 있습니다.
MetaMask Github: https://github.com/MetaMask
MetaMask Community: https://community.MetaMask.io
탈중앙화 서비스를 위한 커뮤니티의 자발적 참여
현재는, 데스크탑에서 웹 extension으로 설치된 MetaMask의 eth_sign 토글을 활성화한 뒤, Dapp과 상호작용하게 되면 eth_sign에 대한 경고문이 표출되지만, 불과 지난달까지만 해도 모바일 버전에서는 데스크탑에서 표출되는 것처럼 경고문이 뜨지 않았습니다. 한 유저는 이러한 문제 때문에 자신의 자산이 위험에 처할 뻔했다고 MetaMask community에 본인의 경험에 대해 작성했습니다.
유저를 보호하기 위해, eth_sign에 대한 toggle의 비활성화를 기본 설정으로 하고 유저가 켜고 끌 수 있어야 하며, eth_sign이 필요한 경우에는 설정란에서 설정할 수 있게 UI/UX를 설계해야 한다는 토론의 내용도 Github에서 찾아볼 수 있습니다.
이처럼, 경고 표출 기능과 eth_sign 토글의 비활성화 기본값 설정은 처음부터 구현이 된 기능이 아니라 유저들의 요청과 제안에 의해 추가된 기능입니다. 유저들은 스캠 행위를 하는 사람들이 많아지고 이를 통해 위험한 상황을 겪자, 자발적으로 MetaMask 측에 건의했고, MetaMask는 해당 제안을 수용해서 소프트웨어에 반영했습니다.
Web3 생태계에 기여하는 ChainLight
ChainLight 또한 Smart contract audit firm으로서, 위험 소지가 있는 Smart contract 발견을 통해 별도로 해당 프로젝트에 알리는 활동을 하며 생태계 기여를 위한 노력을 아끼지 않고 있습니다.
대한민국에서는 트래블룰 준수를 위해 각 거래소에서 외부 지갑을 자금 송수신 시, 거래소와 외부 지갑 간의 상호 작용이 필수입니다. ChainLight은 고객사 중 한 곳인 국내 최대 거래소 업비트와 함께 메타마스크를 빙자한 스캠 주의를 위한 캠페인도 실행한 바 있습니다.
MetaMask의 직원인 @tayvano_는 ChainLight의 미디엄 글을 인용하여, 커뮤니티에 주의를 요구하고 eth_sign 기능을 더 이상 기본값으로 지원하지 않는 MetaMask에서 유저에게 사기 행위를 하기 위한 악성 유저의 사기 방식 고도화에 관한 트윗을 게시했습니다.
블록체인이, 유저들의 자발적 참여를 통해 발전하는 탈중앙화 공간인 만큼 ChainLight은 앞으로도 건전한 생태계를 위해 한발 앞서 나가겠습니다.
결론
이번 사례를 통해, 사기 목적의 트윗을 시작으로 공격자가 피해자를 공격하는 방법과 단계에 대해 알아보았습니다. 수상한 트위터 유저는 저희의 스캠 알림 트윗을 인용하며 또 다른 피해자들을 양산하려고 했습니다. MetaMask를 이용할 때, eth_sign 토글이 비활성화되어있는지 확인하고, 만약 자신이 자산을 사기당한 피해자라면 더더욱 자산에 대한 복구로 유혹하는 웹사이트에 접근하지 말아야 합니다.
Web3에서 벌어진 일은 되돌리기 쉽지 않습니다. Web3 서비스를 이용하는 유저분은 앞서 언급한 위험 요소에 대해 숙지하시어 안전하게 Web3 생태계를 이용하시길 바랍니다. 앞으로도 유저의 안전을 위협하는 요소가 있다면 블로그를 통해 소개해 드리겠습니다.
참고 자료
✨ We are ChainLight!
ChainLight 팀은 풍부한 실전 경험과 깊은 기술 이해를 바탕으로 새롭고 효과적인 블록체인 보안 기술을 연구합니다. 연구 결과를 바탕으로 Web3 생태계의 각종 보안 위험 요소와 취약점을 사전 파악하여 제거하는 혁신적인 보안 감사 서비스를 제공합니다. 보안 감사 이후에도 온체인 데이터 모니터링 및 취약점 탐지 자동화 서비스를 이용한 지속적인 디지털 자산 위험 관리 솔루션을 제공합니다.
ChainLight 팀은 사용자들이 탈중앙화 서비스를 안전하게 활용할 수 있도록 Web3 생태계 위협으로부터의 보호에 힘쓰고 있습니다.
ChainLight의 더 다양한 정보를 보고 싶으시다면? 👉 Twitter 계정도 방문해 주세요.
🌐 Website: chainlight.io | 📩 TG: @chainlight | 📧 chainlight@theori.io
Originally published at https://blog.theori.io on May 18, 2023.