三九宝宝网宝宝百科宝宝知识

详述Windows验证机制的安全测试

11月30日 编辑 39baobao.com

[澳洲各阶段留学申请条件详述]澳洲留学:各项语言要求澳洲留学一般以雅思成绩为主,分数的要求依据学生申请的学历,专业、学校都有所不同。一般,预科阶段要求5-5.5分,本科要求5.5-6分,研究生6-7分,传媒,翻译,医学等...+阅读

身份验证机制是用户登录操作系统必须要过的一个“关卡”,只有通过验证用户才能登录系统。Windows的身份验证是非常严密和复杂的,这也是保证系统安全的基础。那么,是否意味着Windows的身份验证机制就无懈可击呢?最近对Windows的验证机制进行了一番测试,测试中发现了其身份验证的一些缺陷。下面笔者将再现测试过程,然后结合实验分析其验证机制,揭示其验证过程中存在的问题。

一、实验探索Windows验证机制

(一)环境描述

有两台测试主机,Test1和Test2,其IP地址分别为192.168.1.10和192.168.1.20。在它们上创建同一用户名Fr,并且为其设置同样的密码,另外还有用户名相同但密码不同的administrator帐户。同时在Test2上创建了共享文件夹share,通过帐户的改变来访问该文件夹用以研究Windows的难机制。

(二)关于帐户验证

1.帐户验证机制

Windows的帐户验证机制称为LSA,具体的实现过程依靠的是lasaa.exe。Windows的认证机制是基于Principal(角色)验证的,它是Windows验证的主体,可以是单个的帐户,也可以是一用户组还可以是一台计算机。比如对我的计算机来说我就是一个Principal,是计算机要难的一个主体,当系统启动后我们通过winlogon.exe提交的帐户和密码称之为Credential(证据),就是证明Principal的证据,当我们提交了Credential后,系统就会调用lsass,exe将提交信息与本地计算机SAM数据库中的信息进行比较,来完成验证。

2.验证实验

为了更好地管理帐户,我们可以使用域进行帐户管理,当使用域来进行帐户管理时时,每次都是

通过Windows系统中的logon服务来完成的,具体的实现是依靠lsass.exe启动本地计算机的logon服务,与远程域控制器上的logon服务建立连接,来实现验证。我们下面要进行的所有实现都是基于LAS的本地验证机制的。

(1).启动Test1和Test2电脑,都使用Fr帐户来登录系统,然后在Test1计算机的“运行”栏中输入“\\192.168.1.20\share”,Test1可以直接访问到Test2。测试结果说明:两台计算机使用相同的帐户和密码登录系统后,可以实现共享的直接访问。

登录,同样在“运行”栏中执行刚才的命令,Test1电脑在访问Test2的时候弹出了对话框,需要输入帐户和密码才行,我们输入帐户administrator和密码test后成功访问。测试结果说明:使用不同的帐户进行登录,即便是计算机上存在相同的帐户,但由于密码不同也不可以直接访问共享。

总结:由实验1和实验2我们得出了一个结论,只有两台计算机上的登录帐户和密码完全相同才可以实现直接访问。这个实验结论其实就是LSA验证的一个特点,在网络中不使用的域这两台计算机,只要登录帐户和密码完全相同,就可以实现互访,而不需要输入帐户和密码。

(3).在实验2的基础上当访问成功后,不做任何设置关闭共享窗口,使用Test1再次访问Test2的共享,可以直接访问。测试结果说明:当通过网络访问需要输入帐户和密码的时候,一旦输入帐户和密码验证成功了,而两台计算机一直于开机状态下再次进行访问,就可以直接访问。

(4).注销Test2,使用Test1不进行任何设置现次访问Test2,可以直接访问。测试结果说明:当通过网络访问需要输入帐户和密码的时候,一旦输入帐户和密码验证成功了,Test1不做任何操作,注销Test2后,再次访问共享资源,可以直接访问共享。

