랜섬웨어 결제 지갑 분석은(는) 무엇을 하나요?
사용 시기
- 조직이 랜섬웨어에 감염되었고, 랜섬노트에 조사가 필요한 비트코인 또는 암호화폐 지갑 주소가 포함된 경우
- 법 집행 기관이나 침해 대응자가 피해자가 지불한 후 랜섬 결제가 어디로 흘러갔는지 추적해야 하는 경우
- 위협 인텔리전스 분석가가 여러 사고에 걸쳐 결제 인프라를 클러스터링하여 랜섬웨어 캠페인을 귀속시키는 경우
- 조사관이 랜섬웨어 그룹이 여러 피해자에 걸쳐 지갑 인프라를 재사용하는지 확인해야 하는 경우
- 규정 준수 또는 법무 팀이 기소, 제재 집행 또는 보험 청구를 위한 자금 흐름 증거가 필요한 경우
이 스킬을 실시간 결제 차단이나 랜섬웨어 운영자와의 직접 상호작용에는 사용하지 마십시오. 모든 분석은 공개 블록체인 데이터에 대해 수동적이고 읽기 전용으로 수행되어야 합니다.
사전 요구 사항
- Python 3.8+ 및
requests,json,hashlib라이브러리 - 블록체인 탐색기 API(blockchain.com, WalletExplorer.com, Blockstream.info)에 대한 접근 권한
- 비트코인 거래 모델(UTXO, 입력, 출력, 잔돈 주소)에 대한 이해
- 일반적인 난독화 기법(믹서, 텀블러, 피체인, 크로스체인 스왑)에 대한 이해
- 선택 사항: 엔터프라이즈급 클러스터 분석을 위한 Chainalysis Reactor 라이선스
- 선택 사항: 고급 트랜잭션 그래프 시각화를 위한 OXT.me
워크플로우
1단계: 랜섬노트에서 지갑 주소 추출
랜섬노트를 파싱하여 결제 주소를 식별합니다:
일반적인 주소 형식:
비트코인 (P2PKH): 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa (1로 시작)
비트코인 (P2SH): 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy (3으로 시작)
비트코인 (Bech32): bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq (bc1로 시작)
모네로: 4... (95자, 추적이 훨씬 어려움)
이더리움: 0x... (16진수 40자)
2단계: 블록체인 탐색기에서 거래 내역 조회
지갑과 관련된 모든 거래를 검색합니다:
import requests
def get_wallet_transactions(address):
"""blockchain.com API를 사용하여 주소의 거래 내역을 조회합니다."""
url = f"https://blockchain.info/rawaddr/{address}"
resp = requests.get(url, timeout=30)
resp.raise_for_status()
data = resp.json()
return {
"address": address,
"n_tx": data.get("n_tx", 0),
"total_received_satoshi": data.get("total_received", 0),
"total_sent_satoshi": data.get("total_sent", 0),
"final_balance_satoshi": data.get("final_balance", 0),
"transactions": data.get("txs", []),
}
3단계: 자금 흐름 매핑 및 클러스터 식별
랜섬 지갑에서 하위 주소로의 출력을 추적합니다:
자금 흐름 분석:
━━━━━━━━━━━━━━━━━━━
피해자 결제 ──► 랜섬 지갑 ──► 통합 지갑
├─► 믹서/텀블러 서비스
├─► 거래소 입금 주소
└─► 피체인 (연속적인 소액 출력)
주요 지표:
- 통합: 여러 랜섬 결제가 하나의 지갑에 집계됨
- 피체인: 출력액이 점차 감소하는 연속 거래
- 믹서 사용: 알려진 믹서 주소(Wasabi, Samourai, ChipMixer)로 자금 전송
- 거래소 현금화: 알려진 거래소 지갑(Binance, Kraken 핫 월렛)에 입금
4단계: 알려진 지갑 데이터베이스와 교차 참조
알려진 랜섬웨어 인프라와 주소를 대조합니다:
# WalletExplorer에서 엔터티 식별 확인
def check_wallet_explorer(address):
url = f"https://www.walletexplorer.com/api/1/address?address={address}&caller=research"
resp = requests.get(url, timeout=30)
data = resp.json()
return {
"wallet_id": data.get("wallet_id"),
"label": data.get("label", "Unknown"),
"is_exchange": data.get("is_exchange", False),
}
5단계: 귀속 보고서 생성
조사 결과를 구조화된 인텔리전스 보고서로 정리합니다:
랜섬웨어 지갑 분석 보고서
====================================
랜섬 주소: bc1q...xyz
패밀리 귀속: LockBit 3.0 (랜섬노트 형식 기준)
총 수신 금액: 4.25 BTC (결제 시점 기준 $178,500)
총 송신 금액: 4.25 BTC (지갑 완전 소진)
결제 건수: 3건 (3명의 다른 피해자 추정)
자금 흐름:
결제 1: 1.5 BTC → 통합 지갑 → Binance 입금
결제 2: 1.0 BTC → Wasabi 믹서 → 알 수 없음
결제 3: 1.75 BTC → 피체인 (12홉) → OKX 입금
클러스터 분석:
관련 지갑: 동일 클러스터 내 47개 주소 식별
총 클러스터 규모: 156.3 BTC ($6.5M USD)
첫 활동: 2024-01-15
마지막 활동: 2024-09-22
검증
- API를 조회하기 전에 지갑 주소 형식이 유효한지 확인합니다.
- 거래 타임스탬프를 알려진 침해 타임라인과 교차 참조합니다.
- 공통 입력 소유권 휴리스틱을 확인하여 클러스터 연관성을 검증합니다.
- 제재된 주소에 대해 OFAC SDN 목록과 결과를 비교합니다.
- 여러 출처(WalletExplorer, OXT, Chainalysis)에서 거래소 귀속을 확인합니다.
주요 개념
| 용어 | 정의 |
|---|---|
| UTXO | 사용되지 않은 거래 출력; 거래 체인을 통해 소유권을 추적하는 비트코인의 기본 단위 |
| 클러스터 분석 | 공통 입력 소유권 및 잔돈 주소 휴리스틱을 사용하여 동일한 엔터티가 제어하는 것으로 추정되는 여러 비트코인 주소를 그룹화 |
| 피체인 | 많은 연속 거래를 통해 자금을 전송하고 각 거래에서 소액을 새 주소로 떼어내는 자금 세탁 패턴 |
| CoinJoin/믹서 | 여러 사용자의 거래를 결합하여 송신자와 수신자 간의 연결을 난독화하는 개인정보 보호 기술 |
| 공통 입력 소유권 | 단일 거래의 모든 입력은 동일한 엔터티가 제어한다고 가정하는 휴리스틱 |
도구 및 시스템
- Chainalysis Reactor: 엔터티 귀속 및 크로스체인 추적 기능을 갖춘 엔터프라이즈 블록체인 조사 플랫폼
- WalletExplorer: 비트코인 주소를 클러스터링하고 알려진 서비스(거래소, 믹서, 마켓)에 레이블을 지정하는 무료 도구
- OXT.me: UTXO 그래프 분석을 통한 고급 비트코인 거래 시각화
- Blockstream.info: 전체 API 액세스가 가능한 오픈 소스 비트코인 블록 탐색기
- blockchain.com API: 비트코인 주소 잔액 및 거래 내역 조회를 위한 무료 API
- OFAC SDN 목록: 규정 준수 확인을 위한 미국 재무부 제재 주소 목록