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

色々ネタバレを含むので注意。

Season 3 Epsode 1 eps3.0_power-saver-mode.h - 「省電力モード」

シーズン2は面白かったものの、淡々と追い詰められていくだけのfsocietyを見させられる展開に少々ダレた視聴者も多かったのではないだろうか。シーズン1はE Corpという悪に対抗するハッカーたちの戦いという構図がわかりやすく、終わり方も見栄えのするものであった。シーズン2は中盤で今までのことが殆ど嘘だったとするような演出があったり、エリオットとMR.ROBOTの精神的な戦いが中心だったり、「ハッカーと不正企業との戦い」という分かりやすい構図を想像していた視聴者は面食らったのでは。

シーズン3ではシーズン1で引き起こした5/9事件を帳消しにするような何かを実行することが話の核となるようなので、シーズン1と同様、展開は分かりやすいものとなって行くような感じになるのではないだろうか。

最初は初登場のアーヴィングがファストフード店的なところで何かを注文しているところ。Irvineという名前はカタカナではアーヴィンとかアーヴァインとか表記されるが、Irvingは「アーヴィング」で良いのだろうか?ちょっと違和感がある。まあそれはさておき。

ポイントカードが貯まり、次回来店時にシェイクが無料になると伝えられるが、アーヴィングは次回来店の定義は何か。列に並び直せば良いのか、時間を開ければ良いのか、店から一度出れば良いのか、明日でないといけないのか?矛盾があると伝える。店員はすみません、決まりですので。しか言えない。

私も同じことを思う時がある。世の中にはかなり曖昧に線引きされている規則が多い。例えば法律や憲法もそうで、解釈によって判断が別れるケースが多いため、裁判は普通過去の判例を主たる論拠として進められる。交通事故の過失割合の決定もそうだ。その点、コンピューターの世界では0か1かしかない。「大体」や「適当に」は存在しない(存在しているように見せかけることはできる)。そういうことを暗に示唆しているような気もした。

続く中国の国家安全部長のチャン(Whiterose)とその側近の会話シーン。その後、ロゴと共に映し出されるSFチックな施設は粒子加速器である。重い原子同士を衝突させてより重い人工元素を作り出したり、その崩壊の過程で観測される素粒子のデータを取ったりする装置だ。特にコンピュータサイエンスとの関わりが深いわけではないが、なんだろう、単に見栄えがするから採用しただけかな。

物語はエピソード2の終わり時点近傍からスタートする。エリオットはとりあえずE Corpに通じるバックドアを閉じなければならないとハッカーカフェ?のようなところに向かう。そこでは世界中のチームがハッキング技術を競い、お互いのサービスへのハッキングを試みる競技であるとされている。壁にはDEF CONの文字が書かれている。DEF CONのCTF (Capture The Flag)は実際にあるイベントだ。お互いに脆弱性をもつサーバーを与えられ、自身の脆弱性を修正しながら相手の脆弱性を攻撃していくというものだ。こんなに盛り上がるイベントなのかどうかはちょっと知らないけど…。作業自体はずっと地味な絵面のはずだ。

エリオットは早くチームを勝たせて端末を使わせてもらおうと、ハッキングを試みている一人に話しかける。ここで語られている言葉には大した意味はない。いくら凄腕のハッカーと言えども他人が操作している端末を数秒眺めただけでそれを理解し攻撃手法を立案できるようなことができるわけがないし、単に話の進行上、エリオットの並外れたハッキング能力を改めて見せつけたというシーンを入れただけだろう。

続いてエリオットが語っている言葉と操作している内容だが、これの意味が良くわからない。セリフはダークアーミーからのアクセスを遮断する(バックドアを閉じる)ようなことを言っているが、端末で操作している内容は件の火災を引き起こすための無停電電源装置ファームウェアを完全消去するコマンドに思える。shred両方を一度にやったということなのかもしれないが…。

