- 仮想通貨ウォレットElectrumを狙うDDoS攻撃とは
- Electrumウォレットのソフトウェアの脆弱性を突いた不正なメッセージ表示により250BTC以上が盗まれたハッキング事例。その巧妙な仕組みや、それへの対策など、詳細を解説していく。
攻撃を受けたElectrumウォレットの弱点
Electrumウォレットのソフトウェアには脆弱性があり、攻撃者は好きなメッセージを不正にユーザーに見せることができるようになっていた。今回、攻撃者によってこの脆弱性が悪用され、ユーザーのウォレットが侵害されてしまった。250BTC以上が盗まれているとされるインシデントについて、順を追って説明していく。
攻撃の概要
攻撃の全体については、こちらの記事を参照されたい。攻撃者は、Electrumウォレットの脆弱性を突き、ユーザーに対して以下のような偽のエラーメッセージを見せた。これはある意味ではフィッシング攻撃と言えるが、ユーザーにとっては非常に気づきにくいものだ。
「Electrum-wallet」というGithubプロジェクトは偽のものであり、ここからダウンロードをしたユーザーは、悪意ある偽のソフトウェアをインストールすることになってしまう。
この攻撃は2018年12月から発生し、2月時点で開発者が対策を講じている。また、3月には追加で、開発者が脆弱性を突くという手法によって悪意あるサーバーを接続させない試みがとられた。
なお、4月時点でブラックリストに載せられたIPアドレスは117800以上におよぶ。そのように対策がとられる一方で、攻撃者は引き続きElectrumを狙っており、さらにDDoSと組み合わせる手法もとっている。
開発者との駆け引き
Electrumウォレットの問題の一端は、それ自身がブロックチェーンを持たない「ライトウォレット」として動作することに起因する。
ライトウォレットは、ブロックチェーンの情報を持つサーバーと通信するため、通信先が汚染されていると影響を受けやすくなる。つまり、接続先サーバーが悪意ある攻撃者なのだ。これはシビル攻撃として知られており、malwarebytesの別の記事でも取り上げている。
Electrumでは誰でもサーバーを立ち上げることができるので、この攻撃に関する注意喚起は、2018年12月26日から公式でもGithubページ経由でアナウンスされている。
しかし、攻撃者も様々な手を考える。対策が講じられつつあると分かると、自分のサーバーをネットワークに加えるだけでなく、正当なサーバーに対してボットネットを使ってDDoS攻撃を行い、通信しにくい状況を作り始めた。
そうすることで、ユーザーが使うライトウォレットが悪意あるサーバーを選びやすくしているのだと考えられる。また、悪意あるサーバーにつながってしまった場合、Electrumウォレットのソフトウェアが古いと、先に紹介したエラーメッセージが表示されてしまうこととなる。
もちろん、接続しただけではユーザーの秘密鍵を盗み出すことはできないのだが、偽のウォレットをインストールさせてユーザーのコンピュータに侵入できれば話は別だ。ビットコインを転送する仕組みが動作し、あっという間に盗まれてしまうだろう。
ライトウォレットの性質
ここまででライトウォレットについて簡単に説明したが、もう一歩踏み込んで説明していく。まず、そもそも、なぜライトウォレットというものが必要なのか。
そもそもビットコインでは、フルノードのようにすべてのブロックチェーンを保持すると数百ギガバイトのサイズになる。モバイルや一般のパソコンで処理できるサイズではない。
ここで登場するのが、ビットコインのホワイトペーパーの8章でも触れられている「Simplified Payment Verification (SPV) 」と呼ばれる仕組みだ。多少の誤解を恐れずに言えば、SPVでは全データを同期することなく、Markle Treeと呼ばれるハッシュ値を用いたツリー構造を利用してトランザクションを実現している。
ただし、こういった実装は簡単ではないというのが筆者の考えだ。一般的かつ古典的なITシステムに習熟しているエンジニアであれば、よりわかりやすい方式がすぐに思いつく。いわゆる「サーバー・クライアントモデル」だ。
サーバー・クライアントモデルは、簡単に言えばたくさんのサーバーを用意し、クライアント(ライトウォレット)からリクエストを送ると、重い処理をサーバー側で肩代わりしてくれるというものだ。これは古典的なモデルだが、Electrumネットワーク上ではだれでもサーバーを立てることができるという点から、今回の問題が起きてしまった。
Electrumのピア数などは、モニタリングソフトウェアの「MUNIN」で監視されているので、興味がある方はそちらも参照されたい。
バックグラウンドの分析
DDoS攻撃を引き起こしている「ボットネット」とは、古いコンピュータや家庭用ルータといったマルウェアに感染した機器群のことだ。それらの機器に指令を送る元のC2サーバーが存在していて、攻撃者はC2に命令を置き、ボットネットは命令を見つけるとそれに従う。
ボットネットの大半については、malwarebytesの分析によれば、インドを含めたアジア諸国、ブラジル、ペルーといった地域に存在するとのことだ。偽のElectrumウォレットをインストールしてしまい感染した機器がビットコインを盗まれ、DDoS攻撃を行い、他のユーザーへの攻撃に意図せず加担してしまっているものとみられる。
セキュリティ研究者の解析によって、「ElectrumDoSMiner」と名付けられたマルウェアに関しては、もちろん通信先なども分析されている。
しかし、こういった攻撃では通信先は一つではない上、防弾ホスティングと呼ばれる匿名性の高いサーバー会社であったり、あるいは正当な会社の資産に侵入して相乗りしている場合もあるので、停止、いわゆるテイクダウンは簡単ではないだろう。
どうやって攻撃したのか
攻撃者がDDoSと悪意あるサーバーを組み合わせているが、今回はインストールされてしまったマルウェアにフォーカスしてみる。執筆時点でテイクダウンされてしまい404になっているが、当然ながら本物と見違える見た目だ。
Malwarebytesの分析によれば、上記リポジトリからダウンロードされたマルウェアには少なくとも2種類が存在したそうだ。もちろん 2018年12月以降に観測されたのが少なくとも2つというだけなので、確認できたのがそれだけだったということだ。しかし、それぞれ違う攻撃者によるものではないか、という考察も加えられているので、少し見ていこう。
2つのマルウェア
1種類目のマルウェアでは、ウォレットの秘密鍵やシードといったデータを漏洩させるコードが含まれていた。コードを分析すると、Electrumには含まれない「initmodules.py」というファイルが追加されており、かつコードの実装自体が難読化、つまり隠されていた。
隠すことは、ひとつにはマルウェアであることを分かりにくくするという目的があるが、今回はウォレットアドレスや転送先のアドレスをも隠す目的があったとみられる。ユーザーの利用状況によって転送先のアドレスが変わる仕組みになっていたが、以下のようなウォレットアドレスへの転送が実装されていたそうだ。
- 14MVEf1X4Qmrpxx6oASqzYzJQZUwwG7Fb5
- bc1q9h36cyfnqcxjeuw629kwmnp5a7k5pky8l2kzww
- 1rTt8GePHv8LceXnujWqerUd81U29m857
- 3CrC4UitJqNqdkXY5XbJfCaGnbxHkKNqzL
- 1FmxAHft8trWjhRNvDsbjD8JNoSzDX8pfD
また、通信先は「31.31.196.86」であり、これはロシアにあるホスティング会社Reg.ruのものだった。加えて、ダウンロードしたWindowsインストーラはデジタル署名がされており、興味深いことに、デジタル署名は他のマルウェアと共通で使いまわされた形跡がみつかった。
2種類目のマルウェアは、アクセス先としてGithubではなく、独自のウェブサイトを用意していた。ただし、URLや見た目を似せたもの(electrum.orgのところ、electrumsafeのような文字列)を使った。
さらに追加の措置として、ソフトウェアの自動更新を無効化したり、プロンプトと呼ばれる操作の確認画面を削除したり、上書きをするためのRBF(Replace-By-Fee)トランザクションを無効化したりした。つまり、ビットコインだけでなく、Eletcrumソフトウェアについても十分知識を持っていた、ということになる。
「BIP125」で提案されたRBFトランザクションが有効化されている場合は、ユーザーが攻撃に気づいたとき、より高い手数料でトランザクションを発行することにより、古いトランザクションを上書きすることができる。
これにより、攻撃されて間もないときに気づいたユーザーは、資金を守ることができる場合がある。しかし、マルウェアではこれを無効化していたのだ。
こちらについても、ウォレットアドレスを記載しておこう。
- bc1qhsrl6ywvwx44zycz2tylpexza4xvtqkv6d903q
- bc1q92md7868uun8vplp9te0vaecmxyc5rrphdyvxg
- bc1q7hsnpd794pap2hd3htn8hszdfk5hzgsj5md9lz
- bc1ql0p2lrnnxkxnw52phyq8tjr7elsqtnncad6mfv
- bc1qyjkcthq9whn3e8h9dd26gjr9kd8pxmqdgvajwv
- bc1qvr93mxj5ep58wlchdducthe89hcmk3a4uqpw3c
資金のゆくえ
盗まれた資金は、「smurfing」として知られるロンダリング手法を用いて、3.5BTCから1.9BTC程度に分割され、転送された。
1.9BTCは、金額としては7000ドル前後の価値になるため、トラッキングされにくいという特徴がある。これがsmurfingで、ユーロポールなどもその手口には注目している。
これらの資金は最終的に片方はBitfinex、もう片方はBinanceへと流れたと観測されている。その他、Continvest やBitcoin Doublerといった疑わしいウェブサイト(ビットコインを2倍にするとうたう)にも資金が流れたことが確認されているそうだ。
コインチェックから大量のNEMが流出した事例と同様に、攻撃者がロンダリングを企図して立ち上げたウェブサイトという可能性はありそうだ。
まとめ
Electrumウォレットへの攻撃について、ユーザーが気づくことは難しい。それなので、複数の情報源から確認を行うことを忘れず、公式のSNSなどにアンテナを張ることが大切だろう。
また、今回の2種類の攻撃者は、いずれも数百以上のビットコインを得ており、攻撃の巧妙さが伺えた。もちろん開発側も対策を怠っているわけではないが、完全なセキュリティというものは存在しないので、攻撃者があきらめるまでイタチごっこは続くだろう。加えて、マルウェア側でLinux、MacOS、Windows、Androidといった各種プラットフォームにも対応していたので、何か特別なハードウェアを使っていれば回避できた、という事例でもない。少しでいいので攻撃の手口を学び、今後に役立てていただければ幸いだ。
坪 和樹
Twitter:https://twitter.com/TSB_KZK
Linkedin:https://www.linkedin.com/in/tsubo/
プロフィール:AWSで働くエンジニア、アイルランド在住。MtGoxやThe DAOでは被害を受けたが、ブロックチェーンのセキュリティに興味を持ち続けている。セキュリティカンファレンスでの講演、OWASP Japanの運営協力やMini Hardeningといったイベント立ち上げなど、コミュニティ活動も実績あり。