비트코인 주소 포이즈닝 공격을 들어보셨나요?
디지털 자산이 일상화되면서, 우리는 지갑 주소를 ‘복사-붙여넣기’로 쉽게 주고받습니다. 하지만 이 단순한 동작이 교묘한 공격의 시작이 될 수 있다는 사실을 알고 계셨습니까? ‘비트코인 주소 포이즈닝(Bitcoin Address Poisoning)’은 사용자 스스로 실수를 저지르도록 유도하는 방식입니다.
주소 포이즈닝이란 무엇인가요?
비트코인 주소는 일반적으로 영문과 숫자로 이루어진 30~40자 정도의 긴 문자열입니다. 이 주소는 무작위로 생성되며, 사용자마다 전혀 다릅니다. 그런데 이 주소들 사이에서 사람이 알아보기 어려운 정도로 ‘비슷한 주소’를 만든 뒤, 피해자에게 소액을 보내는 것이 이 공격의 핵심입니다.
이로 인해, 지갑 앱이나 웹 인터페이스의 ‘최근 거래 목록’에 공격자의 주소가 남게 됩니다. 이때, 사용자가 실수로 이 주소를 ‘자신의 주소’로 착각하고 복사하거나 선택해서 사용하는 것이 포이즈닝의 시나리오입니다.
"주소를 내가 직접 복사하는데 왜 실수할 수 있죠?"
많은 분들이 이렇게 질문합니다.
나는 항상 지갑 앱에서 내 주소를 복사해서 쓰는데요? 내가 복사한 건 당연히 내 거 아닌가요?
맞습니다. 직접 지갑에서 내 주소를 복사해서 붙여넣는 사용자는 이 공격에 거의 걸리지 않습니다. 하지만 공격자는 바로 이 점을 잘 알고 있기에, ‘직접 복사하지 않는 상황’을 노립니다.
사용자가 실수하는 상황은 이렇습니다
- 최근 거래 내역을 통해 주소를 선택할 때
- 비트코인을 자주 입금받는 사용자는 편의상 최근 받은 주소를 눌러 다시 사용합니다. 공격자가 소액을 보낸 주소가 그 목록에 있다면, 실수할 가능성이 생깁니다.
- 주소를 기억해두거나 저장한 것을 재사용할 때
- “예전에 받았던 주소니까…” 하며 다시 붙여넣는 과정에서, 유사 주소를 실수로 저장했거나, 목록에서 잘못 선택할 수 있습니다.
- 모바일 환경에서
- 스마트폰에서는 긴 주소를 육안으로 구분하기 어렵습니다. 주소 앞과 뒤만 보고 비슷하다고 판단하여 실수할 가능성이 높아집니다.
공격자는 어떻게 비슷한 주소를 만들까요?
이건 기술적으로 가능한 일입니다. 비트코인 주소는 무작위로 생성되지만, 사용자가 원하는 패턴으로 시작되거나 끝나게 하는 것도 가능합니다. 이를 ‘vanity address’(관심 주소) 생성이라고 부르며, 이를 위해 특수 프로그램과 연산 자원이 사용됩니다.
공격자는 이 방법을 통해 피해자의 주소와 앞/뒤가 유사한 주소를 만들고, 소액을 보냅니다. 그 뒤 주소 목록에 본인의 주소가 올라오기를 기다립니다.
왜 굳이 소액을 보내야 할까요?
이 공격이 통하려면 지갑 앱의 거래 목록에 본인의 주소가 남아야 합니다. 그러기 위해서는 공격자는 피해자에게 직접 거래를 걸어야 하며, 수수료가 최소화되도록 거의 티도 나지 않을 정도의 금액을 보냅니다. 예를 들어 0.00001 BTC 같은 금액입니다. 이러한 소액 거래는 피해자에게 거의 의미 없는 금액이지만, 목록에 흔적을 남긴다는 점에서 공격자의 목적은 달성됩니다.
"정말로 그렇게 실수하는 사람이 있나요?"
현실에서 자주 발생하는 케이스:
- 암호화폐 관련 기업에서 수많은 거래를 처리하는 직원이 최근 목록을 클릭하여 전송
- 고객에게 주소를 전송하던 도중, 잘못된 주소를 저장해두고 재사용
- 모바일에서 주소 끝부분만 보고 실수로 선택
이런 상황에서는 한 번의 실수가 큰 피해로 이어질 수 있습니다.
그래서, 어떻게 막을 수 있을까요?
기술적으로 이 공격을 완벽하게 막기란 어렵습니다. 왜냐하면 공격자는 사람의 실수를 노리기 때문입니다.
따라서 진짜 보안은, “사람이 실수하지 않도록 만드는 것”에서 출발해야 합니다.
블랙쏘세지를 소개합니다.
최근 사이버 위협이 더욱 날로 진화함에 따라, 안전한 링크 보기 방법이 필요한 것 같습니다. 블랙쏘세지는 원격 브라우저 격리 기술을 기반으로 하여 사용자 스마트폰에 도착한 링크를 원격의 안전한 브라우저로 볼 수 있도록 지원합니다.