Mr. Robot Disassembled:eps3.9_shutdown -r

こんにちは友人。私はRyan Kazanciyanで、Mr。Robotのテクニカルコンサルタントであり、Taniumのチーフセキュリティアーキテクトです。私はシーズン2の後半から、作家、プロデューサー、ARGの背後にある首謀者であるKor Adanaとその他のMr. Robotチームと仕事をしてきました。シーズン3を通して、ショー、彼らがどうやって集まったのか、そして実際の彼らの基盤。

スポイラー警告!この投稿では、シーズン3フィナーレのイベントについて説明します。

タイトルが示すように、「eps3.9_shutdown -r」は、エリオットとミスター・ロボットとの関係の結論と新たな始まりの両方、つまり再起動を示しています。したがって、このエピソードのハックはシーズン1のシーンを呼び起こし、同様に過去1年間にKorと私が設計した最初と最後の技術要素の1つでした。

少しのLUKSを使用したパスワードクラッキング

先週のエピソードで、TrentonがElliotへの「killswitch」メールに添付したNYPDの保管文書の内容を見ました。暗号化されたデータパーティションを持つ4つのキーストロークロガーなど、ロメロの自宅から押収された証拠を箇条書きにしました。 NYPDはこれらのデバイスからコンテンツを復元できませんでした。おそらく、FBIも復元できませんでした。

Romeroの自宅からの証拠のリストを作成する一連の監護権

DomがElliotにFBIコンピューターとSentinelへのアクセス権を与えると、キーロガーのフォレンジック画像を取得できますが、パスワードをクラックしてキャプチャしたデータを表示する方法を理解する必要があります。

このシーンのパラメーターには、いくつかの興味深い技術的課題がありました。 FBIには、暗号化された証拠をブルートフォースするための十分な計算能力があります。 ElliotがJohn the Ripperのようなクラッキングツールを介して共通の辞書ファイルを送信してパスワードを見つけた場合、それは信用できません。その上、ロメロは長いパスワードと強力な暗号化アルゴリズムを使用するのに十分に精通していたでしょう。

Romeroのキーロガーは、Linuxのディスク暗号化仕様であるLUKSを使用して、キャプチャしたデータを保存するように設計されていると判断しました。他の利点の中でも、LUKSのリファレンス実装では計算が遅いアルゴリズムを使用しているため、自動パスワード推測やブルートフォースによるクラックが困難です。

FBIが失敗したとき、エリオットはどのように成功できますか?彼は、より良い単語リストを作成するためのハッカーとして、ロメロの性格、興味、習慣に関する知識に依存しています。 Korと私は最終的に音楽を使用するというアイデアを思いつきました。歌の歌詞がパスフレーズになりました。彼はロメロの好きなアーティストのリストをまとめ、私は現場で作業している間、カーティス・メイフィールドとジャムをしました。

エリオットには、DomのFBIコンピューターにはない多くのツールが必要です。このシーンは、画面に表示されるように進む前に、VPSでセットアップしたKaliのインスタンスに最初にSSHで接続することを想定して設計しました。

まず、エリオットがPyLyricsを実行して、ロメロのお気に入りのアーティストのすべての曲の歌詞をダウンロードするのを見ます:

歌詞をダウンロードして、ロメロのキーロガー向けのターゲットを絞ったパスワードクラッキングワードリストを作成する

出力は、パスワード解読ツールの入力として機能する単一のファイル「lyrics.txt」に保存されます。

次の(非常に短い)ショットでは、2つのウィンドウが並んでいます。左側のウィンドウには、LUKSディスクパーティションに関する情報を一覧表示するコマンドの出力が表示されます。

cryptsetup luksDump〜/ keyintercept_1.raw

Elliotはこれを実行して、使用中の暗号化のタイプを確認します。

左側のLUKS分析。右側でパスワードクラッキング攻撃を開始

右側のウィンドウは、クラッキングプロセスを示しています。私はもともと、このシーンで最も人気のあるパスワード回復ツールの1つであるHashcatを使用したいと考えていました。残念ながら、Hashcatは2016年後半までLUKSのサポートを導入しませんでした。エリオットは、1秒あたり数ダースのパスワードしか推測できない古いツールbruteforce-luksを実行することになります。

Elliotがタイプするとき、右側のウィンドウを閉じます。

bruteforce-luks -t 8 -f〜/ tools / PyLyrics / lyrics.txt〜/ keyintercept_1.raw

