ランサムウェア支払いウォレット分析 は何をしますか?
使用すべき状況
- 組織がランサムウェア攻撃を受け、身代金要求書に調査が必要なBitcoinまたは暗号通貨ウォレットアドレスが含まれている場合
- 法執行機関やインシデント対応担当者が、被害者が支払いを行った後の身代金の送金経路を追跡する必要がある場合
- 脅威インテリジェンスアナリストが、複数のインシデントにわたる支払いインフラをクラスタリングしてランサムウェアキャンペーンの属性特定を行っている場合
- 調査担当者が、ランサムウェアグループが複数の被害者に対してウォレットインフラを再利用しているかどうかを判断する必要がある場合
- コンプライアンス部門や法務部門が、検察、制裁執行、または保険金請求のために資金の流れの証拠を必要とする場合
このスキルは、ライブでの支払い傍受やランサムウェア運営者との直接のやり取りには使用しないでください。すべての分析は、公開ブロックチェーンデータに対する受動的かつ読み取り専用の操作である必要があります。
前提条件
- Python 3.8+(
requests、json、hashlibライブラリを含む) - ブロックチェーンエクスプローラーAPI(blockchain.com、WalletExplorer.com、Blockstream.info)へのアクセス
- Bitcoin取引モデル(UTXO、入力、出力、おつりアドレス)に関する知識
- 一般的な難読化手法(ミキサー、タンブラー、ピールチェーン、クロスチェーンスワップ)の理解
- オプション: エンタープライズグレードのクラスター分析用Chainalysis Reactorライセンス
- オプション: 高度なトランザクショングラフ可視化のためのOXT.me
ワークフロー
ステップ1: 身代金要求書からウォレットアドレスを抽出
身代金要求書を解析して支払いアドレスを特定します:
一般的なアドレス形式:
Bitcoin (P2PKH): 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa (1で始まる)
Bitcoin (P2SH): 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy (3で始まる)
Bitcoin (Bech32): bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq (bc1で始まる)
Monero: 4... (95文字、追跡が非常に困難)
Ethereum: 0x... (40文字の16進数)
ステップ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: 資金フローをマッピングしクラスターを特定
身代金ウォレットから下流のアドレスへの出力を追跡します:
資金フロー分析:
━━━━━━━━━━━━━━━━━━
被害者支払い ──► 身代金ウォレット ──► 集約ウォレット
├─► ミキサー/タンブラーサービス
├─► 取引所入金アドレス
└─► ピールチェーン (連続する小額出力)
主な指標:
- 集約: 複数の身代金支払いが1つのウォレットに集約される
- ピールチェーン: 出力が減少していく連続トランザクション
- ミキサーの使用: 既知のミキサーアドレス(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", "不明"),
"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(650万米ドル)
最初のアクティビティ: 2024-01-15
最後のアクティビティ: 2024-09-22
検証
- APIに問い合わせる前に、ウォレットアドレスの形式が有効であることを確認する
- トランザクションのタイムスタンプと既知のインシデントのタイムラインを相互参照する
- 共通入力所有権ヒューリスティックをチェックしてクラスターの関連性を検証する
- OFAC SDNリストと照合して制裁対象アドレスを確認する
- WalletExplorer、OXT、Chainalysisなどの複数のソースから取引所の属性を検証する
主要な概念
| 用語 | 定義 |
|---|---|
| UTXO | 未使用トランザクション出力。Bitcoinの基本単位であり、トランザクションの連鎖を通じて所有権を追跡します |
| クラスター分析 | 共通入力所有権とおつりアドレスヒューリスティックを使用して、同じエンティティによって制御されていると推定される複数のBitcoinアドレスをグループ化すること |
| ピールチェーン | 多くの連続トランザクションを通じて資金を送り、各トランザクションで少量を新しいアドレスに分離するマネーロンダリングパターン |
| CoinJoin/ミキサー | 複数のユーザーのトランザクションを組み合わせて、送信者と受信者の間のリンクを隠すプライバシー技術 |
| 共通入力所有権 | 単一のトランザクションに対するすべての入力は同じエンティティによって制御されていると仮定するヒューリスティック |
ツールとシステム
- Chainalysis Reactor: エンティティ属性とクロスチェーン追跡機能を備えたエンタープライズブロックチェーン調査プラットフォーム
- WalletExplorer: Bitcoinアドレスをクラスタリングし、既知のサービス(取引所、ミキサー、マーケット)にラベルを付ける無料ツール
- OXT.me: UTXOグラフ分析による高度なBitcoinトランザクション可視化ツール
- Blockstream.info: 完全なAPIアクセスを備えたオープンソースのBitcoinブロックエクスプローラー
- blockchain.com API: Bitcoinアドレスの残高と取引履歴を照会するための無料API
- OFAC SDNリスト: コンプライアンスチェックのための米国財務省制裁対象アドレスリスト