LNがBotNetとして使われるかもしれない話
お久しぶりです.今回,3記事目となります.
普段は電気システムや情報通信システムなどを学んでいる大学生の宮本です.
今回は,Lightning Network(LN)が秘密裏に効率的な通信を行う新世代のBotNetになるかもしれないという論文を読んだので,それについて書こうと思います.
もしかしたら,誤訳など解釈がずれているところがあるかもしれないので,ぜひ論文を読んでみてください.
今回読んだ論文
D-LNBot: A Scalable, Cost-Free and CovertHybrid Botnet on Bitcoin’s Lightning Network
簡単な概要
論文では,LN上で新世代のボットネットを作成できると提案されています.
まずボットネットとは何かというと,攻撃者の制御下にある悪意あるソフトウェアに感染したコンピューターデバイスのネットワークのことです.コマンド&コントロール(C&C)により,DoS攻撃に用いられたり個人情報の盗難などに使用されています.
ボットネットは長期的な運用を前提としているため,安全なインフラとサーバーの隠蔽が重要な課題となっています.
すでに,Bitcoinネットワークをボットネットとして活用しようとする試みは行われていたようです.しかし,ブロックチェーン上にBitcoinアドレスなど記録されるため追跡が可能であるためボットネットには向いていないとされています.
https://link.springer.com/chapter/10.1007/978-3-662-48051-9_3
https://ieeexplore.ieee.org/abstract/document/8726613
しかし,LNではブロックチェーンには記録されないオフチェーンの仕組みを持っているため,ボットネットの理想的なC&Cのインフラとして悪用できると今回の論文では指摘しています.
理由は2つ.
1つ目の理由は,オフチェーンのため匿名性が高くボットマスターはC&Cサーバーと密かに通信できる点.
2つ目は,監視者はLN上の通信をすべて検閲することができないため,ボットネットの規模を列挙することができない点.
また,今までボットネットと比べてLN上のボットネットの何がすごいのかというと,匿名性の高さやボットマスターとボットとの通信速度が速いというところです.
以下で,LNのどのような特性を活かしてボットネットを作成していくのかやアーキテクチャなどについて説明したいと思います.
技術の手法などの詳しい話
最初にLNBotがどのようなアーキテクチャについてですが,2層ハイブリッド型のボットネットとなっています.
そもそも,LNは新興決済ネットワークで規模は約3万台とされています.これは大規模なボットネットには向かないそうです.そこで,LNをインフラとして利用し,それぞれが独自のボットネットを実行できるC&Cサーバーのネットワークを保持すればいいということになり,2層ハイブリッド型ということになっています.
具体的に論文で紹介してあった,3つのモデルを例に説明していきたいと思います.
①LNBot
特徴
・1対多のアーキテクチャ
・LN上で送信されるコマンドを支払いにエンコードし送信する
・コマンドを通じてボットを中継して,被害者のあらゆるマシンに攻撃を仕掛ける
・送金した資金を回収する仕組みを作れる
2層構造とは上の図のような感じです.LNをインフラとして使い,ボットとなったサーバーを中継して他のデバイスをボットにしようという構造です.
エンコードはASCIIエンコーディングとハフマンエンコーディングが検証で使われています.検証結果については後にまとめます.
具体的な攻撃者からのアルゴリズムは,
1, 対象がオンラインであるか確認します.オンラインでなければ,後回しにします.
2, 最初の支払いとして5satoshi送信します.
送信が成功した場合,1文字づつコマンドを送信します.
送信が失敗した場合,後回しにします.
3, コマンドが送信し終わったら,最後に6satoshiを送信し終了です.
途中で失敗した場合は,後回しにされます.
最初と最後に5satoshiと6satoshiを送信するのは,始まりの合図と終わりの合図ということみたいです.
最後に送金した資金の回収する方法についてですが,
最初にコレクタと呼ばれるプライベートなLNのノードを準備します.
次にコレクターのLN公開鍵に加えてルーティングのヒントとなるようなことをあらかじめC&Cサーバーに伝えておきます.
最後にC&Cサーバーは,コマンドの伝達によってボットマスターから受け取った資金がいっぱいになると,チャネル内の資金をコレクターに送る仕組みをプログラムしておくことで,コレクターに資金を蓄積することができます.
②iLNBot
特徴
・LNBotとの相違点は,コマンドの送信方法を支払いにデータを添付して送信する点.
これは最近のLNの開発によって,支払いに任意のデータを添付することが容易になったことを利用した方法です.この機能を実装するためのプロトコルが2019年に開発されました.
その後,このプロトコルはNoise Pluginを通じてc-lightningに組み込まれました.
これにより,送信コストを98%削減し,またコマンド送信遅延も99%削減できたと書いてあります.
③D-LNBot
特徴
・LNBotもiLNBotもボットマスターとC&Cサーバーは中央集権的だったのに対して,攻撃者からのコマンドがC&Cサーバー同士伝達するように改良したもの.
どうやって可能にするかというと,ネットワークに参加した新しいC&Cサーバーが,以前に参加したC&Cサーバーを発見することができたり,またその逆ができることで実現するみたいです.
今回の記事ではD-LNBotについては,詳しく書いていません.
アルゴリズムとか検証とかは論文に記載してあるので,気になった方は読んでみてください.
検証&結果
LNBotの実装が実現可能であることを,それぞれの概念実証を行うことで証明しています.
LNBotでは,Lightning Labsのlnd(v-0.9.0-beta)をフルLNノードに使用し,概念実証にはBitcoin Testnetを使用しています.C&Cサーバーのセットアップ手順は,こちらのGitHubにまとめてあります.
検証としてやったことは100台のC&Cサーバーを作成し,コマンドの伝達特性を評価しています.
送信したコマンドは,以下のSYNフラッディング攻撃コマンドを送信しています.sudo hping3 -i u1 -S -p 80 -c 10 198.168.1.1
コストに関して
上の表が結果です.今回,参考にさせていただいてる論文から引用しています.
この表は,支払い回数と各支払いで送信されたsatoshiの合計を表したものです.どちらの場合も,最後には払い戻されるのでここではチャネルの寿命がこれらのコストと関係しています.
明らかですが,ハフマンエンコーディングの方がASCIIエンコーディングより費用が安いという結果になっています.
またここでルーティングの手数料を考慮しても,ハフマンエンコーディングの方がASCIIエンコーディングよりも13分の1であるというふうに結論が出ています.
伝達時間に関して
コマンドの伝達時間は,支払い回数と支払いの平均伝達時間を掛け合わせることで算出しています.平均伝達時間に関しては,90件の鍵送信支払いをランダムで行い,支払いが目的地まで到達する時間を測りそれの平均を取っています.
結果は,支払いは平均7秒で宛先に到達し,最大遅延は10秒を超えることはなかったようです.
そのため,ハフマンエンコーディングで送信した場合は7×108=756秒かかり,一方のASCIIエンコーディングでは7×44=308秒であることになります.
今回の記事ではiLNBotやD-LNBotについては割愛してます.今回読んでいる論文には,ちゃんとこの2つのモデルも検証が行われています.
まとめ&感想
肝心な対策やボットネットマスターを探す手段などは,今回割愛させてもらいます.もしかしたら,後編記事を作成しその中に書くかもしれません.
インターンでLNのノードを立ち上げたのはいいものの,立ち上げただけで放置しているので何かしらしたいですね.
以上になります.
ここまで読んでいただきありがとうございました!!