Que fait Analyse des Portefeuilles de Paiement de Rançongiciels ?
Quand l'utiliser
- Une organisation a été victime d'un rançongiciel et la note de rançon contient une adresse de portefeuille Bitcoin ou de cryptomonnaie qui nécessite une enquête
- Les forces de l'ordre ou les équipes de réponse aux incidents doivent tracer où les paiements de rançon ont transité après que la victime a payé
- Les analystes de renseignement sur les menaces attribuent des campagnes de rançongiciels en regroupant les infrastructures de paiement entre différents incidents
- Les enquêteurs doivent déterminer si un groupe de rançongiciels réutilise une infrastructure de portefeuille pour plusieurs victimes
- Les équipes de conformité ou juridiques ont besoin de preuves des flux de fonds pour des poursuites judiciaires, l'application de sanctions ou des réclamations d'assurance
N'utilisez pas cette compétence pour une interception en direct des paiements ou pour interagir directement avec les opérateurs de rançongiciels. Toute analyse doit être passive et en lecture seule sur les données publiques de la blockchain.
Prérequis
- Python 3.8+ avec les bibliothèques
requests,jsonethashlib - Accès aux API des explorateurs de blockchain (blockchain.com, WalletExplorer.com, Blockstream.info)
- Connaissance du modèle de transaction Bitcoin (UTXOs, entrées, sorties, adresses de change)
- Compréhension des techniques d'obscurcissement courantes (mixeurs, tumblers, chaînes de découpage, swaps inter-chaînes)
- Facultatif : Licence Chainalysis Reactor pour l'analyse de clusters de niveau entreprise
- Facultatif : OXT.me pour la visualisation avancée des graphes de transactions
Flux de travail
Étape 1 : Extraire l'adresse du portefeuille de la note de rançon
Analyser la note de rançon pour identifier la ou les adresses de paiement :
Formats d'adresse courants :
Bitcoin (P2PKH) : 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa (commence par 1)
Bitcoin (P2SH) : 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy (commence par 3)
Bitcoin (Bech32) : bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq (commence par bc1)
Monero : 4... (95 caractères, beaucoup plus difficile à tracer)
Ethereum : 0x... (40 caractères hexadécimaux)
Étape 2 : Interroger l'explorateur de blockchain pour l'historique des transactions
Récupérer toutes les transactions associées au portefeuille :
import requests
def get_wallet_transactions(address):
"""Interroge l'API blockchain.com pour les transactions d'une adresse."""
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", []),
}
Étape 3 : Cartographier le flux de fonds et identifier les clusters
Tracer les sorties du portefeuille de rançon vers les adresses en aval :
Analyse du flux de fonds :
━━━━━━━━━━━━━━━━━━
Paiement de la victime ──► Portefeuille de rançon ──► Portefeuille de consolidation
├─► Service de mixeur/tumbler
├─► Adresse de dépôt d'échange
└─► Chaîne de découpage (petites sorties séquentielles)
Indicateurs clés :
- Consolidation : Plusieurs paiements de rançon agrégés dans un seul portefeuille
- Chaînes de découpage : Transactions séquentielles avec des sorties diminuant
- Utilisation de mixeurs : Fonds envoyés vers des adresses de mixeurs connues (Wasabi, Samourai, ChipMixer)
- Retrait sur échange : Dépôts vers des portefeuilles d'échanges connus (portefeuilles chauds Binance, Kraken)
Étape 4 : Croiser avec les bases de données de portefeuilles connues
Vérifier les adresses par rapport à l'infrastructure de rançongiciel connue :
# Vérifier WalletExplorer pour l'identification de l'entité
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", "Inconnu"),
"is_exchange": data.get("is_exchange", False),
}
Étape 5 : Générer un rapport d'attribution
Compiler les résultats dans un rapport de renseignement structuré :
RAPPORT D'ANALYSE DE PORTEFEUILLE DE RANÇONGICIEL
====================================================
Adresse de rançon : bc1q...xyz
Attribution de la famille : LockBit 3.0 (basé sur le format de la note de rançon)
Total reçu : 4,25 BTC (178 500 $ au moment du paiement)
Total envoyé : 4,25 BTC (portefeuille complètement vidé)
Nombre de paiements : 3 (probablement 3 victimes distinctes)
FLUX DE FONDS :
Paiement 1 : 1,5 BTC → Portefeuille de consolidation → Dépôt Binance
Paiement 2 : 1,0 BTC → Mixeur Wasabi → Inconnu
Paiement 3 : 1,75 BTC → Chaîne de découpage (12 sauts) → Dépôt OKX
ANALYSE DE CLUSTER :
Portefeuilles liés : 47 adresses identifiées dans le même cluster
Volume total du cluster : 156,3 BTC (6,5 millions USD)
Première activité : 15/01/2024
Dernière activité : 22/09/2024
Vérification
- Confirmer que le format de l'adresse du portefeuille est valide avant d'interroger les API
- Croiser les horodatages des transactions avec les chronologies d'incidents connues
- Valider les associations de clusters en vérifiant l'heuristique de propriété d'entrée commune
- Comparer les résultats avec la liste SDN de l'OFAC pour les adresses sanctionnées
- Vérifier l'attribution des échanges auprès de plusieurs sources (WalletExplorer, OXT, Chainalysis)
Concepts clés
| Terme | Définition |
|---|---|
| UTXO | Sortie de transaction non dépensée ; unité fondamentale du Bitcoin qui suit la propriété à travers une chaîne de transactions |
| Analyse de cluster | Regroupement de plusieurs adresses Bitcoin présumées être contrôlées par la même entité en utilisant l'heuristique de propriété d'entrée commune et d'adresse de change |
| Chaîne de découpage | Un modèle de blanchiment où les fonds sont envoyés à travers de nombreuses transactions séquentielles, chacune retirant une petite quantité vers une nouvelle adresse |
| CoinJoin/Mixeur | Techniques de confidentialité qui combinent les transactions de plusieurs utilisateurs pour obscurcir le lien entre l'expéditeur et le destinataire |
| Propriété d'entrée commune | Heuristique qui suppose que toutes les entrées d'une même transaction sont contrôlées par la même entité |
Outils et systèmes
- Chainalysis Reactor : Plateforme d'investigation blockchain d'entreprise avec attribution d'entités et traçage inter-chaînes
- WalletExplorer : Outil gratuit qui regroupe les adresses Bitcoin et étiquette les services connus (échanges, mixeurs, marchés)
- OXT.me : Visualisation avancée des transactions Bitcoin avec analyse de graphe UTXO
- Blockstream.info : Explorateur de blocs Bitcoin open source avec accès complet à l'API
- API blockchain.com : API gratuite pour interroger les soldes et les historiques de transactions des adresses Bitcoin
- Liste SDN de l'OFAC : Liste d'adresses sanctionnées du Trésor américain pour la vérification de conformité