“ 操作系统上账号作为取证分析的一部分,通过分析主机上账号属性,可以帮助我们识别未知的用户帐户,清除账号后门。”
01
—
简介
获取系统中的用户帐户列表。
wmic useraccount get name, accounttype, sid, status
账号类型(AccountType)
256(UF_TEMP_DUPLICATE_ACCOUNT):本地用户帐户,适用于在其他域中具有主帐户的用户。此帐户仅向此域提供用户访问权限(而不是对信任此域的任何域)的访问权限。
512(UF_NORMAL_ACCOUNT): 表示典型用户的默认帐户类型。
2048(UF_INTERDOMAIN_TRUST_ACCOUNT):信任其他域的系统域的帐户。
4096(UF_WORKSTATION_TRUST_ACCOUNT):运行作为此域成员的 Windows 的计算机系统的计算机帐户。
8192(UF_SERVER_TRUST_ACCOUNT):作为此域成员的系统备份域控制器的帐户。
SID/RID
SID安全标识符(Security Identifiers),是标识用户、组和计算机帐户的唯一的号码。在第一次创建该帐户时,将给每一个帐户发布一个唯一的 SID。RID是指相对ID,是SID的最后一部分。指派给用户、计算机和组的RID从1000开始。500-999的RID被专门保留起来、表示在每个Windows计算机和域中通用的账户和组。
Rid=502,用于活动目录中的Kerberos票据
Rid=504, 用于链接到Windows Defender并由Windows Defender管理保护电脑。
Status
OK:代表账号是启用的,
Degraded:代表这些帐户都是禁用的。
在日志中可以通过查看事件ID 4722来检查用户何时以及由谁启用!
wevtutil qe security/f:text "/q:*[System[(EventID=4722)]]"
通过上图可以看到guest账号在7月13日被administrator账号启用
02
—
RID劫持分析
通过利用系统资源,可以在受害者设备上劫持任意原有的账户的RID,并分配到另一个用户账户。下面使用msf的windows/manage/rid_hijack模块为例,
该模块使用前提是需要system权限的meterpreter session,而后修改劫持账号与被劫持账户相关的注册表。下面是对每个参数的简单描述:
GETSYSTEM: 如果是true,就获取受害者的SYSTEM权限;
GUEST_ACCOUNT: 如果是true,就用受害者的Guest账户作为劫持者账户;
RID: RID会被分配给劫持者账户。该值应该是现有账户所有的,但会被劫持,默认值是500。
USERNAME: 设置后,会查询定义的用户账户,并将其看作是劫持者账户。如果是GUEST_ACCOUNT,该参数会被忽略。
PASSWORD: 劫持账号的密码。
回到受害主机上,可以看到guest账号已经激活。
再看guest账号的详细信息,还是guests组,但是cmd.exe启动的权限确实管理员。
通过安全日志可以看到利用该攻击生成两条日志,事件ID4738用户账号管理,guest账号被激活,事件ID4724用户账号密码被修改。
大概原理是RID劫持会对特定offset的F值修改,修改后会导致Windows在大多数关键操作系统进程中将劫持者账号的误认为是被劫持者的账号,因此就拥有了相应的访问权限。打开注册表HKLM\SAM\SAM\Domains\Account\Users\Names,可以看到guest账号的值为0x1f5,对应上一级的000001F5,打开该注册表可以看到 REG_BINARY值,F和V。这些值包含与每个账号安全描述相关的数据,包括账号RID的副本和是否启用标志。F值是低字节序的,RID值保存在offset 30h处,F401代表是administrator权限,enabled/disabled flag在offset 38h处。
03
—
总结
上面说了那么多,总结就是关于账户取证看两点,日志中找4738、4724,注册表找f401。