web-dev-qa-db-ja.com

ルートキットおよびその他の低レベルマルウェアは、セキュアブート(およびTB / MB)で保護されたシステムに引き続きロードする方法を教えてください。

この方法で質問してみましょう...

私が外国の国家主導のAdvanced Persistent Threatユニットで働いている攻撃的なサイバーBad Guyだとしましょう。私の部署は、たとえば、アメリカの企業から高価値の知的財産を盗んだことで起訴されています。 (具体的なコンテキストはそれほど重要ではありません。「シナリオ」は、私が尋ねようとしている質問を示すのに役立つだけです。)

私のチームは準備中です...たとえば、スピアフィッシングキャンペーンを行っている米国のさまざまな企業のR&Dの既知の幹部をターゲットにしようとしています。 (繰り返しになりますが、シナリオの詳細はそれほど重要ではありません。)私のチームには、PDFリーダーのエクスプロイトがいくつかあり、Windowsレベルのエスカレーションエクスプロイトを使用して、カーネルレベルの特権に埋め込むことを決定したマルウェアペイロードを取得します。

(別のチームは、ターゲットの中でMacユーザーをハッキングする責任があります。:))

とにかく、私がすべての最新バージョンのWindowsで動作するマルウェアペイロードをまとめる責任があるとしましょう。もちろん、コマンドをひそかに待ち受けて、好きなルートで情報を引き出してくれるモジュールをインストールしたいと思います。キーロガーもすぐそこに置くでしょう。確かに、最初のペネトレーションが完了した後でアップロードする他のモジュールやツールをロードしてインストールできるコンポーネントです。ターゲットのネットワーク内の興味深いものを確認し、ジューシーなIPを見つけて盗むというビジネスに取り掛かりたいと思います。通常のもの。

ただし、マルウェア対策ソフトウェア、システム管理ソフトウェア、手動による検査(TaskManager、Sysinternalsツールなどを使用)、および場合によってはHIDSもすべてhideにする必要があります。また、マルウェアを可能な限り最大限にpersistにしたいと思います。たとえば、Windowsのアップデートとアップグレードのインストール、マルウェアの削除の試み(検出された場合)、さらには聖杯であるワイプとOSの再インストールなどを存続させたいと思います。

ここで、従来のBIOSでPCを攻撃し、Windows 7以前を実行している場合は、選択肢がたくさんあります。多くのルートキットのいずれかを使用して、Windowsカーネルの最低レベルでマルウェアをロードし、Windowsの防御をバイパスし、ロードする前にセキュリティソフトウェアの検出機能を破壊することができます。 bootkit を使用して、マスターブートレコードを攻撃し、Windowsブートローダーが起動する前にマルウェアの一部を読み込むことができます。私が本当に高度なAdvanced Persistent Threatユニットで作業している場合、複数のBIOSメーカーからのものに対して複数の BIOSインプラント オプションを使用することもできます。たくさんのオプション。

ただし、検出を回避し、UEFIを搭載し、Windows 8.1またはWindows 10を実行している新しいWindows PCで持続するマルウェアも必要です。

そして、これは私が大きな問題にぶつかったところです。 Windows 8.1および10には 低レベルのマルウェアを停止するように特別に設計された保護のグループ がOSおよびマルウェア対策ソフトウェアが実行する前にロードされないため:

対策

Windows 8.1は、起動プロセス中にルートキットとブートキットが読み込まれないようにする4つの機能をサポートしています。

-セキュアブート。 UEFIファームウェアとTrusted Platform Module(TPM)を搭載したPCは、信頼できるオペレーティングシステムのブートローダーのみをロードするように構成できます。

-Trusted Boot。 Windowsは、ロードする前に、起動プロセスのすべてのコンポーネントの整合性をチェックします。

-早期マルウェア対策(ELAM)を起動します。 ELAMはすべてのドライバーをロードする前にテストし、未承認のドライバーがロードされるのを防ぎます。

-メジャーブーツ。 PCのファームウェアは起動プロセスをログに記録し、Windowsはそれを信頼できるサーバーに送信して、PCの状態を客観的に評価できます。

(質問の回答 ここ および ここ は、セキュアブート、トラステッドブート、ELAM、およびメジャードブートがどのように機能するかを説明するのにも役立ちますが、私の質問には対応していませんここに。)

そのTechNetの投稿の最後で、保護とそのしくみについて説明しているMicrosoftは、それらについて自慢することに恥ずかしがり屋ではありませんでした。

セキュアブート、トラステッドブート、メジャードブートは、ブートキットとルートキットに根本的に耐性のあるアーキテクチャを作成します。 Windows 8.1では、これらの機能により、ネットワークからカーネルレベルのマルウェアを排除できる可能性があります。これは、Windowsがこれまでに提供したことのない最も画期的なマルウェア対策ソリューションです。これは、他の何よりも飛躍的であり、限界です。 Windows 8.1では、オペレーティングシステムの整合性を本当に信頼できます。

