Community Investigation

2025년 11월 27일 Upbit 보안 침해 사건 크립토 인텔리전스 보고서

BountyXBT
BountyXBT

December 02, 2025

면책 조항(Disclaimer)


본 보고서는 온체인 상 공개된 트랜잭션 및 주소 데이터를 기반으로 작성되었으며, 데이터 수집·검증 시점 및 사용한 데이터 소스의 한계로 인해 일부 수치와 추정값에는 일정 수준의 오차가 존재할 수 있습니다. 또한 향후 추가적인 온체인 데이터, 거래소 발표 정보, 수사 결과 등이 확보될 경우, 본 보고서의 분석 내용과 평가는 변경될 수 있습니다.


1. Executive Summary


1.1 사건 개요 및 핵심 인텔리전스


2025년 11월 27일 04시 42분(KST), 국내 최대 가상자산 거래소인 Upbit의 Solana 계열 핫월렛(Hot Wallet) 인프라에서 비정상적인 출금 트랜잭션이 탐지되었습니다. 온체인 포렌

식과 공개 자료를 교차 분석한 결과, 이번 사고는 외부 공격자가 핫월렛의 서명 키(Signing Key) 또는 서명 권한에 해당하는 인프라에 비인가로 접근하면서 발생한 것으로 판단됩니다.


콜드월렛(Cold Wallet)이나 별도 보관 자산은 이번 사고의 직접적인 영향을 받지 않았고, 피해는 온라인 상태의 핫월렛에 보관 중이던 자산으로 제한되었습니다.


총 피해 규모는 약 445억 원 수준으로 추정되며, 피해 자산은 모두 Solana 네트워크 기반의 24개 SPL 토큰으로 구성되어 있습니다. 이 중 ‘솔레이어(LAYER)’ 토큰 약 23억 원 상당은

발행 재단의 신속한 협조로 동결되면서 최종 유출 피해액에서는 제외되었습니다.


공격자는 탈취 자산을 현금화하고 추적·동결 리스크를 줄이기 위해, 체인 간 이동(Chain-Hopping)과 프라이버시 프로토콜을 결합한 고도화된 세탁 전술을 사용했습니다.

전체 흐름은 아래 네 단계로 요약할 수 있습니다.


  1. Solana 상 탈취 및 초기 스왑
  2. Solana DEX를 통한 USDC 중심 자산 재구성
  3. Allbridge를 통한 Ethereum 진입 (Cross-Chain 브릿징)
  4. Ethereum 상 분산·변환 후 Railgun 등 프라이버시 프로토콜 활용


1.2 핵심 지표 요약 


사건과 관련된 주요 정량 지표는 Upbit 측 공개 내용과 온체인 데이터를 교차 검증하여 정리했습니다.



1.3 자금 흐름 및 세탁 단계별 요약 


공격자는 추적을 어렵게 만들기 위해, 탈취 자금을 다단계로 쪼개고 서로 다른 인프라를 조합하는 방식을 택했습니다. 우리가 확인한 주요 단계는 다음과 같습니다.



  1. 초기 탈취 (Exfiltration): 24종의 다양한 알트코인 탈취.
  2. Solana DEX 스왑: 유동성이 낮은 알트코인을 Jupiter(40.8%) 등의 애그리게이터를 통해 USDC로 급히 변환. 총 7,646건의 트랜잭션 발생.
  3. Cross-Chain 브릿징: Allbridge를 이용하여 약 2,212만 달러(약 325억 원)를 Ethereum망으로 전송.
  4. 자금 분산 (Layering): Ethereum 상에서 19개의 1차 수신 지갑으로 자금을 쪼개어 수신.
  5. ETH 변환: 추적과 동결이 가능한 USDC/USDT를 검열 저항성이 높은 ETH로 변환. 이 과정에서 MEV(채굴자 추출 가치) 공격을 방어하기 위해 CowProtocol(56.7%)을 주로 사용.
  6. 난독화 (Obfuscation): 추적을 끊기 위해 Railgun 프라이버시 프로토콜을 사용하여 409 ETH를 믹싱 시도.


2. 피해 자산 상세 분석 


이번 사건의 한 가지 특징은 특정 메이저 자산(BTC, ETH 등)만 노린 것이 아니라, 유동성과 시가총액이 제각각인 24종의 Solana 기반 토큰을 한 번에 쓸어갔다는 점입니다.

