Sweeper Bot(스위퍼 봇) 소개
Blog/외부 Blog

Sweeper Bot(스위퍼 봇) 소개

※ 본 게시물은 'PLAINBIT' 재직 당시 작성한 블로그 글을 공유하는 것입니다.

원문 참고 : https://blog.plainbit.co.kr/introduction-to-sweeper-bot/


1. Sweeper Bot 이란?

[그림 1] 네이버 어학사전

"sweep"이라는 단어는 쓸다, 쓸어담다 라는 뜻을 가진다. 그리고 "bot"이라는 단어는 특정 작업을 반복 수행하는 프로그램 이라는 뜻을 가진다. 그렇다면 "sweeper bot"은 "쓸어담는 행위를 반복 수행하는 프로그램"으로 해석할 수 있다.

Sweeper Bot
암호화폐 주소에 자금이 유입되거나 특정 조건을 만족할 때 개발자가 의도한 주소로 자금을 전송하는 자동화된 프로그램

2. Sweeper Bot 피해 원인 및 증상

피해자가 소유한 암호화폐 주소와 관련된 키가 유출되었을 때 Sweeper Bot 공격이 가능하다. 키와 시드 값 같은 중요 정보는 다양한 경로를 통해 유출될 수 있다. 최근에는 암호화폐 유투브 스트리머가 생방송을 진행하던 도중 키를 노출해 거액을 탈취당한 사례가 있었다. 스캠 사이트에 접속해서 중요 정보를 제출하는 등 사용자의 부주의함으로 발생하는 피해 외에도 수탁형 서비스 업체가 해킹당해 키가 유출되는 경우도 있다. 여기서 키를 확보한 공격자는 다음과 같은 순서로 공격을 할 수 있다.

  1. 공격자는 Memory pool/Transaction Pool을 모니터링해서 피해자의 주소로 암호화폐가 유입되는 것을 확인한다.
  2. 사전에 확보한 피해자의 키를 이용해서 공격자의 주소로 암호화폐를 전송하는 새로운 트랜잭션을 생성한다.

이러한 동작과정은 자동화된 프로그램을 통해 진행되기 때문에 피해자가 손 쓸 틈 없이 암호화폐가 곧바로 이체된다.

[그림 2] Sweeper Bot 피해 주소 트랜잭션 정보

위 그림은 Sweeper Bot으로부터 공격받는 주소의 트랜잭션 내역을 캡처한 것이다. Coinone으로부터 0.025 ETH를 전송받은 뒤, 12초 만에 0x3BC2FaC06FdFF8D18D759544D935Ffdc2E978E23 주소로 수수료를 제외한 자금이 모두 전송된 것을 알 수 있다.

3. Sweeper Bot 공격 대응 방안

Ethereum Sweeper Bot 중 일부는 ETH만 탈취하고 토큰은 남겨두는 경우가 있다고 한다. 피해자는 Sweeper Bot으로부터 공격받는 주소에 보관되어 있는 토큰이라도 회수하기 위해 ETH를 일부 보내려고 시도할 수 있는데, 토큰을 전송하기 위해서는 소량의 ETH가 필요하다. 하지만 앞서 봤듯이 사람의 수작업으로는 대응하기 어려운 속도로 자금이 빠져나가기 때문에 토큰을 전송하려면 별도의 방법을 사용해야 한다.

Sweeper Bot의 감시망을 피하면서 잔여 토큰을 전송할 수 있는 방법이 몇 가지 있다.

3-1) 연속된 트랜잭션 제출

토큰 전송을 위한 ETH를 전송하면 Sweeper Bot은 이를 탐지하고 새 트랜잭션을 생성할 것이다. 여기서 Sweeper Bot이 새 트랜잭션을 생성하기 전에 ETH 입금과 토큰 전송 트랜잭션이 연속적으로 수행되도록 만드는 트랜잭션 Bundle을 생성하는 방법이다. Flashbot을 이용해 수행할 수 있다고 한다.

3-2) Internal Transaction 사용

대부분의 Sweeper Bot이 Mempool을 모니터링한다는 점에 착안해 Mempool을 거치지 않고 트랜잭션을 수행할 수 있는 Internal Transaction을 이용하는 방법이다. 일회용 스마트 컨트랙트를 생성해서 Internal Transaction을 통해 ETH를 퍼블릭 트랜잭션 풀을 거치지 않고 입금할 수 있다. 하지만 완성된 블록을 모니터링하는 Sweeper Bot이라면 유효하지 않을 수 있다.

자세한 내용은 여기에서 확인할 수 있다.

4. Sweeper Bot을 이용한 악의적인 Honey Pot

앞서 키가 노출되면 Sweeper Bot 공격이 가능하다고 했는데, 이런 관점을 역이용해서 Honey Pot으로 이용한 사례가 있다.

  1. 공격자가 ETH는 없지만 토큰이 가득 들어 있는 주소의 개인키를 SNS와 같이 공개적인 곳에 고의적으로 노출한다.
  2. 게시글을 본 사람들은 토큰을 가져오기 위해 공격자의 주소로 ETH를 보낸다.
  3. 모니터링 중인 Sweeper Bot이 해당 ETH를 탈취한다.

사람들은 노출된 개인키와 토큰의 잔액을 보고나서 본인의 소유로 만들기 위해 여러가지 방법을 시도하겠지만 Sweeper Bot에 의해 실패하게 된다.

[그림 3] 출처 : Reddit

- https://www.reddit.com/r/CryptoCurrency/comments/goptey/whats_the_cleverest_scam_youve_seen_in_crypto/

2017년 Sweeper Bot을 활용한 Honey Pot으로 널리 알려진 사건이 발생했다. 온라인 커뮤니티에 똑같은 이더리움 주소의 개인키를 공개하는 비슷한 유형의 글이 다수 있는 것을 확인할 수 있다. 그 중 일부는 다음과 같다.


이어지는 내용은 회사 블로그를 참고해주세요^^