Session 0を透過して隔離する(一)
2668 ワード
原文のリンク:http://www.cnblogs.com/stevenjson/p/3750169.html
サービス(Service)は皆さんにとっては決して馴染みのないものです.Windows OSの重要な構成部分です.私たちはサービスを特殊なアプリケーションとして想像できます.システムの「オン~オフ」に従って、その仕事内容を「開始~停止」することができます.この期間には誰も参加しなくてもいいです.
Windowsサービスはバックグラウンドで様々なタスクを実行し、私たちの日常のデスクトップ操作をサポートしています.時にはサービスがユーザーと情報やインタフェースを交互に操作する必要がありますが、この方法はXP時代には大丈夫です.
セッション0 隔離実験
次にAlertServiceというサービスを行います.その役割はユーザーにヒントダイアログを出すことです.このサービスはWindows 7でどのような状況が発生するかを見てみます.
サービス属性で「Allow service to interact with desktop」をチェックすると、AlertServiceがデスクトップユーザーと対話することができます.
サービスマネージャでAlert Serviceサービスを「起動」すると、タスクバーにアイコンが表示されます.
このアイコンをクリックすると、次のウィンドウが表示されます.メッセージが表示されます.
「View the message」をクリックすると、下の画面が表示されます.注意図のデスクトップ背景はWindows 7のデフォルトのデスクトップ背景ではないことが分かります.Alert ServiceとデスクトップシステムのSessionは違っています.これがSession 0の分離作用の結果です.
セッション0 隔離の原理
Windows XP、Windows Server 2003または初期Windowsシステムの時代において、最初のユーザがシステムにログインした後、サービスとアプリケーションは同じSessionで実行されます.これがSession 0です.下の図のように.
しかし、このような動作は、サービスがユーザ権限を向上させることによって実行されるため、システムのセキュリティリスクを高め、アプリケーションは、管理者としてのアイデンティティを持たない一般のユーザによって実行されることが多く、その危険は明らかである.
VistaからSession 0にはシステムサービスのみが含まれており、他のアプリケーションは分離したSessionで実行し、サービスとアプリケーションを分離してシステムの安全性を向上させる.下図のように:
このように、Session 0と他のSessionとの間の対話ができず、サービスを通じてデスクトップユーザに情報ウィンドウ、UIウィンドウなどの情報をポップアップすることができない.これは、なぜ先ほどの図は現在のデスクトップを通してスクリーンショットができないと言いましたか?
セッション チェック
実際の開発過程では、Process Explorerを通じて サービスやプログラムがどのSessionにあるかを確認します.Session 0の隔離問題がありますか?私たちはServicesで以前にローディングしたAlert Serviceサービスを見つけました.右クリック属性はそのSession状態を調べます.
AlertServiceはSession 0にあると見られます.
またOutlookアプリを見てみます.
Windows 7では明らかにサービスとアプリケーションは異なるSessionにあり、それらの間には保護壁が設けられています.次の記事では、この保護壁を通り抜けて、サービスとデスクトップユーザとのインタラクティブ操作を紹介します.
注:本稿は転々としたものです.
作者:李敬然(Gnie)
出典:{GnieTech} (http://www.cnblogs.com/gnielee/)
著作権声明:著作権は著作者とブログ園に共有されます.転載する時は本文の詳細なリンクを明記しなければならなくて、さもなくば作者は保留してその法律の責任を追及します.
転載先:https://www.cnblogs.com/stevenjson/p/3750169.html
サービス(Service)は皆さんにとっては決して馴染みのないものです.Windows OSの重要な構成部分です.私たちはサービスを特殊なアプリケーションとして想像できます.システムの「オン~オフ」に従って、その仕事内容を「開始~停止」することができます.この期間には誰も参加しなくてもいいです.
Windowsサービスはバックグラウンドで様々なタスクを実行し、私たちの日常のデスクトップ操作をサポートしています.時にはサービスがユーザーと情報やインタフェースを交互に操作する必要がありますが、この方法はXP時代には大丈夫です.
セッション0 隔離実験
次にAlertServiceというサービスを行います.その役割はユーザーにヒントダイアログを出すことです.このサービスはWindows 7でどのような状況が発生するかを見てみます.
using System.ServiceProcess;
using System.Windows.Forms;
namespace AlertService
{
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
MessageBox.Show("A message from AlertService.");
}
protected override void OnStop()
{
}
}
}
プログラムのコンパイル後、Installutilを通じて システムサービスにそれをロードします.サービス属性で「Allow service to interact with desktop」をチェックすると、AlertServiceがデスクトップユーザーと対話することができます.
サービスマネージャでAlert Serviceサービスを「起動」すると、タスクバーにアイコンが表示されます.
このアイコンをクリックすると、次のウィンドウが表示されます.メッセージが表示されます.
「View the message」をクリックすると、下の画面が表示されます.注意図のデスクトップ背景はWindows 7のデフォルトのデスクトップ背景ではないことが分かります.Alert ServiceとデスクトップシステムのSessionは違っています.これがSession 0の分離作用の結果です.
セッション0 隔離の原理
Windows XP、Windows Server 2003または初期Windowsシステムの時代において、最初のユーザがシステムにログインした後、サービスとアプリケーションは同じSessionで実行されます.これがSession 0です.下の図のように.
しかし、このような動作は、サービスがユーザ権限を向上させることによって実行されるため、システムのセキュリティリスクを高め、アプリケーションは、管理者としてのアイデンティティを持たない一般のユーザによって実行されることが多く、その危険は明らかである.
VistaからSession 0にはシステムサービスのみが含まれており、他のアプリケーションは分離したSessionで実行し、サービスとアプリケーションを分離してシステムの安全性を向上させる.下図のように:
このように、Session 0と他のSessionとの間の対話ができず、サービスを通じてデスクトップユーザに情報ウィンドウ、UIウィンドウなどの情報をポップアップすることができない.これは、なぜ先ほどの図は現在のデスクトップを通してスクリーンショットができないと言いましたか?
セッション チェック
実際の開発過程では、Process Explorerを通じて サービスやプログラムがどのSessionにあるかを確認します.Session 0の隔離問題がありますか?私たちはServicesで以前にローディングしたAlert Serviceサービスを見つけました.右クリック属性はそのSession状態を調べます.
AlertServiceはSession 0にあると見られます.
またOutlookアプリを見てみます.
Windows 7では明らかにサービスとアプリケーションは異なるSessionにあり、それらの間には保護壁が設けられています.次の記事では、この保護壁を通り抜けて、サービスとデスクトップユーザとのインタラクティブ操作を紹介します.
注:本稿は転々としたものです.
作者:李敬然(Gnie)
出典:{GnieTech} (http://www.cnblogs.com/gnielee/)
著作権声明:著作権は著作者とブログ園に共有されます.転載する時は本文の詳細なリンクを明記しなければならなくて、さもなくば作者は保留してその法律の責任を追及します.
転載先:https://www.cnblogs.com/stevenjson/p/3750169.html