ですから、私のマルウェアをターゲットのPCの奥深くに埋め込みたいと思っているBad Guyとして。カーネルレベル、ブートローダーレベル、またはUEFIレベル-検出を回避し、可能な限り長く持続します。セキュアブート/トラステッドブートなどによって保護されているシステムでそれを行うための方法とアプローチは何ですか。 ?言い換えれば、悪意のある人物がこれらの保護手段を回避し、マルウェアコンポーネントを起動の早い段階で引き続きロードするために必要なオプションは何ですか?

おまけの質問:defenderがこれらの攻撃者のメソッドをブロックして、これらのブート保護を回避するという観点から考えるべき重要な対策は何ですか?

ノート:

  • 私がここでWindowsを使用している理由は、仕事/エンタープライズクライアント環境でのその優勢と、それが私が専門的に最もよく知っているエコシステムだからです。ただし、これらの保護機能が他の多くのプラットフォームにも存在するようになったことはよく承知しています。必要に応じて、これらのブート保護と攻撃者の方法をより一般的に回避するために気軽に話してください。

  • 簡単にするために、私のAPTユニットは Ft。Meade の人々、またはマルウェアを非表示にしたセキュリティ研究者ほど高度ではないものとします。ネットワークカード、ビデオカードなどの非UEFIシステムパーツのファームウェア.

  • この質問 は、ビジネスプロセスが開発者のIDとその前のコンポーネントの悪意のないものを検証するために使用する(= /// =)ビジネスプロセスの安全性について少し話します起動時にロードできるように、そのコンポーネントに署名します。非常に興味深い質問/回答ですが、私が達成しようとしていることを実際に理解するものではありません。

  • 「有益な」Microsoftチャート:

Windows 8.1 boot process

26
mostlyinformed

簡単な答えの1つは、これらのセキュリティ機能を実装するコードのバグです。たとえば、最近リリースされた CVE-2015-2552 を使用すると、セキュアブートが有効になっているシステムで、署名されていない(まあ、テスト署名されたもので、ほとんど同じです)ドライバーをロードできます。 UEFI実装(およびその他の低レベルコード)にもいくつかのバグがあり、特定のチェックをバイパスしたり、セキュアブートを完全に無効にしたりすることができました。携帯電話とタブレット。所有者はカスタムOSイメージをインストールしたいが、OEMはこれを許可したくないが、PCにも適用できる可能性がある場合)。

セキュアブートを回避するオプションがあります。たとえば、ユーザーがセキュアブートを無効にしたり、独自の署名キーを追加したりするには、すべてのWin8.x PCが必要です(どちらかを実行すると、攻撃者はブートプロセスの信頼できるコンポーネントを攻撃者のコードに置き換えることができます)。通常、これにはPCへの物理的なアクセスが必要ですが、たとえば「悪魔のメイド」攻撃などを介して可能になることがよくあります。起動パスワード(または少なくともファームウェアセットアップユーティリティのパスワード)はこれを防ぐことができますが、ハードウェアキーロガーによって無効にされる可能性があります。

別の可能性は、EFIよりも低くすることです。攻撃者が (たとえば)ハードディスクで実行されているファームウェア を変更できる場合、これは 実証済み が少なくともいくつかのケースで可能になるようになっています-攻撃者はすべてを行うことができますものの種類。たとえば、ソフトウェアがスキャンする方法ですべての保存されたデータにアクセスできるスパイウェアは、たとえローレベルのデバイスデバイスアクセスであっても、検出できません。署名の確認は、データが1つのパスで(署名の確認のために)ハッシュされるが、実際の実行のために再度ディスクから読み取られる、time-of-check-time-of-useの脆弱性に対して脆弱である可能性があります。 「ドライブキット」は、署名読み取り用の読み取りと実行用の読み取りを区別できる場合、これを悪用する可能性があります。同様の攻撃はネットワークカードのようなものに対しても実行される可能性がありますが、ハードディスクは多くの悪意のあるコードを格納する余地があり、コンピュータがアクセスするほとんどすべてのデータを見ることができるため、特に興味深い標的です。

また、単一のマシンで完全に永続的である必要なく、多くの攻撃を達成する方法もあります。たとえば、インストールメディアにマルウェアをスリップストリームできる場合、OSを再インストールしても役に立ちません。マルウェアが感染したフラッシュドライブまたはその他の周辺機器/アクセサリーを介して拡散する場合、明確なエクスプロイトベクター(Stuxnetを考えてください)なしに組織全体に永続的に拡散する可能性があります。または、マルチホストネットワークのワームは、ネットワークに接続するとすぐに、新しい(または、新しく再フォーマットされた)マシンに感染する可能性があります。ただし、少なくとも1つの感染マシンがネットワーク上に存在し、エクスプロイトが悪用可能である限り。そのようなマルウェアが検出されたとしても、実際にそれを根絶することは非常に困難です。

