반응형

스시스왑, 유니스왑과 같은 허가없이 유동성 풀을 생성하거나 거래할 수 있는 open dex에서 최근 들어서인지, 원래 그랬는지 모르겠는 허니팟 Scammer들한테 자꾸 연락이 와서, 혹시나 속아넘어가는 사람이 있을까봐 글을 작성해본다.

25/1/2: https://dexscreener.com/arbitrum/0x186aa6185a5c0f7bceda657511aa8ae555df59e3

FOMO 오게 생긴 차트. 이게 도대체 왜 문제인지... 어떻게 이로 인한 스캠 피해가 생기게 되는지를 코드 분석과 실제 사례를 통해 알아보도록 하자.

(+ 나한테 왜그러는지 모르겠는데, 오늘(25.1.5) 새로운 스캠메시지(같은 패턴)이 왔다.

 

https://dexscreener.com/base/0xba83db06677bbe976687429696bbe19a1c872d56

 

주요 특징 세줄 요약

  • pump&dump: 끊임없는 가격 상승, 그리고 순간 폭락
  • arbitrum: 내가 본 모든 사례는 아비트럼에서 발생했다(오늘 사례를 통해, 이 원칙이 깨졌다.)
  • open dex: uniswap, sushiswap 등 open dex에서 발생한다. (100%)

공격(?) 방식

나도 실제로 이로 인한 피해를 보기도 했고(뭔지 모르는거에 큰 돈을 투자하고 싶지 않아 10불정도의 피해를 봤다.), 주변에서 1000불 이상 피해를 본 경우도 보는 등 총 다섯 번의 사례를 확인하였다. 그 결과, 공통적인 특징을 확인할 수 있었다.


#1. 피해자 모집(케바케)

일반적으로, 텔레그램 DM을 통해 접근한다. dex와 같은 플랫폼에서 온체인 거래를 하는 사람들은 대부분 텔레그램 암호화폐 정보 공유방에 들어가있을 것이다. 이러한 텔레그램 방에서 피해자를 선별하고, 해당 인원에게 DM을 하여 피해자를 모집한다.

 

우선, 그들은 친목을 한다. 해당 시즌/메타에 핫한 코인을 주제로 이야기를 하거나, 본인의 수익률을 자랑하거나, 특정 기술에 대한 이야기를 하며(솔직히 기술적 이해도가 높아보이지는 않다) 유대감을 형성하는 것으로 보인다.

 

그러다가 슬슬 본심을 드러내는데, 이런 느낌이다.

오늘 저녁에 발표되는 엄청난 코인을 발견했으며, 자기 말대로만 하면 엄청난 수익을 가져다준다는 이야기이다.

 

또 다른 예시에서는, 실제로 존재하거나 토큰 출시를 앞둔 프로젝트의 트윗, 웹사이트를 가져와 해당 프로젝트의 토큰 출시라고 시뻘건 거짓말을 자행하는 경우도 있었다.


#2. 구매 유도(케바케)

다음 단계로는, 어떤 코인인지, 어떤 프로젝트인지에 대한 설명보다는 몇시에 코인이 등장하는지를 설명해주고 본인의 가이드대로 구매를 하라고 요구한다.

그렇게 해서 코인을 구매했다고 하면, 추가 구매를 유도하는데…

이런식으로 토큰 에어드랍이 예정되어있으며, 에어드랍을 위해 추가 구매를 하라고 한다. 만약 유동성이 부족해 추가 구매가 어렵다면, 가지고 있는 다른 코인을 판매하거나 가족, 친구에게 돈을 빌리라고 한다.

 

(솔직히 이렇게 말하는데 넘어갈 사람이 얼마나 있을까? 라는 생각이 들긴 한다. 싸가지가 없다.)


#3. Pump

이렇게 피해자들을 모집한 결과, 다음과 같이 가격의 계속된 상승이 이어지게 된다.

 

그런데, 왜 계속 오르기만 하는 것일까? 그 이유를 알아보도록 하자.

앞선 부분은 그저 피해자를 모으는 방식이었다고 한다면, 지금부터가 이 스캠의 메인이 되는 부분이다.

결론부터 이야기하자면, 이런 종류의 허니팟 스캠 코인은, “인가된 사용자만이 판매할 수 있는 토큰”이다.
  • $Fabric(CA): 0x9020E73AfeABAbc479F7DE356b85Bb6E4825756E
  • open dex: sushi swap

어떤 방법을 사용한 것일지, 코드를 통해 분석해보자. 컨트랙트 원본을 찾을 수 없어 bytecode를 dedaub을 통해 decompile하였다. swap이 이루어질 때 swapExactTokensForTokens() 함수를 통해 swap이 이루어지며, 대부분 sushiswap의 pair, router 컨트랙트에서 로직을 처리한다. 스캠코인이 동작에 영향을 주는 부분은 transfer()함수를 호출하는 과정에서 영향을 주게 된다.

dedaub을 통해 decompile한 결과를 보고 어떠한 방법으로 진행되는지, 살펴보자.

 

1. transfer()함수에서 0xc08로 jmp

2. 0xc08에서…

  • recipient, msg.sender 주소 0인지 체크 (그렇다면 revert)
  • 0x12f9로 jmp. 인자에는
    • _getRoleAdmin[0].field0[msg.sender]
    • amount
    • recipient
    • msg.sender를 넣는다.
  • 아래 부분은 일반적인 transfer의 동작과 같다. (erc20:_update()와 같다고 하는게 맞으려나?)

3. 0x12f9를 보면 ...

stor_0_0_19와 msg.sender주소를 비교하는 것이 보인다.

해당 주소를 검색해보니, sushiswap의 pair address가 나온것을 확인하였다. 즉, pair가 transfer를 할 때의 로직과, 일반 사용자가 transfer를 할 때 로직에 차이가 있는 것이다. 아무래도 AMM이다보니, 유동성풀에서 거래를 하려면 pair는 자유롭게 거래를 하도록 해야하니.. 이렇게 한 것으로 보인다. 좀 더 들여다보자.

 

if문으로 들어와서 첫 번째 if문은 _getRoleAdmin[0].field0[msg.sender]의 결과가 0일 경우에 들어오는 조건문이다(if(!varg0)). 해당 _getRoleAdmin[0].field0[msg.sender] 변수는 어떻게 세팅되는것인지를 찾아보면 아래와 같다.

즉, grantRole함수를 통해 0x73ajmp를 하고, (아마 grantRole권한을 확인하려는 듯 하다) role을 부여할 자격이 있는지 확인한 후 role을 부여한다.

 

이처럼, msg.sender에게 특정 role이 있는지를 확인한 뒤, role이 있다면 그저 통과, 아니라면 if문에 들어간다.

owner_1[varg3].field_1[varg3]은 0으로 세팅되어있으니, varg1(amount)를 통해 조작해보면,

  • amount가 0일 경우: v0는 0 → v1, v2도 0 → if(!v1)에서 revert 발생
  • amount가 양수일 경우: v0는 양수 → v1, v2는 1 → v1은 다시 0 → if(!v1)에서 revert 발생

이로 인해, 절대 통과할 수 없게 된다.

그렇다면, owner_1[varg3].field_1[varg3]를 조작하는 방법은 없을까?

owner_1[varg3].field_1[varg3]을 수정하는 함수가 있는데, 이 함수도 … 위의 if문을 통과해야 도달할 수 있는 함수이기 때문에, 결국 이를 수정할 수는 없다.

결과적으로, 등록을 할 수 있는 role을 가진 사람이 아니라면, whitelisting을 할 수 없고, whitelisted되지 않았다면 transfer를 할 수 없어 결과적으로 판매를 할 수 없게 된다!

이처럼 판매를 할 수 없으면, 경제학적 원리에 따라, 수요만 존재하고, 판매는 없는 현상이 발생해 토큰의 가격은 하늘높이 치솟게 되는 것이다.


#4. Dump

가격을 하늘높이 치솟게한 후, scammer가 전량 매도하면 scammer는 모든 상승분을 가져갈 수 있게 되며, 드디어 끝을 모르던 펑핑은 끝을 보게 된다.

 

여담 (Scammer와 채팅내용)

속아주는척 -> 밥먹는데 자꾸 디엠해서 읽씹하다가 -> 지갑은 비탈릭 지갑


 

좀 찾아보다보니, 이 컨트랙트를 만들어서 판매하는 사람이 있는 것도 발견하여 공유한다.

상세 설명(스캠 개발자의 설명 영상)
https://www.youtube.com/watch?app=desktop&v=OZqDC_2Wq3I

컨트랙트 코드 구매 링크
https://cryptokoki.com/honeypot-token-v4.html 

 

총평.

이런 천하의 썩을놈들은 없어져버려야한다고 생각한다.

 

 

  1.  
반응형

'web3' 카테고리의 다른 글

2024 Crypto 회고  (2) 2024.12.31
[Web3] 앞으로 Web3 관련 게시물들을 좀 올려볼까나?  (0) 2024.04.05

+ Recent posts