このコマンドは、「lyrics.txt」の各行を入力として使用して、ディスクイメージ「keyintercept_1.raw」に対するパスワードを推測する8つの同時スレッドを起動します。

次のジャンプカットの後、エリオットの創造性が報われたことがわかります。 Romeroのパスワードは、Curtis Mayfieldの「Do n’t Worry」からの抜粋です。

そして、もし下に地獄があるなら、私たちはみんな行くつもりです

(はい、それは「The Deuce」のオープニングクレジットで使用したのと同じ曲です。完全な偶然です!)

Elliotは次のように入力して、暗号化されたLUKSパーティションをマウントします。

cryptsetup luksOpen〜/ keyintercept_1.raw keyintercept

LUKSパーティションのマウント

彼は、キーストロークログ出力を含むマウントされたパスに切り替え、そのコンテンツを表示するためにless keylog.txtと入力します。

画面には実際のコンテンツは表示されません。エリオットの反応のみが聞こえます。

「ロメロは私たちをスパイしていました。彼は他の誰かが鍵データをエクスポートしているのを見つけました。」

そして、それは私たちの最終シーンの舞台を設定します。

このハックはどれほど現実的でしたか?描かれた手順はすべて本物です。通常どおり、同じツールを使用して、すべてを仮想マシンでエンドツーエンドで再現できるようにしました。しかし、特にアルゴリズムがどれほど遅いかを考えると、LUKSパーティションをクラックするのに必要な時間を短縮するために芸術的な自由を取りました。エリオットの知識とアプローチは彼の可能性を最大化したが、彼はまだ幸運だった。 Romeroのパスワードを広範な単語リストで解読するには、数日または数週間かかったかもしれません。いずれにせよ、その詳細がエピソードの残りの部分の再生方法を根本的に変えることはありません。

5/9の運命を決定する

「鍵をアーケードから自宅のボックス上のリモート仮想マシンに転送しました。その後、CDに書き込みました。これらの写真のいずれかに、シードデータとアルゴリズムが埋め込まれています。あなたはそれを知っているでしょう。」—ミスター・ロボット

エリオットはコンピューターに戻り、シーズン1で最初に見たように、彼と父親の写真がいっぱい入ったCDをロードします。彼は直観と技術分析を組み合わせて適切なファイルを見つけることを想像しました。彼は、統計分析を実行してステガノグラフィーの証拠を検索するPythonスクリプトlsb.pyを使用していくつかの画像を調べていることを確認します。この特定のツールは、ピクセル値の最下位ビット(LSB)を使用して他のデータを保存する一般的な手法に焦点を当てています。

画像ファイルの1つから隠されたデータを分析および抽出する

エリオットは、彼と父親がマーティとドック・ブラウンにdressした正しいイメージを見つけたと確信しています。

次のコマンドを使用して、ファイルの最初の256バイトの16進ダンプを確認します。

xcd -l 256 IMG_5528.jpg

ファイルヘッダーは、JPGではなくPNGファイル(「損失のない」形式)であることを示します(前者はステガノグラフィーにより簡単に使用されます)。彼は作業コピーを作成し、LSBの手法を使用して非表示になっているデータを抽出するために、stepicという別のツールを実行します

stepic -d -i IMG_5528_copy.png -o outfile

エリオットの直感は正しかった。画像には非表示のPythonコードが含まれています。

Crypto.Protocol.KDFからPBKDF2をインポート
Crypto.PublicKeyからRSAをインポート
インポートgetpass
infile = raw_input(“ File:“)
f = open(infile、 ‘r’)
パスワード= getpass.getpass()
f.seek(1024)
salt = f.read(32)
master = PBKDF2(パスワード、ソルト、カウント= 10000)
def notrand(n):
    notrand.i + = 1
    return PBKDF2(master、str(notrand.i)、dkLen = n、count = 1)
notrand.i = 0
RSA_key = RSA.generate(4096、randfunc = notrand)
RSA_key.exportKey()を印刷します

Korと私は、シーズン3の初期計画段階でこのシーンの大まかな概要を検討しましたが、画面に表示されるコードはずっと後まで書きませんでした。短くてシンプルですが、ストーリーのそのような重要な部分を損なわないように、技術的に正確であることを確認したかったのです。そして、完全な開示のために、私は暗号作成者ではなく、テレビでそれを再生するだけです。

ソースを掘り下げることなく、このスクリプトがどのように機能するかを分析しましょう。 3つの入力を使用して、決定論的な方法でRSAキーを生成するように設計されています。

  • パスフレーズ
  • salt /シード値—提供された入力ファイルのハードコード化されたオフセットから読み取られた32バイト—この場合、画像
  • 意図的にランダムではない「バックドア」乱数ジェネレーター(「notrand」という名前の関数)。

