欢迎光临 Enjoy IT (ITECN.NET) 登录 | 注册 | 帮助

Windows Vista如何以SYSTEM权限启动进程(1)

很长时间没有写纯技术文章,有点对不住大家。盆盆这段时间可没有闲着,正在努力收集资料、做实验测试,准备写一些有关Windows安全底层技术的文章,陆续发表在ITECN博客,敬请大家期待。这里先上一篇比较有趣的。唯一遗憾的是,由于今天国家队不幸失败,影响了我写作的情绪,唉~~

可能有不少读者兄弟还记得盆盆以前写过一篇文章《超级另类法用SYSTEM帐户登录系统》,描写如何以SYSTEM权限启动Explorer进程。

另注:经热心读者举报,这篇文章曾被某无耻文抄公恶意抄袭。经盆盆核实后,赠书一本以感谢。

在Windows 2000/XP下,我们可以有很多方法,以SYSTEM身份启动某个特定的进程,盆盆就曾经写过一篇《以System帐户身份运行应用程序的三种办法》。

SYSTEM帐户启动的实质

其实不管用哪种方法,其本质都一样。都是利用SYSTEM登录会话里已有的某个进程A,帮助我们创建一个进程B,进程B会自然而然地运行在SYSTEM登录会话里-从而具有SYSTEM权限。

这里提到登录会话(Logon Session)的概念,这个概念比较抽象,甚至连MSDN里都有点语焉不详。这里我们且不去管它(将会在后续的文章里给大家细述这个抽象概念)。只需要了解:登录会话用来代表特定的安全主体,代表该安全主体的一次登录实例。

每个进程,都必须运行在特定的登录会话里。这里就有一个问题,在用户登录之前,Windows系统里已经运行了一些进程,这些进程显然也应该运行在登录会话里,这就是所谓的SYSTEM登录会话,它所代表的安全主体就是SYSTEM帐户。

在Windows的安全机制里,特定登录会话里的某个进程所启动的其他进程,也会运行在该登录会话里,从而继承安全上下文。

以System帐户身份运行应用程序的三种办法》这篇文章所描述的方法,都是运用这种原理。例如借助At命令以SYSTEM帐户身份启动进程,实际上是由Task Scheduler服务启动的,而Task Scheduler服务所在的进程svchost正是运行在SYSTEM登录会话,如附图所示。
2

图中所示的Task Scheduler服务的进程svchost所在的登录会话ID(Logon Session ID)是0x0-3e7,这就是代表SYSTEM登录会话。

用Psexec命令,道理也一样,实际上启动进程的是PsexecSvc服务,该服务的进程运行在SYSTEM登录会话。

已发表 2007年7月19日 1:20 作者 ahpeng

评论通知

如果您想在帖子更新时接到邮件通知,请先登录。这里

订阅帖子评论使用 RSS

评论

2007年7月19日 8:41 by Asuka Zhang

# re: Windows Vista如何以SYSTEM权限启动进程(1)

请问盆盆

1.0x0-3e7即是logon session又是一种Winstation?

2.Winsta0是否是一种logon session?

2007年7月19日 10:23 by ahpeng

# re: Windows Vista如何以SYSTEM权限启动进程(1)

窗口站和登录会话,不是一回事。登录会话代表的是安全主题的一次登录实例。而窗口站,顾名思义,是所有进程窗口“温暖的港湾”,实际上是为了控制对这些进程窗口的访问。

Service-0x0-3e7$这个窗口站,之所以得名以SYSTEM登录会话,是因为Windows对窗口站的默认命名规则。Windows默认给每个登录会话分配一个默认的窗口站,以登录会话的ID命名。但是WinSta0除外,它比较特殊。

2007年7月20日 18:26 by youyang

# re: Windows Vista如何以SYSTEM权限启动进程(1)

To: PP

"唯一遗憾的是,由于今天国家队不幸失败,影响了我写作的情绪,唉~~"

哎,等下次再有球了,先给PP带上眼罩,写完文章,之后摘下眼罩,告知比分。哈哈

2007年7月20日 21:32 by aloki

# re: Windows Vista如何以SYSTEM权限启动进程(1)

To youyang

  带上眼罩看不到怎样写文章,看来youyang也是让国家队的失败给影响了。

说说您的看法?

(必填) 
必填 
(必填)