이는 공격자가 자산 선택에 별도의 필터를 두지 않고, 해당 핫월렛에서 접근 가능한 자산을 최대한 회수하는 방향으로 움직였음을 의미합니다.


2.1 탈취된 디지털 자산 목록 (24종)


아래 데이터는 탈취된 자산의 전체 목록입니다. 공격자는 이 다양한 자산을 현금화하기 위해 각 토큰의 유동성 상황에 맞는 매도 전략을 수립해야 했을 것입니다.

인텔리전스 관점에서 주목할 부분은 다음과 같습니다.


유동성 제약이 큰 자산

  • MOODENG, 2Z, SOON과 같은 소형 밈코인·프로젝트 토큰은 풀 깊이가 얕아 대량 매도 시 슬리피지가 크게 발생합니다.
  • 공격자는 이 자산들을 빠르게 처분하기 위해, 경로 탐색 기능을 갖춘 Jupiter 같은 DEX 애그리게이터에 의존할 수밖에 없었을 것으로 보입니다.


스테이블코인의 포함

  • 피해 자산 목록에 이미 USDC가 포함되어 있어, 별도의 스왑 없이 곧바로 브릿징이 가능한 상태였습니다.
  • 그럼에도 공격자는 다른 토큰들과 함께 섞어 이동시키며 패턴을 희석하는 방향을 택했습니다. 단순성보다는, 추적자의 분석 시간을 늘리는 쪽을 우선한 판단으로 볼 수 있습니다.


3. Phase 1: Solana 네트워크 내 자금 세탁 및 스왑 분석


공격자의 Solana 상 첫 번째 목표는, 종류가 너무 많은 잡다한 토큰을 유동성과 호환성이 높은 자산(USDC, WSOL 등)으로 정리하는 것이었습니다.

이후 Ethereum으로의 브릿징 을 염두에 둔 준비 단계라고 볼 수 있습니다.


3.1 Solana DEX 서비스별 이용 현황 (고유 TX 기준)


공격자는 단일 DEX에 의존하지 않고, 여러 서비스를 병행하면서 총 7,646건의 스왑 트랜잭션을 발생시켰습니다.




Solana DEX 사용 비중 파이차트 분석


분석 – Jupiter 활용 이유


Jupiter는 Solana 내 주요 DEX들의 유동성을 묶어, 주문을 여러 경로로 나누어 처리하는 애그리게이터입니다. 대량 매도 시 발생하는 가격 충격을 줄이는 데 최적화되어 있습니다. 공격자의 입장에서 보면,


  • 다양한 토큰을 최대한 높은 실현 가치로 정리해야 했고
  • 가격 왜곡이 심해지면 추적·감지 리스크도 동시에 커지기 때문에


Jupiter처럼 주문을 쪼개고, 여러 풀을 동시에 활용해주는 애그리게이터는 사실상 필수적인 선택지에 가까웠습니다. PUMP_AMM 사용 비중이 18.6%에 이른 것도, 탈취된 자산 중 PUMP 계열 밈코인이 적지 않았다는 점을 뒷받침합니다.


3.2 토큰별 스왑 트랜잭션 세부 현황


자산별 트랜잭션 패턴을 보면, 어떤 토큰이 실제로 “처리하기 까다로웠는지”를 엿볼 수 있습니다.



특히 WSOL 관련 트랜잭션이 2,689건으로 과다하게 발생한 점은, 다수의 토큰이 직접 USDC로 가지 못하고

Token → WSOL → USDC 순으로 2단계 혹은 그 이상의 경로를 거쳤음을 의미합니다.

이 과정 자체가 트랜잭션 그래프를 복잡하게 만들고, 결과적으로 포렌식 분석에 필요한 시간을 늘리는 부수 효과를 가져옵니다.


4. Phase 2: Allbridge를 이용한 Cross-Chain 자금 이동


Solana 상에서 어느 정도 “정리”를 마친 자금은 Allbridge를 통해 Ethereum으로 옮겨졌습니다. 이는

  • Solana 생태계 내에서의 동결·제재 리스크를 회피하고
  • Tornado Cash 이후에도 여전히 다양한 프라이버시 도구가 존재하는 Ethereum의 인프라를 활용하려는 의도로 해석됩니다.


4.1 Allbridge 수신 자금 규모


