논문 리뷰 - (7) Windows 시스템 및 지갑 앱 아티팩트 분석을 통한 암호화폐 수사 지원 기술 연구
리뷰/논문 리뷰

논문 리뷰 - (7) Windows 시스템 및 지갑 앱 아티팩트 분석을 통한 암호화폐 수사 지원 기술 연구

제가 석사 과정 당시 작성해 (사)한국디지털포렌식학회 학술지에 게재된 논문의 내용 중 일부를 다뤄보겠습니다.

keyword : Cryptocurrency, Search and seizure, Cryptocurrency Wallet, Digital forensics, Artifact

 

Windows 시스템 및 지갑 앱 아티팩트 분석을 통한 암호화폐 수사 지원 기술 연구

서론

암호화폐의 등장 초기에 이를 동산으로 봐야 할지, 부동산으로 봐야 할지 법률적인 근거가 정립되지 않아 강제집행의 대상이 될 수 있는지에 대해서 논의가 있었고, 이와 함께 암호화폐를 몰수의 대상으로 볼 수 있는지에 대해서도 다툼이 있었습니다. 초창기 거래소에서는 별도의 본인인증 없이 암호화폐 거래가 가능했기 때문에 범죄자금의 유통 경로로 사용되는 경우가 많아 규제의 필요성을 느끼게 했습니다. 암호화폐 몰수와 관련해서는 상고심인 대법원 2018. 5. 30. 선고 2018도3619 판결에서 암호화폐를 몰수의 대상으로 인정했고, 2021년 3월 25일 특정 금융거래정보의 보고 및 이용 등에 관한 법률(이하 특정금융정보법이라 함) 개정안을 시행하면서 거래소로 하여금 고객확인의무의심거래보고의무가상자산 이전 시 정보제공의무를 부과했습니다.

수사기관에서는 암호화폐 거래를 추적할 때, 조사 대상 지갑 주소의 사용자 정보를 가지고 있는 거래소를 찾는 것을 수사의 핵심 가치로 여기고 있습니다. 특정금융정보법 개정안 시행 이후 국내에서 거래소를 운영하기 위해서는 고객알기제도(Know Your Customer Policy)를 준수해야 하므로 수사기관의 입장에서 지갑 주소 사용자의 개인정보를 획득하는 것이 용이해졌습니다. 이에 수반하여 암호화폐 사용자들이 거래소를 통하지 않고 암호화폐 거래를 수행할 수 있는 암호화폐 지갑 프로그램을 사용하는 경우가 많아지고 있습니다. 피압수자가 암호화폐 지갑 프로그램을 사용하는 경우, 현행 암호화폐 압수절차에서는 압수 현장에서 피압수자의 시스템에 저장된 암호화폐 지갑에 접근해서 수사기관이 관리하는 암호화폐 지갑으로 암호화폐를 전송하는 방식으로 몰수를 진행하고 있습니다. 암호화폐 지갑 프로그램은 대부분 지갑 데이터를 암호화하는 기능을 기본적으로 제공하고 있으므로, 피압수자의 협조 없이는 암호화폐의 몰수가 어려운 상황입니다. 수사기관이 암호화폐의 몰수에 실패하면 압수대상 지갑 주소를 지속적으로 모니터링하여 범죄자금으로 사용된 암호화폐의 추가적인 유통을 감시하고 출금을 방지하는 방향으로 진행됩니다.

지갑 파일의 데이터를 복호화할 수 있는 기술 없이는 암호화폐의 몰수가 현실적으로 어렵기 때문에 모니터링에 필요한 정보인 지갑 주소라도 반드시 획득해야 하는 상황입니다. 더불어 선별 압수가 원칙인 국내 상황상 현장에서 암호화폐의 사용 정보를 신속하게 획득하는 것이 중요한 요소가 되었습니다.

본 논문의 2절에서는 국내외 현행 암호화폐 압수절차와 암호화폐 압수수색의 한계점 및 기존에 진행되었던 암호화폐 서비스 아티팩트 분석 관련 연구를 언급합니다. 3절에서는 본 연구의 연구대상과 암호화폐 수사 시 필요 요소, 연구 방법에 대해 설명합니다. 4절에서는 암호화폐 지갑 프로그램 10종을 대상으로 디지털 포렌식 관점의 암호화폐 지갑 기능을 분류했으며, 암호화폐 지갑 프로그램을 사용하여 실제 암호화폐 거래를 수행했을 때 로컬 시스템에 기록되는 암호화폐 지갑 정보 및 거래 정보를 획득 시도한 결과를 설명합니다. 5절에서는 분석된결과를 바탕으로 수사기관이 압수 현장에서 압수과정 초기에 피압수자의 시스템에 저장된 암호화폐 관련 정보를 획득할 수 있는 도구 개발을 제안합니다.