質問、修正、説明、およびこのような攻撃が行われる可能性のある追加の方法はすべて歓迎されます。

14
CBHacking

UEFIファームウェアを危険にさらすことで永続化できますが、そうすることは非常に簡単です(国家主導の攻撃者にとって)。ほとんどのコンシューマーグレードのマシンでは、ファームウェアイメージの署名チェックが行われないため、悪意のあるファームウェアをインストールできます。セキュアブートはそのファームウェアによって実行されるため、セキュアブートをバイパスできます。個人的に私が知っているのは、製造元によるファームウェアイメージへの署名を要求できるDell LatitudeおよびLenovo Thinkpadだけです。それでも、デフォルトで無効になっているため、侵害されたファームウェアをすでに実行している可能性があります。

TPMでサポートされる機能は、ファームウェアから始まり、OSまで拡張される信頼の連鎖に基づいています。ファームウェアを所有している場合は、システムが危険にさらされていても、偽のデータをTPMに簡単に提供して、PCRを正しい値に一致させることができます。これは、ファームウェアの一部を読み取り専用にして、ソフトウェアを介して侵害できないようにする(結果として、侵害される可能性のある次のコンポーネントのハッシュについてTPMに嘘をつかないようにする)か、 TPMはファームウェアメモリチップに直接アクセスできるため、悪意のある可能性のあるコードを実行する前に、TPMでそれ自体を測定できます。

2
André Borie

コンピュータのセキュリティ強化の多くは、一般の攻撃者がコンピュータにアクセスすることを困難にする一方で、西側の政府がコンピュータに簡単に侵入できるようにするためのものです。したがって、攻撃者が西側政府によって知られている特別なクラッキングの知識にアクセスできるかどうかに大きく依存します。

1)Windowsには非常に多くの穴があるため、カーネルがUEFIを使用して安全にロードされているかどうかは問題ではありません。ルートキットはいつでもロードでき、同じくらい効果的です。ユーザースペースにとどまって問題なく動作することもあります。マイクロソフトは、修正がリリースされるかなり前に米国政府にセキュリティの欠陥を早期に通知すると噂されています。

2)別のオペレーティングシステムを使用している場合は、セキュアブートをオフにする必要があります。

3)TPMには、製造元によって保存され、政府に提供される可能性が高い秘密鍵があります。私が読んだ小さなことから、秘密鍵を知ることはTPMのセキュリティを台無しにすることを学びました。

4)ウイルス対策ソフトウェアは、それによって認識されているもののみを検出します。マルウェアのほとんどの新しい部分はまったく検出されません。したがって、これは直接攻撃の懸念ではありません。

5)大きな問題は、セキュリティの脆弱性が含まれている古い署名付きドライバーが引き続きロードできることです。ドライバーの署名を無効にする必要も、それを行う必要もありません。古いドライバを見つけて使用してください。

6)同じ状況が古い署名付きカーネルで存在する可能性があると(調査していませんが)想像します。セキュリティの脆弱性が含まれている古い署名付きカーネルをロードし、それを使用して起動時にアクセスし、戻って実際のカーネルをロードできますか?

7)独自のクローズドソースドライバーを作成し、Microsoftに署名させることは、かなり安価です。

8)Windowsカーネルリング0を利用すると、当面はWindowsと同じようにシステムにアクセスできます。 Windowsを開発者モードに切り替えて、署名されていないドライバーの読み込みを許可できますか? Trusted BootやELAMなどの機能の一部を無効にできますか?セキュアブートを有効にしたまま、これらのことを実行できますか? BIOS(システムファームウェア)をフラッシュ/変更できますか?オプションROMのデータを変更できますか?これでハードドライブに完全にアクセスできます。すべてのシステムの再インストール後も存続するファームウェアマルウェアをそこに入れることができます。考えるべきことがいくつかあります。

1
Alex Cannon

ブートとハードウェアがあなたがアクセスする必要があるものであり、お金であなたにコンピュータへの物理的なアクセスを得ることができると想定しているなら...(そして私の私の不満をお詫びします)、ここに私の思考プロセスがあります。コンピュータにそれがハードウェアの一部であると思わせる。たとえば、典型的なRAMは2GB以上ですが、基本的な最低レベルのコードをハードチップとしてRAMチップに書き込むことができますか?次に、コンピューターにアクセスして、RAMチップの1つを交換します。その方法は、スパイの背景に戻ります。
基本的なシェルを作成するだけでよいコードだと思います。「この人はスーパースーパーユーザーです...次に、suはrootですが、susuの方が優れています。rootがアクセスできる場合、susuはより多くのアクセス。」完了したら、そこからビルドできます。

0
John Bentley