블로그로 돌아가기
Solana

해킹된 Solana 지갑에서 토큰을 보낼 수 없나요? 안전하게 옮기는 방법

일부 Solana drainer는 SOL을 비우는 데서 그치지 않습니다. 지갑 계정 자체를 바꿔 더 이상 SOL을 보낼 수 없게 만들고, 사용자가 추가하는 SOL도 공격자가 인출할 수 있게 합니다. 토큰과 NFT는 대개 그대로 남아 있지만, 일반적인 이동 방법인 지갑 앱에서의 전송은 실패하거나 공격자에게 SOL을 더 넘겨주게 됩니다.

이 가이드에서는 무엇이 바뀌었는지, 왜 지갑에 SOL을 보내면 안 되는지, 그리고 다른 지갑이 수수료를 내는 동안 남은 자산을 새 지갑으로 옮기는 방법을 설명합니다.

Solana 지갑이 변환되었는지 어떻게 알 수 있나요?

토큰이 남아 있는데도 지갑에서 보내기가 실패하고, 익스플로러에서 주소가 내가 아닌 authority를 가진 nonce 계정이나 프로그램이 소유한 계정으로 표시됩니다. Sol Incinerator에 연결하면 탈취 시각과 트랜잭션 링크와 함께 "지갑이 해킹되었습니다"가 표시됩니다.

일반적인 Solana 지갑은 데이터가 없는 단순한 System Program 계정입니다. 변환된 지갑은 주소는 같지만 그 뒤의 계정이 바뀌었습니다. 다음 세 가지 방법으로 확인하세요.

  1. 익스플로러에서 주소를 엽니다. Solana Explorer는 변환된 지갑에 대해 authority 주소를 포함한 nonce 계정 정보를 보여 줍니다. 그 authority가 내 주소가 아니라면 다른 사람이 계정의 SOL을 통제하고 있습니다.
  2. 이 일을 한 트랜잭션을 찾습니다. 저희가 조사한 사례에서 피해자는 두 개의 System Program 명령이 담긴 트랜잭션에 공동 서명했습니다. allocate가 지갑 주소에 80바이트의 데이터를 부여했고, initializeNonce가 공격자를 authority로 하는 durable nonce 계정으로 바꿨습니다. 네트워크 수수료는 공격자가 냈습니다. 한 사례에서는 피해자의 SOL 인출이 30초 뒤에 이어졌습니다.
  3. 지갑을 Sol Incinerator에 연결합니다. 연결할 때 계정을 읽고, 탈취를 발견하면 탈취 시각과 Solscan 링크가 포함된 경고를 표시합니다.

다른 방식을 쓰는 drainer도 있습니다. 주소를 프로그램에 할당하는 방식입니다. 결과는 같습니다. 지갑이 더 이상 스스로 비용을 낼 수 없습니다.

해킹된 지갑이 네트워크 수수료를 낼 수 없는 이유는 무엇인가요?

durable nonce 계정은 트랜잭션을 미리 서명하기 위한 Solana의 일반 기능입니다. nonce 값과 authority를 저장하며, nonce를 진행하거나 authority를 바꾸거나 계정의 SOL을 인출할 수 있는 것은 그 authority뿐입니다. drainer가 내 주소를 이런 계정으로 바꾸면, 그가 내 주소의 SOL에 대한 authority가 됩니다.

  • SOL이 일반적인 방법으로 나갈 수 없습니다. System Program은 데이터를 가진 계정에서 SOL을 전송하는 것을 거부하며, 내 지갑은 이제 nonce 데이터를 가지고 있습니다.
  • 수수료는 공격자가 가져갈 수 있는 SOL에서 나갑니다. nonce 계정은 rent 예치금을 넘는 SOL로만 네트워크 수수료를 낼 수 있고, authority는 그 SOL이 들어오는 즉시 인출할 수 있습니다.
  • 프로그램이 소유한 주소는 수수료를 전혀 낼 수 없습니다. Solana는 단순한 System 계정이나 nonce 계정에서만 수수료를 받습니다.
  • 되돌릴 수 없습니다. nonce 계정의 authority는 현재 authority만 바꿀 수 있으므로, 내가 서명하는 어떤 트랜잭션으로도 되찾을 수 없습니다.