현행 절차 및 관련 연구

현행 암호화폐 압수 절차

다크코인을 제외한 암호화폐의 거래 내역은 블록체인에 기록되어 공개되기 때문에 누구나 암호화폐의 거래내역을 추적할 수 있습니다. 수사기관에서는 고객확인제도를 준수하는 거래소의 지갑 주소에 암호화폐가 전송된 사실이 확인되면, 거래소의 협조를 통해 해당 지갑을 소유하고 있는 사용자의 개인정보를 확보할 수 있습니다. 피압수자가 거래소를 이용하지 않고 개인 암호화폐 지갑 프로그램을 사용하는 경우는 피압수자의 시스템이 있는 현장에서 압수과정을 통해 암호화폐 관련 데이터를 확보하고, 수사기관이 관리하는 지갑으로 암호화폐를 몰수하는 과정을 거칩니다. 본 논문에서는 현행 암호화폐의 압수절차를 국내와 국외의 경우로 구분하여 조사했습니다.

국내 암호화폐 압수 절차

검찰은 가상자산 압수 절차를 거래소와 같은 가상자산사업자를 통해 보관하는 경우와 컴퓨터, 휴대폰, USB 등 개인 지갑을 통해 보관하는 경우를 구분하고 있습니다.

거래소를 통해 가상자산을 보관하는 경우 ① 거래 추적 및 주소 식별, ② 가상자산 소유자 인적 사항 및 거래내역 확인, ③ 보관 가상자산 압수 세 단계로 구분한 절차에 따라 압수합니다.

  1. 거래 추적 및 주소 식별 단계 - 블록체인에 공개된 거래내역을 이용하여 자금을 추적하고, 사이버수사 지원시스템, 사이버수사과 지원요청 등을 통해 거래소에서 유입되거나 거래소로 유입된 주소를 식별합니다.
  2. 가상자산 소유자 인적 사항 및 거래내역 확인 단계 - 거래소 압수수색을 통해 해당 가상자산 주소 소유자의 인적 사항 및 거래소 내부에서 거래 및 현금화한 자료 등을 확보합니다.
  3. 보관 가상자산 압수 단계 - 수사기관에서 압수용 지갑을 생성하고 압수대상 가상자산을 수사기관 지갑으로 전송하는 단계입니다.

개인 지갑을 통해 가상자산을 보관하는 경우 ① 사전 준비, ② 압수수색 두 단계로 구분한 절차에 따라 압수합니다.

  1. 사전 준비 단계 - 압수수색에 사용될 노트북을 준비한 뒤, 압수 대상 가상자산 이체에 사용하는 지갑 프로그램을 선택하여 설치하고, 노트북에 가상자산 압수에 사용할 가상자산 주소와 개인키를 생성합니다. 노트북에 설치된 지갑 파일, 개인키, 시드를 USB 등 매체로 복사하고 노트북에 저장된 지갑 파일, 개인키 원본은 삭제합니다.
  2. 압수수색 단계 - 피압수자에게 압수수색 영장을 제시하고, 피압수자의 지갑 파일, 개인키, 시드 위치를 확인하고 추출한 뒤, 준비된 노트북에 전자지갑을 복원하고 피압수자의 압수대상 주소와 금액을 확인한다. 그리고 전자지갑을 이용하여 압수수색용 전자지갑으로 전송하고 공개된 블록체인에서 이체가 이루어진 사실을 확인한 뒤 피압수자에게 압수목록을 교부합니다.

해외 암호화폐 압수 절차

유엔 마약범죄사무소(UNODC)는 2014년 6월 가상통화를 사용한 범죄세탁의 탐지 및 조사에 관한 기본 매뉴얼(Basic Manual on the Detection And Investigation of the Laundering of Crime Proceeds Using Virtual Currencies)에서 가상화폐 압수절차를 ① 재정 조사 시작, ② 자산 추적, ③ 자산 통제, ④ 자산 관리 네 단계로 구분하고 있습니다.

  1. 재정 조사 시작 단계 - 범죄 활동 과정에서의 자금의 이동, 자금의 출처, 수혜자, 자금을 수령한 시점과 저장 또는 예치된 위치 등 범죄 행위에 대한 정보를 확보합니다.
  2. 자산 추적 단계 - 압수하기 전에 동결하거나 압수할 대상을 판단하기 위해 이전 단계에서 획득한 정보를 바탕으로 자금의 흐름을 추적하여 수익금의 범죄 출처를 확인하거나 범죄 수단을 결정합니다.
  3. 자산 통제 단계 - 권한이 있는 당국이 압수된 재산의 점유, 관리 또는 특정 재산을 통제합니다.
  4. 자산 관리 단계 - 자산의 통제권이 국가에 이양되고 압수된 자산을 손실되지 않도록 관리합니다.