同じパスフレーズとシード値を指定すると、このスクリプトは常にまったく同じ出力を生成します。 Mr. Robotによって故意に導入されたこの脆弱性により、エリオットは元のキーの同一のコピーを再生成できます。

独自のシステムでスクリプトを実行する場合は、PyCryptoライブラリのコピーがあることを確認してください。どのシードファイルでも動作するはずです。

ランサムウェアやその他の暗号化攻撃では、多くの場合、対称アルゴリズムを使用して被害者のデータを暗号化します。その後、対称鍵を非対称鍵ペアの公開半分で暗号化し、被害者のスクランブルファイルとともに保存できます。被害者が身代金を支払うと、攻撃者は秘密鍵を使用して、ファイルの回復に必要な対称鍵を復号化して提供できます。

Elliotは、暗号化アルゴリズムへの入力として同じ画像ファイルを使用して、スクリプトを実行します。

隠されたスクリプトはRSA秘密鍵を再生成します

できます。スクリプトはRSAキーを出力します。単純なコピー&ペーストで、エリオットは物事を動かして5/5攻撃を取り消すことができます。彼はただ送信をクリックする必要があります。

エリオットは、キーをE-Corpの復旧チームに送る準備をしています。 「差出人」アドレスに注意してください。

私のパーカーを掛ける

Mr. Robotに取り組むことは愛の労働であり、1年の準備の後にすべてが一緒になっていくのを見るのはユニークなやりがいのある経験でした。私たちが作成したものを非常に誇りに思っています。ショーのファンからの熱意-特にセキュリティ業界の友人や仲間の間で-は、あらゆる努力を価値のあるものにしました。

とはいえ、それはまた、私にとってほろ苦い転機でもあります。技術コンサルタントとして2年間働いた後、パーカーを切って新しい機会に進むという難しい決断をしました。ショーに参加できたことは非常に幸運だと思っており、それが私の視野を広げ、自分も知らなかったitchみを掻き立てました。また、それは膨大な時間のコミットメントであり、来年には、私の専門的および個人的な生活の他の新たな努力のために帯域幅を取り戻す必要があります。

舞台裏のみんなと一緒に仕事をするのはとても寂しいですが、ファンの純粋な視点から次のシーズンを見ることに興奮し続けます-私が最初に見始めたときのように!

とはいえ、私はいくつかの承認なしに結論を下すことを怠ります:

  • ショーで見るスクリーンに命を吹き込んだ素晴らしいアーティストでデザイナーのアダム・ブルスタイン。すべてのショットは、実際のソフトウェアの外観と動作に一致するように、インタラクティブなアニメーションとして丹念に作成されています。もちろん、彼の才能はコンピューターGUIをエミュレートするだけではありません。他の作品については、彼のサイトをご覧ください。
  • David Damatoと仲間のショーコンサルタントAndre McGregorは、もともと私をKorと他のクルーと結びつけました。 2016年1月にコンシューマーエレクトロニクスショー(CES)のパネルで共同発表したDaveとKorの偶然の出会いにすべて戻ります。
  • Sam Esmail、Kyle Bradstreet、その他のプロデューサーやライターは、私や他のショーコンサルタントと熱心に関与し、家族の一員のように感じさせてくれました。
  • そして最も重要なことは、Kor Adana、今シーズンの多くに貢献する機会とサポートを提供してくれたこと、私のクレイジーなアイデアのいくつかに取り組む忍耐力、そしてこの新しいクラフトを学ぶために私を導くメンターシップです。ショーとそのファンに対する彼の情熱や、細部へのたゆまぬ関心については十分に言えません。 (何よりもARGに関する彼の仕事は言うまでもありません!)まだ行っていない場合は、THRでKorのJosh Wiglerとの一連のインタビューをご覧ください。これは、今シーズンの技術的な記事に相当する脚本であり、各エピソードの詳細と思考がどの程度含まれているかを実際に示しています。

最後に、「Mr。今シーズン中にロボット:分解されました。あなたのつぶやき、コメント、電子メールであなたが共有したサポートの量に感動しました。同様に、私たちが作成したいくつかのハックに触発されて、すべての質問、さらには白熱した討論を見ることも大好きでした。これらの記事が教育と楽しさの両方をもたらすことを望み、喜んで聴衆を見つけてくれたことに感謝しています。