Kimsuky(Threat actor)'s bitcoin address tracking

한미 정부 합동 보안권고문 발표와 함께 Kimsuky 그룹이 소유한 것으로 공개된 비트코인 주소의 트랜잭션을 추적해본다.

※ 본 게시글의 암호화폐 주소 추적은 BIG의 암호화폐 추적 솔루션인 "QLUE"를 사용했습니다.

1. 한미 정부 합동 보안권고문 발표

2023년 6월 2일, 한미 양국은 대표적인 북한 해킹 조직으로서 전세계를 대상으로 정보 및 기술을 탈취해온 '김수키(Kimsuky)'에 대한 한미 정부 합동 보안권고문을 발표했다. 그리고 우리 정부는 김수키를 세계 최초로 대북 독자제재 대상으로 지정했다. 이와 관련된 글은 아래 링크를 통해 확인할 수 있다.

북한 정권을 위해 정보·기술 탈취해 온 해킹조직 ‘김수키’ 겨눈다 상세보기|보도자료 | 외교부
외교부 홈페이지에 오신것을 환영합니다.

이번 합동 보안권고문을 발표하면서 김수키 그룹의 소유로 알려진 아래 비트코인 주소 2개를 함께 공개했는데, 아쉽게도 비트코인 주소를 획득하게 된 경위에 대해서는 밝혀지지 않았다. 본 글에서는 해당 비트코인 주소에서 발생한 트랜잭션을 추적해서 자금 전송 과정에서 어떤 특징을 가지고 있는지 파악하고자 한다.

  • bc1qmkh9s8qju9tkk2qckcz79we2084h2ckeqxylnq
  • bc1qu9303km9mnq03hxehvtf2tzchvmkqnzyzm928d

2. bc1qmkh9s8qju9tkk2qckcz79we2084h2ckeqxylnq

목록
Address Hash bc1qmkh9s8qju9tkk2qckcz79we2084h2ckeqxylnq
Balance (BTC) 0
Transactions 9
Cluster Name -
Cluster Identifier 994137850
Number of Addresses in Cluster 1
BitRank Score 0 , High Risk
Entities and Flags Kimsuky(Hacker Group) , North Korea
Received Transactions 7
Sent Transactions 2
Received Amount (BTC) 0.122
Sent Amount (BTC) 0.122
First Seen Receiving (UTC) 2022-04-04 02:22:08
Last Seen Receiving (UTC) 2022-04-05 08:32:52
First Seen Sending (UTC) 2022-04-04 04:23:41
Last Seen Sending (UTC) 2022-04-05 08:41:19

2-1) 자금 수신 경로 추적

[그림 1] 자금 입금 경로

분석 대상 주소에서는 수신 트랜잭션이 7회, 송신 트랜잭션이 2회 발생했다. 수신 트랜잭션 중 6회는 [그림 1]과 같이 국내 거래소인 Upbit에서 자금이 전송된 것으로 식별됐다. 전송된 액수가 크지 않다는 점, 국내 거래소에서 전송되었다는점을 보면 Kimsuky에 의해 피해를 입은 국내 피해자들이 전송했을 가능성이 높을 것이다.

나머지 하나인 트랜잭션의 송신 주소는 특정한 그룹으로 식별되지 않았는데, 약 9천 건의 트랜잭션 기록을 가지고 있으며 다른 수신 트랜잭션이 모두 같은 거래소로부터 전송된 것임을 미루어 봤을 때, 해당 주소 또한 거래소 소유의 주소이고 그 중에서도 Upbit일 가능성이 높다고 볼 수 있다.

2-2) 자금 송신 경로 추적

[그림 2] Lazarus 그룹으로 전송된 자금 중 일부

분석 대상 주소에서 발생한 송신 트랜잭션을 봤을 때, 주소 포맷이 분석 대상 주소와 다른 3으로 시작하는 주소 2개를 지불 주소로, 나머지 주소는 잔금 주소로 판단했다. 잔금 주소에서 발생한 트랜잭션을 추적한 결과 QLUE에서 Lazarus 그룹으로 식별하고 있는 주소에 자금이 전송된 것을 확인할 수 있었다. 해당 주소는 아래와 같다.

  • bc1qr2c54sdgze38u6sw7zc943hvclrash5sxj56ge
  • bc1q37ex5mzap5aqtl4asep298lw9h2fwffa0s58t8
  • bc1qs25ku78t0glg7m36z9zqqwnlkmqepyr67r4pek