Allbridge를 통해 Ethereum으로 유입된 자금은 요약하면 다음과 같습니다.

  • USDC: 약 7,622,014달러, 19개 지갑 수신 (중복 포함)
  • USDT: 약 14,507,745달러, 13개 지갑 수신
  • 합계: 약 22,129,759달러 (약 325억 원 수준, 환율 기준에 따라 변동 가능)


Solana에서 이미 USDC 비중을 키워둔 상태였지만, Ethereum으로 넘어오는 과정에서 일부는 USDT로 전환되었습니다.

이는 Allbridge 유동성 풀 구조상 자동으로 발생했을 가능성과, 공격자가 스테이블코인을 분산해 리스크를 나누려 했을 가능성을 동시에 염두에 둘 필요가 있습니다.


4.2 브릿지 타임라인 분석 (Operational Timeline)


  • 브릿지 개시: 2025-11-27 19:10:53 KST (사건 발생 약 14시간 30분 후)
  • 브릿지 종료: 2025-11-28 05:48:29 KST
  • 총 소요 시간: 10시간 38분


여기서 눈에 띄는 부분은 “서둘러 한 번에” 옮기지 않았다는 점입니다.


유동성 관리 차원:

  • 브릿지 풀은 양쪽 체인에 제한된 유동성을 가지고 있기 때문에, 한 번에 너무 큰 금액을 밀어 넣으면 실패·지연·불리한 환전 비율이 발생할 수 있습니다. 공격자는 이를 피하기 위해 시간을 두고 금액을 나누어 전송했습니다.


모니터링 회피:

  • 10시간 이상에 걸친 분할 전송은, 고래 알림(Whale Alert) 등 대형 자금 이동을 겨냥한 감시 시스템의 주목도를 상대적으로 낮추는 효과도 있습니다. 흔히 말하는 ‘스머핑(Smurfing)’ 기법을 브릿지 타이밍에 맞춰 적용했다고 볼 수 있습니다.


5. Phase 3: Ethereum 집금 지갑 및 분산 분석 (Tracking & Tracing)


Ethereum으로 넘어온 자금은 먼저 19개의 1차 지갑으로 나뉘어 유입된 뒤, 여기서 다시 11개의 2차 지갑으로 이동했습니다.

이후 일부는 Railgun으로 편입되어 추적이 끊기는 구조입니다.


5.1 1차 브릿지 수신 지갑 목록 (19개)


이 19개 지갑은 Allbridge에서 직접 자금을 수령한 1차 관문입니다. 각 지갑의 보유 ETH는 아래와 같습니다.



조치 상황을 보면, 19번 지갑에서 보유 중이던 USDT 약 10,159달러(약 1,400만 원 수준)가 Tether사에 의해 동결되었습니다.

이는 일부 주소에 대한 블랙리스트 등재가 이뤄졌음을 보여주지만, 나머지 상당수 자산은 이미 ETH로 변환된 상태여서 동결 가능성이 매우 낮습니다.


5.2 2차 이동 지갑 목록 (11개)


1차 지갑의 자금 일부는 다시 2차 지갑 11개로 이체되었습니다. 이는 온체인 상 트랜잭션 그래프를 복잡하게 만들고, “단일 지갑 – 단일 출구” 식의 단순한 패턴을 의도적으로

피하려는 움직임으로 해석됩니다.



6. Ethereum 내 자산 변환 전술: CowProtocol의 활용


Ethereum으로 진입한 뒤 공격자의 1차 목표는, 동결 가능성이 높고 추적이 비교적 쉬운 스테이블코인(USDC, USDT)을, 네이티브 자산인 ETH로 바꾸는 것이었습니다.

이 과정에서 우리가 특히 눈여겨본 부분은 CowProtocol의 활용 비중입니다.


6.1 Ethereum DEX 서비스별 스왑 점유율



6.2 CowProtocol 선택의 배경


Ethereum DEX 활용도 막대 그래프