(5).重启Test2,使用Test1再次访问Test2,可以直接访问。测试结果说明:当通过网络访问需要输入帐户和密码的时候,一旦输入帐户和密码验证成功了,Test1不做任何操作,重启Test2后再次访问共享资源,也可以直接访问共享。

(6).注销Test1,再次访问Test2,不可以直接访问,要求输入帐户和密码。测试结果说明:当通过网络访问需要输入帐户和密码的时候,一旦输入帐户和密码验证成功了,注销Test1后,Test2不做任何操作,当再次访问共享资源时,不可以直接访问共享。

(7).重启Test1,再次访问Test2,也不可以直接访问,要求输入帐户和密码。测试结果说明:当通过网络访问需要输入帐户和密码的时候,一旦输入帐户和密码验证成功了,重启Test1,使用Test2不做任何操作,再次访问共享资源,不可以直接访问共享。

(8).在实验2的基础上,更改Test2的administrator帐户的密码为123456,然后使用Test1再次访问Test2。结论如下:Test1可以直接访问Test2的共享文件夹。

(9).在实验8的基础上,注销Test2,然后使用Test1再次访问Test2。结论如下:Test2更改了administrator的密码并注销后,Test1可以直接访问Test2的共享文件夹。

(10).在实验8的基础上,重启Test2,然后使用Test1再次访问Test2。结论如下:Test2更改了dministrator的密码并重启后,Test1不可以直接访问Test2的共享文件夹,出现了提示错误。

(11).注销或者重启Test1,再次访问Test2。 结论如下:注销或者重启Test1后,再次访问Test2时,需要重新进行验证。

3.实验总结

上面所做的实验以及得出的种种结论很大程度上在于登录会话(logon session)在Windows中的很多验证不是基于LSA,而是基于logon session的,这是一种由内核维护的数据结构存储的是work credential(网络验证的证据),上面的实验1,实验2以及实验11都是基于Windows的LSA验证,而从实验3到实验10则都是基于logon session的验证。

4.结论分析

logon session分为系统登录会话(system logon session)、网络登录会话(work logon session)、服务登录会话(service logon session)和交互式登录会话(interactive logon session)。系统登录会话是最早建立的会话它就是我们经常说的system权限或者system帐户,在Windows中大部分的服务都运行在系统登录会话里,在Windows中大部分的服务都运行在系统登录会话里,但在WindowsXP系统中微软出于对安全的考虑让某些服务以LocalService和workService权限启动,而并不是都以system权限运行。

(三)关于帐户测试

1.帐户权限实验

(1).以system权限运行注册表

我们可以使用at命令添加一个运行注册表编辑器的任务“at time /interactive regedit.exe”,当系统按照时间设置来启动注册表编辑后,我们会发现这时候已经可以访问HKEY_LOCAL_MACHINE\SAM\SAM这个键值,而在普通用户登录的时候是无法正常访问的。我们查看“任务管理器”,可以看到它是以system权限运行的。

(2).设置系统服务的运行权限

我们在“开始”-“运行”栏中输入services.msc,打开“服务”,从中随便选择一个服务,点右键,选择“属性”,选择“登录”项,如果我们勾选“此帐户”,让某个服务以某个帐户动行,那么系统就会给该服务创建一个新的登录会话,这个登录会话就是服务登录会话(service logon session)。

2.实验分析

上面的两例测试也interactive logon session和work logon session相关,当我们开机启动后,输入正确的帐户和密码,系统会首先建立interactive logon session,这样以后所有的进程比如explorer.exe等都会通过token与interactive logon session建立连接,所谓的token就是进程与logon session之间的一个桥梁,因为在Windows中每个应用程序的启动过程都是由explorer.exe调用,然后确定其函数入口并实现运行的,启动计算机后所有的应用程序都是explorer.exe的子进程,而子进程是继承父进程的 logon session的,当然为了某些特殊的需要我们可以改变token关联,使某个应用程序进程关联到其它的logon session里,最常见的就是关联到system logon session里,方法有很多。