[그림 3] Sweep 형태의 트랜잭션

지불 주소로 전송된 자금은 다수의 input과 단일 output을 가지는 트랜잭션으로 전송됐는데, input 주소의 포맷이 모두 동일한 것으로 봤을 때 지갑에 존재하는 주소의 자금을 한 곳으로 모으는 방법인 Sweep을 한 것으로 판단했다.

[그림 4] Peel Chain 형태의 트랜잭션

Sweep 이후 전송된 트랜잭션을 추적한 결과 Peel Chain 형태의 트랜잭션이 반복되고 있는 것을 확인했다. 일반적인 Peel Chain의 경우 지불 주소 하나와 잔금 주소 하나가 반복되는 형태를 띄는 경우가 많은데, 분석 대상 트랜잭션은 대부분 output 주소가 3개인 경우가 많았으며 그 이상을 포함하는 경우도 많아 추적을 더욱 어렵게 만들고 있다. 따라서 본 분석에서도 자금의 끝을 추적하는 것보다 어떤 클러스터로 자금이 지속적으로 전송됐는지 확인하는 것에 초점을 뒀다.

[그림 5] 식별된 클러스터 중 일부

Peel Chain 그래프를 어느 정도 확장해서 봤을 때, 자금이 주로 전송된 주소는 bitzlato 또는 whitebit 거래소 소유로 식별됐다. 그 외에도 paxful, ftx, discus_fish 등의 클러스터에 자금이 전송된 것을 확인했다. discus_fish는 중국 최대의 mining pool으로, f2pool이라는 이름으로도 알려져 있다.

Entitiy Explorer 조회 결과 중 일부

💡
bitzlato는 홍콩에 위치한 거래소이고 느슨한 KYC 정책을 가지고 있는 것으로 알려졌다. 2018년부터 2022년까지 7억 달러 이상의 불법 자금을 처리한 것으로 알려졌으며, 2023년 1월 법 집행 기관 폐쇄 대상이 되어 웹 사이트가 압수되었고 설립자가 무면허 송금 사업 혐의로 체포되었다.
💡
whitebit는 우크라이나에 위치한 암호화폐 거래소이고 주요 교환 플랫폼에서 충분한 KYC 절차가 적용되어 있다고 알려졌다. 또한 부정적인 언론 보도는 발견되지 않았다고 한다.

3. bc1qu9303km9mnq03hxehvtf2tzchvmkqnzyzm928d

목록
Address Hash bc1qu9303km9mnq03hxehvtf2tzchvmkqnzyzm928d
Balance (BTC) 0
Transactions 4
Cluster Name -
Cluster Identifier 1009855654
Number of Addresses in Cluster 2
BitRank Score 0 , High Risk
Entities and Flags Kimsuky(Hacker Group) , North Korea
Received Transactions 2
Sent Transactions 2
Received Amount (BTC) 0.1501
Sent Amount (BTC) 0.1501
First Seen Receiving (UTC) 2022-05-12 13:06:49
Last Seen Receiving (UTC) 2022-05-12 14:00:12
First Seen Sending (UTC) 2022-05-12 14:52:34
Last Seen Sending (UTC) 2022-05-22 20:29:04

3-1) 자금 수신 경로 추적

[그림 6] 자금이 전송된 경로

분석 대상 주소가 받은 자금을 추적한 결과 식별되지 않은 클러스터로부터 전송된 것을 확인했다.

[그림 7] 자금 출처 클러스터에서 거래소로 자금이 전송된 모습

식별되지 않은 클러스터에 포함된 150건의 트랜잭션 기록을 가진 주소에서 kraken 거래소로 자금을 전송한 사실을 위 그림과 같이 확인할 수 있었다. 해당 주소는 아래와 같다.

  • bc1q6jgn4mry6h23aw6jnl3ac7m2r4442vm5sjqccw

Entity Explorer 조회 결과 중 일부