ちなみにshredというのはファイルを完全消去するコマンドだ。linuxでもwindowsでも、ファイルを削除するという操作はストレージ(HDD or SSD)上にあるデータを指し示している情報(「AというファイルはHDD上のここにありますよ」という索引情報)を消すという操作なので、ファイルそのもののデータはストレージ上に残ったままだ。だからデータ復旧が容易である。shredはファイルのデータを保管している領域を何度も乱数やゼロで上書きして消すので復旧はほぼ不可能になる。HDDの場合は1回上書きしたとしても以前のデータの残留磁気があるので復元可能と聞いたことがあるが。

続いてエリオットとダーリーンはダークアーミーと思しき二人に指示され件のファストフード店に連れられていく。そこでエリオットはアーヴィングに「裏口を閉じた(shut the back door)」と言っているので、やはり閉じたのは確定しているようだ。

その後はエリオットの葛藤やMR.ROBOTが健在である事を示すシーンを挟み、MR.ROBOTはタイレルとまたバックドアを仕掛けるべく、ハッキングをスタートさせる。shodan.ioというサーチエンジンを開き、アパッチがどうとかいうキーワードを入力し始める。このshodan.ioは発電所用検索エンジンというキャプションが表示される。確かにそのように表示されているので正しいのだが、よりわかりやすく言うとこのshodanというサービスは「世界最初のIoTサーチエンジン」だそうだ。実際に存在するサイトで、そのような説明が書いてある。IoTというのは「モノのインターネット」などと言われるが、これは訳語が非常にわかりにくく、より分かりやすく言えば「インターネットに接続されたハードウェア」のような意味だ。IoT用のサーチエンジンとは、その名の通り世界中のIoTデバイスを検索するためのサービスということだろう。その一例として、発電所や冷蔵庫、建物などが挙げられている。

このアパッチ(Apache)というのはよく使われているWebサーバアプリケーションだ。http://...というアドレスを指定した時、サーバではApacheなどといったWebサーバープログラムが動き出し、要求された情報を用意し、要求元へ返送する。この一連の作業を行っている。

ここでMR.ROBOTは外部の攻撃に対して脆弱なサーバーを探しているのである。使用しているWebサーバープログラムとバージョンがわかれば、場合によってはそのアプリケーションで有効な脆弱性を見つけることができる。Webサーバーは何も設定を行わないと、自分から「私はApacheでバージョンはいくつですよ」という情報を外部に垂れ流してしまう。もしApacheの特定のバージョンVで脆弱性が見つかったとき、「私はApache バージョンVです」なんて公言しているサーバーがあれば、それは「私には脆弱性がありますよ」と言っているようなものである。だから、Webサーバーがどのようなプログラムで動作しているかを収集・調査するのはハッキングしやすい脆弱なマシンを見つけるための第一歩だ。

つまり、MR.ROBOTはバックドアを閉じられたとしても、また一からハッキングを行いバックドアを仕掛けようと行動を始めたということである。これでEpisode 1は終わり。

Season 3 Epsode 2 eps3.1_undo.gz - 「帳消し」

そういえばタイトルに触れていなかった。今回はLinux OS上でよく目にするファイル拡張子を使用しているようだ。1回目は.h、これはヘッダファイルと呼ばれるソースコードの一部である。今回のgzはgzipの略で、圧縮ファイル(正確には圧縮方式)の一つである。

今回のタイトルはUndoで和訳は帳消しとなっている。帳消しと書いてあるから、第一話でアンジェラが仄めかした「すべてをなかった事にできる方法」の核心部分がもう明かされるのかと思ったが、ただ単にエリオットが自らしでかしたことを元に戻そうとE Corpで働き始めたことを指しているらしい。ちょっとこの訳は紛らわしい気が…。