미국 플로리다 주의 올랜도(Orlando) 경찰국은 2022년 8월 암호화폐 압수 정책에서 ① 핫 스토리지 지갑을 사용하는 경우와 ② 콜드 스토리지 지갑을 사용하는 경우, ③ 특수한 상황인 경우를 구분하고 있습니다.

자세한 내용은 논문을 참고해주시기 바라며 본 포스팅에서는 생략합니다.


연구 대상 및 방법

연구를 진행하기에 앞서 암호화폐 수사를 두 가지 경우로 구분하고 각 경우에 필요한 암호화폐의 요소를 선정했습니다. 분석대상 지갑 프로그램은 단일 코인만을 지원하는 프로그램과 다수의 코인을 지원하는 프로그램을 포함하여 시중에 널리 알려진 10종의 프로그램을 선정했으며 분석대상 암호화폐 지갑 프로그램의 정보는 다음 표와 같습니다.

암호화폐 수사 시 필요 요소

암호화폐 수사는 범죄자금의 유통과 세탁을 억제하는 데 그 목적을 두고 있습니다. 암호화폐 수사는 크게 두 가지로 구분할 수 있는데, 암호화폐의 몰수가 가능한 경우와 수사 대상 지갑 주소의 사용자가 식별되지 않거나 암호화폐 몰수에 어려움이 있어 모니터링을 진행해야 하는 경우입니다. 암호화폐 몰수가 가능한 경우는 고객알기제도를 준수하는 거래소에 수사 대상 지갑 주소 사용자의 개인정보가 있거나 개인 지갑 프로그램을 사용하지만, 피압수자의 협조를 통해 수사 대상 지갑에 접근할 수 있는 경우입니다. 반대로, 거래소를 사용하지 않고 피압수자의 협조를 기대하기가 어려워 암호화폐의 몰수가 불가능한 상황에서, 암호화폐의 추가적인 유통을 막기 위해 Chainalysis 社의 ‘Reactor’, Blockchain Intelligence Group 社의 ‘QLUE’와 같은 암호화폐 추적 솔루션을 통해 자금의 추가적인 유통 발생 여부를 지속해서 모니터링하는 경우가 있습니다.

몰수가 가능한 경우와 모니터링이 필요한 경우로 구분했을 때, 필요한 암호화폐의 요소는 상이합니다. 암호화폐 몰수를 위해서는 지갑 접근에 필요한 개인키/비밀키, 니모닉 시드, 패스워드 정보가 필요합니다. 반면, 암호화폐 모니터링을 하려면 지갑 주소 또는 TxID가 필요합니다. 수사기관은 암호화폐 몰수에 실패할 가능성을 염두에 두고, 실패 시 수사 대상 지갑에 대한 모니터링을 진행할 수 있도록 최소한 지갑 주소 또는 TxID를 확보해야 합니다. 그 외 사건의 규모를 파악하는 데 도움을 줄 수 있는 정보로 전송된 암호화폐의 양, 전송 시 발생한 수수료, 거래 일시가 있습니다.

연구 방법

암호화폐 지갑 프로그램 분석은 Windows 10 운영체제에서 진행했습니다. Bitpay 프로그램은 Microsoft Store에서 다운로드 했으며, 나머지 9종의 분석대상 암호화폐 지갑 프로그램은 각 프로그램의 공식 홈페이지에서 Windows Installer 파일을 다운로드 후 설치했습니다.

