La perquisition en matière de monnaie virtuelle - AFSIN

La page est créée Jacques Laroche
 
CONTINUER À LIRE
La perquisition en matière de monnaie virtuelle - AFSIN
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