BTC
ETH
HTX
SOL
BNB
시장 동향 보기
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

도난당한 지갑 사례를 검토하고 Web3.0에서 자산 보안을 달성하는 방법에 대해 논의하십시오.

链捕手
特邀专栏作者
2022-01-21 03:35
이 기사는 약 3230자로, 전체를 읽는 데 약 5분이 소요됩니다
도난당한 지갑의 경우부터 Web3의 보안 지침에 대해 토론하십시오.
AI 요약
펼치기
도난당한 지갑의 경우부터 Web3의 보안 지침에 대해 토론하십시오.

원본 출처: Alpha Rabbit Research Notes

원본 출처: Alpha Rabbit Research Notes

이벤트

이벤트

2022년 설 연휴의 어느 날 아침, Little C는 코드 작성을 준비하고 Web3js의 온체인 계약 거래를 계속 테스트하고 있었습니다. 갑자기 내 테스트 계정(Bsc 체인)이 MetaMask에서 0으로 재설정되었고 전날 밤 계정에 여전히 100 USD가 있었고 이체를 확인한 후 다음을 발견했습니다.

배경

배경

보조 제목

손실은 어떻게 발생했습니까?

2021년 마지막 날 Little C는 흥미로운 계정(이 계정에는 많은 활성 거래가 있음)을 보고 그의 온체인 거래 중 일부를 추적했으며 매우 흥미로운 프로젝트(연간 환산 수익률이 높음)를 보았습니다. 실수로 자신의 MetaMask에 연결한 다음 실수로 승인했습니다. 일반적인 Web3 프로젝트가 이 프로세스이기 때문에 승인하고 전송이 끝났습니다.

그러나 충격적인 장면이 나타났습니다: 클릭 후 전체 웹 사이트가 갑자기 정지되었고(사실 동결 기간 동안 도둑이 돈을 이체했습니다) 아무런 응답이 없었고 Xiao C는 그 당시에 그것을 회수하지 않았습니다. 사이트를 닫고 다른 일을 하러 갔다.

첫 번째 레벨 제목

보조 제목

도둑은 Little C의 계좌에 있는 모든 돈을 어떻게 이체했습니까?

현상: 승인만 하면 이론적으로 개인키 없이 해당 금액을 모두 송금할 수 있습니다.

리틀씨는 출처를 추적했는데, 피싱 사이트의 승인에 문제가 있었나 해서 이체 기록을 추적했습니다.

그림과 같이 먼저 계약이 승인(권한)되고 피싱 계약이 계정의 BUSD에서 작동하도록 권한이 부여되며 개수에 제한이 없음을 알 수 있습니다.

왜 BUSD인가? 꼬마 C는 이 피싱 사이트에 들어갔을 때 기본적으로 BUSD를 선택했다고 회상했으며, 도둑은 사이트 링크 지갑을 탐색한 후 이미 계정에 가장 많은 돈이 있는 토큰을 걸러낸 것으로 추정됩니다.

그러다가 Little C는 연수익률이 높은 새로운 스왑계약이라고 생각하고 먼저 해보려고 하자 기존 절차에 따라 승인을 진행했습니다. 승인이 끝나면 웹사이트가 바로 멈춥니다.

나중에 다시 추적한 후 승인 후 약 10초 후에 계약이 직접 전송 작업을 트리거하고 BUSD 토큰을 직접 전송했습니다.

나중에 권한 정보를 확인했습니다.

기본적으로 MetaMask의 기본 인증은 다음과 같습니다.

숫자로 환산하면 우리가 아는 것은 1.157920892373162에 10의 59제곱을 곱한 것입니다. 기본적으로 무제한 이체, 즉 이 승인된 작업으로 계약이 내 계정의 토큰을 무기한으로 조작할 수 있는 것으로 이해할 수 있습니다. 전에 승인을 여러 번 클릭했지만 보러 가지 않았기 때문에 이것을 보았을 때 등 뒤에서 소름이 끼쳤습니다.

그런 다음 해커는 계약 방법을 제어할 수 있는 지갑 주소를 조작하고 계약 이체 방법을 시작하고 돈을 이체합니다. 그래서 얘들 아메타마스크 승인을 클릭할 때 주의하십시오.