토큰은 사정이 다릅니다. 각 토큰 계정은 내 주소를 소유자로 기록하고 있으며, 토큰 프로그램은 지갑 계정의 상태가 아니라 내 서명을 확인합니다. 내 키로 여전히 모든 토큰과 NFT를 옮길 수 있습니다. 다른 지갑이 네트워크 수수료만 내면 됩니다.

수수료용 소액이라도 해킹된 주소로 SOL을 보내지 마세요. 봇이 감시하고 있다고 생각하세요. 지갑을 "잠금 해제"하거나 "복구"해 주겠다는 사이트나 DM의 서명 요청에는 응하지 마세요. DM으로 오는 유료 복구 제안은 해킹 뒤에 흔히 따라오는 추가 사기입니다.

해킹된 Solana 지갑에서 토큰을 어떻게 옮기나요?

다른 지갑이 네트워크 수수료를 내고 해킹된 지갑은 토큰 소유자로서만 서명하는 트랜잭션을 사용하세요. 지갑 앱은 보내는 지갑에 수수료를 청구하므로, Sol Recovery처럼 침해된 지갑을 위해 만든 복구 도구를 사용해 모든 것을 새 지갑으로 보내세요.

Sol Recovery는 침해된 Solana 지갑을 위한 독립 서비스입니다. 변환된 지갑을 식별하며, 무료 계정에서 자산을 받는 지갑과 수수료를 내는 지갑을 분리할 수 있습니다.

  1. 새 지갑을 만듭니다. 복구 문구나 개인 키를 웹사이트에 입력한 적이 있다면, 새 복구 문구로 새 지갑을 만드세요. 기존 문구 아래의 다른 계정은 새 지갑이 아닙니다.
  2. 남은 것을 확인합니다. 해킹된 주소를 Sol Recovery에 붙여넣으세요. 지갑을 연결하지 않고 토큰, 스테이킹 포지션, DeFi 포지션, 수집품, 도메인을 스캔합니다.
  3. 안전한 지갑과 지불 지갑을 설정합니다. 새 지갑을 받는 곳으로, 네트워크 수수료를 낼 별도의 지갑을 지불 지갑으로 추가하세요. 자금은 지불 지갑에만 넣고, 해킹된 주소에는 절대 넣지 마세요.
  4. 검토하고 서명합니다. 해킹된 지갑은 토큰 소유자로서 각 전송에 서명합니다. 승인하기 전에 각 트랜잭션이 무엇을 하는지 확인하고, 자산이 도착했는지 확인하세요.

Sol Recovery는 정해진 시각에 잠금이 풀리는 스테이킹 중이거나 잠긴 포지션을 위해, 잠금 해제 순간 공격자와 경쟁하는 봇 서비스도 운영합니다. 이 서비스는 회수한 금액의 10%를 수수료로 받으며, 즉시 서명하기 위해 해킹된 지갑의 개인 키가 필요합니다. 이는 실제로 신뢰가 걸린 결정입니다. 이미 침해된 지갑의 키만 공유하고, 새 지갑의 복구 문구는 절대 공유하지 마세요.

Sol Recovery는 Sol Incinerator와 제휴 관계가 아닙니다. 서명하기 전에 현재 수수료와 각 트랜잭션을 확인하세요. 개발자는 같은 전송을 직접 만들 수도 있습니다. 토큰 전송은 어떤 지갑이 수수료를 내든 토큰 소유자가 서명하면 유효합니다.

토큰 계정에 있는 SOL을 아직 받을 수 있나요?

네. 빈 토큰 계정에는 환불 가능한 rent 예치금이 있으며, 계정을 닫으면 그 SOL이 돌아옵니다. 일반적인 받기는 지갑 자체로 지급되는데, 여기서는 공격자에게 지급한다는 뜻이므로 Sol Incinerator는 변환된 지갑을 다르게 처리합니다.

변환된 지갑을 연결하면 Sol Incinerator는 안전한 지갑 주소를 묻고 회수한 SOL을 그곳으로 지급합니다. 네트워크 수수료는 직접 내며, 그 수수료와 일반 정리 수수료는 회수한 SOL에서 차감됩니다. 해킹된 주소로는 아무것도 보내지 않습니다. 빈 토큰 계정 닫기와 초과 rent 인출은 지원하지만, 소각처럼 지갑이 스스로 수수료를 내야 하는 작업은 지원하지 않습니다.

