web-dev-qa-db-ja.com

Win10:ログオンしている他のユーザーのメモリにアクセスする

管理者ユーザーは、Windows 10で他のユーザーが実行しているプロセスのデータに簡単にアクセスできますか?

特にChromeによって読み込まれたWebページ。

環境

  • BobおよびAliceは、単一のWindows 10インストールを共有します。
  • それぞれに、管理者権限を持つパスワードで保護されたローカルユーザーがいて、お互いのパスワードを知りません。
  • 彼らは、別のユーザーとNTFS権限だけではデータを保護しないため、EFS保護されたディレクトリに保存されたポータブルアプリケーションで機密活動を行うことを知っています。

シナリオ

  • Aliceは彼女のアカウントにログインしているコンピュータを使用しています。
  • 彼女はChrome Portableを(そのプロファイルフォルダーと共に)EFS暗号化されたディレクトリにあり(透過的に復号化されてログインしているため)、銀行のWebサイトを介して超秘密銀行口座を確認します。
  • 彼女はNotepadを使用してそれについてメモし、Windowsのclipboardを使用して機密の支払い参照をコピーし、EFS保護されたディレクトリのファイルに保存します。
  • Bobが近づいているのを聞くと、ChromeNotepadはどちらも引き続き実行され、非常に機密性の高いデータが表示されますが、Ctrl+Lなどをすばやく押すだけです。ログアウトせずに彼女のアカウントをロックし、Bobに自分のアカウントでログインする機会を与えます。
  • Bob彼のアカウントでログインします。

どれほど簡単にBobを見つけることができますか...

  1. ... Alice彼が来る直前にコンピュータを使用していた(以前にロックしたのではなく)
  2. ...彼女が実行していた/実行していたプログラム(どのプロセスマネージャのプロセスリストからも表示されるAFAIK)
  3. ...いつ彼女はそれらのプログラムを実行していた
  4. ...どのfiles *プロセスが*(EFS保護ディレクトリから)アクセスするか
  5. ...機密data自体。

... 沿って ...

  • a)...pagefileおよび/またはhiberfilを読み取る
  • b)...[〜#〜] ram [〜#〜]から直接読み取る
  • c)...実行中のプロセスの所有権を取得しようとしています
  • d)...任意のその他の方法アリスのパスワードの推測/総当たりやコンピュータの分解を含まず、最大で数日で可能です。
7
Hanswurst

まず、少し基本的なこと:usersメモリがない、processes 行う。通常、これらはユーザープロセス(AliceのNotepad.exeインスタンスなど)ですが、システムプロセス(ローカルセキュリティ機関サブシステム、LSASS.exeなどのサービスまたはサブシステム)にすることもできます。ユーザーごとのメモリ)。お気づきのように、管理者レベルのユーザー( "admin")は、他のユーザーのプロセスを非常に簡単に一覧表示できます。ただし、それ以上のことを実行できます。これらのプロセス(または、DRMの理由で保護されているプロセスを除いて、システム上の他のプロセス)は、それらが独自のプロセスであるかのようにアクセスできます。これには、完全なデバッグアクセス(ここでは関係ありませんが、プロセスのメモリへのアクセスである読み取りと書き込み)と、オープンHANDLEs(ファイル、ネットワークソケット、レジストリキー、名前付きパイプ、共有)の列挙が含まれます。メモリセクションなど)。管理者は、システムのかなり多くのログ情報にもアクセスできます。

特定の質問に答えるには:

  1. ボブがチェックするのを邪魔するなら、これは簡単です。イベントビューアで、アリスがログインしてセッションをロックするなどのセキュリティイベントを確認できます。アリスが開いているファイルを確認し(プロセスのハンドルを確認することで)、日付が変更された、または日付にアクセスされたタイムスタンプが何であるかを確認できます(EFSで保護されたファイルでも、タイムスタンプなどのメタデータを公開しています)。
  2. 現在実行中のプログラムは非常に簡単です(タスクマネージャー、tasklist.exe、Powershell、リソースモニターなど)。実際、彼がそれらのプログラムのいずれかを使用する場合、見逃すことはほとんどありません。アリスが最近閉鎖したプログラムはより困難ですが、それでも可能です。イベントログエントリが含まれている可能性があります。データファイルが変更され、合理的に使用されただけで、バイナリの日付アクセスタイムスタンプが更新されます。ただし、ボブは、現在実行中のプロセスのように膝に落ちるのではなく、それらを探す必要があります。
  3. #2と同じです。実行されなくなったプログラムが開始および停止された正確な時間を知るのは難しいかもしれませんが、チェックするだけで実行されているときにsomeポイントを取得できます適切なファイルのタイムスタンプ、およびシステムまたはアプリ固有のログ(アプリ固有のログが暗号化されていないと想定)を確認することによる詳細情報。
  4. まだ実行中のプロセスの場合、開いているハンドルを列挙するのは簡単です。いくつかの組み込みプログラム(Resource Monitorなど)だけでなく、Process Explorerなどの一般的な無料のプログラムでも実行できます。そのリストをファイルパスでソートし、Aliceの暗号化されたディレクトリ/ファイルにつながるパスを探すのは簡単です。
  5. まだ可能ですが、これはトリッキーです。デバッガ(Microsoftの無料のWinDbgやVisual Studio Community Editionなど)を使用すると、プロセスのメモリを確実に読み取ることができますが、探しているデータの場所を知るのは難しい場合があります。より簡単なオプションは、DLLをプロセスに挿入することです(DLLを作成するか、オンラインでDLLを見つける必要がありますが、Win32プログラミングとコンパイラへのアクセスに慣れている人ならだれでもできます。必要なファイルを読み取って暗号化されていない場所に書き込むか、ファイル自体を復号化する(またはボブにファイルへのアクセスを許可する)DllMain関数を使用して、1時間以内に十分に実行できます。EFSファイルはそれらにアクセスする複数のユーザーをサポートします)。

