系统日志分析
一、windows日志
- 如果windows服务被入侵,往往需要检索和分析相应的安全日志
- 除了安全设备,系统自带的日志就是取证的关键材料,但是日志数量庞大,需要高效分析windows安全日志
1.1、windows事件日志
- Windows事件日志文件实际上是以特定的数据结构的方式存储内容,其中包括有关系统,安全,应用程序的记录
- 每个记录事件的数据结构中包含了9个元素(可以理解成数据库中的字段):
- 日期/时间
- 事件类型
- 用户
- 计算机
- 事件ID
- 来源
- 类别
- 描述
- 数据等信息
- 查看日志的方法:Win+R,输入 eventvwr.msc 打开事件查看器
eventvwr.msc |
1.2、事件查看器
- 事件查看器将日志分为两大类,windows日志、应用程序日志和服务日志
- windows日志中又有应用程序、安全、setup、系统和forworded event这几种事件类型
1.2.1、应用程序日志
- 包含由应用程序或系统程序记录的事件,主要记录程序运行方面的事件
- 例如数据库程序可以在应用程序日志中记录文件错误,程序开发人员可以自行决定监视哪些事件
- 如果某个应用程序出现崩溃情况,那么我们可以从程序事件日志中找到相应的记录,也许会有助于问题的解决
- 日志默认位置: %SystemRoot%\System32\Winevt\Logs\Application.evtx
1.2.2、系统日志
- 记录操作系统组件产生的事件,主要包括驱动程序、系统组件和应用软件的崩溃以及数据丢失错误等
- 系统日志中记录的时间类型由Windows NT/2000操作系统预先定义
- 日志默认位置: %SystemRoot%\System32\Winevt\Logs\System.evtx
1.2.3、安全日志(主要看这个)
进行应急响应过程中主要看这个
- 包含安全性相关的事件,如用户权限变更,登录及注销,文件及文件夹访问,打印等信息
- 日志默认位置: %SystemRoot%\System32\Winevt\Logs\Security.evtx
1.3、事件级别
事件级别 | 说明 |
---|---|
信息 | 信息事件指应用程序、驱动程序或服务的成功操作的事件 |
警告 | 警告事件指不是直接的、主要的,但是会导致将来发生问题的事件。例如,当磁盘空间不足或未找到打印机时,都会记录一个“警告”事件 |
错误 | 错误事件指用户须知道的重要的问题,通常包括功能和数据的丢失。例如,如果一个服务不能作为系统引导被加载,那么它将会产生一个错误事件 |
成功审核 | 成功的审核安全访问尝试,主要是指安全性日志,这里记录着用户登录/注销、对象访问、特权使用、账户管理、策略更改、详细跟踪、目录服务访问、账户登录等事件 |
失败审核 | 失败的审核安全访问尝试。例如用户试图访问网络驱动器失败,则该尝试会被作为失败审核事件记录下来 |
1.4、事件ID介绍
Windows的日志以事件ID来标识具体发生的动作行为,可通过下列网站查询具体id进行的操作
https://docs.microsoft.com/en-us/windows/security/threat-protection/搜索 event+ 相应事件的ID
常见事件ID
事件ID 说明 4624 账号登录成功 4625 账号登录失败 4634 注销成功 4647 用户启动的注销 4672 使用超级用户(管理员)进行登录 4720 创建用户 4726 删除用户
二、Windows日志分析
2.1、本地交互式登录
- 4648-4624登录成功
https://learn.microsoft.com/zh-cn/windows/security/threat-protection/auditing/event-4624
首先是成功的登录,从日志分析来看至少会有2个事件发生,ID分别为 4648、4624,以下从上至下分别是各自的截图
- ID为4648事件,详细信息
该事件说明有人使用身份凭据在尝试 登录,并且头字段中的用户名为SYSTEM,看看描述信息中有什么:
试图使用显式凭据登录。 |
- ID为4624事件,描述信息
已成功登录帐户。 |
- 事件ID为4625事件
失败的本地登录,会产生ID 4625的事件日志
帐户登录失败。 |
2.2、RDP协议远程登录
- 4648-4624-4672-登录成功
- 使用mstsc远程登录某个主机时,使用的帐户是管理员帐户的话,成功的情况下会有ID为4648、4624、4672的事件产生
2.3、登录爆破实例
4624 –登录成功
4625 –登录失败
4634 – 注销成功
4647 – 用户启动的注销
4672 – 使用超级用户(如管理员)进行登录
前提
- 先关闭靶机的防火墙
- Window爆破一般是445(文件共享服务)和3389(远程桌面连接服务)
- 使用hydra爆破
hydra -l administrator -P /usr/share/wordlists/fasttrack.txt smb://192.168.43.133 -vV |
2.3.1、日志筛选
输入事件ID:4625 ,进行日志筛选
发现登录失败事件数过多,很可能是爆破登录
查看攻击的iP
筛选来自此IP的登录日志是4624,判断是否爆破登录成功
筛选当前日志,XML,手动编辑查询,输入如下XML过滤语句
<QueryList> |
如果筛选日志中事件则说明,密码被爆破出,
三、Linux日志
Linux系统拥有非常灵活和强大的日志功能,可以保存几乎所有的操作记录,并可以从中检索出我们需要的信息。
3.1、说明
- 内核及系统日志
- 由系统服务rsyslog统一进行管理,日志格式基本相似
- 用户日志
- 记录系统用来登录及退出系统的相关信息
- 程序日志
- 由相应的应用程序进行独立管理。如:web服务,ftp服务
3.2、常见日志文件
一台linux不是所有的日志文件都有
日志文件 | 文件说明 |
---|---|
/var/log/cron | 每当cron进程开始一个工作时,就会将相关信息记录在这个文件中。 |
/var/log/secure | 记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如SSH |
切换用户sudo | 授权甚至添加用户和修改用户密码都会记录在这个日志文件中 |
/var/log/wtmp | 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件,不能直接编辑查看,而需要使用last命令来查看 |
var/log/btmp | 记录所有失败登录日志信息。这个文件是二进制文件,不能直接编辑查看,使用lastb命令或last -f/var/log/btmp命令可以查看btmp文件 |
/var/log/cups | 涉及所有打印信息的日志。 |
/var/log/faillog | 包含用户登录失败信息。此外,错误登录命令也会记录在本文件中。 |
/var/log/messages | 记录系统重要信息的日志。这个日志文件中会记录Linux系统的绝大多数重要信息,如果系统出现问题时,首先要检查的就应该是这个日志文件。此外,mail,cron,daemon,kern和auth等内容也记录在var/log/messages日志中。 |
/var/log/dmesg | 包含内核缓冲信息(kernel ring buffer)。在系统启动时,会在屏幕上显示许多与硬件有关的信息。可以用dmesg查看它们。记录了系统在开机时内核自检的信息,也可以使用dmesg命令查看内核自检信息 |
/var/log/auth.log | 包含系统授权信息,包括用户登录和使用的权限机制等。 |
/var/log/boot.log | 包含系统启动时的日志。 |
/var/log/daemon.log | 包含各种系统后台守护进程日志信息。 |
/var/log/dpkg.log | 包括安装或dpkg命令清除软件包的日志。 |
/var/log/kern.log | 包含内核产生的日志,有助于在定制内核时解决问题。 |
/var/log/lastlog | 记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,不能直接编辑查看,而要使用lastlog命令查看 |
/var/log/user.log | 记录所有等级用户信息的日志。 |
/var/log/alternatives.log | 更新替代信息都记录在这个文件中。 |
/var/log/anaconda.log | 在安装Linux时,所有安装信息都储存在这个文件中。 |
/var/log/yum.log | 包含使用yum安装的软件包信息。 |
/var/log/maillog /var/log/mail.log |
包含系统运行电子邮件服务器的日志信息。例如,sendmail日志信息就全部送到这个文件中。 |
3.3、比较重要的日志
登录失败记录:/var/log/btmp #lastb |
- 记录用户的最后一次信息:/var/log/lastlog
- 查看的某系统用户最后一次登录的记录,一些系统用户从来不登录最后一次就是Never logged in。
- 不用直接查看该日志文件,通过命令:lastlog
- 举例:查看 root 用户最后一次登录的信息
- 登录用户的信息:/var/log/utmp
- 记录有关当前登录用户的信息在文件utmp中,utmp文件可以使用命令查询。如:who、w等
- who命令:访问utmp记录,显示当前正在登录的用户信息。
- w:与who命令相似,但显示的信息更加详细。
/var/log/wtmp
wtmp日志文件永久记录每个用户登录和退出、数据交换、关机及重启的信息。
wtmp文件被命令last和ac使用。
last命令:访问wtmp文件,显示自从文件第一次创建以来所有登陆过的用户
ac命令:统计登录的总时长,ac root:显示root用户登陆的总时长
kali中没有ac命令
登录失败日志:/var/log/btmp
- 记录Linux登陆失败的用户、时间以及远程IP地址
- 该文件是一个二进制保存的文件,直接使用 lastb命令查看
这是我的云服务器登录失败日志,可以将这些登录的ip放到微步或者其他在线威胁平台中分析
- 安全日志:/var/log/secure
- 现在新版的ubuntu、debian、kali已经没有这个文件了 , 换成了 /var/log/auth.log
- 一般用来记录安全相关的信息,记录最多的是哪些用户登录服务器的相关日志。例如:sshd会将所有信息(其中包括失败登录)记在这里
- 如果该文件很大,说明有人在破解你的root密码
四、日志分析工具
4.1、Log Parser
Log Parser(是微软公司出品的日志分析工具,它功能强大,使用简单,可以分析基于文本的日志文件、XML 文件、CSV(逗号分隔符)文件,以及操作系统的事件日志、注册表、文件系统、ActiveDirectory。它可以像使用 SQL 语句一样查询分析这些数据,甚至可以把分析结果以各种图表的形式展现出来。
Log Parser 2.2下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=24659
- 基本查询结构
Logparser.exe –i:EVT –o:DATAGRID "SELECT * FROM c:\xx.evtx" |
需要使用命令才能执行程序
使用Log Parser分析日志
查询登录成功的事件
登录成功的所有事件 |
查询登录失败的事件
登录失败的所有事件: |
系统历史开关机记录:
LogParser.exe -i:EVT –o:DATAGRID " SELECT TimeGenerated,EventID,Message FROM c:\ System.evt |
4.2、WIndowslogs(图形界面)
使用管理员权限运行,直接读取系统的日志进行分析
一次只显示10条需要手动翻页
4.3、LogonTracer (数据多时使用)
该工具下载与安装需要一定的科学上网能力,且需要Linux系统内存大于4G
LogonTracer这款工具是基于Python编写的,并使用Neo4j作为其数据库(Neo4j多用于图形数据库),是一款用于分析Windows安全事件登录日志的可视化工具。它会将登录相关事件中的主机名(或IP地址)和帐户名称关联起来,并将其以图形化的方式展现出来,使得在日志取证时直观清晰。
github地址 :https://github.com/JPCERTCC/LogonTracer
安装方式:
此安装方式基于 Kali Linux 已安装 docker 和 更新国内阿里apt源 的前提情况下 ,
安装 docker-compose
apt install -y docker-compose (无需科学上网,需要下载1-2分钟)
克隆 LogonTrace 项目
git clonehttps://ghproxy.com/https://github.com/JPCERTCC/LogonTracer.git
(无需科学上网,需要下载1分钟)
进入LogonTrace项目docker-compose文件夹,并构建镜像
cd LogonTracer/docker-compose
docker network create neo4j-network
docker-compose build (此步骤如果不使用科学上网,会非常慢,大概5-10分钟)
docker-compose up -d (此步骤为开启容器,因为该工具使用neo4j数据库,即使该命令执行完成且无报错,也要等待约2分钟才能正常打开)打开Kali firefox浏览器,访问http://127.0.0.1:8080并登陆
- 默认用户名 neo4j
- 默认密码 password
上传成功后,刷新页面,自动分析