Como salvei meus bitcoins após passar por pânico e insegurança ao manuseá-los na carteira MultiBit

Carteira vazia

Imaginando ter sido hackeado e furtado em bitcoins

No dia 10 de junho de 2017, eu passei por uma situação real de
pânico
, imaginando ter sido hackeado e furtado em bitcoins. O
problema começou quando tentei abrir minha carteira
desktop

no software MultiBit. Esse maldito software
estourou um erro na tela quando eu o abri. Isso aconteceu, de repente,
após eu já tê-lo colocado em execução no meu Macbook em momentos
anteriores. E esse fato, por si só, já me deixou preocupado e tenso.

Trabalhando cotidianamente com softwares, já passei por várias situações
em que eles param abruptamente mostrando uma tela para depuração do
problema. Sei também que programas defeituosos, e/ou infectados com
vírus, geralmente quebram com facilidade
. Em versões antigas do
Windows, em situações de quebra, aparece aquela famosa tela azul.
(E, ainda hoje, há situações em que a tela amedrontadora
reaparece
).
No macOS, vem uma tela pra depuração do programa. Obviamente, nenhum
usuário comum (que não seja um desenvolvedor muito experiente) saberia
como depurar um problema apresentado por uma tela como essa. No macOS,
entretanto, situações de erro como essas são bem menos comuns de
aparecerem que em outros sistemas operacionais.

O pior ainda estava por vir: ao reabrir o programa e inserir minha
senha para tentar abrir a carteira, a senha que eu estava utilizando
não funcionava mais
. Desse momento em diante, vieram pensamentos
desesperadores
(sempre precedidas por um palavrão que indicava minha
indignação):

  • Cace$%%! Um hacker invadiu meu computador e roubou meus
    bitcoins
    ."

  • Put#@#%%%! Pra que eu fui essa fazer merda de transfeir
    bitcoins
    de minhas carteiras de custódia para uma carteira
    desktop? Eu li em alguns lugares que uma carteira de custódia seria
    mais segura, mas fui enganado …!"

  • Mer#$%(! Como explicarei pra minha esposa que perdi toda uma
    grana que poderíamos ter utilizado pra viajar e/ou fazer outros
    investimentos!?"

Tentei me acalmar. Veio a minha cabeça que eu havia seguido todas as
regras mínimas de segurança
. Agora, eu deveria por em prática o
processo de recuperação da carteira
MultiBit
. Parti
pra execução desse processo. Mas, pra aumentar ainda mais o meu
pesadelo, o processo de recuperação não funcionava!

Agora, meu desespero entrava em nível hard! Nesse momento, minha
esposa passa ao meu lado e tenta me apressar para sairmos. Ela
precisaria estar em seu trabalho dentro de alguns instantes. E eu havia
me comprometido a acompanhá-la. Pensei: ok, no caminho vou esfriar
minha cabeça pra trilhar meus próximos passos
.

Na saída, e a espera pelo elevador: uma mulher que conhece bem o seu
marido nota, obviamente, que ele não está bem simplesmente observando
sua face. Então, ela pergunta: o que aconteceu? Eu, sem saber como
disfarçar meu terror, despejo: acho que um hacker invadiu meu notebook
e roubou alguns bitcoins
. Pronto … agora eu também colocava minha
esposa em pânico, revelando uma possível verdade.

Nesse dia, o bitcoin estava custando por volta de R$ 10.000. E, eu
disse que havia sido roubado em "alguns" bitcoins (não fracionados). Ela
então faz a segunda pergunta: "Tem certeza? Estamos falando de quanto?"
Eu respondo: "Algo em torno de milhares de reais. Mas, ainda, não estou
certo do que realmente ocorreu. Quando chegarmos ao teu trabalho
investigarei melhor. Pode ser simplesmente um erro do software e,
talvez, existe uma solução para o problema." Mesmo dizendo isso, eu já
me encontrava em pânico!

Partindo para a investigação

Como eu não sabia se meu computador havia sido realmente invadido, tomei
algumas providências quando o religuei.

A primeira delas foi não reconectar meu notebook, de imediato, a
Internet. Dessa forma, eu poderia ter a esperança de "não ter outras
informações transmitidas para a web".

A segunda providência foi localizar e fazer um backup dos arquivos
gerenciados pelo MultiBit. Fiz isso abrindo um prompt de linha de
comando e executando:

cd; find . -iname 'multibit*'

A saída do comando acima apresentou-me a localização do diretório
gerenciado pelo MultiBit. Nela, também saiu o nome do arquivo de log
gerado por esse software:

./Library/Application Support/MultiBitHD
./Library/Application Support/MultiBitHD/logs/multibit-hd.log

Fiz um backup de todo o diretório MultiBitHD. Em seguida, removi essa
aplicação do meu macOS. Renomeei o diretório de dados MultBitHD para
outro nome. Reconectei-me a Internet.

Comecei a ler o arquivo de log (multibit-hd.log). Para o aumento do
meu desespero, encontrei linhas dentro desse arquivo que pareciam
informar que um dispositivo de hardware havia se conectado ao MultiBit.
Achei muito estranho …

Após algumas horas perdidas na investigação lendo links apontados pelo
Google

e as issues abertas no GitHub do
MultiBit
, descobri a
thread mais relevante para o meu problema: Password does not unlock
wallet although 100% sure password is correct
#753
. Lendo-a
encontrei um comentário muito
relevante
,
apontando para um projeto
desenvolvido pela própria pessoa que o fez
(@ashatch). Resolvi testá-lo na
expectativa de obter a solução para o problema.

