「Mirai」ソースコード徹底解剖−その仕組みと対策を探る大規模DDoS攻撃を引き起こしたIoTボットネット(1/4 ページ)

2016年9月以降に発生した複数の大規模なDDoS攻撃。本稿ではその攻撃に用いられたとされるマルウェア「Mirai」のソースコードを読み解き、対策法を紹介します。

» 2016年11月08日 05時00分 公開

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

Miraiボットネットとは

 Miraiは、2016年9月13日夜、米国のセキュリティジャーナリストBrian Krebs氏のWebサイト「Krebs on Security」に対して行われた大規模なDDoS攻撃に使用されたとして話題になったボットネットです(関連記事)。Miraiは主にWebカメラやルーター、デジタルビデオレコーダーなどのIoTデバイスを踏み台としてDDoS攻撃を仕掛けます。

参考:セキュリティ用語事典:DDoS攻撃

 攻撃を受けた後に投稿されたKrebs氏のブログ記事によれば、同サイトを保護していたAkamaiが、ピーク時にはそれまでに経験した最大規模の攻撃の2倍近いトラフィックを観測したそうです。

 また、2016年10月21日にTwitterやNetflixなどが利用するDNSサービスへ行われたDDoS攻撃でも、Miraiボットネットが利用されていたのではないかと推定されています(関連記事)。

 そしてKrebs氏のサイトへの攻撃後、ハッカーフォーラム上でMiraiのソースコードが公開されたことも大きな話題となりました。このソースコードは後にGitHub上に転載され、誰でも中身を見ることができるようになっています(注1)。

注1

GitHub上へコードが転載されたリポジトリは複数ありますが、今回は下記のリポジトリを参照しました。

https://github.com/jgamblin/Mirai-Source-Code

 ソースコードが公開された結果、Miraiボットネットはパスワードを工場出荷時のままにしてあるような脆弱(ぜいじゃく)なIoTデバイスを狙い、一般的な辞書攻撃を行って感染を広げていくものだということが分かりました。前述の攻撃時にも、何十万台ものデバイスからボットネットが構成されていたといわれています。

 近年さまざまなIoTデバイスが家庭にも普及し、脆弱性のある状態のデバイスが増加したことがこのような大規模DDoS攻撃につながった可能性があります。また通常、これらのIoTデバイスが採用しているアーキテクチャは、個人向けのPCなどとは違い多種多様なのですが、MiraiはARM、ARM7、MIPS、PowerPC、SH4、SPARC、x86とさまざまなアーキテクチャに対応しており、そのことも大規模な感染拡大に一役買ったと考えられます。

 本稿では、現在GitHub上に公開されているコードを基に、Miraiボットネットの動作を解説し、家庭や企業のデバイスがこのようなボットネットの一部にされてしまわないための自衛策を再考します。

Miraiボットネットの構成

 公開されたMiraiボットネットのソースコードは、大まかに分けると以下の3つの部分で構成されています。

  1. 攻撃者が操作するC&C(Command and Control)サーバ機能
  2. C&Cサーバから操作されるボット機能
  3. ボットプログラムを頒布するためのダウンローダー機能

 C&Cサーバ部分はGo言語で書かれており、ボットやダウンローダー部分、その他の暗号化ツールなどは主にC言語で書かれています。公開されているリポジトリのディレクトリ構成と照らし合わせると、Miraiの構成は以下のようになります(リスト1)。

├── ForumPost.md // ハッカーフォーラムでソースコードが公開されたときの投稿テキスト
├── ForumPost.txt 
├── LICENSE.md
├── README.md
├── dlr // ボットの頒布にwgetやtftpが使えないときに利用するダウンローダー
│  ├── build.sh
│  ├── main.c
│  └── release
├── loader // 3.ダウンローダー
│  ├── bins
│  ├── build.debug.sh
│  ├── build.sh
│  └── src
├── mirai //mirai本体
│  ├── bot // 2.ボット部分のコードがあるディレクトリ
│  ├── build.sh
│  ├── cnc // 1.C&Cサーバ部分のコードがあるディレクトリ
│  ├── prompt.txt
│  └── tools // 暗号化ツールなど
└── scripts // 設定に必要なコマンドやスクリプトなど
    ├── cross-compile.sh
    ├── db.sql
    └── images
リスト1 ディレクトリ構成

 Miraiボットネットは、攻撃者が1.のC&Cサーバを通じて2.のボットにコマンドを送り、大量のボットが対象を攻撃するC&C中心型ボットネットです。また、並行してボットは感染できるデバイスがないかをスキャンして、見つけたデバイスの情報をレポートサーバに送り、3.のダウンローダーがボットプログラムを送り込むという動きをしています(図1)。

図1.Miraiボットネットの動き 図1.Miraiボットネットの動き

 そこで、まずはC&CサーバのコードからMiraiの動きを読み解いていきます。

       1|2|3|4 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。