MR. ROBOTの技術的内容を解説する(S1E1)

というのを始めてみたいと思う。

MR. ROBOTは和洋問わずドラマは一切見ない私がハマった唯一のドラマ。日本ではAmazon primeでのみ独占配信されており、海外版Blu-rayは入手可能なものの、日本語字幕や吹き替えが入ったBlu-rayやDVDは発売されないもよう。

MR. ROBOTはサイバーセキュリティとサイコスリラーを合わせたようなストーリー。サイバーセキュリティもサイコスリラーも好きな私にとってはとてもおもしろい。出てくる登場人物はみんなどこか常識はずれで、まともな人間がほとんど居ない。

かなり面白いドラマだと思うのだが、日本で話題にならないのはやはりAmazon primeでしか視聴出来ないからだと思われる。Amazon primeを使っている人はぜひ見てほしい。

さて、本題。

で、度々ドラマの中で主人公が端末の中でコマンドを打つシーンがあるのだが、一般の視聴者は何をやっているのかほとんどわからないのでは、と思った。なので、多少は知識がある私が解説してみる。ちなみに、私自身はWebアプリケーション開発者なのでサイバーセキュリティについて専門の知識があるわけでもない。だから時々的はずれなことを言っているかもしれないので、そこはご容赦を。

また、当然ネタバレを多く含むのでまだ見ていない人は注意してほしい。

Season 1 Epsode 1 eps1.0_hellofriend.mov - 「やあ、君」

MR.ROBOTのタイトルはすべてムービーファイルのファイル名となっている。このあたりはPCユーザーであれば馴染みも深いだろう。一応解説すると、1.0とhelloの間にアンダースコア(_)をスペースの代わりに使うのはよく見るやり方だ。なぜこのようにするかというと、特にLinuxなどCUI(コマンドを打ってPCを操作するインタフェース)をよく使うユーザーだとスペースはコマンドを指定するための特別な意味を持つので、ファイル名にスペースを付与すると色々都合がわるい。だから、スペースの代わりにアンダースコアを使うやり方がよく用いられる。

冒頭はカフェのオーナーの犯罪を暴露するところから始まる。主人公のエリオットは「ここのWifiが高速なのはありがたいが、逆に引っかかった」と言っている。そして、「ハッキングしてみたら、Torネットワークで秘匿された児童ポルノを発見した」と。

Tor(トーア)というのは通信を秘匿するためのソフトウェア。数年前、WinnyやShareといったP2Pファイル交換ソフトが問題としてメディアにも多く取り上げられたが、あれと同じP2P(ピア・ツー・ピア)によるデータ通信を行うソフトウェアだ。

通常、我々がスマートフォンやPCを用いてインターネットにアクセスする場合、IPアドレスを通信相手に公開する必要がある。データ通信は手紙をやり取りするのとおなじように、差出人住所が書かれていないと相手方は返事を送れない。だから、P2Pネットワークでは手紙を何度も何度も伝言ゲームのように多数のPCを経由して転送し、最終的に目的のコンピュータまで届くような構成をとる。すると、手紙を受け取ったが差出人を知るためには、数珠つなぎになったすべてのコンピュータに対して「このメッセージの差出人はだれか」と聞いて回らないといけない。各コンピュータはいちいち手紙のやりとりを記録指定は居ないし、外部からの問い合わせに応じて自動的に返答するような仕組みも実装されていない。したがって、通信相手の特定は非常に困難になり、匿名性が保たれる。

Torは通信の秘匿のほか、インターネットサービスをTorの閉じたネットワーク内でのみ公開するという機能も有しており、今回はこの機能を使ったのだろう。ちなみに、これが同じように現実に犯罪で使用された例もある。

しかしエリオットは「オニオンルーティングプロトコルを信用しすぎだ。Exit node(出口ノード)が通信をコントロールする」と述べている。オニオンルーティングというのはTorの内部で使われている通信の言語(プロトコル)だが、結局はTor外に接続するときは通常の通信として振る舞うひつようがあり、そのノードがすべての通信を掌握する。そのことを言っているのだろう。そして、エリオットは出口ノードを抑え(おそらくは自らのPCを出口ノードとして)通信内容から児童ポルノ、つまり動画や写真データを見つけたのだろう。