冒頭、エリオットは気に入らない上司が使用するデバイスやアカウントに対してハッキングを行い犯罪を通報してクビにしたり、物流を操作して書類の収集作業を遅延させたりしている。主にメールを読み取って不正を明らかにしているようだが、最近では大きな企業は従業員のメールを読み取り、不正の疑いが高いようなメールを自動抽出するようなシステムを組み込んでいたりする。なので現実的には、E Corpのような巨大企業であればエリオットが通報するより前に不正を行っている人はクビになっている…と思ったが、いや、E Corpなら気づいてもみ消すほうが得意そうだな。

エリオットはまた、E Corpの電子署名が無いプログラムをUPSの制御プログラムとして実行できないような処置をしたと述べている。電子署名というのはその名の通り、出処が正しいことを証明する電子的な署名で、この署名があることで出処の保証や中身の改ざんの検知などを行うことが可能となる。これの仕組みを突破するのは容易ではない…が、その脆弱性を付いて何とか突破してしまうのも人間なので、完全な措置ではない。現に、同様の仕組みで動作しているTLS通信(ブラウザのアドレスバーにある「保護された通信」などと表示してあるが、これはTLS通信を行っているという印)は、過去何度もセキュリティリスクが露呈し、暗号アルゴリズムやダイジェスト(データの要約)を作るアルゴリズムが改定されている。

エリオットはやっとのことで書類をすべて電子化してOCRで読み取ることを上司に承知させる。大事な書類はデータで残しておこうなんて素人でもわかりそうなことだが、ときに大企業というのは、こういう当たり前のことを判断できなかったりするものである。

エリオットは正しいことをしていると自分に言い聞かせているが、精神的にはまた猛烈な孤独感が襲ってきているようで、あまり芳しくはないようだ。

続いてはヨアンナのインタビュー。夫の無罪を勝ち取るためにスコット・ノウルズを真犯人に仕立てようとしていることが実を結んだよう。私はMR.ROBOTの中でタイレルとヨアンナが最も好きかもしれない。目的の遂行のために極限までにドライになれるのは常人ではなかなか難しい。タイレルもヨアンナも、一般的にはキチガイと呼ばれる部類なんだろう。

そんなヨアンナだが、今回ついに射殺されてしまう。色々とヤバイところに首を突っ込んでいたからいつかはこうなるのかもしれない、とは思っていたがあっけなさすぎる…。撃ったのは…なんだっけ。名前すら覚えていない。ヨアンナが夫を無罪にするために嘘の証言をさせた例のウェイターである。ここでサザーランドも一緒に死んだのかと思いきやサザーランドは相手を撃ち殺す。なんとか一命をとりとめ、ヨアンナと例の男は死んだようだ。このすぐあとにヨアンナの司法解剖をするシーンがある。頭蓋骨をカットするときはノミのような器具を差し込んだ瞬間に頭蓋骨がプラスチックのようにたわみ、あまりリアルじゃない。そんな重要なシーンでもないので特に拘る必要も無いのだろうが、なんかこう私は性格的に、こういう細かいところが気になってしまう。没入感が削がれるというか…。まぁいいや。

エリオットは寂しいからとダーリーンを部屋に泊めるが、ダーリーンは何やらディスプレイの裏に細工を行っている。それを見たエリオットは一体パソコンに何をしたんだとダーリーンに詰め寄る。ダーリーンはメモを残したかっただけだと主張するがエリオットは疑っているようだ。エリオットが本当に疑っているのか、それともMR.ROBOTが過敏に反応しただけでダーリーンは本当に何もしていないのかわからないような描写になっている。

クリスタとのカウンセリングのあと、自分の部屋に戻ったエリオットは自分のPCに何か違和感を感じる。ここで使用しているのはLinux Mintというディストリビューションだ。本作ではエリオットは一貫してハッキング用のツールが充実したKali Linuxを使用してきた。Mintはデスクトップ用途(ブラウジング、メール、文書作成その他)に特化したディストリビューションである。この用途ではUbuntuが最も普及しているが、MintはUbuntuが頻繁なアップデートを繰り返すことで不安定になってしまうことを改善するためにUbuntuからフォーク(分岐)して開発されたディストリビューションだ。ここでエリオットがMintを使っている(ように見せかけている?)のは、自分はもうハッキングはしないという意思表示をしているのだろうか。だとすれば、監視されているのを前提に行動していることになる。もっとも、今のエリオットの行動にはFBIから目をつけられそうなことは含まれていないわけだが…。

