"지닥 해커, 지갑 키 아닌 내부 시스템 권한 탈취"

티오리 분석 보고서 발표…"해킹 경로·트랜잭션 정렬·핫월렛 잔고가 근거"

컴퓨팅입력 :2023/04/11 11:35    수정: 2023/04/11 17:45

국내 가상자산 거래소 지닥을 공격한 해커가 지갑 키가 아닌, 내부 시스템 접근 권한을 악용해 가상자산을 빼돌렸다는 분석이 제기됐다.

국내 정보보안 기업 티오리에서 웹3 보안 감사를 수행하는 체인라이트팀은 지닥 해킹 사건에 대해 이같이 분석한 보고서를 11일 공개했다.

지난 10일 지닥은 보관 자산의 23%를 지난 9일 오전 7시 경 발생한 해킹으로 탈취당했다고 밝혔다. 비트코인(BTC) 60.80864074개, 이더리움(ETH) 350.5개, 위믹스(WEMIX) 1천만개, 테더(USDT) 22만개 등 170억원 이상 규모의 가상자산이 해커의 지갑 주소로 전송됐다.

이에 대해 가상자산 트랜잭션 내역을 분석한 결과, 해킹 방식이 거래소 핫월렛의 비밀키 유출보다 내부 인프라 시스템 침투로 보인다.

이런 판단의 근거로 티오리는 ▲해커가 굳이 이용자 지갑에서 거래소 지갑으로 코인을 보낸 뒤 해킹을 한 점 ▲잔고가 적은 계좌부터 트랜잭션이 발생한 점 ▲평소와 달리 거래소 정상 출금에 사용되는 가스 한도를 사용한 점 ▲해킹 대상 지갑에 보관된 모든 자산을 탈취하지 않은 점을 들었다.

지닥 위믹스 해킹 트랜잭션 내역

'이용자→거래소→해커' 경로로 코인 탈취…스윕 트랜잭션 이용

티오리 분석에 따르면 해커가 위믹스를 탈취하는 트랜잭션이 실행되기 전, 모든 지닥 사용자의 위믹스 입금 주소에서 지닥 핫월렛 주소로 위믹스를 전송하는 트랜잭션이 대량으로 발생했다. 이런 트랜잭션은 보통 '스윕'으로 불리는데, 보통 거래소에서 사용자의 출금 요청을 용이하게 처리하기 위해 이뤄진다.

해커는 이 스윕 트랜잭션이 생성된 적 없는 사용자 입금 주소에서도 스윕 트랜잭션을 실행시킬 수 있었다. 티오리는 이런 트랜잭션을 최소 100건 이상 확인했다. 해커가 모든 거래소 사용자 입금 주소의 비밀키 혹은 시드 구문을 탈취했거나, 입금 주소에서 거래소 핫월렛으로 스윕 트랜잭션을 보낼 수 있게 하는 권한을 가져야 가능하다.

전자일 경우, 거래소 핫월렛으로 위믹스를 모을 필요 없이 곧바로 공격자의 주소로 전송하는 것이 더 효율적이고 안전하다. 때문에 티오리 팀은 지닥 내부 시스템에 침투해 입출금 관련 API를 호출하는 방식으로 해킹이 이뤄졌을 가능성을 더 높게 점쳤다.

티오리 관계자는 "정황 상 사용자 자산의 탈취로 생각하는 것이 상식적이지만 거래소 내부에서 어떤 자산들이 어떻게 관리되고 있는지 알지 못하기 때문에 확신할 순 없다"고 분석했다.

'지갑 잔고 순' 트랜잭션 정렬

스윕 트랜잭션이 사용자 입금 주소의 잔고가 적은 순에서 많은 순으로 정렬돼 발생한 점도 이런 추정에 힘을 싣는다는 분석이다. 이미 각 입금 주소의 자산을 알고 있는 거래소 API를 거치지 않았다면, 트랜잭션이 이런 형태로 나타나지 않는다는 것이다.

이런 방식의 트랜잭션은 이더리움 해킹 과정에서도 나타났다. 50, 200, 50이더리움 순으로 자산을 탈취한 후, 스윕 트랜잭션을 보낸 다음 나머지 50이더리움을 한번 더 탈취하는 과정에서 잔고에 따라 순차적으로 트랜잭션이 처리됐다.

스윕 트랜잭션 이후 이더리움 탈취 트랜잭션

'거래소 정상 출금' 가스 한도 설정

공격자 외부소유 계좌(EOA) 트랜잭션의 가스 한도와, 자산 탈취 시 사용된 가스 한도가 불일치한다는 점도 근거로 들었다. 공격자의 EOA는 트랜잭션 전송 시 필수 가스 한도를 설정한 반면, 지닥 해킹 시에는 그렇지 않았다고 분석했다.

공격자는 다른 주소로 0.5이더리움을 전송할 때 가스 한도를 2만1천으로 설정했고 이는 트랜잭션 처리 과정에서 100% 사용됐다. 다른 트랜잭션도 이와 비슷한 모습을 보였다.

반면 지닥 거래소 핫월렛에서 자산을 탈취할 때는 2만1천이 아닌 10만을 가스 한도로 설정했다. 이는 정상 출금이 진행될 때에도 적용되는 가스 한도다. 이 점을 고려하면 핫월렛 해킹 시 해커가 거래소 내부 시스템을 거쳐 트랜잭션을 생성했을 가능성이 크다고 봤다.

티오리 관계자는 "스윕 트랜잭션을 통해 코인을 지닥 핫월렛으로 모으는 과정에서의 트랜잭션과, 공격자 지갑으로 출금하는 트랜잭션 모두 지닥 시스템 내에서 사용되는 가스 한도 값과 동일한 가스 한도를 사용했다"며 "공격자 지갑으로 자산이 이동된 뒤에는 일반적으로 메타마스크를 포함한 대부분의 지갑 앱이 사용하는 가스 한도를 사용했다"고 말했다.

이어 "만약 비밀키를 탈취해 진행한 공격이었다면 고정적인 가스 한도 값이 아닌, 각 트랜잭션에 따른 유동적인 가스 한도 값을 사용했을 것"이라고 덧붙였다.

해킹되지 않고 남겨진 수억원 규모 ERC-20 토큰

해커가 지닥 거래소 ERC-20 핫월렛에 수억원 규모의 토큰들을 그대로 둔 것도 지갑 비밀키를 탈취하지 못했기 때문일 것으로 분석했다.

관련기사

티오리 체인라이트 팀은 지닥 1분기 재무실사 보고서를 분석해 핫월렛에 이런 자산이 남아있을 것으로 추정했다. 남은 자산이 적지 않은데도 이를 탈취하지 않았다는 것은 비밀키를 확보한 해커의 행보로 이해하기 어렵다고 판단했다.

해킹 피해 핫월렛에 대한 토큰 홀딩스 화면

티오리 관계자는 "어떤 경위로든 핫월렛에서 의도하지 않은 자산 이동이 이뤄졌으니 거래소가 새롭고 안전한 월렛으로 남은 자산들을 옮겨두는 것이 좋다"고 언급했다.