Aviso

Ainda ontem, 21/Jun/2017, estive procurando informações sobre quem
mais poderia ter passado pelo mesmo problema que eu. Descobri, no
steemit.com, a existência dos seguintes
artigos:

Recuperando-me do pânico

Como também desenvolvo aplicações em Java, da mesma forma que o autor do
wallet-recover, senti-me
seguro ao ler o seu código fonte. O MultiBit utiliza a especificação
BIP39
. A partir dessa
especificação é possível saber que endereços/chaves são geradas para uma
carteira em particular. Então, no processo de recuperação, o código do
wallet-recover faz uso dessa especificação.

Baixei seu código e fiz sua construção (realizada pelo Maven). Logo
após, executei-o:

java -jar target/recover-1.0.0-SNAPSHOT.jar words.txt --key 10 --privateKeys

Recebi a seguinte saída:

FOUND,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY,1616908
EMPTY,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY,0
FOUND,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY,97493188
EMPTY,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY,0
FOUND,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY,204750318
EMPTY,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY,0
EMPTY,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY,0
EMPTY,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY,0
EMPTY,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY,0
EMPTY,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY,0

Você pode observar que o programa recebe como input um arquivo contendo
uma lista de palavras (words.txt). Essa lista foi a que eu salvei,
obviamente, ao criar a carteira no MultiBit.

Importante

SEMPRE, SEEEEEMPREEE, siga os procedimentos de recuperação de uma
carteira e, armazene as informações necessárias num local seguro.
Dessa forma, você pode tentar, assim como eu, ter uma chance sucesso
para recuperar seus bitcoins em caso de desastres.

Como saída para a execução, conforme mostrado acima, são apresentados
quatro valores para cada endereço da carteira: O primeiro informa
FOUND ou EMPTY dependendo do endereço ter saldo ou não. O segundo é
próprio endereço (chave pública). O terceiro, apresentado apenas quando
o parâmetro --privateKeys é passado, mostra a chave privada do
endereço. O último campo é o saldo.

Nota

Obviamente, eu substitui os valores reais dos endereços públicos e
privados por XXXX e YYYY.

De posse dos endereços disponíveis (chaves públicas) com saldo na
carteira e, também, de suas chaves privadas, criei uma nova carteira de
custódia na Blockchain.

Importei os endereços que possuiam saldo para a carteira da Blockchain.
Isso pode ser realizado acessando o menu Settings/Addresses e a
operação + Import Address.

Finalmente, de posse da chave privada de cada endereço, também fiz
transferência dos saldos existentes nas contas importadas para o
endereço na carteira da Blockchain. Dessa forma, acumulei todos os
saldos dos endereços que tinha na carteira da MultiBit, num único
endereço da nova carteira da Blockchain.

Conclusão

Provavelmente, mesmo que eu dispusesse algum tempo para fazer uma
análise do código fonte do MultiBit, não voltaria a utilizá-lo. Da mesma
forma, eu não aconselharia ninguém a utilizar esse software! Pelo
contrário, eu diria: não use essa mer%##:P! A confiança das pessoas
no Bitcoin, e na Blockchain é a base para o sucesso de seu uso
.
Perceba que o problema que eu tive me impediu de acessar minha carteira.
Sem acessá-la, no melhor dos casos, esses bitcoins ficariam parados ali
na blockchain perdidos e sem uso, para sempre. Pior que isso seria se eu
realmente tivesse sido hackeado tendo bitcoins furtados.

Eu me considero um "usuário avançado" de bitcoins pois tenho uma boa
capacidade para, além de entender a tecnologia, compreender códigos
fontes de seus projetos. Em função disso, e pelos conhecimentos que
detenho na área de segurança da informação, "eu me arrisco" com o
Bitcoin. Mas, fico imaginando como um "usuário comum", sem esses
conhecimentos, resolveria os problemas que enfrentei.

Aprendi que:

  1. Você não deve partir para o uso de uma carteira desktop
    simplesmente pele fato de ter visto alguns vídeos divulgados no
    YouTube, falando bem dessa carteira
    .

  2. Para confiar numa carteira desktop é muito importante que você
    também faça sua própria pesquisa, APROFUNDADA, sobre ela
    .

  3. Se o software de carteira não for um software livre, de código
    aberto, você já deveria ter um pé atrás na sua utilização.
    Pois,
    nesse caso, você teria necessariamente que confiar num código que
    não vê e que não teria como analisar, para saber o que ele realmente
    faz. Dessa forma, em termos de confiança, utilizar uma carteira
    que você não tem o código fonte é como confiar no banco que você
    atualmente utiliza mas, com a desvantagem de que, se você perder
    seus bitcoins, não terá para quem reclamar?

  4. Mesmo tendo grande precaução com segurança ao utilizar meu notebook,
    eu ainda fiquei, nesse episódio, com a preocupação de que ele
    poderia ter sido invadido. Isso me fez voltar a racionar que,
    talvez, as carteiras de custódia possam ser bem mais seguras do que
    as carteiras desktop. Mas, pensando assim, caio novamente na
    questão, tradicional, de ter que confiar num terceiro para "guardar
    meu dinheiro".

As melhores soluções para guardar bitcoins talvez sejam armazená-los em
carteiras de papel ou de hardware. Mas isso é assunto para próximos
posts. Sendo assim, voltarei para falar sobre isso, em breve.

H2
H3
H4
3 columns
2 columns
1 column
Join the conversation now