エリオットは即座にPCを再起動し、代わりにUSBメモリからKALI Linuxを起動させてシステムのチェックを行う。具体的にはルートキットの検出ツールであるrkhunterを起動しているようだ。これはKALI Linuxがそういうことをするのに適したディストリビューションという理由もあるが、そもそもルートキットがインストールされたPCから自分自身にルートキットがインストールされているかどうか知ることが出来ないという理由もある。ルートキットは自分のファイルやプロセスを不可視の状態にするためだ。

ちなみに、USBメモリから検証用のOSを起動するのも非常に確実な方法だ。今時のデバイスはなんでもネットワークにつながっているが、USBメモリに入ったデータはそれを物理的に保護していればそれを改ざんすることは不可能である。

画面に写っている限りではルートキットは検出されていない。おそらく最後までスキャンしても検出されないだろう。なぜならばダーリーンが仕込んだのはディスプレイ端子から分岐して映像データをキャプチャして転送するデバイスだったからだ。ハードウェア的に信号を分岐させているので、ソフトウェアからは監視されていることを知るすべがない。ちなみにこういうディスプレイ信号をキャプチャするデバイスは実際に存在しており、マシンのCPUリソースを消費することなく画面を録画できることからゲームのプレイ動画を投稿するような人たちからの需要が高いようだ。ただ、現実のデバイスは膨大な映像信号データを処理する必要性から、そのサイズは結構な大きさになる。仕組みから考えても、ディスプレイケーブルを調べれば一発で分かってしまうような代物だ。

エリオットはそれに気づいているのか気づいていないのか、暗号化したメールを送信する。暗号化していようと、画面上には人間が読んでわかる平文の形で記録に残るので読み取るのは容易い。そこに書かれていたURLにFBI捜査官の一人がアクセスする。この口ひげを生やしたラテンっぽい顔の人…。いたっけ、こんな人。Wikiを見るとNormという名前みたいだ。NormがアクセスしたURLはエリオットによってアクセス元を特定する仕掛けを組み込んでおいたものだった。エリオットは念には念を入れてソフトウェアでない、カメラやその他のデバイスによる盗撮・盗聴の可能性まで考えてこのようなことをしたのだろう。これはトラップとしては非常に初歩的なものであって、引っかかるFBI捜査官も悪いような気がする…。

エリオットはアクセス元を特定してドムたちの元へ踏み込んでくる。アクセス元をここまで詳細な住所まで特定することは現実では難しい。IPアドレスからはせいぜい特定できて県や市町村程度のレベルでしか発信元を特定できない。それ以外の方法としては、一応、Geolocation APIといってブラウザ上で現在地を判別するような仕組みは実装されていることは実装されており、例えばGoogle Mapなどでこれを利用している。これはアクセスしているデバイスに存在するGPSレシーバーなどから取得した位置情報を使用しているので、GPSのような現在位置を特定できる機能がデバイスに備わっていないPCからのアクセスでは利用できない。それに、このGeolocation APIを使用するためには必ずユーザーの許可が必要になる。「このサイトは現在の位置情報を要求しています」のようなポップアップを見たことがあると思うが、これがその許可を求めているポップアップだ。これをスキップして現在地を取得することはできない。

だから、Normがスマホから捜査中の容疑者が送ったURLを開き現在地情報の取得を許可してしまったなどということでも無い限りは、サイトにアクセスしただけで現在地がわかるなんてことは無いので安心(?)してほしい。

というところで、エピソード2も終わり。