각 암호화폐 지갑 프로그램에 대하여 설치, 실행, 사용 3가지 단계로 구분하여 분석을 진행했으며 Process Monitor 프로그램을 사용하여 각 단계를 수행했을 때 생성되는 파일의 데이터를 확인하는 방식으로 진행했습니다.

  1. 설치 데이터 분석 - 프로그램을 설치했을 때 파일시스템상에서 생성되는 파일과 폴더의 경로를 확인했으며, Windows 운영체제 아티팩트를 통해 프로그램 설치 기록을 확인했습니다.
  2. 실행 데이터 분석 - 암호화폐 지갑 프로그램을 설치한 뒤 암호화폐 지갑 프로그램을 실행했을 때, 단순 설치 시 생성되는 파일들을 제외한, 추가로 생성되는 파일들을 확인했습니다.
  3. 사용 데이터 분석 - 암호화폐 지갑 프로그램을 사용하여 지갑 생성, 니모닉 시드 발급, 암호화폐 거래 등의 사용자 행위가 이루어졌을 때 기록되는 데이터를 분석한 것입니다. 사용 분석 단계에서 실시한 암호화폐 거래는 메인 넷에서 이루어졌으며 각 암호화폐 지갑 프로그램에 수신과 송신을 합쳐 두 번의 비트코인(BTC) 거래를 발생시켰습니다.

분석대상 암호화폐 지갑 프로그램 중 지갑 생성 시 암호화 설정 여부를 별도로 지정할 수 있는 경우에는 암호화를 하지 않고 진행했으며 지갑 파일에 저장되는 데이터를 포함하여 분석했습니다. 그 외, 설치 경로, 니모닉 시드의 단어 개수 및 암호화 방식 등의 세부 설정 여부에 대해서는 모두 기본 값으로 설정했으며, 폴더에 저장되는 지갑 파일 외의 다른 파일들도 분석했습다. 연구대상 암호화폐 지갑 프로그램에 대해 공통적으로 적용한 연구 절차는 위 그림과 같습니다.


분석 결과

본 논문에서는 암호화폐 지갑 프로그램이 제공하는 기능 중 현장에서의 암호화폐 압수 시 유의하여야 하는 부분을 확인하고, 사용자가 암호화폐 지갑 프로그램을 사용하여 암호화폐 거래를 수행했을 때 컴퓨터에 생성되는 파일들을 분석하여 암호화폐 몰수에 필요한 정보인 개인키, 니모닉 시드와 암호화폐 추적에 필요한 정보인 지갑 주소, TxID를 획득하기 위한 시도를 했습니다.

디지털 포렌식 관점의 암호화폐 지갑 기능 분류

암호화폐 지갑 프로그램의 특징들을 <Table 2>와 같이 니모닉 시드의 사용 여부, 패스워드의 사용 여부, 프로그램의 자동 세션 아웃 기능 제공 여부, 암호화 설정 옵션 제공 여부, 다중 서명 지원 여부와 같이 다섯 가지 항목으로 구분했습니다.

  1. 니모닉 시드 항목 - 사용자가 프로그램을 통해 지갑을 생성할 때 니모닉 시드를 제공하는지를 의미하며 괄호 안의 숫자는 니모닉 시드의 단어 수를 의미합니다.
  2. 패스워드 항목 - 모든 지갑 프로그램에서 사용할 수 있도록 제공되고 있으며, 패스워드를 필수로 입력하는 프로그램이 있는 반면, 선택권을 주어 패스워드를 생성하지 않아도 사용할 수 있는 프로그램도 존재했습니다.
  3. 세션 아웃 항목 - 프로그램을 실행했을 때, 일정 시간이 지나면 자동으로 프로그램을 사용하지 못하도록 세션을 끊는 기능을 의미합니다.
  4. 암호화 옵션 항목 - 사용자가 지갑을 생성할 때 지갑을 암호화하는 것에 대한 선택권을 제공하는지 여부를 의미합니다.
  5. 다중 서명 항목 - 암호화폐 지갑 프로그램이 다중 서명 지갑을 지원하는지에 대한 여부를 나타낸 것입니다.

암호화폐 거래 수행 후 아티팩트 분석

암호화폐 거래는 Coinone 거래소에서 Exodus 지갑 프로그램의 주소로 암호화폐를 처음 전송하고, 나머지 암호화폐 프로그램의 지갑으로 차례대로 전송하는 방식으로 진행했습니다. 각 지갑 프로그램에서 수신 1회, 송신 1회의 거래를 수행했습니다.

