Attaccare uno Smart Contract
Come accennato nel capitolo precedente il codice eseguito dagli Smart Contract Bitcoin e' pubblico e quindi puo' essere analizzato ed eventualmente attaccato.

Setup
Se provenite dal precedente capitolo e non avete minato blocchi dopo aver inoltrato la transazione finale siete gia' pronti.
Altrimenti potete eseguire il seguente per ripristinare la situazione
Analisi forense :)
Accesso alla mempool
Qui sulla sinistra trovate due localhost bookmarks riguardo la mempool.
Bitcoin regtest mempool mostra un resoconto della mempool senza i dettagli delle singole transazioni.
Hansel get raw mempool mostra i dettagli delle singole transazioni.
Recuperiamo il transaction ID della transazione in mempool
Tramite il seguente comando siamo in grado di recuperare il primo transaction ID disponibile in mempool (arrivando dall'esercizio precedente abbiamo solo una transazione in mempool).
Recuperiamo lo ScriptSig associato alla transazione
Per poter accedere al codice sorgente (redeem script + parametri di input) dello Smart Contract bisogna prima ottenere lo ScriptSig!
Noterete che lo ScriptSig e' composto da due sequenze esadecimali separate da uno spazio. L'ultima sequenza e' sempre la versione serializzata del redeem script.
Recuperiamo il redeem script serializzato e deserializziamolo
Per attaccare uno Smart Contract abbiamo bisogno di capire come funziona e quindi di poter leggere la versione del redeem script che mostra i nomi delle opcodes altrimenti e' un po' dura :)

Attacco!
Osservando a fondo il redeem script deduciamo che l'unica verifica svolta e' l'OP_EQUAL finale.
Questo significa che conoscendo il parametro di input corretto possiamo costruire una nuova transazione che dirotti il pagamento.
Recupero dei parametri necessari per l'attacco
Recuperiamo la transaction ID dell'UTXO da attaccare
Generiamo l'indirizzo dell'hacker dove si vuole dirottare i fondi
Valutiamo quante fee dobbiamo impostare per attivare il Replace By Fee (RBF)
Con la release di Bitcoin Core 0.12 nel 2016 e' stato inserito il BIP-125 che consente di sostituire una transazione in mempool con una, che spende la stessa UTXO, le quali fee per i miner sono maggiori.
Per svolgere il nostro attacco dobbiamo quindi dedurre quante fee erano inizialmente previste dalla transazione che vogliamo attaccare.
Recuperiamo tutti i parametri di input
Costruiamo la transazione malevola
Possiamo utilizzare lo stesso script del capitolo precedente per creare la transazione dell'hacker!!
Inviamo la transazione!
L'ultimo passaggio che rimane da fare e' inviare la transazione e poi controllare che sia stata sostiuita in mempool.
Ottimo! Con il seguente comando possiamo verificare che la transazione attualmente in mempool e' diretta verso l'address del LOHACKER!
Last updated
Was this helpful?