windows横向移动取证分析(一):RDP
世上只有一种英雄主义,就是在认清生活真相之后,依然热爱生活。by罗曼罗兰
在横向移动过程,攻击者可能会利用抓取到的明文密码,或者通过其他途径获取的凭证,使用RDP登录其他主机进行横向移动。此外,攻击者也可能通过暴力破解RDP登录口令的方式,登录目标主机。
下面先对使用RDP登录产生的事件ID进行简单介绍。
4624— 成功登录
4625 —失败的登录
4634/4647 — 成功注销
4648— 使用显式(explicit)凭证登录(RunAs)
4672 — 用户使用超级用户权限的登录 (Administrator)
4720 — 账户创建
我们经常在登录事件里面看到登录类型,不同的登录类型含义如下:
登录类型代码 |
说明 |
2 |
通过控制台(console)登录(键盘,KVM服务,或virtual客户端) |
3 |
网络登录(net use,powershell等) |
4 |
Batch Logon—通常由计划任务使用 |
5 |
Windows Service Logon |
7 |
使用凭证锁屏或者解锁屏幕;RDP会话重连接 |
8 |
网络登录时以明文方式发送凭证 |
9 |
使用不同于登录用户的凭证— RunAs /netonly |
10 |
远程交互登录(Remote Desktop Protocol) |
11 |
使用缓存的凭证登录 |
12 |
Cached Remote Interactive(类似类型10) |
13 |
Cached unlock(类似类型7) |
在使用Windows自带的RDP客户端登录时,在源主机侧和目的主机侧都会产生相关的记录,在对RDP登录事件进行分析时,我们一般需要关注下面3个方面:
1、错误的人: 即登录的用户本来不应该登录这台主机或没有登录需求。
2、错误的时间:即正常的管理员不会在这个时间登录。
3、错误的源IP:即登录的用户正常情况下不应该使用这个源IP登录。
下面分别介绍如何从事件日志,注册表,文件系统3个维度,对源主机侧和目的主机侧的相关取证数据进行分析。
security.evtx
4648 - 试图使用显式凭据登录。记录信息有:
- 当前登录的用户名
- 使用的凭据
- 目的主机名/IP
- 进程名
如下图:
Microsoft-WindowsTerminalServicesRDPClient%4Operational.evtx
1024- 目的主机名
1102- 目的IP地址
NTUSER\Software\Microsoft\Terminal Server Client\Servers
针对每个用户,会记录远程桌面目的地址及登录时使用的用户名:
对NTUSER.dat分析也能获得相同的信息,首先使用kape提取NTUSER.dat文件:
kape.exe --tsource c: --target RegistryHives --tdest .\RegistryHives
使用Registry Explorer可以看到登录的目标主机,使用的用户名,最后一次登录的时间(注意这个工具的时间需要加8小时):
Prefetch - C:\Windows\Prefetch\
在文件系统维度,prefetch会记录mstsc.exe的执行。prefetch文件位于c:\windows\Prefetch\mstsc.exe-{hash}.pf,可用PECmd.exe进行分析:
PECmd.exe -f 'c:\windows\prefetch\MSTSC.EXE-2A83B7D7.pf'
在上图中,可以看到rdp客户端总共执行了21次,最近执行的时间,及之前7次执行时间(时间需加8小时)。
Security Event Log - secrity.evtx
4624- 登录类型10,账户成功登录,类型7为重连接,记录源IP/登录用户名。
但测试过程发现windows 10有时不会记录登录类型为10的日志,使用RDP登录时,会产生登录类型3的日志,如下图:
4778(A session was reconnected to a Windows Station)/4779(A session was disconnected from a Windows Station) - 记录源IP,源主机名,登录用户名(不是总会存在):
Microsoft-Windows-RemoteDesktopServices-RdpCoreTS%4Operational.evtx
131- 连接尝试,记录源IP(登录用户名有时会记录,有时不会):
98 - 成功连接
Microsoft-Windows-TerminalServices-RemoteConnectionManager%4Operational.evtx
1149 - User authentication succeeded),记录源IP/登录的用户名,空白的用户名可能表明使用粘贴键。
“An Event ID 1149 DOES NOT indicate successful authentication to a target, simply a successful RDP network connection”.
Microsoft-Windows-TerminalServices-LocalSessionManager%4Operational.evtx
21(Remote Desktop Services:Session logon succeeded),22(Remote Desktop Services:Shell start notification received),25(Remote Desktop Services:Session reconncetion succeeded),记录源IP/登录的用户名。
21:
22:
25:
41- 记录登录的用户名:
Prefetch – C:\Windows\Prefetch\
由于注册表里面的信息其实作用不是很大,这里就不做介绍。
当使用rdp连接到目的主机时,目的主机会执行rdpclip.exe和tstheme.exe这2个程序,通过对这2个程序的prefetch文件进行分析,可以得出用户使用rdp登录主机的时间。
使用PECmd.exe对prefetch文件进行分析:
.\PECmd.exe -d 'c:\windows\prefetch' --csv .
查看结果:
也可用工具WinPrefetchView查看prefetch文件:
在实际对window事件日志分析过程,会发现使用eventvwr.exe分析会很慢,而且过滤器也比较简单,无法满足快速对关键事件过滤的需求。下面介绍利用几个第三方的工具对windows事件日志进行处理和分析。
分析事件日志可使用EvtxEcmd.exe这个工具。我们可以直接在目标主机对事件日志进行处理,然后把结果复制出来,也可以将日志文件提取后,离线进行分析。提取可使用kape.exe工具。
提取事件日志:
kape.exe --tsource C: --target EventLogs --tdest . --zip oa_192.168.159.134
将文件复制下来,离线分析:
EvtxECmd.exe -d '2020-12-06T121754_oa_192.168.159.134\C\Windows\system32\winevt\logs' --csv
使用TimelineExplorer.exe对处理结果进行查看和分析,TimelineExplorer.exe有着强大的过滤器,可帮助我们快速过滤出有效事件,关于该程序的更多详细使用方法,大家可以参考程序的帮助文档:
上面介绍了通过事件日志,注册表,文件系统3个维度,对RDP登录事件进行取证分析,及介绍了可高效处理分析事件日志的几个工具。在实际应急响应过程,主要还是关注事件日志维度,其他几个方面可作为一个参考。