Introduzione
I messaggi on-chain, come metodo di comunicazione specifico nel mondo della blockchain, sono stati frequentemente utilizzati in vari incidenti di sicurezza negli ultimi anni. Ad esempio, SlowMist ha recentemente assistito KiloEx nel condurre più turni di comunicazione con l’attaccante tramite messaggi on-chain, riuscendo infine a facilitare il ritorno di tutti i fondi rubati, pari a 8,44 milioni di dollari.
In un contesto anonimo, i messaggi on-chain possono rivelarsi uno strumento efficace per stabilire dialoghi iniziali e porre le basi per il successivo recupero dei fondi. Nel nostro articolo precedente “Messaggi on-chain nella guida di pronto soccorso per fondi rubati”, abbiamo dettagliatamente introdotto il metodo dei messaggi su Ethereum.
Anche la rete Bitcoin supporta i messaggi on-chain, ma i metodi di implementazione dei due sistemi sono leggermente diversi. Lo strumento principale per i messaggi on-chain di Bitcoin è l’istruzione OP_RETURN, che consente agli utenti di incorporare 80 byte di dati personalizzati nelle transazioni. Questi dati non verranno utilizzati dai nodi per la verifica delle transazioni e non influenzeranno lo stato dell’UTXO; servono esclusivamente a registrare informazioni e saranno completamente memorizzati nella blockchain.
Come utilizzare OP_RETURN per lasciare messaggi sulla blockchain
Fase 1: Codificare il contenuto del messaggio
Innanzitutto, convertire il testo che si desidera inviare nel formato esadecimale (HEX). L’istruzione OP_RETURN sulla rete Bitcoin accetta solo dati in formato HEX. Ad esempio, se si desidera lasciare un messaggio del tipo: “Questo è un test”, la conversione in HEX è: 54686973206973206120746573742e.
Questo processo può essere eseguito utilizzando uno strumento di conversione online o uno script Python:
text = "Hello, this is a test."
hex_text = text.encode("utf-8").hex()
print(hex_text)
Il contenuto del messaggio deve essere inferiore a 160 caratteri esadecimali, equivalenti a 80 byte. Se la lunghezza supera questo limite, si consiglia di semplificare il messaggio o di inviarlo in più parti.
Fase 2: Creare una transazione con OP_RETURN
Successivamente, è necessario utilizzare un wallet Bitcoin o uno strumento che supporti transazioni personalizzate per costruire una transazione con un output OP_RETURN. Prendendo come esempio Bitcoin Core, usare il comando:
bitcoin-cli createrawtransaction '[{"txid":"your_input_txid","vout":0}]' '[{"data":"54686973206973206120746573742e"}]'
La transazione costruita in questo modo non trasferirà effettivamente denaro, ma scriverà solo il messaggio sulla blockchain. Anche nell’app imToken, è possibile accedere all’interfaccia di trasferimento BTC attivando la “Modalità Avanzata”. Inserire le informazioni esadecimali nella casella di input “OP_RETURN” e cliccare su “Avanti” per completare la conferma della transazione. È fondamentale inserire la password necessaria per inviare con successo la transazione con le informazioni OP_RETURN, assicurandosi che l’importo di input sia uguale all’importo di output più le commissioni miner.
Fase 3: Trasmettere la transazione
La transazione firmata viene trasmessa attraverso la rete Bitcoin. Poiché le transazioni OP_RETURN non trasferiscono effettivamente fondi, è necessario includere delle commissioni di mining per garantirne l’elaborazione e attendere che i miner le includano in un blocco. Una volta confermata la transazione, il messaggio sarà memorizzato in modo permanente nella blockchain di Bitcoin.
Fase 4: Visualizzare il contenuto del messaggio
Dopo aver completato la transazione, si riceverà un TXID, che può essere visualizzato attraverso un block explorer. Di solito, il browser decodifica automaticamente i dati esadecimali OP_RETURN nuovamente in ASCII, ad esempio:
“Applicazione OP_RETURN”
Negli incidenti di sicurezza, alcuni attaccanti utilizzano OP_RETURN per lasciare messaggi sulla blockchain, esprimendo attivamente la loro intenzione di restituire fondi alla parte lesa, oppure il team del progetto e i white hat possono sfruttare questo metodo per contattare gli attaccanti e cercare di stabilire un dialogo.
Oltre ad essere utilizzato in scenari di negoziazione, OP_RETURN viene impiegato anche per operazioni di “marchiatura”. Ad esempio, Chainalysis ha rivelato che alla vigilia dell’esplosione del conflitto russo-ucraino nel 2022, un utente di Bitcoin non identificato ha utilizzato OP_RETURN per lasciare messaggi sulla blockchain, contrassegnando quasi 1.000 indirizzi sospettati di essere associati a dipartimenti di sicurezza russi. Questi messaggi, scritti in russo, indicano direttamente che tali indirizzi potrebbero essere coinvolti in attacchi informatici o spionaggio. Quando questo utente ha pubblicato questi avvisi, ha non solo lasciato un messaggio, ma ha anche bruciato una grande quantità di Bitcoin. A causa delle caratteristiche dell’output OP_RETURN, qualsiasi Bitcoin inviato a tali transazioni verrà bruciato e non potrà essere utilizzato. Secondo le statistiche, questo utente ha perso più di 300.000 dollari in Bitcoin in questa serie di operazioni.
Riepilogo
I messaggi on-chain, in particolare l’uso di OP_RETURN sulla rete Bitcoin, offrono un metodo di comunicazione anonimo, pubblico e resistente alle manomissioni, ampiamente utilizzato per il primo contatto e la trasmissione di informazioni per il recupero dei fondi. Tuttavia, è importante sottolineare che i messaggi on-chain possono anche essere sfruttati da attaccanti per indirizzare le vittime verso link malevoli o per eseguire operazioni rischiose (come l’inserimento della chiave privata).
Pertanto, è fondamentale rimanere vigili ed evitare di visualizzare e gestire informazioni sospette su dispositivi non affidabili. Quando ci si imbatte in un incidente di sicurezza, si raccomanda di contattare quanto prima un team di sicurezza professionale per assistervi nell’analisi e migliorare il tasso di successo del recupero dei fondi. Nel contempo, utenti e team di progetto dovrebbero continuare a rafforzare la loro consapevolezza sulla sicurezza per evitare di diventare bersagli di attacchi.