ページファイルまたはハイバネーションファイルからの読み取りは技術的には可能ですが、通常は、コンピューターの電源がオフになっていて、そのRAMがデータを保持していない場合にのみ使用できます。適切な方法を実行する必要があります。どのメモリブロックがどのプロセスでどの目的のために使用されているかを再構築するためのフォレンジック作業の量。このようなrawメモリアクセスを実行する場合は、はるかに簡単です(これは基本的にこれらのファイルと同じですが、rawメモリは一時的にディスクに書き込まれます) 、ページファイルの場合は不完全ですが)、必要なデータを見つけるための特定のツール(作成することはできますが、より多くの労力が必要になります)がないため、デバッガーを使用してクエリを実行できます実行中のシステムとそのプロセスをリアルタイムで。

プロセスの所有権を取得することは実際には必要ありません。管理者はデフォルトですべてのプロセスへのデバッグレベルのアクセス権(および編集権限レベルのアクセス権)を持ち、プロセス(またはファイル、その他のセキュリティ保護可能なオブジェクト)のACLを(適度な労力で)無視できます。彼らcanは、セキュリティ保護可能なオブジェクトの所有権も取得します。この時点で、ACLを編集し、必要に応じて、所有者を元の所有者に戻すことができます。さらに、元のACLを復元します。管理者(Bob)が自分にアクセス権を付与しているときに、必要な権限でプロセスにハンドルを開いていれば、元のアクセスを復元した後でも、そのハンドルを介してプロセスのシークレットにアクセスできます。プロセスの所有権を取得しても、プロセスへのアクセスを制御する人やその他の詳細が変わるだけであることに注意してください。プロセスのウィンドウの SessionまたはWindow Station は変更されません。つまり、これらのウィンドウをデスクトップに移動することはできません。

言及しなかったが言及に値する1つの方法は、実行中のシステムからAliceのEFSキー、または彼女のパスワードさえも抽出することです。彼女はまだログインしているので、資格情報はメモリに保存されます。それらを抽出するための最も一般的なツールは Mimikatz および Cain&Abel です。 Win10では、Mimikatzの一般的な使用を無効にする方法でパスワードを保存するために使用されるメモリを保護することは可能ですが、これはほとんどのシステム(特に家庭用)のデフォルト構成ではなく、強制などの絶対的な保護でもありません。 EliceキーをエクスポートするためのAliceの実行中のプログラムの1つ(標準のWindows APIを使用して実行できますが、DLL自分で呼び出す必要がある場合があります)。Aliceの資格情報を取得した場合、次に、それらを使用して彼女の現在実行中のセッションにログインし([ログイン]画面またはリモートデスクトッププロトコルを介して)、その方法で彼女のセッションを引き継ぐことができます。

また、ボブが卑劣な種類の場合、ユーザーのパスワードが可逆暗号化で保存されるようにWindowsを変更し、アリスのパスワードを解読することもできます。彼は彼女が再びログインするのを待たなければなりませんでした-その設定を変更しても、ユーザーがログインするまで影響はありません-設定を変更した後でコンピューターにアクセスして使用を許可すれば、ユーザーはそれを行うことができます(そして彼女はそうしませんでした)元に戻しません)。または、キーロガーをインストールして、アリスのパスワードを記録することもできます。

6
CBHacking

上記の長い答え。

両方が管理者グループに属している場合は、デバッグ目的でプロセスにアタッチできるSeDebug権限を持っています。だから彼らはどんなプロセスにもコードを注入できます。

または、他のユーザーによって実行されているTaskManagerまたはPowershellを介してプロセスのメモリをダンプし、次にSysInternals文字列をダンプするか、そのコンテンツをProcess Explorerで表示することもできます。

彼らは両方とも管理者であるため、tsconを使用してログオンしたセッションをユーザーが残した場合、以前のユーザーセッションを引き継ぐこともできます(システムとして実行している場合-管理者はpsexecで実行できます)。

マシン上でアドミニストレーターを使用すると、すべてのプロセスとデータを何らかの方法で表示できます。メモリのダンプ、プログラムのデバッグ、インストールなど、他のユーザーアカウントで実行できます。

3
McMatty