Windows日志浅析Word下载.docx
《Windows日志浅析Word下载.docx》由会员分享,可在线阅读,更多相关《Windows日志浅析Word下载.docx(37页珍藏版)》请在冰豆网上搜索。
HandleID:
%2
ObjectType:
%3
ProcessID:
%4
ImageFileName:
%5
Accesses:
%6
AccessMask:
%7
因此从上面可以看到很多关键的信息其实都隐藏在描述字段信息中,需要进行仔细地分析!
最后再简单地说下windows自身存储策略的设置:
根据Randy大神的经验,最大不要超过199M,200M的话可能会对windows的性能和稳定性有一定影响(这点不好进行实验验证)。
此外不论配置最大空间为多少,迟早会有满的时候。
所以Randy建议选择“不改写事件(手动地清除)”选项,此时一旦日志大小达到上限,windows会停止记录事件。
当选择“改写久于X天的事件“时,如果事件的产生速度很快,在未过期前就达到了上限,windows同样是停止记录日志直到某些日志过期。
以下是网上对于这些保存设置的说明和建议,所以如何设置也是在安全性、易维护性等方面权衡了
按需要改写事件
当日志已满时继续写入新的事件。
每个新事件替换日志中时间最旧的事件。
该选项对维护要求低的系统是一个不错的选择。
改写久于[x]天的事件
保留位于指定改写事件的天数之前的日志。
默认值为7天。
如果您想每周存档日志文件,该选项是最佳选择。
该策略将丢失重要日志项的几率降到最小,同时保持日志的合理大小。
不改写事件
手动而不是自动清除日志。
只有在您无法承受丢失事件时才选中该选项(例如,特别强调安全性的站点的安全性日志)。
最后我们还可以把日志事件另存为本地文件查看,其中txt和csv格式可以较为方便地直接查看,而evt格式需要专门的软件来查看,如LogParser。
因此在日志量很多的情况下,还是建议由专门的日志管理产品来完成此功能。
二、日志分析
从windows2000开始,审核策略选项里面涉及到登录的有两项:
分别是“审核帐户登录事件”和“审核登录事件”。
那么有些人可能不太明白了,为什么用户的登录要有两类事件来记录呢?
ok,这里简单的解释一下。
在windows2000之前,例如NT的时候windows系统只审核登录事件。
这样如果使用域帐户登录某台工作站的话,域控服务器(DC)上是没有该用户的登录记录的,只会记录在被访问的工作站上(当然前提是工作站开启了登录审核)。
因此DC不记录域用户的认证活动使得想要对域用户的登录活动进行监控十分困难,得收集整个网络中所有工作站和服务器的安全日志。
因此呢,微软从windows2000开始增加了一个新的特色功能,也就是“审核帐户登录事件”。
但是这个叫法与原来的“审核登录事件”很像,容易让人产生混淆。
因此Randy大神认为称之为“审核认证事件”更为恰当!
也就是说在windows中认证和登录活动是相关但是不同的两个活动,特别是在它们发生在不同的系统上时表现更为明显!
因此想要有效地使用这两个审计策略,需要很好地理解相关的原理,明白在windows系统中认证和登录是如何发生的。
另一个容易让人混淆的是登录使用帐户的类型,是本地还是域帐户,因为这会影响到什么事件记录在哪些系统上。
接下来就对windows帐户类型简单介绍下。
windows系统支持两种帐户类型:
域帐户(存储在AD中)和本地帐户(存储在本地的SAM文件中)。
这样的话也很简单了,使用域帐户登录的话,由DC来完成对用户的认证;
如果本地帐户登录的话则由要登录的工作站自己来完成认证。
所以需要特别关注使用本地帐户的登录活动,因为攻击者通常会使用本地帐户来进行登录尝试。
接下来我们看看windows的登录方式都有哪些。
windows一共支持5种登录会话类型,都分别描述了用户如何登入系统的方式。
本地和域帐户都支持这5种类型。
每种登录类型有一个对应的登录权限。
登录帐户的类型和登录的方式都会影响到审核日志的具体内容和事件ID,每种类型及其权限如下表所示:
登录类型
登录权限
典型情况
本地交互式:
使用本地的控制台登录
本地登录
使用域或者本地帐户登录本地主机
网络方式:
从网络上的某个主机访问windows资源
从网络访问主机
例如访问一台主机的某个共享文件夹
远程交换式:
通过远程桌面、终端服务或远程帮助登录某个远程主机
运行通过终端服务登录
使用本地mstsc客户端远程登录某台主机
批作业:
用于作为一个指定的帐户来运行一个计划任务
作为批作业登录
指定计划任务时指定的以某个具体帐户来运行
服务方式:
用于以指定的帐户来运行某个服务
以服务方式登录
指在指定服务运行时以本地系统帐户或者是具体某个帐户运行
当我们尝试网络登录登录时,比如访问某台主机的共享文件夹,工作站默认会再次使用用户登录时输入的凭证。
但是用户也可以指定一个不同的本地或者域帐户,例如映射本地磁盘到某个共享文件夹时。
登录VS认证小结
因此,在windows中登录和认证是关联但是不同的两个活动。
简言之登录活动发生在最终被访问的主机上,认证活动发生在存储用户帐户的主机上。
也就是如果使用本地帐户登录某台主机,该主机同时“看到”认证和登录活动。
如果是使用域帐户登录,那么DC可以“看到”认证活动,而被访问的真实主机只“看到”登录活动。
所以“审计帐户登录事件”是主要用于DC上的审计策略,但是在成员工作站上也有用,可以辨识对本地帐户的攻击。
既然通常DC来完成域帐户的认证,那么就会涉及到windows系统支持的2种认证协议:
NTLM和Kerberos。
NTLMVSKerberos
当用户使用域帐户登录windows2000及之后版本的操作系统时,工作站首先会尝试通过Kerberos协议联系DC。
(如果系统没收到响应的话,会回退使用NTLM)。
并且Widows2000及之后的版本使用不同的事件ID记录NTLM和Kerberos活动,所以比较容易区分。
由于Kerberos提供了客户端和服务器间的双向认证(NTLM只支持客户端向服务器的认证)。
并且NTLM的安全性较Kerberos弱一些,更容易被嗅探数据包进行破解。
而且如果外部的攻击者攻击某个域的帐户,通常会看到NTLM认证事件,而不是Kerberos。
因为他们不是本域的成员或信任域,登录尝试会使用NTLM。
NTLM和Kerberos协议的工作机理这里暂时不详细说明了,而且由于自己目前对域这一块不是很熟悉,暂且跳过使用域帐户登录方式的日志分析,先从本地用户方式的认证开始。
以后有机会再搭建域的实验环境,然后进行使用域帐户的登录活动分析。
三、日志类型详解
前面已经说过了,windows有5种帐户登录方式,所以我们一个个来看。
1、本地交互式登录,也就是我们每天最常使用的登录方式。
如果成功登录的话,会产生ID为680的事件,
如上图所示,我们从中可以获取到的有用信息有:
认证事件的时间、结果为成功(审核成功)、登录帐户为“administrator”、(描述中的部分)、被登录的主机名(WIN2003)。
接下来看看登录失败是什么记录,这里第1次使用不存在的用户名登录、第2次使用正确的用户名但是错误密码。
从日志中我们可以很遗憾地看到,虽然是登录失败事件,但是事件ID仍然是680(windows2000失败事件ID为681,Windows2003把成功和失败事件都标识为ID680)。
但是类型为“审核失败”,并且头字段中的用户名由原来的“Windows2003\Administrator”变成了“NTAUTHORITY\SYSTEM”。
描述信息中的登录帐户记录了尝试登录使用的真实用户名,错误代码也会根据认证失败的原因而变化。
据微软的说明,每种错误代码对应的原因如下表格:
0xC000006A
Anincorrectpasswordwassupplied
0xC000006F
Theaccountisnotallowedtologonatthistime
0xC0000064
Theaccountdoesnotexist
0xC0000070
Theaccountisnotallowedtologonfromthiscomputer
0xC0000071
Thepasswordhasexpired
0xC0000072
Theaccountisdisabled
2、使用RDP协议进行远程登录,这也是日常经常遇到的情况。
首先是成功登录,如下图所示,从中可以看到ID仍为680,并且与本地登录没有任何明显区别。
并且描述信息中的主机名(源工作站)仍为被尝试登录主机的主机名,而不是源主机名。
然后使用不存在的用户名和错误密码分别登录失败1次,产生的日志与第1种一样,所以不再附图。
3、远程访问某台主机的共享资源,如某个共享文件夹。
首先是使用正确的用户名和密码访问远程共享文件夹,如下图所示。
从中可以发现头字段和描述字段中的用户名都为访问共享文件夹时使用的用户名,并且描述信息中的源工作站名也为发出访问共享文件夹请求的主机的真实主机名,与头字段中的计算机名字段的主机名不同。
这里说明一下,当访问某个主机的共享资源时,例如在点击“开始—运行”后输入“\\192.168.10.1\share”时,Windows默认使用当前登录的凭证去访问共享资源,如果当前凭证的用户名在被访问主机上不存在或者密码不一致时会产生多条“审核失败”事件,如下图所示。
并且会在描述字段中记录真实的用户名和主机名,同样会有错误代码。
此外,如果访问共享资源使用的帐户名、密码正确,但是该用户对指定的共享文件夹没有访问权限时仍然会有ID为680的认证成功事件产生。
4、创建任务计划,并指定以某个用户来执行。
首先使用正确的用户名和密码创建一个任务计划,在该任务计划完成后同样会看到“帐户登录”成功事件,如下图所示。
从图中可以看到头字段中的用户名和描述字段中的用户名都是创建任务计划时指定的有效用户。
如果创建任务计划时输入错误密码,则无法创建任务计划,并且会有“帐户登录”失败日志生成,如右图所示,和一般的认证失败事件没有区别。
但奇怪的是使用无效的用户名创建任务计划时没有“帐户登录”失败日志生成。
5、以服务方式运行
启用某个服务,并指定以某个帐户运行。
这里同样先使用正确的用户名和密码设置服务,然后手工方式启动服务。
可以看到有“帐户登录”的成功事件,如下图所示。
从图中可以看到头字段中的用户名和描述字段中的用户名都是开启服务时指定的特定用户。
这里说明一下,实验时以某特定用户启动服务但报错,但是会有成功认证的事件生成。
如果指定用户为系统默认的“NTAUTHORITY\NetworkService”或“NTAUTHORITY\LocalService”来运行,则密码随意输入也可正常启动服务。
且不会有认证事件的日志生成。
如果指定以某特定帐户运行时输入的无效密码,则在服务启动时会报错,且会有“帐户登录”的失败事件生成,如下图所示:
从图中可看到头字段的用户是“SYSTEM”,描述信息中的登录帐户字段才是真正的用户名,并且错误代码指明失败原因是密码错误。
最后我们总结一下,共有5种方式登录Windows主机进行身份认证,分别是:
本地交换、远程访问、资源共享访问、任务计划和服务运行。
并且从这些日志中我们也可看到有用的信息并不是很多,所以需要配合“登录/登出“事件来一起分析用户的登录行为。
ok,那么在下一篇文章我们开始分析“登录/登出“日志,看看它们能否提供更多的信息给我们。
1、本地方式的登录和登出
Randy大神在书中只提到了Windows使用两个事件ID528和540记录用户成功的登录(后者对应网络类型的登录),登出使用ID530。
然而事实上同时发生的事件不只限于这些,那么让我们来看看用户简单的登录和登出活动至少会触发那些事件。
首先是成功的登录,从日志分析来看至少会有2个事件发生,分别为ID552和528,以下从左到右分别是各自的截图。
现在来各种进行详细分析,首先是ID552事件,该事件说明有人使用身份凭据在尝试登录,并且头字段中的用户名为SYSTEM。
看看描述信息中有什么好东西:
使用明确凭据的登录尝试:
(说明有人在尝试登录)
登录的用户:
用户名:
WIN2003$(主机名加了$后缀)
域:
WORKGROUP(主机的域名,此例中主机在名称为“WORKGROUP”的工作组中)
登录ID:
(0x0,0x3E7)
登录GUID:
-
凭据被使用的用户:
目标用户名:
Administrator(登录使用的用户名)
目标域:
WIN2003(要登录的主机名)
目标登录GUID:
目标服务器名称:
localhost
目标服务器信息:
调用方进程ID:
1612
源网络地址:
127.0.0.1(从IP地址很容易判断是本地登录)
源端口:
0
这里有一点要说明一下,Windows对这条日志的解释是“一个已登录的用户尝试使用另外一个用户凭证创建登录会话,例如使用“RUNAS”命令来运行某个可执行文件”。
但事实上第1次用户成功登录后也会产生这个事件。
接着是ID528事件,此时头字段中的用户名也变成真实的用户名,看看描述信息中有什么东西:
登录成功:
(说明用户已成功登录)
WIN2003(被登录主机所属的域的域名,如果不在域中为主机名)
(0x0,0x37BF9)(此登录ID在计算机重启前会保持其唯一性,重启后可能会被再次使用。
该ID很重要,因为可以关联用户随后的很多活动如对象访问!
)
登录类型:
2(各种类型含义及数字见后面的表格)
登录进程:
User32
身份验证数据包:
Negotiate
工作站名:
WIN2003(记录发起登录请求的计算机的Netbios名)
调用方用户名:
WIN2003$
调用方域:
WORKGROUP
调用方登录ID:
(0x0,0x3E7)(注意,此ID和ID552事件描述信息的登录ID是一样的)
传递服务:
127.0.0.1(同样从IP地址很容易判断是本地登录)
有意思的事情发生了,ID528事件的调用方登录ID和和ID552的登录ID是一样,那么我们能不能做个大胆的猜想呢?
在本地登录成功前,系统本身先已创建了登录会话,然后此会话再创建真实的用户会话。
呵呵,只是随便猜猜而已。
登录类型对应含义如下表,上篇文章中常见5种登录方式对应数字分别为2、3、4、5、10。
登录类型ID
登录方式
描述信息
2
Interactive
Auserloggedontothiscomputerattheconsole
3
Network
Auserorcomputerloggedontothiscomputerfromthenetwork
4
Batch
Batchlogontypeisusedbybatchservers,whereprocessesmightrunonbehalfofauserwithouttheuser'
sdirectintervention
5
Service
AservicewasstartedbytheServiceControlManager
7
Unlock
Thisworkstationwasunlocked
8
NetworkCleartext
Auserloggedontoanetworkandtheuserpasswordwaspassedtotheauthenticationpackageinitsunhashed(plaintext)form.Itispossiblethattheunhashedpasswordwaspassedacrossthenetwork,forexample,whenIISperformedbasicauthentication
9
NewCredentials
Acaller(process,thread,orprogram)cloneditscurrenttokenandspecifiednewcredentialsforoutboundconnections.Thenewlogonsessionhasthesamelocalidentity,butitusesdifferentcredentialsforothernetworkconnections.
10
RemoteInteractive
AuserloggedontothiscomputerremotelyusingTerminalServicesoraRemoteDesktopconnection.
11
CachedInteractive
Auserloggedontothiscomputerwithnetworkcredentialsthatwerestoredlocallyonthecomputer.Thedomaincontrollerwasnotcontactedtoverifythecredentials
此外,如果登录的用户名有某些权限(通过”本地安全策略“分配给该用户),在用户成功登录时还会有ID576事件发生,如下图所示:
描述信息如下:
指派给新登录的特殊权限:
Administrator
WIN2003
(0x0,0x37BF9)
特权:
SeSecurityPrivilege
SeBackupPrivilege
SeRestorePrivilege
SeTakeOwnershipPrivilege
SeDebugPrivilege
SeSystemEnvironmentPrivilege
SeLoadDriverPrivilege
SeImpersonatePrivilege
从描述信息中我们可以看到名称为“Administrator”的用户所拥有的权限列表。
接下来看看失败的本地登录,首先是无效用户名、其次是有效用户名但是错误密码。
从图中可以看到,登录失败后会有ID529的事件产生。
并且两者头字段的信息没有什么区别,用户名都是“SYSTEM”。
那么看看描述信息中有什么信息和区别。
登录失败:
原因:
用户名未知或密码错误
test1
2
工作站名称:
1100
127.0.0.1
administrator
从描述信息可以看到两者没有什么区别,唯一不同的是用户名,并且登录失败原因都一样。
登录类型同样给出了用户登录的方式,为本地登录(数字为2)。
有意思的是调用方用户名也是“主机名+$”的形式。
用户正常注销登出的话,也不是简单的一个事件。
事实上会有2个事件产生,ID分别为551和538。
截图如下:
看来微软在这点做得够细致了,先会有ID551事件说明有用户要求注销,接着ID538事件说明用户已成功注销。
从头字段和描述信息中都可以看到真实的用户名,登录ID,并且ID538事件还包括用户的登录方式。
微软的官方解释中有这样的说明:
“ID551事件说明用户发起注销请求,因此包含用户的安全信息和允许用户访问对象的主要访问令牌会从内存中擦除。
因此在令牌擦除后用户无法访问资源如文件、注册表。
当注销过程完成后ID538事件产生。
如果ID538事件没有在551事件后出现,一个程序或服务可能没有正确地管理访问令牌。
尽管用户无法访问对象,这个程序或服务可能有缓存的访问令牌并保留访问对象的能力”。
2、远程方式的登录和登出
使用mstsc远程登录