CowProtocol이 전체 스왑 금액의 절반 이상을 차지한 것은 의미가 큽니다. 이는 공격자가 Ethereum 상 MEV(Miner/Maximal Extractable Value) 환경과 샌드위치 공격 구조를 상당 수준 이해하고 있었다는 방증입니다.


  • 일반 DEX(Uniswap 등)에서 수십억~수백억 원 규모의 스왑을 실행할 경우,
  • 검색자(Searcher)들이 해당 트랜잭션을 미리 감지해 앞뒤로 주문을 넣는 샌드위치 공격을 시도하게 됩니다. 이 경우 공격자는 의도한 것보다 훨씬 나쁜 가격으로 자산을 교환하게 됩니다.
  • CowProtocol은 주문을 오프체인에서 모아 배치 경매 형태로 처리하고, 서로 맞는 주문이 있을 경우 직접 매칭(Coincidence of Wants)하는 방식으로 MEV 리스크를 완화합니다.


정리하면, 공격자는

  • 큰 규모의 스왑에서도 슬리피지를 최소화하고
  • MEV 봇의 표적이 되는 것을 피하면서
  • 동시에 거래 의도를 최대한 숨기기 위해 일반적인 DEX가 아닌 CowProtocol을 전략적으로 선택했다고 볼 수 있습니다.



7. 프라이버시 난독화 단계: Railgun 활용


현재까지 파악된 바에 따르면, 탈취 자금 중 상당수는 여전히 온체인 상에서 추적 가능한 상태로 남아 있습니다.

다만 약 409 ETH(대략 120만 달러 수준)는 Railgun 프라이버시 프로토콜로 유입되어, 이후 흐름을 정상적인 방법으로는 확인하기 어려운 상황입니다.


7.1 Railgun 이동 경로 상세


출처: CATV


  • 발신 지갑 (Source): 0x7e8c45274ec1419600fd2155048c94e8cb168847 (9번 지갑)
  • 중간 경유 (Intermediate): 0x8c7956472a39e021c59bde3ec9ff274c0d873c63
  • 최종 목적 (Destination): 0x4025ee6512dbbda97049bcf5aa5d38c54af6be8a (Railgun Contract Interaction)
  • 이동 금액: 409.27 ETH


7.2 Railgun의 위협 수준과 추적 한계


Railgun은 Tornado Cash와 달리 zk-SNARKs 기반으로 설계된 프로토콜로, 단순 입금·출금 믹싱을 넘어 내부에서 프라이빗 스왑까지 지원합니다. 사용자가 자금을 예치하면 “실드된

잔액(Shielded Balance)”으로 관리되며, 외부에서는 누가 누구에게 얼마를 보냈는지 파악이 사실상 불가능합니다.


공격자가 Viewing Key를 공유하지 않는 이상, 온체인 포렌식만으로는 후속 흐름을 복원하기 매우 어렵습니다. PoI(Proof of Innocence) 등의 기법이 논의되고 있지만, 현실적으로는

Railgun 유입 이후는 “흐름 단절 지점”에 가깝다고 보는 것이 맞습니다.


특히 주목할 점은, 전체 탈취 규모 대비 Railgun으로 보낸 금액이 상대적으로 작다는 점입니다.

  • 총 탈취 ETH 추산: 약 7,300 ETH 이상
  • Railgun 유입: 약 400 ETH 수준


이는 공격자가 먼저 “테스트 송금”을 진행해

  • 프로토콜 동작 여부
  • 유동성 및 기술적 리스크
  • 모니터링 반응


등을 점검한 뒤, 향후 상황을 보며 나머지 자금을 순차적으로 투입할 가능성을 시사합니다. 다시 말해, Railgun으로의 409 ETH 송금은 끝이 아니라 시작일 수 있습니다.


8. 최종 자금 상태 요약 및 결론


8.1 자금 상태 분류표 


현재까지 파악된 자금 상태를 요약하면 다음과 같습니다.

  • 1차 모니터링 대상 지갑

· 대상: 17개

· 규모: 약 6,903.21 ETH

· 설명: 1차 브릿지 지갑 중 Railgun 전송분·동결분을 제외한 잔여 자산


  • 2차 모니터링 대상 지갑

· 대상: 11개

· 규모: 약 1,632.22 ETH

· 설명: 1차 지갑에서 파생된 2차 이동 분량


  • 추적 불가(Railgun 유입분)

· 대상: 3개(경로 포함)

· 규모: 약 410.27 ETH

· 설명: Railgun에 편입되어 온체인 추적이 사실상 불가한 상태


  • 동결(Frozen)

· 대상: 1개

· 규모: USDT 10,159달러 상당

· 설명: Tether 측 동결 조치 완료


  • 합계

· 총 지갑 수: 32개