我们在看实验3的过程之前,先来看实验2的过程,Test1的lsass.exe会与远程Test2计算机上的lsass.exe进行通信,Test2上的lsass.exe通过SAM数据库进行验证,当验证成功后,首先Test1上会建立一个logon session存储于interactive logon session,同时Test2上届会建立一个logon session,它存储于work logon session,在前面我们已经提到,logon session存储的是work logon session,这句话其实不够确切,因为在work logon session里根本就不缓存任何credential,它是验证信息与安全数据库(SAM)之间在logon session中的一个桥梁。通过实验3-7我们可以分析出logon session的种种特点。

3.分析结论

(1).logon session具有本地性,即使有建立的logon session都在本地计算机上,当实验2完成操作后,logon session就在Test1上,所以当我们注销或启动Test2后,我们依然可以直接访问Test2,但是注销或者重启Test1,再次访问Test2时就需要重新验证了。

(2).logon session具有暂时性,只要我们注销或者重新启动Test1后,都无法直接访问Test2。因为注销或者重新启动导致了logon session的消失,这里牵涉到了logon session生存期问题。

(3).logon session具有性,其实这个特性是正常的,如果不,那么Windows的验证也冰没有意义了,这点通过实验10最能证明,当Test2更改密码并重新启动后,正是因为Test1上的logon session具有性,才出现了访问期间错误。

(四)生存周期实验

logon session的生存期是从登录计算机开始到系统调用其所长Windows API函数Exit WindowsEx重新启动计算机结束。这个说法太笼统了,因为logon session分很多种,每种的生存期也存在微妙的差异,但正是这些微妙的差异却可以解决很多问题。

1.实验测试

我们来做一个实验以探索system logon session的生存期,system logon session是系统启动过程中建立的,我们以notepad.exe为例,首先使用“mt -susession.exe”将notepad.exe的token与system logon session建立连接,我们注销计算机并看notepad.exe的进程是否结束就可以了。当我们提升notepad.exe的权限为system的时候,注销计算机后以administrator帐户和Fr帐户分别登录计算机,notepad.exe依然运行,重新启动计算机后发现程序结束,所以system logon session的生存期是到计算机重新启动并肯注销不会消失。

2.分析

联系前面的实验3到实验5可以清楚地看到,不管Test2进行如何Test1都可以直接访问到Test2,从实验8到实验10我们可以看出work logon session的具体作用前面已经提到work logon session里不存在任何的credential,它的作用就是work credential和本地安全数据库进行难的桥梁。也许有人会问当Test2重启后,会话结束了,为什么Test1还可以直接访问Test2呢?这里面我们忽略了一个登录会话的验证过程,登录会话的过程本质上也是将logon session里面缓存的credential与计算机中安全数据库(SAM)进行对比验证。它的生存期可以理解为网络验证的时候建立,计算机重新启动后消失,在实验5中我们重新Test2,work logon session消失,但是当Test1访问Test2的时候,依然会建立work logon session。在实验10中,更改密码并重新Test2,Test1访问Test2同样建立了一个work logon session,但是这时候Test1电脑中interactive logon session里的credential经Test2电脑上的work logon session与本地安全数据库发现是不相同的,所以访问就出错了,而注销或者重启Test1,随着interactive logon session的消失,必然要求我们重新验证,这就是实验11中需要重新难的原因。通过实验6和实验7我们可以得出interactive logon session的生存期为输入帐户和密码登录成功开始,重新启动计算机后消失,并肯注销也会消失。经过以上的分析我们得出三个logon session的生存期。

3.结论

(1).system logon session的生存期建立于系统登录之前,结束于系统重新启动或者关机,但是注销后会话不会结束。

(2).interactive logon session的生存期建立于系统登录之后,结束于系统重新启动或者关机,注销后会话也同样结束。

(3).work logon session的生存期是网络访问杨功后建立,结束于系统重新启动或者关机,注销后不会消失。