각 암호화폐 지갑 프로그램을 사용하여 지갑을 생성했을 때, 해당 지갑의 데이터가 저장되는 지갑 파일의 저장 경로와 데이터 타입은 다음 표와 같습니다. Bitcoin Core, Bitpay, Electrum, Jaxx Liberty 프로그램은 암호화를 진행하지 않았을 때, 지갑 파일의 데이터가 평문으로 저장되는 것을 확인했습니다. 암호화폐 지갑 프로그램은 사용자가 설정한 패스워드로 지갑 파일의 데이터를 암호화 합니다. 지갑 파일에 암호화가 적용되지 않았다는 것은 암호화폐 지갑 프로그램 접근에 제한이 없는 것과 같으므로 지갑 정보와 거래 내역 등을 모두 확인할 수 있으며, 암호화폐 전송을 통한 몰수 또한 가능한 것을 의미합니다. 반면, 지갑 파일에 암호화가 적용되었다는 것은 프로그램을 통해 정보를 얻는 것이 불가능한 것을 의미합니다. 지갑 프로그램을 통한 데이터 획득이 어려울 경우, 파일에 저장된 데이터를 분석해서 정보를 획득해야 합니다.

각 암호화폐 지갑 프로그램에서 암호화가 적용된 지갑을 생성했을 때, 지갑 파일에서 중요 정보의 획득 가능성을 연구한 결과와 암호화폐 지갑 프로그램이 생성하는 파일 중 지갑 파일을 제외했을 때 주요 정보를 획득할 수 있는 파일과 식별할 수 있는 데이터 저장 형식을 분석한 결과는 논문을 참고해주시기 바랍니다.


도구 개발 제안

분석한 결과를 바탕으로 수사기관이 피압수자 소유의 단말기에서 실행할 수 있는 암호화폐 지갑 프로그램 정보 수집 도구의 개발을 제안합니다. 도구에는 암호화폐 지갑 프로그램 설치 여부, 암호화폐 거래 수행 여부를 파악할 수 있는 기능이 필요합니다. 암호화폐 지갑 프로그램 설치와 실행 여부는 Windows 아티팩트인 Prefetch, AmCache, SRUM, Timeline, Registry, 프로그램별 기본 설치 경로에 남는 데이터를 통해 확인할 수 있습니다. 암호화폐 거래 수행 여부는 지갑 파일과 기타 파일에 저장되는 데이터를 파싱하여 각 지갑 프로그램에서 사용된 지갑 주소와 생성된 TxID 값을 획득하여 확인할 수 있습니다.


결론

국내뿐만 아니라 해외에서도 암호화폐 거래소가 고객알기제도를 준수하도록 권장하고 있습니다. 고객알기제도를 준수하는 거래소가 많아질수록 추적 회피와 자금 세탁의 목적으로 개인 지갑의 형태로 암호화폐를 관리하는 사용자들이 많아질 것이며, 피압수자의 시스템을 대상으로 압수수색을 하게 되는 비중이 높아질 것은 자명합니다.

이에 본 논문에서는 피압수자의 협조를 기대하기가 어려우며 암호화폐 지갑 파일의 데이터가 암호화되어 사용정보를 알기가 어려울 때, 암호화폐 지갑 프로그램이 생성하는 파일들을 분석하여 최소한 암호화폐 지갑 주소 모니터링을 진행할 수 있도록 지갑 주소와 TxID를 획득하는 방안을 연구했으며, 대부분의 암호화폐 지갑 프로그램에서 프로그램이 생성하는 로그 파일과 캐시 파일 등을 통해 획득 가능한 것을 확인했습니다.

Windows 아티팩트를 분석하여 암호화폐 지갑 프로그램의 설치 여부를 확인하고, 본 논문에서 연구된 내용을 기반으로 암호화폐 사용 정보를 파악 할 수 있는 도구 개발을 제안했습니다. 추후 지갑 파일 복호화 연구가 이루어져 지갑 파일을 복호화할 수 있는 기능과 메모리 분석을 통해 사용자의 입력 패스워드값을 비롯한 기타 사용 정보를 획득할 수 있도록 추가한다면, 암호화폐 압수 현장에서 유용하게 사용될 수 있을 것으로 기대합니다.


논문과는 별개로...

여담으로 암호화폐 지갑 서비스(설치형 프로그램 및 확장 프로그램 등)는 굉장히 많은 종류가 있습니다. 이러한 프로그램의 아티팩트 분석을 모두 지원하는 프로그램이 존재하는 것은 사실상 어렵습니다. 하나의 서비스 안에서도 암호화폐의 종류가 굉장히 다양하고 프로그램의 패치가 이루어지면 변화되는 데이터를 모두 Follow Up하기는 어렵기 때문입니다. 따라서 분석가는 이러한 프로그램의 등장을 기다리기 보다는 암호화폐 지갑 서비스의 수동 분석 방법을 숙지할 필요가 있습니다.