続いてはクリスタとの会話シーン。

エリオットはクリスタのSNS(おそらくFacebook?字幕にはないがセリフではそんなことを言っている)やWebmail(Gmail?)のアカウントをハッキングして個人情報を盗み見ている。一瞬、端末に多数のパスワードを使って総当りで認証の突破を試みているような状態が映しだされる。総当りでパスワードを入力してみる方法はブルートフォースアタックと呼ばれる。今回は、好きなアーティストや生年月日の情報を用いたような示唆があるので、辞書を使って組み合わせで生成したパスワードを使用したアタックしたのだろう。

しかしながら、普通の常識的なWebサービスであれば、多くても10回もアクセスしたら不審な攻撃だと感づいてアカウントをブロックするような措置が取られるため、現実的にはもうちょっと別のやり方が必要だと思われる。

次はコルビーとタイレルがAllSafeを訪れるシーン。エリオットはコルビーの持つ携帯(BlackBerry)を見て「CTO(最高技術責任者)の携帯がBlackBerryとはね」と馬鹿にしている。これは…まあ解説不要かもしれない。一応説明するとスマートフォンが流行る前は高機能なモバイル端末として人気だったものだ。もちろん、技術に強い人は今日にBlackBerryなど使わない。

また、タイレルがエリオットのPCを見て「Gnome(グノーム)か。僕はKDEを使っている」と言っている。Gnome、KDEというのはLinuxとデスクトップ環境のことで、ユーザーインタフェースや各種アプリがセットになったものを指している。それぞれ、全く違うUIを持ち、Linuxではそれぞれを自由に切り替えることができる。これを知らない人の目の前でやってみせると、「まるでOSが一瞬で変わったようだ」と大体驚かれる。ちなみに私はUnityという環境を使っている。技術者ならば、皆それぞれにこだわりがあると思うが、結局タイレルの言うように「慣れ」の問題でどの環境を使おうとやれることに大差はない。

続いてE Corpが攻撃を受けるシーン。DDos攻撃だという。DDos攻撃とは大量の通信をターゲットのサーバーに送りつけて、目的のサーバーやその周辺にあるネットワーク設備の処理能力をパンクまで追い込むという攻撃の一つだ。コンピューターに通信して何か情報を抜き取るようなものではなくて、嫌がらせに近い。

外部の複数のコンピュータから一斉に通信を行う方法としては例えばDNSというサービスを使ったものが知られる。DNSはドメイン名(例えば、yahoo.co.jpなど)からIPアドレスを答えてくれるサービスだ。コンピュータが通信で解釈できるのはIPアドレスのみだが、こいつは数字の羅列なので人間が覚えるのは難しい。そこで、IPアドレスに対して人間が覚えやすいアルファベットで構成されたドメイン名を付け、相互に変換を行うのがDNSの仕組みである。

ここで、先ほどインターネットの通信は手紙のように差出人と送り先住所が書かれるものだと説明した。ここで、差出人の住所をターゲットのサーバーに書き換え、世の中にごまんと存在するDNSサーバーに送りつけたら、大量の返信メッセージが攻撃先のサーバーに届くことになる。と、まあ簡単に言うとこんなテクニックを使って攻撃を行う。その他にもやり方はいくつも存在する。

エリオットがAllSafeに到着すると、「Access Denied(アクセス拒否)」というメッセージが映しだされる。DDoS攻撃によってネットワークがパンクしている証拠だ。ちなみに、攻撃を受けているのはE CorpのはずなのになぜAll Safeで対処を行うのかというと、ふつう、サーバーは企業の所在地とは関係ない場所に設置されるからである。自然災害を受けてコンピュータがダウンするリスクを考えて、多くの企業は治安が良くて地震や風災が発生しにくいような地域にサーバを設置する。

というか、もう少し正確に言うと、安全な場所にコンピュータ(サーバ)を設置してそれを企業に貸し出すようなサービスを行っている業者が世の中にはたくさんあり、多くの企業はそのサーバを借りて自社のサービスを運用している。今回の例では、そのデータセンター(サーバが設置されている物理的な場所)はダラスにあるという。エリオットたちはAllSafeからインターネットを経由してダラスにあるサーバーを操作しているということだ。