💡
kraken 거래소는 미국 샌프란시스코에 위치한 거래소이고, 유럽 연합의 4차 AML 지침 및 미국 은행 비밀법을 포함해서 자금 세탁 방지 의무를 준수하기 위해 정보를 수집한다고 명시하고 있지만, ML/TF 위험을 완화하기 위해 충분한 절차가 시행되고 있지는 못하다고 한다.
[그림 8] 식별되지 않은 클러스터에 포함된 주소의 자금 출처

[그림 7]에서 확인한 150건의 트랜잭션 기록을 가지고 있는 주소를 제외한 다른 주소들의 자금 출처는 150건의 트랜잭션 기록을 가지고 있는 주소로부터 온 것을 위 그림과 같이 확인했다. [그림 8]을 보면 붉은색 원으로 표시한 주소에서 빠져나간 자금이 다수의 주소를 거친 뒤 클러스터에 포함된 다른 주소로 전송되는 것을 확인할 수 있다.

본 글에서 해당 주소의 모든 트랜잭션을 추적하는 것을 다루기에는 어려움이 따르고, 거래소로 전송된 트랜잭션을 확인했기 때문에 수신 자금 추적은 여기서 마치겠다.

3-2) 자금 송신 경로 추적

[그림 9] 자금 송신 경로 중 일부1

분석 대상 주소에서 총 2회의 송신 트랜잭션이 발생했는데, 그 중 하나는 lazarus 그룹으로 식별된 주소로 자금이 전송된 트랜잭션이다. 해당 주소는 아래와 같다.

  • bc1qk6ehywvqcd68e8f7tuqza6ldht9t7tazu4fe6h
[그림 10] 자금 송신 경로 중 일부2

lazarus 그룹으로 전송되지 않은 트랜잭션을 일부 추적한 결과 위 그림과 같은 그래프 모습을 확인할 수 있었다. 앞서 살펴본 경우와 마찬가지로 기본적으로 복잡한 Peel Chain 형태를 띄고 있으며, binance, bitzlato, ice3, totalcoin.io, paxful, whitebit, payeer, freewallet.org, Lbank, coinpayments 등으로 식별된 암호화폐 서비스 주소로 자금이 전송된 것을 확인했다. 그 외 식별되지 않은 클러스터 및 거래소로 추정되는 주소로 자금이 전송되기도 했다.

[그림 11] 하나의 지갑으로 모인 자금을 다시 분배하는 트랜잭션

또한 Peel Chain이 계속될 수록 [그림 10]의 중앙에 표시한 식별되지 않은 클러스터로 자금이 계속해서 모이는 것을 확인할 수 있었다. 해당 클러스터에 속한 주소는 모두 1로 시작하는 포맷이기 때문에, 같은 지갑에 포함되어 있을 확률이 높다고 판단했다. 자금 세탁 과정에서 분산된 작은 금액의 UTXO들을 [그림 11]과 같은 트랜잭션을 여러 차례 반복하는 행위를 통해 다시 분배하는 것을 확인할 수 있었다.

4. 결론

  • 북한의 해커 그룹은 암호화폐를 세탁하는 과정에서 Peel Chain을 기본적으로 사용하면서 조금 더 복잡한 형태로 만들어 추적을 더욱 어렵게 만든다.
  • 이번 분석 대상은 Coinjoin과 같은 믹싱 방법을 이용하지 않은 것으로 보임에도 불구하고 트랜잭션을 복잡하게 만들었다.
  • Kimsuky 그룹으로 식별된 주소에서 Lazarus 그룹으로 식별된 주소로 자금이 전송되는 것으로 봐서 두 그룹 간에 연계가 이루어지고 있다는 것을 알 수 있다.
  • 특정 암호화폐 서비스만 이용하는 것이 아니라 다양한 서비스를 이용하는 모습을 볼 수 있다.
You've successfully subscribed to PLAINBIT
Great! Next, complete checkout to get full access to all premium content.
Error! Could not sign up. invalid link.
Welcome back! You've successfully signed in.
Error! Could not sign in. Please try again.
Success! Your account is fully activated, you now have access to all content.
Error! Stripe checkout failed.
Success! Your billing info is updated.
Error! Billing info update failed.