· 총 규모: 약 7,300 ETH 이상 (ETH 기준, 가격 변동에 따라 KRW 환산액 변동)


전체적으로 보면, 아직 상당한 양의 ETH가 특정 지갑들에 집중된 채로 남아 있으며, 공격자가 다음 수순을 준비 중인 “대기 단계”에 있다고 보는 것이 현실적입니다.




8.2 결론 및 보안 권고 사항 (Actionable Intelligence)


이번 사건은 단순한 키 유출 사고라기보다, Solana·Ethereum 양 체인의 DeFi 인프라를 종합적으로 악용한 지능형 가상자산 범죄 사례입니다. Jupiter, Allbridge, CowProtocol,

Railgun을 단계적으로 연결해 사용한 점에서, 공격자가 온체인 구조와 규제·동결 메커니즘을 충분히 이해하고 움직였다는 인상을 줍니다.

실무 관점에서 바로 필요한 대응은 아래와 같습니다.


  1. 블랙리스트 공유 및 CEX 협업
  • 본 리포트에 정리된 32개 Ethereum 지갑 주소 전량을 글로벌 주요 거래소(Binance, Coinbase, OKX 등) 및 수사 기관과 신속하게 공유해야 합니다.
  • 해당 주소에서 CEX로 입금이 탐지될 경우, 자동 동결 및 KYC 정보 확보가 가능하도록 내부 룰과 대응 프로세스를 미리 정비해 둘 필요가 있습니다.


2. Railgun 출금 패턴 상시 모니터링

  • Railgun 컨트랙트에서 약 400 ETH 전후 규모의 Unshield(출금) 트랜잭션이 발생하는지, 24시간 단위의 모니터링 체계를 유지해야 합니다.
  • 출금 시점의 가스 가격, 트랜잭션 타이밍, 목적지 지갑의 과거 히스토리 등을 묶어 패턴화하면, 동일 공격자의 후속 이동을 포착할 확률을 높일 수 있습니다.


3. Solana·브릿지·거래소 측 협조와 가스비 출처 역추적

  • Solana 상에서 사용된 공격자 지갑들의 초기 펀딩 트랜잭션(가스비 충전 등)을 역추적하여, 어떤 거래소·서비스에서 자금이 공급되었는지 확인할 필요가 있습니다.
  • 특히 이번 분석 과정에서 일부 Ethereum 지갑(예: 0x7e8c45274ec1419600fd2155048c94e8cb168847 및 연관 주소들)은 Binance로부터 소량의 ETH가 가스피(gas fee) 용도로 유입된 흔적이 확인되었습니다. 이더리움 주소에 Binance에서 직접 가스피가 들어온 이상, 해당 거래소에는 관련 주소에 대한 KYC 정보, 접속 IP, 디바이스 정보 등이 남아 있을 가능성이 큽니다.
  • 따라서 Binance 측과의 협조를 통해 “가스비를 보낸 주체 → 해당 거래소 계정 → 실사용자”로 이어지는 역추적 작업을 진행하는 것이 중요합니다. 이 부분은 단순 온체인 분석만으로는 얻기 어려운 실명·접속 정보 확보의 핵심 고리입니다.


4. 핫월렛 운영·키 관리 정책 재점검

  • 이번 사건은 핫월렛 환경에서 서명 권한 탈취가 발생했을 때, 피해 규모가 얼마나 기하급수적으로 커질 수 있는지를 다시 보여준 사례입니다.
  • 서명 키 관리 방식, 서명 인프라 접근 통제, 대규모 출금에 대한 트랜잭션 이상 탐지·차단 로직 등, 전반적인 핫월렛 운영 정책을 재점검하고 보완할 필요가 있습니다.


정리하면, 아직 상당량의 ETH가 특정 지갑에 남아 있는 상태이며, 공격자는 시장과 수사기관의 관심이 느슨해지는 타이밍을 기다리며 “대기 모드”에 들어간 것으로 보입니다. 남은 약

6,900 ETH는 Railgun 또는 다른 프라이버시 툴로 추가 이동할 가능성이 매우 높습니다. 이 사건을 이미 끝난 해킹으로 보지 말고, 앞으로 수개월 이상 이어질 수 있는 중장기 추적 과제

로 전제하고 모니터링·협업 전략을 가져가는 것이 현실적인 접근입니다.

post_like_sub0
post_total_comment_sub0

32 reads

0/500 bytes