エリオットはロイドに「DNSの再起動はしたか」と問う。ロイドは再起動したがまともに攻撃を受けているのでサービスが立ち上がらないという。ここはちょっと状況が良くわからない。攻撃者がE Corpの所有するDNSサーバーにアタックしているということだろうか?しかしDNSサーバが一つダウンしたところで大した影響があるとは思えず、ちょっと腑に落ちない。

エリオットは自分の端末からサーバーにログインを試みるが、「Access denied」とやはり表示されてしまう。ネットワーク帯域が飽和しているのだろう。ちなみにここで画面に表示されるIPアドレスは「410.145.110.22」といったもので、現実には存在しないアドレスた。IPアドレスのピリオドで区切られた各数値(オクテットと呼ぶ)は0〜255までしか取らないし、実際にはもうすこし複雑な規則があって取りうる値にはいくつかの制限がある。

ちなみに、サーバにアクセスする場合はふつうエリオットが使っているような端末(キーボードからコマンドを入力してテキストの結果を受け取る黒い画面)を使うのが一般的だ。マウスを使ってグラフィカルなウィンドウを操作するようなエンジニアはほとんど居ない。

さらに調査をすすめ、エリオットは攻撃者がネットワークに侵入していると判断する。この時に画面に表示されているのは実行中のプロセス(プログラム)のリストと実行中のユーザー名だ。この中に見慣れないプロセスがあったから、攻撃者が実行した何かのプログラムだと思ったのかもしれない。よく見ると、rootユーザーがterminalというプログラムを実行している。rootというのはコンピュータのすべての操作を行う権限を持つ特殊なユーザーだ。terminalはエリオットが操作しているような、コマンドを叩いて結果を得るインタフェースのことである。近年のシステムでは、rootユーザーでterminalを実行することはありえない。常にすべての操作を行う権限を持ったユーザーで操作することは、第三者がそれを奪取したときにシステム全体が危機に晒されるし、そうでなくともユーザーの誤操作でシステムを壊してしまうこともある。だから、必要なときだけrootの権限を発揮するという使い方が普通だ。

だから、rootなTerminalが存在しているということは何らかの不正な操作を行って通常の権限を昇格させてコンピュータを操作している…のかもしれない。もしくは、私の推測が勘違いでrootなTerminalを操作しているのはエリオット自身という可能性もある。

続いて登場したギデオンは「あらゆる方法を試しプロレクシックにでも連絡しろ」と言う。プロレクシックというのはアメリカのサイバーセキュリティを扱う企業で、現在はAkamaiの傘下となっている。正直、私にはそこまで馴染みのない名前だ。

ギデオンに状況を問われたエリオットはただのDDoS攻撃ではなくてルートキットが仕掛けられているという。ルートキットというのはコンピュータに侵入した攻撃者が好き勝手やらかすためのツール一式のこと。これは、侵入していることを調べるためのシステムツールを書き換えてあたかも自分が存在しないように見せかけるため、ルートキットが存在することを知ること自体が困難だ。エリオットはすぐにルートキットが仕掛けられていると判断できたことからも、高いスキルを持ったエンジニアであるということが伺える。

続いてエリオットは再起動するたびにウイルスがばらまかれていると突き止める。この結論に至った理由は見ていても不明。続いて、システムをオフラインにして手動で駆除するしか無いという。実際、攻撃を受ける受けないにかかわらずこういうことはよくある。最近はリモート(遠隔地)からのコンピュータの操作もかなりのことができるような仕組みが整えられているが、やっぱり実物の機械が目の前にないと出来ない作業というのは出てくる。今回もそのパターンで、システムをネットワークから切り離した上でルートキットとウィルスを削除するしか無いと判断したようだ。ネットワークから物理的に切り離してしまえば、どんな凄腕のハッカーでも一切干渉できなくなる。究極の手段と言ってもいいかもしれない。

で、サーバーはダレスにあるということでエリオットとギデオンは急遽チャーターした?ジェットで現地に向かう。

その後のシーンは演出的要素が多い。サーバーを表す沢山の丸いアイコンが表示された画面を見ながら、システムが再起動してウイルスが再度ばらまかれる前に感染したサーバーを止めてバックアップサーバーに素早く切り替える…ということをやっているみたいだ。打っているコマンドからは、ネットワーク設定を切り替えているような操作をしていることが伺える。