토큰을 옮기면 해당 토큰 계정이 빈 채로 남습니다. 복구 도구가 이를 닫지 않는다면, 나중에 다시 받아 그 rent도 회수하세요.

그 밖에 무엇을 확인해야 하나요?

  • 탈취 트랜잭션 전체를 읽으세요. 자산을 옮기거나 delegate를 승인했을 수도 있습니다. 신고를 위해 서명과 낯선 주소를 모두 기록하세요.
  • 스테이킹 중이거나 잠긴 포지션을 정리하세요. 일부는 옮기기 전에 언스테이킹이나 대기 기간이 필요하며, 공격자도 같은 순간을 기다리고 있을 수 있습니다.
  • 자금을 받는 모든 곳에서 기존 주소를 바꾸세요. 거래소 출금 주소 목록, 지급 설정, airdrop 등록처럼 해킹된 주소로 지급되는 곳은 이제 공격자에게 지급합니다.
  • 그 주소 사용을 중단하세요. 자산을 옮긴 뒤에는 소액이라도 그 지갑을 다시 사용하지 마세요.
Sol Incinerator

Sol Incinerator

해킹된 지갑을 연결하고 회수 가능한 SOL을 안전한 지갑 주소로 받으세요. 해킹된 주소로는 아무것도 보내지 않습니다.

지금 사용해 보기

관련 글

자주 묻는 질문

해킹된 Solana 지갑에서 토큰을 보낼 수 없는 이유는 무엇인가요?

drainer의 트랜잭션은 지갑 주소를 공격자가 통제하는 durable nonce 계정으로 바꾸거나 주소를 프로그램에 넘길 수 있습니다. 네트워크 수수료는 지갑에 있는 SOL에서 나가야 하는데, 공격자는 계정의 예치금을 넘는 SOL을 모두 인출할 수 있습니다. 그래서 전송이 실패하거나, 추가한 SOL이 먼저 빠져나갑니다.

수수료를 내기 위해 해킹된 지갑에 SOL을 보내야 하나요?

아니요. 지갑이 nonce 계정으로 바뀌었다면 공격자가 nonce authority이며 rent 예치금을 넘는 금액을 모두 인출할 수 있으니, 봇이 주소를 감시하고 있다고 생각하세요. 별도의 지갑이 네트워크 수수료를 내고 해킹된 지갑은 토큰 소유자로서만 서명하는 도구를 사용하세요.

nonce 탈취 후에도 토큰과 NFT는 여전히 제 것인가요?

같은 트랜잭션이 이를 옮기거나 delegate를 승인하지 않았다면 대부분 그렇습니다. nonce 탈취는 지갑 자체의 계정을 바꿀 뿐 지갑이 소유한 토큰 계정은 바꾸지 않으므로, 내 키로 여전히 토큰 전송에 서명할 수 있습니다. 이전 계획을 세우기 전에 탈취 트랜잭션을 익스플로러에서 열어 무엇이 바뀌었는지 모두 확인하세요.

빈 토큰 계정에 있는 SOL을 아직 받을 수 있나요?

네. Sol Incinerator는 변환된 지갑을 감지하고 네트워크 수수료를 직접 낸 뒤, 회수한 SOL을 해킹된 주소가 아닌 붙여넣은 안전한 지갑 주소로 보냅니다. 네트워크 수수료와 일반 정리 수수료는 회수한 SOL에서 차감되며, 해킹된 주소로는 아무것도 보내지 않습니다.

자산을 구하려면 개인 키를 공유해야 하나요?

일반 전송에는 필요 없습니다. 복구 도구는 다른 지갑이 수수료를 내는 동안 해킹된 지갑이 서명하는 트랜잭션을 만들 수 있습니다. 스테이킹 중이거나 잠긴 포지션을 위한 Sol Recovery의 봇 서비스는 잠금 해제 순간에 움직이기 위해 개인 키를 요청합니다. 이는 신뢰에 관한 결정이며, 새 지갑의 복구 문구는 절대 공유하지 마세요.

해킹된 Solana 지갑에서 토큰을 보낼 수 없나요? 안전하게 옮기는 방법 | Sol Incinerator