La perquisition en matière de monnaie virtuelle - AFSIN
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
La perquisition en matière de monnaie virtuelle 1 – Introduction 1-1 – Le champ infractionnel en matière de BTC 1-2 – La notion d’adresse BTC et de WALLET 1-3 – La spécificité de la perquisition en matière de crypto monnaies 2 – L’identification des WALLETS BTC 2-1 – L’historique de navigation Internet 2-2 – Le script python BTCSCAN 2-3 – L’analyse de RAM 3 – L’accès aux WALLETS BTC et la problématique des transferts 4 – Conclusion JFIN 2018
1 – Introduction 1-1 – Le champ infractionnel en matière de BTC ► Les atteintes aux systèmes de traitement automatisé de données (infrastructure du réseau BTC). ► BTC et chantage ► BTC support d’escroqueries ► BTC comme moyen de blanchiment ► L’utilisation du BTC comme solution de paiement de prestations illégales ►Le minage de BTC par des tiers. JFIN 2018
1 – Introduction 1-2 – La notion d’adresse et de WALLET BTC. - La théorie des @ BTC : principe de cryptographie asymétrique JFIN 2018
1 – Introduction 1-2 – La notion d’adresse BTC et de WALLET. - Les WALLETS BTC : tout support permettant le stockage des clefs cryptographique et/ou assurant une connectivité au réseau BTC. ► Paper WALLET : stockage des clefs sur support papier. ► « ledger » WALLET : hardware WALLET OFFLINE. ► Desktop WALLET / Smartphone WALLET : application client. ► ONLINE WALLET : Les clefs sont stockées sur une infra WEB JFIN 2018
1 – Introduction 1-3 – La spécificité de la perquisition en matière de crypto monnaies ►Perquisition (art 56 CPP – flag) : « … saisie des papiers, documents, données informatiques, ou autres objets en la possession des personnes qui paraissent avoir participé au crime ou détenir des pièces ou objets relatifs aux faits incriminés... ». « L’officier de police judiciaire peut également se transporter en tous lieux dans lesquels sont susceptibles de se trouver des biens dont la confiscation est prévue à l’article 131-21 du CP, pour y procéder à une perquisition aux fins de saisie de ces biens. » ►Saisie / confiscation (art 131-21 CP) : Il est possible de saisir et de confisquer, à titre de peine complémentaire, tant l’instrument de l’infraction (131-1 al2 CP), l’objet ou le produit de cette dernière (131-21 al3 CP) que des biens dont la personne n’est pas capable de justifier de l’origine pour les infractions punies d’une peine d’emprisonnement égale ou supérieure à 5 ans. JFIN 2018
1 – Introduction 1-3 – Spécificité de la perquisition en matière de BTC ►Définition des crypto-monnaies : - BITCOIN ≠ créance, instrument financier. - BITCOIN ≈ valeur sans matérialité. → BITCOIN = bien mobilier incorporel => Application de l’art 706-153 CPP : « En flag ou en prélim, le JLD, saisi par le PR, peut autoriser par ordonnance motivée la saisie des biens ou droits incorporels dont la confiscation est prévue par l’article 131-21 CP » Donc dans la pratique : - Rapport au PR rédigée par l’OPJ. - Requête JLD rédigée par le PR. - Autorisation du JLD. - Décision du PR. JFIN 2018
1 – Introduction 1-3 – La spécificité de la perquisition en matière de crypto monnaies Objectif de la perquisition : Rechercher des BTC, objet ou produit de l’infraction, aux fins de saisie. (à ce stade ≈ principe de saisie de monnaies fiduciaire). Etape 1 : Identification des WALLETS BTC : Concrètement le but du jeu sera de mettre la main sur les WALLETS lesquelles contiennent les clefs cryptographiques (permettant de réaliser les transactions sur le réseau), pour permettre dans un second temps la saisie de ces valeurs Etape 2 : Accès aux WALLETS BTC : A la différence de la monnaie fiduciaire, la saisie effective ne pourra être réalisée que via un transfert des BTC vers un WALLET étatique, ce transfert étant la seule voie pour garantir l’efficience de la saisie. A ce jour, la transaction doit être réalisée sur une @BTC du WALLET détenu par l’AGRASC (Agence de Gestion et de Recouvrement des Avoirs Saisis et Confisqués). JFIN 2018
2 – L’identification des WALLETS BTC Objectif : adapter sa stratégie / méthodologie selon l’environnement informatique et le profil utilisateur afin de d’identifier la présence de WALLETS BTC → Paper WALLET / Ledger WALLET : méthode « traditionnelle » - recherche physique. → Desktop WALLET / Smartphone WALLET : Recherches forensic sur le système hôte pour identifier la présence du WALLET + en rechercher les caractéristiques. → Online WALLET : Recherche des traces de navigation internet laissées par le navigateur WEB ► 2-1 – L’historique de navigation Internet. ► 2-2 – Le script python BTCSCAN. ► 2-3 – L’analyse de RAM. JFIN 2018
2-1 – L’historique de navigation Internet Objectif : Identifier les traces numériques correspondantes à : - Des connexions à WALLET ONLINE. - Des requêtes vers des EXCHANGERS Techniquement, il s’agit de rechercher les trames HTTP émises depuis un navigateur internet (client WEB) et de filtrer l’ensemble de ces requêtes à partir de fichiers de keywords sur la base : ►Des différents MARKETS (EXCHANGERS) existant en matière de crypto-monnaie. ►Des différents prestataires proposant des solutions de WALLETS ONLINE. ►Des trames HTTP correspondants à des procédures d’AUTHENTIFICATION. JFIN 2018
2-1 – L’historique de navigation Internet KEYWORDS MARKETS – script N°1 Objectif : Récupérer les principaux MARKETS en matière de BITCOIN => Scrolling du site WEB « coinmarketcap.com » et sélection des données pertinentes Script N°1 : # Download de la page relative aux markets bitcoins curl https://coinmarketcap.com/currencies/bitcoin/#markets > markets # sélection / tri cat markets | grep 'data-sort.*a href.*http' | awk -F/ '{print $4}' > markets_selection cat markets_selection | grep 'www' | cut -d '.' -f2-5 | cut -d '"' -f1 > markets_selection_trie cat markets_selection | grep -v 'www' | cut -d '.' -f1-4 | cut -d '"' -f1 >> markets_selection_trie cat markets_selection_trie | sort -u > markets_selection_trie_unique Ex : allcoin.com, bitfinex.com, exx.com, okex.com... JFIN 2018
2-1 – L’historique de navigation Internet KEYWORDS WALLET ONLINE + AUTHENTIFICATION Objectif : Récupérer les principaux prestataires de WALLETS ONLINE en matière de BITCOIN. => De manière empirique en sélectionnant sur le WEB (francophone) les prestataires de WALLETS ONLINE les plus populaires. Ex : coinbase.com, BitBay.net, LiteBit.eu, cryptonator.com Objectif : Identifier les keywords correspondant à des phases d’authentification sur des serveurs distants au travers des requêtes HTTP. => De manière empirique, analyses des trames HTTP et identification des keywords spécifiques. Ex : auth, login, signin JFIN 2018
2-1 – L’historique de navigation Internet Cas pratique – Exemple sous FIREFOX → Récupération du fichier « places.sqlite » (BDD - sqlite) (/home/user/.mozilla/firefox/6w24090T.default) → Conversion des datas au format CSV. ► 27 533 lignes → Parsing via keywords « MARKETS » + « WALLETS ONLINE ». ► 175 lignes. → Parsing via keywords « AUTHENTIFICATION » ► 27 lignes. Résultats : → 52021;https://www.cryptonator.com/auth/signup/;Cryptonator -……... → 49819;https://login.blockchain.com/#/signup;…... => Poursuite des investigations : REQUEST auprès des différents prestataires. JFIN 2018
2-2 – Le script PYTHON BTCSCAN Objectif : Recherche ciblée sur la base de la syntaxe spécifique des adresses BTC ( Bitcoin pubkey hash : 26-35 Base58Check chars, beginning with the number 1 ) De manière complémentaire, recherche des autres chaînes de caractères pouvant ressortir de l’utilisation du réseau BTC ou des wallets associés : - Pay to script hash (P2SH) 26-35 Base58Check chars, beginning with the number 3 - Unicode Bitcoin or P2SH address - BIP38 Encrypted Private Key - 58 characters always starting with '6P' - Unicode BIP38 Encrypted Private Key - 58 characters always starting with '6P'- - ….. https://gist.github.com/chriswcohen/7e28c95ba7354a986c34 BTCscan.py [-i/--input=][drive:][path][filename] [args] JFIN 2018
2-2 – Le script PYTHON BTCSCAN Cas pratique Cache firefox : HIT : 12a6QKN1Tr8wt5yf5iCVUKmnnRZT2drmtg FILE :C:\Users\Administrateur\AppData\Local\Mozilla\Firefox\Profiles\ 9g1fxu5l.default\cache2\entries\34D4622FAD13603AE0B8D15A3DE88FFE0985CD14 TYPE : Bitcoin address …. https://api.blockchain.info/metadata/12a6QKN1Tr8wt5yf5iCVUKmnnRZT2drmtg necko:classified 1 security-info FnhllAKWRHGAl Date: Fri, 06 Jul 2018 13:52:17 GMT Content-Type: application/json x-blockchain-language-id: 0:0:1 x-blockchain-language: fr x-original-host: api.blockchain.info ….. JFIN 2018
2-2 – Le script PYTHON BTCSCAN Cas pratique Paramètres desktop wallet ELECTRUM - Adresses BTC publiques: HIT : 122cQGyzsehygFngA5EPAfGFHY4tf7Kkee FILE : C:\Users\Administrateur\AppData\Roaming\Electrum\wallets\default_wallet TYPE : Bitcoin address Paramètres desktop wallet ELECTRUM - BIP 32 HD Wallet private node: HIT :xprv9s21ZrQH143K2xn4e1C2rQrgvDxs6qmhdonj5MUtUkCjfAAYGXh7oaF2iKU zvqgrJ4CmV4jcwf5WQxFZgxfKKrUMjUBBycfeoGoZTg258FM FILE : C:\Users\Administrateur\AppData\Roaming\Electrum\wallets\default_wallet TYPE : BIP32 HD walllet private node JFIN 2018
2-2 – Le script PYTHON BTCSCAN Cas pratique Paramètres fichier texte - Adresse BTC publique: HIT : 1QEP5xV7BmQvT6xpxZpxTmNyPsCMEabejC FILE : C:*****\part4\*******\MILLEROUX.txt TYPE : Bitcoin address M MILLERIOUX NATHALIE FLORENCE PASCAL 23 MARS 1967 LE MANS - 06 77 91 54 85 EPOUSE COMPTE SINGLE COMPTE JOIN BTC : 1QEP5xV7BmQvT6xpxZpxTmNyPsCMEabejC ETH : 0x57Df228973079e8E8ADE7Ee94920ffeF17Fb6803 0.41505 BTC 2.548 ETHERIUM JFIN 2018
2-3 – L’analyse de RAM Objectif : → Relever la présence de DESKTOP WALLET. → Identifier les processus liées au protocole BTC. → Mettre en évidence toutes datas associées au fonctionnement d’un DESKTOP WALLET (adresses BTC, clefs privées, hash de transactions...) - Capture réalisée via « Live RAM Capturer » (Belkasoft). - Système cible : WIN 7 32 bits – 4 Go RAM. - Analyse de RAM effectuée via VOLATILITY 2.5 JFIN 2018
1-3 – L’analyse de RAM Listing des processus en cours ./vol.py -f /home/olivier/Bureau/V2/20180720.mem --profile=Win7SP0x86 pslist Volatility Foundation Volatility Framework 2.5 Offset(V) Name PID PPID Thds Hnds Sess Wow64 Start Exit ---------- -------------------- ------ ------ ------ -------- ------ ------ ------------------------------ ------------------------------ 0x85843890 System 4 0 121 585 ------ 0 2018-07-20 14:27:10 UTC+0000 0x87f397f0 smss.exe 292 4 3 32 ------ 0 2018-07-20 14:27:10 UTC+0000 ……. 0x88b14030 LMS.exe 5664 556 4 100 0 0 2018-07-20 14:29:59 UTC+0000 0x89e69770 UNS.exe 5704 556 14 153 0 0 2018-07-20 14:30:00 UTC+0000 0x89e038e0 electrum-3.2.2 6052 2768 12 351 1 0 2018-07-20 14:30:36 UTC+0000 0x863aec80 conhost.exe 1260 516 0 -------- 1 0 2018-07-20 14:33:35 UTC+0000 2018-07-20 14:33:35 UTC+0000 0x89a196f8 rundll32.exe 3528 5052 9 210 ------ 0 2018-07-20 14:40:23 UTC+0000 JFIN 2018
1-3 – L’analyse de RAM Extraction des datas PID 6052 + tri ./vol.py -f /home/olivier/Bureau/V2/20180720.mem --profile=Win7SP0x86 memdump -D /home/olivier/Bureau/V2/dump/ -p 6052 Volatility Foundation Volatility Framework 2.5 ************************************************************************ Writing electrum-3.2.2 [ 6052] to 6052.dmp strings /home/olivier/Bureau/V2/dump/6052.dmp > /home/olivier/Bureau/V2/dump/ 6052 JFIN 2018
1-3 – L’analyse de RAM Recherche sémantique DUMP PID 6052 => Identification d’un listing d’@ BTC correspondantes à celles présentes au sein du desktop WALLET Electrum "addresses": { "change": [ "1PVEnMeSRoQwbfpm5P8kMAVs2qmAkZBktj", "16Jg2eNeyCytFYaswxwWkbFsqo5FLF72zM", "1BEMeUYivJtubXN6UqVjvRCEakx9HCMkAe", "12sNXAyatQTxndNxTwgWE2PEdXt48eToau", "1Lt3Jh1uGXkBqFMSJDi3KKVVBxppPq1mcV", "12gMLW8KTQ5i5wSB6ZAnNzZqajttKVHXQ5", "16roPvAHMgb1LNCg9bCcjy63uXsjJnyaV4" ], "receiving": [ "1sVmvxqEVnxARgVURk2VHTRF78jYv7RRY", "1NyUDLEFpyxivYGPRK6EZuS6fyA2qrwSre", "1NhnadX6aeJUtuyguK1yGHZRUHpuxeYYzH", "13Dfcr15h8aCbud5X5e9gyvRkqifQwwZyQ", "1Ju1P5yy6Q7Aof1JNfUwsEoBa8qw1fbmpL", "1E1pqiBC91Dyyjji76j3XFYHfcvgG7aYs", "1KXy741TPaLNNcwy9CtFKenacmWNtDwPhu", "1Jj1rVsLYEACATBFGyx4Je8fJ73JrbXnu", JFIN 2018
1-3 – L’analyse de RAM Recherche sémantique DUMP PID 6052 => Identification de transactions associées à plusieurs @BTC figurant dans la liste supra "txo": { "240577f764e9bffd6e1a7f08200e3af72b3f303ba75cca3e54fed44a653ac3d9": { "1sVmvxqEVnxARgVURk2VHTRF78jYv7RRY": [ ] }, "ae0085a99c200e020bfc8e38a7491e905b800466fab46e4d832226cc10610a27": { "16Jg2eNeyCytFYaswxwWkbFsqo5FLF72zM": [ JFIN 2018
1-3 – L’analyse de RAM Recherche sémantique DUMP PID 6052 => Identification des labels associés aux transactions "labels": { "ae0085a99c200e020bfc8e38a7491e905b800466fab46e4d832226cc10610a27": "qq BTC pour paiement caution", "e0cabb8b3b7a3c13ad43c13392828e68ed14f95594c9ab16f76411566b8555e0": "Alimentation de mon WALLET Android" }, JFIN 2018
1-3 – L’analyse de RAM Recherche sémantique DUMP PID 6052 => Identification, pour la transaction identifiée par le HASH SHA256 « e0cabb8b3b7a3c13 ….. 411566b8555e0 » de : - L’@BTC d’émission. - L’@BTC du destinataire. - La PRIVATE KEY ayant permis la validation de la transaction FILE0 y:N41 y:N41 Envoide 0,4 mBTC vers 13dgHn5diJEwpGcQ9kZknqtsbBNkZZfqiG HASH = e0cabb8b3b7a3c13ad43c13392828e68ed14f95594c9ab16f76411566b8555e0 depuis 1sVmvxqEVnxARgVURk2VHTRF78jYv7RRY WALLET Electrum clef priv e associ e: p2pkh:KyQFVqa4p6KZPDW9ua6h6qACxzW8YSYDw6E74UoinAHc46NVQr34 FILE0 e!n4p JFIN 2018
1-3 – L’analyse de RAM Recherche sémantique DUMP PID 6052 => Récupération de la « SEED », laquelle permet de régénérer son WALLET BTC "keystore": { "seed": "turn cash arena empty kangaroo scatter pole donor soon wrestle ski thought", "type": "bip32", "xprv": "xprv9s21ZrQH143K2xn4e1C2rQrgvDxs6qmhdonj5MUtUkCjfAAYGXh7oaF2iKUzvqgrJ4CmV4jcwf5WQxFZg xfKKrUMjUBBycfeoGoZTg258FM", "xpub": "xpub661MyMwAqRbcFSrXk2j3DYoRUFoMWJVZ12iKsjtW35jiXxVgp51NMNZWZadNEb88aPu4udvNwQbVC L9B8XvJoed6ZdpfRrUj9MpHkatLrDs" }, JFIN 2018
1-3 – L’analyse de RAM Recherche sémantique DUMP PID 6052 L’analyse de RAM est de nature à apporter des informations précieuses : - Type de WALLET BTC présent sur le système. - @BTC publiques contenues dans le WALLET => investigations ultérieures sur la blockchain publique. - Les labels de transaction de nature à orienter rapidement les investigations. - Des clefs privées + la SEED du wallet, lesquelles permettent de procéder à la validation de transaction et d’envisager la possibilité de procéder à des saisies. JFIN 2018
3 – L’accès aux WALLETS BTC et la problématique des transferts Objectif : accéder au WALLET BTC du mis en cause + être en mesure de procéder à un transfert conformément aux dispositions législatives en vigueur. → Paper WALLET : On dispose du couple clef publique/clef privée => pas de difficultées techniques pour procéder au transfert. → Ledger WALLET : - Nécessité d’obtenir le code PIN de déverrouillage. - Recherche de la SEED pour regénérer la ledger. JFIN 2018
3 – L’accès aux WALLETS BTC → Desktop / Smartphone WALLET : - Problème du déverrouillage / chiffrement. - infos pertinentes en RAM ? → Online WALLET : - Nécessité de disposer du couple login/mdp. - Infos pertinentes en RAM ? - Possibilité de solliciter la plateforme si « compliant ». Dans tous les cas, la coopération de mis en cause est très souvent nécessaire pour procéder à la saisie. On peut néanmoins « bricoler » en cas de situation bloquante. JFIN 2018
3 – L’accès aux WALLETS BTC ► Maintien sous scellé des équipements. - Pb : valable uniquement pour certains types de support + possibilité de regénérer le WALLET à partir de la SEED. ► Si WALLET online : changements des identifiants de connexion. - Pb : il existe souvent des procédures de récupération de ses credentials. ►Si WALLET online : blocage du compte client si plateforme compliant. - Pb : Fondement juridique ? JFIN 2018
4 – CONCLUSION → De nombreux obstacles à la saisies de BTC - Des contraintes techniques fortes. - Des règles de procédure « laborieuses ». => Une nécessaire évolution législative intégrant une définition des cryptomonnaies dans le CPP. => Une procédure de saisie simplifiée ? Vers une inspiration du délai de 10 jours prévu en matière de compte bancaire à l’art 706-154 CPP ? JFIN 2018
Vous pouvez aussi lire