本文为他人文章的学习笔记。
来源:电子取证(Forensics)-Windows日志分析
一款用于可视化分析恶意登录Windows系统的安全日志取证工具
日志简介
Windows系统默认以二进制XML Windows事件日志记录格式(由.evtx扩展名指定)将日志存储在%SystemRoot%\System32\Winevt\logs
目录中。日志也可以使用日志订阅远程存储。对于远程日志记录,运行Windows Event Collector服务(eventvwr)的远程系统订阅其他系统生成的日志。
日志类型
安全日志
%SystemRoot%\System32\Winevt\Logs\Security.evtx
记录系统的安全审计事件,包括各种类型的登录日志、对象访问日志、进程追踪日志、特权使用、账号管理、策略变更、系统事件。安全日志是调查取证中最常用到的日志。
系统日志
%SystemRoot%\System32\Winevt\Logs\System.evtx
记录操作系统组件产生的事件,主要包括驱动程序、系统组件和应用软件的崩溃以及数据丢失错误等。
应用程序日志
%SystemRoot%\System32\Winevt\Logs\Application.evtx
包含由应用程序或系统程序记录的事件,主要记录程序运行方面的事件,如数据库程序可以在应用程序日志中记录文件错误,程序开发任意可以自行决定监视哪些事件。
默认设置下,安全性日志是关闭的,管理员可以使用组策略来启动安全性日志,或在注册表中设置审核策略,以便当安全性日志满后使系统停止响应。
事件类型
信息:指应用程序、驱动程序或服务的成功操作的事件。
警告:警告事件不是直接的、主要的,但会导致将来问题发生的问题。如磁盘空间不足或未找到打印机时,都会记录一个警告事件。
错误:错误事件指用户应该知道的重要的问题。错误事件通常指功能和数据的丢失。如果一个服务不能作为系统引导被加载,那么它会产生一个错误事件。
成功审核:成功的审核安全访问尝试,主要是指安全性日志,这里记录着用户登录/注销、对象访问、特权使用、账户管理、策略更改、详细跟踪、目录服务访问、账户登录等事件,例如所有的成功登录系统都会被记录为“成功审核”事件。
失败审核:失败的审核安全登录尝试,例如用户试图访问网络驱动器失败,则该尝试会被作为失败审核事件记录下来。
事件ID字段
Log Name:存储事件的事件日志的名称,在处理从同一系统提取的大量日志时很有用。
Source:生成事件的服务、Microsoft组件或应用程序。
Event ID:分配给每种已审计活动类型的代码。
Level:分配给相关事件的严重性。
User:在记录事件时,触发活动或源正在运行的用户上下文的用户账户。注意,该字段通常表示“系统”而不是记录事件原因的用户。
OpCode:由生成日志的源分配。
Logged:记录事件的本地系统日期和时间。
Task Category:由生成日志的源分配。
keywords:用于对事件进行分组或排序。
Computer:记录事件的计算机。当检查从多个系统收集的日志时,此功能很有用,但不应被视为导致事件的设备。
Description:一个文本块,其中记录了特定于所记录事件的其他信息,对于取证人员来说,这通常是最重要的字段。
查看本地日志
设置开启:
开始->管理工具->本地安全策略->本地策略->审核策略
修改审核策略后打开eventvwr.msc
时,日志中的内容会有所增加。
常用事件id见这里。
打开事件查看器后可能会发现其中记录了很多错误事件,但在使用计算机的过程中并没有感知到,这是因为一些错误在后来的启动中进行了自我纠正。
事件日志分析工具
事件日志查看器
运行eventvwr.msc
可以根据事件ID、事件级别、事件来源、用户、计算机等属性进行搜索和过滤。
事件日志记录完整性判断
借助EventRecordID等属性进一步验证。
事件日志删除恢复
搜索事件日志的历史备份(如卷影复制VSC中的历史快照)
从未分配空间恢复已删除日志。
卷影复制(VSC)快照中提取事件日志
Windows启用卷影复制功能后系统的重大变动都将触发系统自动备份注册表、事件日志等重要数据文件,此外还可能存有用户的文件历史备份。
卷影复制快照查看可以通过取证分析软件(如EnCase、X-ways等)、第三方工具(VSC Toolset、ShadowExplorer)或命令行vssadmin进行提取。
vsadmin系统自带命令行
卷影复制快照查看可以通过系统内置的命令行vssadmin和mklink工具进行快照挂载,使用FTK Imager制作逻辑证据文件。
VSC Toolset卷影复制快照辅助取证工具
VSC Toolset是一个适合卷影复制分析的取证辅助工具(可集成多种小工具,如diff,RegRipper、LogParser来提取不同类型数据,或对比不同快照的差异数据)。
未分配空间恢复事件日志
EVT文件头
\x30\x00\x00\x00LfLe
记录头部:LfLe
EVTX文件头
ElfFile
记录头部:ElfChnk
EVTX日志记录格式
EXVT日志记录带有ElfChnk头部特征,每一条记录长度为64KB,因此可以从未分配空间挖掘EVTX的日志记录数据。
Log Parser Lizard
一款好用的日志分析工具,可以把分析结果以图形形式展现出来。可以使用SQL语句进行查询,可以根据状态码筛选结果。
LogonTracer
环境搭建
在kali中启动docker、拉取镜像。
运行镜像
docker run --detach --publish=7474:7474 --publish=7687:7687 --publish=8080:8080 -e LTHOSTNAME=[本地IP] jpcertcc/docker-logontracer
连接Neo4j数据库,使用浏览器访问
http://[本地IP]:7474
默认账户neo4j/neo4j
除去该文章内提及的踩坑以外,我还遇到了其他问题。如docker内没有vi命令,在apt-get时一直下载不了,所以尝试给docker换源,详细可见docker 20.10.3 配置国内源
在输入框内执行
MATCH(n)OPTIONAL MATCH (n)-[r]-()DELETE n,r
在[本地IP]:8080打开LogonTracer,上传日志文件。
我这边可以上传但无法解析,根据这篇文章中的内容,应该是因为日志中只有IP为127.0.0.1的缘故。
账户登录和登录事件
账户登录是Microsoft的身份验证术语。登录是用于指代获得资源访问权限的账户的术语,账户登录和登录事件都记录在安全事件日志中。域账户的身份验证(账户登录)由Windows网络中的域控制器执行。本地账户由它们所在的本地系统进行身份验证。账户登录事件将由执行身份验证的系统记录。组策略可以轻松设置账户登录和登录事件的审核。
登录事件类型代码见这里。
通过RDP登录失败的记录可能会记录为Type 3而非Type 10。
可以通过查看状态码等信息了解事件的详细信息。
常见状态码
状态码 | 描述 |
---|---|
0xC0000064 | 用户名不存在 |
0xC000006A | 用户名正确但是密码错误 |
0xC0000234 | 用户被锁定 |
0xC0000072 | 账户被禁用 |
0xC000006F | 用户尝试在时间限制外登录 |
0xC0000070 | 工作站限制或违法身份验证策略的情况(事件ID 4820) |
0xC0000193 | 账户到期 |
0xC0000071 | 密码过期 |
0xC0000133 | DC与其他计算机之间的时钟不太同步 |
0xC0000224 | 用户需要在下次登录时更改密码 |
0xC0000225 | Windows发生错误,没有风险 |
0xc000015b | 用户尚未在此计算机上被授予请求的登录类型(也称为登录权限) |
远程桌面爆破防护
添加安全策略
管理工具->本地安全策略->账户策略->账户锁定策略
可以配置账户锁定时间、锁定阈值和重置账户锁定计数器。
端口修改
可以修改默认的远程登录端口。
注册表项
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
中Portnumber,把要修改的端口号转为16进制替换即可。