应急响应——操作系统日志分析
windows日志概述
windows日志记录着Windows系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件,掌握计算机在特定时间的状态,以及了解用户的各种操作行为,为应急响应提供很多关键的信息。
- 硬件变化(如驱动安装)
- 网络连接(WIFI接入点访问)
- USB移动介质插入或拔出
- 用户登录或注销
- 用户修改系统事件
- 远程桌面访问(RDP)
windows日志文件本质上是数据库,其中包含有关系统、安全、应用程序的记录。记录的事件包含九个元素:日期/事件、事件级别、用户、计算机、事件ID、来源、任务类别、描述和数据信息。所有事件属于事件级别中的一类,具体的事件级别如下:
- 信息事件:指对应用程序、驱动程序或者服务的成功操作事件
- 警告事件:指不是直接的、主要的,但会导致将来问题发生的事件。例如磁盘空间不足或者未找到打印机
- 错误事件:指用户应该知道的重要问题,通常是功能或者数据的丢失。例如:某服务不能被系统正常加载
- 成功审核:表示成功的审核安全访问尝试,主要是指安全性的日志,包括用户的登录/注销、对象访问、特权使用、账户管理、策略更改、详细跟踪、目录服务访问、账户登录等事件、其中所有成功登录的系统否会被记录为“成功审核”事件。
- 失败审核:表示失败的审核安全登录尝试,如用户试图访问网络驱动器失败,该尝试就会被作为失败审核事件记录下来。
从Windows NT 3.1 版本起,微软公司就开始使用日志来记录各种事件的信息。在windows
NT/win2000/XP/server 2003中,日志文件扩展名一直是evt,存储位置为%systemroot%\system32\config”。从Vista/server 2008开始,日志文件的格式、结构和存储位置发生了改变,其文件扩展名改为evtx(XML格式),存储位置修改为“%systemroot%\system32\Winevt\logs”。日志通常分为三类,分别是系统日志(SYSEvent)、应用程序日志(AppEvent)、安全日志(Secevent)。
- 系统日志:记录操作系统组件产生的事件,主要包括驱动程序、系统组件和应用软件的崩溃及数据。Vista/win7/win8/server 2008/server 2012默认位置为“c:\windows\system32\winevt\logs\system.evtx”。
- 应用程序日志:包含由应用程序或系统程序记录的事件,主要记录程序运行方面的事件。Vista/win7/win8/server 2008/server 2012默认位置为“c:\windows\system32\winevt\logs\Application.evtx”。
- 安全日志:记录系统的安全审计事件,包含各种类型的登录日志、对象访问日志、进程追踪日志、特权使用、账号管理、策略变更、系统事件。安全日志是最常用到的日志。Vista/win7/win8/server 2008/server 2012默认位置为“c:\windows\system32\winevt\logs\security.evtx”。
windows 日志事件解析
常见的事件ID对应关系
事件ID | 说明 |
---|---|
4624 | 登录成功 |
4625 | 登陆失败 |
4634 | 注销成功 |
4647 | 用户启动的注销 |
4672 | 使用超级用户(如管理员)进行登录 |
4720 | 创建用户 |
每个成功登录的事件都会标记一个登录类型,不同登录类型代表不同的方式。常见登录类型对应关系
登录类型 | 描述 | 说明 |
---|---|---|
2 | 交互式登录 | 用户在本地进行登录 |
3 | 网络 | 最常见的情况就是连接到共享文件夹或者共享打印机 |
4 | 批处理 | 通常表明某个计划任务启动 |
5 | 服务 | 每种服务都被配置在某个特定的用户账号下运行 |
7 | 解锁 | 屏保解锁 |
8 | 网络明文 | 登录的密码在网络上通过明文传输的,如FTP |
9 | 新凭证 | 使用带/Netonly参数的RUNAS命令运行一个程序 |
10 | 远程交互 | 通过终端服务、远程桌面或远程协助访问计算机 |
11 | 缓存交互 | 以一个域用户登录而又没有与空气可用 |
在进行日志分析的时候,可使用windows自带的事件查看器对日志进行筛选。
打开事件查看器的方式:1. 计算机-管理-事件查看器 2. win+R输入eventvwr 3. 控制面板-管理工具-事件查看器
通过事件查看器的筛选日志功能可以输入事件ID来查看指定类别的日志
windows日志分析思路
对windows日志进行排查,首先查看是否创建了用户,然后查看该用户是否成功登陆,再次查看用户什么时间注销,基于这个时间段,排查系统日志,查看安装了哪些应用程序。
- 查看创建用户的事件(ID为4720)
- 查看登录成功的事件(ID为4624)
- 查看注销成功的事件(ID为4634)
- 查看系统日志,查看在上述时间段内发生的情况
windows日志分析工具
Log Parser Lizard是一款强大的GUI图形界面版的日志分析工具,除了能够分析windows事件日志外,也能分析IIS的W3C日志,同时还支撑TSV/CSV/TEXT文件、Active Directory、注册表、Google BigQuery、MySQL、SQL Server等。
安装该软件同时需要安装Log Parser 2.2,同时该软件运行需要.NET Framework(具体需要哪个版本,在运行Log Parser Lizard时会给出提示)
- 查询登录成功的所有事件:select * from security where EventID=4624
- 查询特定时间内登录成功的事件:select * from security where TimeGenerated>‘2020-01-08
00:00:01’ and TimeGenerated<‘2020-01-08 23:59:59’ and EventID=4624- 查看特定时间内登录成功的用户名和IP地址:select EXTRACT_TOKEN(Strings,5,’|’) as
EXTRACT_TOKEN(Strings,18,’|’) as IP from security where TimeGenerated > ‘2020-01-08 00:00:01’ and TimeGenerated<‘2020-01-08 23:59:59’ and EventID=4624
登录成功的用户名和IP地址在Strings和Messages中都有,在任意一个列中查找都可以,EXTRACT_TOKEN(列数,字段数,分隔符) as 别名。
- 列名:即Strings或者Messages
- 字段数:所提取的内容所在的编号,注意是从0开始的,所以用户名是5
- 分隔符:Strings中的分隔符是管道符63“|”,Messages中的分隔符是空格或者分号
- 别名:为便于记录和观看而起的名称
Messages中的详细内容记录了已经成功登录账户的信息,其中主要内容包括:
- 主题:账户名、账户域、登录ID、登录类型
- 新登录:安全ID、账户名、账户域、登录ID、登录GUID
- 进程信息:进程ID、进程名称
- 网络信息:工作站名称、源网络地址、源端口
- 身份验证信息:登录进程、身份验证数据包、传递的服务、数据报名(仅限NTLM)、密钥长度
- 采用分号分隔的查询语句:select EXTRACT_TOKEN(Messages,9,’:’) as EXTRACT_TOKEN(Messages,19,’:’) as IP from security where
TimeGenerated>‘2020-01-08 00:00:01’ and TimeGenerated<‘2020-01-08
23:59:59’ and EventID=4624- 采用空格分隔的查询语句:select EXTRACT_TOKEN(Messages,9,’ ‘) as EXTRACT_TOKEN(Messages,19,’ ') as IP from security where
TimeGenerated>‘2020-01-08 00:00:01’ and TimeGenerated<‘2020-01-08
23:59:59’ and EventID=4624
Linux操作系统日志
大部分Linux发行版默认的日志守护进程为syslog,位于“/etc/syslog”或者“/etc/syslogd”,默认配置文件为“/etc/syslog.conf”,任何希望生成日志的程序都可以向syslog发送信息。Fedora、Ubuntu、Rhel6、CentOS 6以上版本默认的日志系统都是rsyslog的,rsyslog是syslog的多线程增强版,配置文件为“/etc/rsyslog.conf”。
Linux系统内核和许多程序都会产生各种错误信息、警告信息和其他提示信息都会被写在日志文件中,完成这个过程的程序就是syslog,syslog可以根据日志的类别和优先级将日志保存到不同的文件中,数字级别越小,其优先级别越高,消息也越重要。
日志优先级
级别 | 英文 | 中文释义 | 说明 |
---|---|---|---|
0 | EMERG | 紧急 | 导致主机系统不可用 |
1 | ALERT | 警告 | 必须马上采取措施解决问题 |
2 | CRIT | 严重 | 比较严重的情况 |
3 | ERR | 错误 | 运行出现错误 |
4 | WARNING | 提醒 | 可能影响系统功能,是需要提醒用户的重要事件 |
5 | NOTICE | 注意 | 不会影响正常功能,但是需要注意的事件 |
6 | INFO | 信息 | 一般信息 |
7 | DEBUG | 调试 | 程序或系统的调试信息 |
Linux系统中常见的日志文件说明
日志文件 | 说明 |
---|---|
/var/log/cron | 记录系统定时任务的相关日志 |
/var/log/cups | 记录打印信息的日志 |
/var/log/dmesg | 记录系统在开机时内核自检的信息,也可以使用dmesg命令直接查看 |
/var/log/mailog | 记录邮件信息 |
/var/log/message | 记录Linux系统中绝大多数的重要信息,在系统出现问题时,首先要检查的就是这个日志文件 |
/var/log/btmp | 记录错误登录日志。这个文件是二进制的,不能直接用vi命令查看,而是使用lastb命令 |
/var/log/lastlog | 记录系统中所有用户最后一次登录时间的日志,这个文件是二进制的,使用lastb查看 |
/var/log/wtmp | 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。二进制文件,使用lastb查看 |
/var/run/utmp | 记录当前已经登录的用户信息,会随着用户的登录和注销不断变化,只记录当前登录用户的信息,这个文件不能直接用vi命令查看,使用w、who、users等命令 |
/var/log/secure | 记录验证和授权方面的信息,只要涉及账号和密码的程序都会被记录,如SSH登录、su切换用户、sudo授权,以及添加用户和修改用户密码都会记录在这个日志文件中 |
软件安装日志 | 例如“/var/log/yum.log”或“/var/log/yum.log-时间”中会显示yum安装的日志;“/root/install.log”中存储了安装在系统中的软件包及其版本信息;“/root/install.log.syslog”中存储了安装流程中留下的事件记录 |
Linux重要日志文件的解析
在应急响应日志排查中,需要重点分析的日志有“/var/run/utmp”、“/var/log/lastlog”、“/var/log/wtmp”、“/var/log/btmp”和“/var/log/secure”及软件安装日志等
Linux操作系统中需要借助shell命令对安全日志进行分析。
- 查看有哪些IP在暴力破解
基于登录失败的日志格式,关键字是“Failed password”,IP地址在第十一个字段,命令为“grep “Failed password for invalid” /var/log/secure | awk ‘{print $13}’ | sort | uniq -c | sort -nr”- 查找暴力破解的用户名字典是什么
命令:grep “Failed password for invalid” /var/log/secure | awk ‘{print $11}’ | sort | uniq -c | sort -nr
使用以上命令只能查看登陆失败的用户,要查看暴力破解是否成功还需要查看登录成功的用户信息。- 查看登录成功的用户及IP
命令:grep “Accepted” /var/log/secure | awk ‘{print $9,$11}’ | sort | uniq -c | sort -nr
如果要进一步分析是暴力破解登录还是正常登录,还可写入时间或者显示整条日志。
命令:grep “Accepted” /var/log/secure | awk ‘{print $0}’ | sort | uniq -c | sort -nr
- Java之AQS
- 为什么需要 AQS?AQS 的作用和重要性是什么?
- KPM字符串匹配next矩阵计算
- MDG convenience API示例代码
- 配置JKD环境变量
- 《棒球殿堂》:棒球联盟LEAGUE·埼玉西武狮
- CStdioFile 追加文件内容
- 文件服务器——NFS
- 三维偏序cdq分治
- C#使用EmguCV库(图像读取、显示、保存)(二)
- The Dirichlet Distribution 狄利克雷分布
- 【目标检测】目标检测中常见的评价指标
- 一个人在家怎么做自媒体?4个靠谱平台,门槛低、变现很简单
- PTA 2
- python可视化的优势
- C语言结构体详解(结构体定义,使用,结构体大小等)
- JScript 方法