Windows日志浅析总体来看,登录/登出事件对可以很好地追踪用户在一台主机上完整活动过程的起至点,和登录方式无关。
此外可以提供一些“帐户登录”没有的信息,例如登录的类型。
此外对终端服务的活动专门用两个事件ID来标识。
ok,我们开始分析,同样从5种类型分别进行分析。
1、本地方式的登录和登出Randy大神在书中只提到了Windows使用两个事件ID528和540记录用户成功的登录(后者对应网络类型的登录),登出使用ID530。
然而事实上同时发生的事件不只限于这些,那么让我们来看看用户简单的登录和登出活动至少会触发那些事件。
首先是成功的登录,从日志分析来看至少会有2个事件发生,分别为ID552和528,以下从左到右分别是各自的截图。
现在来各种进行详细分析,首先是ID552事件,该事件说明有人使用身份凭据在尝试登录,并且头字段中的用户名为SYSTEM。
看看描述信息中有什么好东西:使用明确凭据的登录尝试: (说明有人在尝试登录)登录的用户:用户名: WIN2003$ (主机名加了$后缀)域: WORKGROUP (主机的域名,此例中主机在名称为“WORKGROUP”的工作组中)登录ID: (0x0,0x3E7)登录GUID: -凭据被使用的用户:目标用户名: Administrator (登录使用的用户名)目标域: WIN2003 (要登录的主机名)目标登录GUID: -目标服务器名称: localhost目标服务器信息: localhost调用方进程ID: 1612源网络地址: 127.0.0.1 (从IP地址很容易判断是本地登录)源端口: 0这里有一点要说明一下,Windows对这条日志的解释是“一个已登录的用户尝试使用另外一个用户凭证创建登录会话,例如使用“RUNAS”命令来运行某个可执行文件”。
但事实上第1次用户成功登录后也会产生这个事件。
接着是ID528事件,此时头字段中的用户名也变成真实的用户名,看看描述信息中有什么东西:登录成功: (说明用户已成功登录)用户名: Administrator (登录使用的用户名)域: WIN2003 (被登录主机所属的域的域名,如果不在域中为主机名)登录ID: (0x0,0x37BF9) (此登录ID在计算机重启前会保持其唯一性,重启后可能会被再次使用。
该ID很重要,因为可以关联用户随后的很多活动如对象访问!)登录类型: 2 (各种类型含义及数字见后面的表格)登录进程: User32身份验证数据包: Negotiate工作站名: WIN2003 (记录发起登录请求的计算机的Netbios名)登录GUID: -调用方用户名: WIN2003$调用方域: WORKGROUP调用方登录ID: (0x0,0x3E7) (注意,此ID和ID552事件描述信息的登录ID是一样的)调用方进程ID: 1612传递服务: -源网络地址: 127.0.0.1 (同样从IP地址很容易判断是本地登录)源端口: 0有意思的事情发生了,ID528事件的调用方登录ID和和ID552的登录ID是一样,那么我们能不能做个大胆的猜想呢?在本地登录成功前,系统本身先已创建了登录会话,然后此会话再创建真实的用户会话。
呵呵,只是随便猜猜而已。
登录类型对应含义如下表,上篇文章中常见5种登录方式对应数字分别为2、3、4、5、10。
此外,如果登录的用户名有某些权限(通过”本地安全策略“分配给该用户),在用户成功登录时还会有ID576事件发生,如下图所示:描述信息如下:指派给新登录的特殊权限:用户名: Administrator域: WIN2003登录ID: (0x0,0x37BF9)特权: SeSecurityPrivilegeSeBackupPrivilegeSeRestorePrivilegeSeTakeOwnershipPrivilegeSeDebugPrivilegeSeSystemEnvironmentPrivilegeSeLoadDriverPrivilegeSeImpersonatePrivilege从描述信息中我们可以看到名称为“Administrator”的用户所拥有的权限列表。
接下来看看失败的本地登录,首先是无效用户名、其次是有效用户名但是错误密码。
从图中可以看到,登录失败后会有ID529的事件产生。
并且两者头字段的信息没有什么区别,用户名都是“SYSTEM”。
那么看看描述信息中有什么信息和区别。
登录失败:原因: 用户名未知或密码错误用户名: test1域: WIN2003登录类型: 2登录进程: User32身份验证数据包: Negotiate工作站名称: WIN2003调用方用户名: WIN2003$调用方域: WORKGROUP调用方登录ID: (0x0,0x3E7)调用方进程ID: 1100传递服务: -源网络地址: 127.0.0.1源端口: 0登录失败:原因: 用户名未知或密码错误用户名: administrator域: WIN2003登录类型: 2登录进程: User32身份验证数据包: Negotiate工作站名称: WIN2003调用方用户名: WIN2003$调用方域: WORKGROUP调用方登录ID: (0x0,0x3E7)调用方进程ID: 1100传递服务: -源网络地址: 127.0.0.1源端口: 0从描述信息可以看到两者没有什么区别,唯一不同的是用户名,并且登录失败原因都一样。
登录类型同样给出了用户登录的方式,为本地登录(数字为2)。
有意思的是调用方用户名也是“主机名+$”的形式。
用户正常注销登出的话,也不是简单的一个事件。
事实上会有2个事件产生,ID分别为551和538。
截图如下:看来微软在这点做得够细致了,先会有ID551事件说明有用户要求注销,接着ID538事件说明用户已成功注销。
从头字段和描述信息中都可以看到真实的用户名,登录ID,并且ID538事件还包括用户的登录方式。
微软的官方解释中有这样的说明:“ID551事件说明用户发起注销请求,因此包含用户的安全信息和允许用户访问对象的主要访问令牌会从内存中擦除。
因此在令牌擦除后用户无法访问资源如文件、注册表。
当注销过程完成后ID538事件产生。
如果ID538事件没有在551事件后出现,一个程序或服务可能没有正确地管理访问令牌。
尽管用户无法访问对象,这个程序或服务可能有缓存的访问令牌并保留访问对象的能力”。
2、远程方式的登录和登出使用mstsc远程登录某个主机时,使用的帐户是普通用户的话(没有分配该用户任何权限)成功的情况下会有ID为552、528的事件产生,没有ID576事件。
这2个事件的头字段和本地方式基本没有什么区别,看看描述信息有什么不一样的地方:使用明确凭据的登录尝试:登录的用户:用户名: WIN2003$域: WORKGROUP登录ID: (0x0,0x3E7)登录GUID: -凭据被使用的用户:目标用户名: rdp目标域: WIN2003目标登录GUID: -目标服务器名称: localhost目标服务器信息: localhost调用方进程ID: 1984源网络地址: 192.168.10.2源端口: 1035登录成功:用户名: rdp域: WIN2003登录ID: (0x0,0x4C715)登录类型: 10登录进程: User32身份验证数据包: Negotiate工作站名: WIN2003登录GUID: -调用方用户名: WIN2003$调用方域: WORKGROUP调用方登录ID: (0x0,0x3E7)调用方进程ID: 1984传递服务: -源网络地址: 192.168.10.2源端口: 1035从这里可以看出至少有3个地方不一样,首先登录类型的ID为10,说明是远程交互式登录,其次是源网络地址和源端口。
如果有防火墙的日志的话,可以进行关联分析。
登录失败同样分别使用无效用户名和有效用户名、无效密码2种方式,结果都是产生ID529事件,与之前也没有什么区别。
描述信息如下:登录失败:原因: 用户名未知或密码错误用户名: rdp域: WIN2003登录类型: 10登录进程: User32身份验证数据包: Negotiate工作站名称: WIN2003调用方用户名: WIN2003$调用方域: WORKGROUP调用方登录ID: (0x0,0x3E7)调用方进程ID: 2640传递服务: -源网络地址: 192.168.10.2源端口: 1040从信息中可以看到,唯一不同且有价值的是登录类型的ID、源IP地址和源端口。
用户注销的话同样会有ID551和538事件产生,与本地登录一样(除了登录类型的数值),因此不再附图说明。
但是ID538事件产生时间会比551晚一点,做了几次实验有1分30秒、2分多都有,似乎不是固定的值。
如果使用RDP远程登录主机后,没有注销而是直接点×关闭窗口,会产生ID683事件,如果再次使用该用户和密码连接时,会产生ID682事件,截图分别如下:从描述信息中可以很清楚地看到会话中断和重新连接的事件,此时登录ID都一样,但是会话名称已经发生变化。
另外一种远程访问方式为远程协助,也会产生ID552、528、551和538事件(会伴随用户名为“ANONYMOUS LOGON”的成对ID540和538事件)。
只是其中的真实用户名变成“HelpAssistant_abae4f”,其中的“abae4f”不知道是不是随机生成,反正我做了2次实验都是这个。
3、网络访问的登录和登出这里访问共享文件夹的情况根据不同的情况会有几种不同的事件模式产生,分别进行说明。
这里先假设主机A上C盘目录下有名为“share”的文件夹,开启网络共享并且权限为A主机上的名为“rdp”的用户。
架设B主机上也有名为“Administrator”的管理员和名为“rdp”的用户。
a、没有给A主机上的”rdp“用户赋予任何权限,设置B主机的rdp用户和A主机上的密码一致,以rdp用户登录B主机,然后以在运行中输入“\\192.168.10.1\share”的方式访问A主机的共享文件夹,然后关闭共享文件夹窗口。
此时在A主机上会有事件模式为:有用户名为“rdp”的ID为540和538的事件产生(注意:此时登录时没有ID552事件),如下图所示:这些登录、登出事件的头字段中用户名均为rdp,但是计算机名还是被访问的主机名。
现在看看ID540事件的描述信息:成功的网络登录:用户名: rdp域: WIN2003登录ID: (0x0,0x75BCF)登录类型: 3登录过程: NtLmSsp身份验证数据包: NTLM工作站名: WIN2K3登录GUID: -调用方用户名: -调用方域: -调用方登录ID: -调用方进程ID: -传递服务: -源网络地址: 192.168.10.2源端口: 0从中我们可以发现除了登录类型变为“3”以为,身份验证数据包也变为“NTLM”,并且工作站的名称也是发出访问共享文件夹请求的B主机的真实主机名(这里让我很奇怪的是使用RDP方式访问时工作站名仍为被访问主机的主机名)。