첫 번째 레벨 제목

보조 제목

문제는 어디에 있습니까?

최근에 블록체인을 배우고 있기 때문입니다. 리틀C는 이 낚시법의 논리를 대략적으로 정리했는데 남을 해치는 마음과 남을 막는 마음이 필요하다. 관심이 있는 경우 다음을 확인할 수 있습니다.

정상 이체

사례 1: 사용자 간 직접 전송 A 사용자가 BUSD를 B 사용자에게 전송

계약은 일반적으로 다음 논리를 확인합니다.

1) 사용자 A의 계좌 잔액에 충분한 금액이 있는지 확인 2) 사용자 A가 시작한 이체인지 여부

그 과정은 아래 그림과 같습니다

정상적인 계약 교환

우리가 보통 팬케이크스왑, 유니스왑 등을 사용하여 교환하는 과정입니다.

사례 2: 스왑을 통한 토큰 교환 사용자는 토큰 교환(BUSD에서 WBNB로) 계약을 진행하여 다음을 판단합니다.

1) 사용자 A의 계정 잔고에 BUSD가 충분한지 여부(스왑 컨트랙트가 계정 A의 BUSD 토큰을 운용할 권한이 있다고 가정)

2) 스왑 계약은 계정 A에서 500BUSD를 가져와 스왑 계약 풀에 넣습니다(환율이 1:500이라고 가정).

3) 계약성공 후 1BNB를 A계좌로 이체

포인트 2와 3은 계약 제어 토큰에 의해 작동됩니다. 즉, 계약은 우리를 우회하고 우리 계정의 토큰에 대한 작업을 직접 시작할 수 있습니다.

낚시 계약

먼저 이 추적 가능성 다이어그램을 살펴보십시오.

정상적인 양도의 경우 양도 당사자와 계약 이행 당사자가 동일인이어야 합니다. 즉, 위 그림의 (1)과 (2)는 동일한 사람이 시작해야 합니다. 내가 이체된 거래의 경우 이 두 주소가 동일하지 않습니다. 피싱 컨트랙트를 실행할 수 있는 지갑 주소가 컨트랙트 실행을 제어한 후 내가 권한을 부여한 BUSD를 피싱 컨트랙트에 전달해야 할 것으로 추측된다.

피싱 계약을 확인하기 위해 피싱 계약이 암호화된 계약이라는 것은 놀라운 일이 아닙니다. 하지만 생각해보면 어렵지 않습니다 솔리디티를 조금 공부해본 사람이라면 컨트랙트를 정의할 때 관리자나 오너를 몇 명 더 설정하면 충분하다는 것을 알 것입니다.

안전 조언

안전 조언

이 사건으로 인해 Xiao C는 몇 가지 유용한 제안과 방법을 찾았고 피비린내 나는 교훈도 많이 보았습니다.

다음은 필요에 따라 선택할 수 있는 몇 가지 방법입니다.

1) 키를 공유하지 마십시오.

니모닉 문구 하나가 여러 개의 계정을 생성한다고 하기 전에 글을 봤는데 이런 계정은 한 팟에서 사용될 가능성이 높기 때문에 추천하지 않습니다.

2) 키가 오프라인에 저장됩니다.

클립보드 기록을 클라우드에 업로드하는 클립보드 도구 입력 방법이 많기 때문에 직접 복사하면 클라우드가 누출되면 키가 직접 손실됩니다.

내 제안은 생성된 후 가능한 한 빨리 노트북에 복사하는 것입니다. 물론 노트북에 복사해서 넣어도 되고, 키의 내 나름의 사전 암호화도 참고할 수 있는데, 예를 들어 a는 1로, b는 2로, 1은 a로 대치한다. 누군가 당신의 종이 열쇠를 보더라도 디지털 자산을 옮길 수 없습니다.

3) 별도의 개발 및 테스트(에어드랍 및 메인 계정 격리)