二、Windows验证机制的缺陷

1、绕过验证

根据上面的测试,我们可以目标电脑和本地电脑上建立了完全相同的帐户(用户名和密码都相同),然后使用runas命令实现tel远程登录。

2、登录会话带来的问题。

在Windows中有很多难基于logon session,这在带来方便的同时,也带来了权限滥用的问题,比如Task Scheduler(动行于system logon session)服务是at命令运行的基础,这导致了所有at命令运行的应用程序都是以system权限运行的,另外对于局域网安全也带来了威胁,人们知道Windows系统对服务的管理是通过服务控制管理器(SCM)来完成,它的本质是Windows启动过程中winlogon.exe启动的sevices.exe,因为它是一个RPC服务器,所以我们可以行程管理服务,这样就可以让我们有一定的几率来开启目标电脑上的危险服务,比如tel服务。

我们来做个简单的所实验的局域网环境,重新启动Test1和Test2,都以administrator帐户登录,但是密码不一样,在Test1上运行,在服务中选择“操作”→“连接到另一台计算机”,默认选择“另一台计算机”,我们填入Test2的IP地址192.168.1.20,点击确定后,出现错误提示信息,这个错误信息通过上面知识的学习可以很容易理解。

我们继续在Test1的“开始”-“运行”栏中输入“\\192.168.88.143\share”,输入帐户和密码成功访问Test2上的共享后,再次重复services.msc中的操作就可以管理Test2的服务。

总结:上面关于Windows验证机制的实验测试,证明其验证机制存在一定的缺陷。也许,这些结果对于一般用户意义不大。不过,对于系统爱好者来说了解这些是大有裨益的。

以下为关联文档:

我就爱用盗版!关闭WinXP系版验证提示电脑重装,打了一系列的补丁,却收到了盗版的受害者这样的信息,并且这个烦人的信息在以后的每一次开机都要出现,让我们白白的浪费了很多时间,并且还在屏幕的右下角出现一个星形符号...

不留一个死角做好企业NAT配置验证工作网络地址转换(NAT)的出现,解决了企业网络管理过程中的很多问题。如当企业的网络要连接到公网中,但是,企业没用足够多的公网IP地址;如企业更换了一个ISP服务器商,需要重新组织企...

微软称20日验证Windows与Office盗版将黑屏考试大获悉:10月20日微软将在中国再次对盗版WindowsXP进行打击,并首次对盗版Office进行验证,装有盗版Windows XP及Office将被强制插入多处明显的提醒标识。除不断弹出提醒盗版...

质量持续改进与检查、验证一、持续改进我国国家标准GB/T19001中“持续改进”的含义是:“组织应利用质量方针、质量目标。审 核结果、数据分析、纠正和预防措施以及管理评审、持续改进质量管理体系的...

微软对华开始Windows和Office正版验证考试大获悉:10月13日消息,一封来自微软内部的电子邮件和一系列教程显示,微软将在10月20日投放新一轮正版增值计划通知,与上次投放不同的是首度针对中国加入了Office软件的认证。...

C基础辅导:CC++中Static的作用详述在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量...

QQ令牌的动态密码一直验证失败怎么办动态密码验证多次失败,可能有两种原因: 1、您将同一个动态密码使用了多次(一个动态密码只能使用一次); 2、QQ令牌的时间不同步,如果时间不同步,您可以使用校准令牌时间的功能,同...

PPPoE的验证方法以及对其的利用一、前言 近年来,网络数据业务发展迅速,宽带用户呈爆炸式的增长,运营商在采用xDSL,LAN,HFC,无线等多种接入方式的同时,为了构建一个可运营、可管理、可盈利的宽带网络,十分关心如何...

为XP远程增加网络身份验证本文介绍如何通过修改注册表为Windows XP SP3增加网络身份验证功能。 实际工作中,你可能会时常使用远程桌面连接,比较常见的一种情况是Windows XP与Windows Vista,默认设置下,Wi...

推荐阅读
图文推荐