このシーンであんまり解説することは無いように思う(演出要素が多いので)が、唯一気になったのがastsuというコマンド。こういう名前のコマンドはlinuxには存在しない。ただ、使い方を見るに「sudo」というコマンドの一種であるようだ。sudoは続くコマンドを管理者権限で実行するためのコマンドだが、astsuはそれをカスタマイズしたコマンドで、使用した履歴を記録しておいたり、使いやすいように独自の追加機能などを実装しているのかもしれない。しかし、4文字だったコマンドが5文字になる(長くなってしまう)というのはどうなんだろう…。たった1文字の差であるが、こういうのを嫌うエンジニアは多いと思う。

続いてエリオットは攻撃者が残した「LEAVE ME HERE(放っておいてくれ)」というメッセージを目にする。それを見たエリオットは構わず消去しようとするが、ためらった後に消すのをやめる。ちなみにここで右側に「本当に削除してもいいのか?」という深く念押しするような字幕が出てくるが、これは実際にはWindowsでゴミ箱を空にするときに出てくる「本当に空にしてよろしいですか?」という程度のメッセージで、ごくありふれた確認メッセージの一つだ。

エリオットは結局これを消さず、自分のみがアクセスできるようにアクセス権限を変更する。よく見るとそのユーザー名は自身の従業員番号のようだ。「どうせバレやしない」と言っているが、ちょっと危険な気が…。少なくとも、何らかの調査が入れば一発でバレるだろう。

続いて専門用語が出てくるシーンは、MR.ROBOTに連れられたエリオットが「Fun society」に入っていくシーン。MR.ROBOTは昔、ハッカーグループが捕まってリーダーのパソコンからチャットメッセージ、VPN、そういったものから全部アシが付いたという話をする。VPNというのはインターネット上に仮想のプライベートなネットワークを構築するための技術で、結構当たり前に使われているものだ。ここでは、リーダーのパソコンが単一障害点(Single point failure)だったと述べている。

日が変わってまたFun Societyに出向くエリオット。入り口でダーリーンに「いつルートディレクトリにアクセスさせるのか。DATファイルにIPを加えたい」と言われる。その意味はMR.ROBOTによって明らかにされる。

MR.ROBOTの計画では、クレジットカードや預金のデータをすべて消去することで過去最大の富の再配分を発生させるということらしい。実際にそういうことが可能かどうかは私にはちょっと良くわからない。銀行やクレジットカード会社、信用調査会社の類が顧客データをどのように保管しているかを知らない。電子データとしてしか保持していないのなら、そういうことは可能かもしれない。

そしてMR.ROBOTはDATファイルにコルビーのIPアドレス(正確にはコルビーがプライベートで加入しているプロバイダから与えられたIPアドレス、みたいな意味なのだろう。IPアドレスは人に対して割り当てられるものではない)を加えるようエリオットに依頼する。つまり、攻撃に用いたルートキットに含まれているファイルにコルビーのIPアドレスを加えることでコルビーが攻撃に加担しているかのように見せかけろという意味だ。エリオットはそれに対して即座に「誰も信じやしない。馬鹿だからな」と言う。これはごもっともで、なにせコルビーはBlackBerryを使用しているようなCTOであるから。しかしMR.ROBOTは同じようにFBIも馬鹿だという。そんなもんなのかね。

続いてはエリオットがクリスタと浮気をしているマイケル・ハンセンを追い詰めるシーン。すべてが終わった後、エリオットはマイケル・ハンセンに関するファイルをCD-Rに書き込んで「デジタル墓場(Digital Cemetery)」に送り込む。沢山のCD-Rにはそれぞれ「ヴァン・ヘイレン」「AC/DC」「ピンク・フロイド」といったアーティストの名前が書かれている。おそらく、通常のオーディオCDのように偽装しているのであろう。CDプレイヤーに入れると通常のオーディオとして再生でき、PCからアクセスすると内部に書き込まれたファイルが閲覧できる、というCD-Rを作ることはできる。ただそれだけだと多少知識がある人であれば容易に見ぬくことはできる。追加でさらなる隠蔽を行っているのかもしれない。

…という感じで第一話は終わり。第一話は特にサイバーセキュリティに関する話題が多い。二話目以降は一気に技術的な話題は減っていく。