2개의 브라우저를 설치하세요. 하나는 크롬이고 다른 하나는 용감합니다. 하나는 메인 지갑을 관리하는 것입니다. 다른 하나는 에어드랍, 다양한 온체인 운영 등에 참여할 수 있습니다.

4) 출처를 알 수 없는 소프트웨어를 다운로드하지 마십시오.

알 수 없는 소스에서 소프트웨어를 다운로드하기 위해 Baidu를 사용하지 마십시오 불법 복제된 메타마스크를 다운로드하여 직접 파산한 경우를 보았습니다. 다운로드는 반드시 공식 주소로 가셔야 하며, 조건이 되시면 구글 플레이를 참고하시면 됩니다. 크롬 웹스토어 등

5) 지금 승인 확인

확인할 URL은 다음과 같습니다.Debank는 오픈 소스가 아니지만 UI 상호 작용이 더 좋습니다.앞으로 오픈 소스가 있습니다.직접 선택할 수 있습니다.

https://debank.com/

https://approved.zone/

https://tac.dappstar.io/

https://ethallowance.com/

그림과 같이 기본적으로 무한대입니다.

MetaMask를 깨울 때마다 인증을 더 살펴봐야 합니다. 다음 단계를 인증하려면 지금처럼 어리석게 굴지 마세요.

6) 승인 전에 계약의 보안을 확인하십시오.

https://www.slowmist.com/service-smart-contract-security-audit.html

SlowMist의 계약 감사 기능을 사용할 수 있습니다.

계약서가 오픈소스인지도 확인할 수 있고, 오픈소스라면 계약서가 업그레이드 가능한 계약서인지 등을 확인해야 합니다.

7) 에어드롭 및 혜택 이용 시 안전에 유의

작은 계정을 사용하여 수집하고 큰 계정을 사용하지 말고 승인시 금액을 설정할 수 있습니다! ! !

8) 사회 복지사의 침입을 조심하고 Discord에서 비공개로 채팅하는 낯선 사람을 조심하십시오.

예를 들어, Discord나 Telegram 같은 누군가가 당신을 며칠 동안 알고 있었고, 에어드롭을 받을 수 있는 돈을 가져다 줄 것이라고 말했고, 그가 보낸 소프트웨어를 설치하고 로그인할 수 있게 해 주었습니다. 돈. 계정을 도난당했습니다.

특히 Discord에서 NFT의 공식 Discord에 들어가면 누군가가 민트 링크가 첨부된 화이트리스트를 얻었음을 알리는 비공개 채팅을 할 것입니다. 거짓말쟁이는 프로필 사진과 이름을 공식 사진으로 바꿀 것입니다. 이는 실제로 그를 당신과 함께 그룹으로 끌어들임으로써 이루어집니다.

사실 욕심만 부리지 않는 한 이런 종류의 사기는 간파하기 매우 쉬운데, 일반적으로 몇 시간 안에 주조하라는 지시를 받게 되며 숫자는 1-10입니다. 많은 인기 있는 프로젝트에는 민트 화이트리스트와 하나 또는 두 개의 민트가 있지만 이 프로젝트의 시간 제한은 10입니다.

또한 프로젝트의 공식 웹사이트를 모방하여 가짜 웹사이트를 만들고 프로젝트 서버에 있는 사람들에게 개인 메시지를 보내고 민트로 오라고 요청하는 사기꾼들이 있을 것입니다.

opensea에서 가짜 NFT를 구매하고 오피셜이 아님을 알게 된 친구들도 있습니다.. 며칠 후 NFT가 계정에서 사라졌다가 차감되었습니다... (어떻게 찾았나요? 체인을 보고 공식 Discord는 공식 Opensea URL을 게시했습니다.)

또한 지갑 암호를 속이고 big v에 에어드롭한 다음 big v가 NFT/토큰을 구입했다고 주장하는 가짜 collab.land도 있습니다.

새해가 다가오고 모두가 안전에주의를 기울여야합니다. 이 기사를 읽는 친구들이 안전하고 건전하기를 바랍니다!

이 기사는 작성자 Chris에게 감사합니다.

Web3.0
안전
지갑
Odaily 공식 커뮤니티에 가입하세요