应急响应–日志分析
文章目录
- 一、Windows日志
- 二、Linux日志
- 三、Web日志
-
- 3.1、IIS中间件日志
- 3.2、Apache中间件日志
- 3.3、Tomcat中间件日志
- 3.4、Weblogic
- 3.5、Nginx中间件日志
一、Windows日志
Windows日志记录着Windows系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件,掌握计算机在特定时间的状态,以及了解用户的各种操作行为,并且包括有关系统、安全、应用程序的记录。
Windows系统之后,日志文件通常分为系统日志(SysEvent) 、应用程序日志(AppEvent) 和安全日志(SecEvent)
3种:
系统日志:
记录操作系统组件产生的事件,主要包括驱动程序、系统组件和应用软件的崩溃及数据。Vista/Win7/Win8/ /Win10/Server 2008/Server 2012默认位置为:C:WINDOWS\system32\winevt\Logs\System.evtx
应用程序日志:
包含由应用程序或系统程序记录的事件,主要记录程序运行方面的事件。Vista/Win7/Win8/ /Win10/ Server 2008/Server 2012默认位置为:C:\WINDOWS\system32\winevt\Logs\Application.evtx
安全日志:
记录系统的安全审计事件,包含各种类型的登录日志、对象访问日志、进程追踪日志、特权使用、账号管理、策略变更、系统事件。Vista/Win7/Win8/ /Win10/Server 2008/Server 2012默认位置为C:\WINDOWS\system32\winevt\L .ogs\Security.evtx
安全日志是应急响应中需要重点关注的,可基于安全日志对系统和应用程序日志进行排查。
在日志文件中所有事件只能拥有其中的一个事件级别
,具体的事件级别如下:
1、信息事件:指应用程序、驱动程序或服务的成功操作事件。
2、警告事件:指不是直接的、主要的,但会导致将来问题发生的事件。如当磁盘空间不足或未找到打印机时,都会记录一个“警告”事件。
3、错误事件:指用户应该知道的重要问题,通常是功能和数据的丢失。如一个服务不能作为系统引导被加载,就会产生一个错误事件。
4、成功审核(Success audit):表示成功的审核安全访问尝试,主要是指安全性日志,包括用户的登录/注销、对象访问、特权使用、账户管理、策略更改、详细跟踪、目录服务访问、账户登录等事件,其中所有成功登录的系统都会被记录为“成功审核”事件。
5、失败审核(Failure audit) :表示失败的审核安全登录尝试,如用户试图访问网络驱动器失败,该尝试就会被作为失败审核事件记录下来。
不同的事件(EVENT ID) 代表了不同的意义,一些常见的安全事件说明如下表。
事件ID | 说明 |
---|---|
4624 | 登录成功 |
4625 | 登录失败 |
4634 | 注销成功 |
4647 | 用户启动的注销 |
4672 | 使用超级用户(如管理员)进行登录 |
4720 | 创建用户 |
每个成功登录的事件都会标记一个登录类型,不同登录类型代表不同的方式,具体说明如下表:
登录类型 | 描述 | 说明 |
---|---|---|
2 | 交互式登录(Interactive) | 用户在本地进行登录 |
3 | 网络( Network) | 最常见的情况是连接到共享文件夹或共享打印机 |
4 | 批处理( Batch) | 通常表明某计划任务启动 |
5 | 服务(Service) | 每种服务都被配置在某个特定的用户账号下运行 |
7 | 解锁(Unlock) | 屏保解锁 |
8 | 网络明文(Network Cleartext) | 登录的密码在网络上是通过明文传输的,如FTP |
9 | 新凭证(New Credentials) | 使用带Netonly参数的RUNAS命令运行一个程序 |
10 | 远程交互(Remote Interactive) | 通过终端服务、远程桌面或远程协助访问计算机 |
11 | 缓存交互(Cached Interactive) | 以一个域用户登录而又没有域控制器可用 |
Windows日志分析思路
:攻击者在对系统进行攻击后,可能会在操作系统上添加用户,远程登录后会安装一些木马,这时候我们首先查看是否创建了用户,然后查看该用户是否成功登录,再次查看用户什么时间注销。基于这个时间段,排查系统日志,查看安装了哪些程序。可通过在事件查看器中搜索具体的事件ID,然后对攻击者行为进行判断。
二、Linux日志
目前新版本的Linux系统的日志系统都是rsyslog的,rsyslog是syslog的多线程增强版,其配置信息位于/etc/rsyslog.conf
。
syslog主要是用来提供日志记录功能的,Linux系统内核和许多程序都会产生各种错误信息、警告信息和其他的提示信息,而syslog服务就会将这些信息写到日志文件中,方便我们后续查看分析。syslog可以根据日志的类别和优先级将日志保存到不同的文件中,日志的优先级别数字等级越小,其优先级越高,消息也越重要。
日志优先级别 | 英文单词 | 中文 | 说明 |
---|---|---|---|
级别 | 英文单词 | 中文释义 | 说明 |
0 | EMERG | 紧急 | 导致主机系统不可用 |
1 | ALERT | 警告 | 必须马上采取措施解决问题 |
2 | CRIT | 严重 | 比较严重的情况 |
3 | ERR | 错误 | 运行出现错误 |
4 | WARNING | 提醒 | 可能影响系统功能,是需要提醒用户的重要事件 |
5 | NOTICE | 注意 | 不会影响正常功能,但是需要注意的事件 |
6 | INFO | 信息 | 一般信息 |
7 | DEBUG | 调试 | 程序或系统的调试信息等 |
在Linux中常见的日志文件,默认配置下,日志文件通常保存在/var/log
目录下:
日志文件 | 说明 |
---|---|
/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 | 记录系统中所有用户最后一次登录时间的日志。这个文件是二进制的,不能直接使用vi查看,而要使用lastlog 命令 |
/var/log/wtmp | 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。这个文件是二进制的,不能直接使用vi查看,而要使用last命令 |
/var/log/utmp | 记录当前已经登录的用户信息,会随着用户的登录和注销不断变化,只记录当前登录用户的信息。这个文件不能直接使用vi查看,而要使用w、who、users 等命令 |
/var/log/secure或者/var/log/auth.log | 记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,如SSH登录、su切换用户、sudo授权,以及添加用户和修改用户密码都会记录在这个日志文件中,为了方便查阅,可以把内核信息与其他信息分开,单独保存到一个独立的日志文件中。 |
在应急响应日志排查中,需要重点分析的日志:/var/run/utmp、/var/log/lastlog、/var/log/wtmp、/var/log/btmp 、/var/log/secure、软件安装日志
等。
1、/var/run/utmp
日志
记录当前已经登录的用户信息,会随着用户的登录和注销不断变化,只记录当前登录用户的信息。这个文件不能直接使用vi查看,而要使用w、who、users 等命令。
w命令
:查询utmp文件,并显示当前系统中每个用户和它所运行的进程信息。
who命令
:查询utmp文件,并报告当前登录的每个用户。Who命令的默认输出包括用户名、终端类型、登录日期及远程主机。
users命令
:用单独的一行打印出当前登录的用户,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,其用户名将显示相同的次数。
2、/var/log/lastlog
”日志
记录系统中所有用户最后一次登录时间的日志。这个文件是二进制的,不能直接使用vi查看,而要使用lastlog 命令。
3、/var/log/wtmp
日志
永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。这个文件是二进制的,不能直接使用vi查看,而要使用last命令。
4、/var/log/btmp
日志
记录错误登录日志。这个文件是二进制的,不能直接使用vi查看,而要使用lastb命令。如果该日志文件过大可以清空。
5、/var/log/auth.log
日志
记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,如SSH登录、su切换用户、sudo授权,以及添加用户和修改用户密码都会记录在这个日志文件中,为了方便查阅,可以把内核信息与其他信息分开,单独保存到一个独立的日志文件中。
6、软件安装日志
在应急响应过程中,软件安装日志也是需要排查的内容,如“/var/log/yum.log或“/var/log/
yum.log-时间”中会显示yum安装的日志,“ /root/install.log"中存储了安装在系统中的软件包
及其版本信息;“/root/ install.log.syslog”中存储了安装过程中留下的事件记录。
7、自带的日志查看程序
我们在找到相关日志之后,信息量是非常巨大的,此时可以通过关键字的方法定位我们具体需要查找的内容,Linux下主要是利用Shell命令对安全日志进行分析。
三、Web日志
Web日志会记录用户对Web页面的访问操作行为。我们可以从日志中分析出在什么时间、有哪些IP地址访问了网站中的什么资源、访问是否成功等。同时Web日志也记录了攻击者的一些信息,如攻击者IP、攻击语句。通过对日志进行大量的分析就可以追踪溯源。
3.1、IIS中间件日志
IIS它主要用来解析ASP、ASA、CER这3种文件格式的文件,也可结合环境资源包解析PHP等。IIS是一种Web (网页)服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等,不同IIS日志的默认目录不一样,也可自定义。
IIS日 志文件的格式为“ex+年份的末两位数字+月份+日期”,文件后缀是.log,如2022年3月24日的日志生成文件是“ex220324.log”,默认为按天数生成。
IIS每条日志的格式由data、time、c-ip、cs-method、cs-uri-stem、 s-port、s-ip、cs(User-Agent)、sc-status、sc-bytes、cs-bytes
组成。
date | 发出请求时的日期。 |
time | 发出请求时的时间。 |
c-ip | 客户端IP地址。 |
cs-method | 请求中使用的HTTP方法,如GET方法和POST方法。 |
cs-uri-stem | URI资源, 记录作为操作目标的统一资源标识符,即访问的页面文件。 |
s-port | 为服务配置的服务器端口号。 |
s-ip | 服务器的IP地址。 |
cs(User-Agent) | 用户代理,包括客户端浏览器、操作系统等情况。 |
sc-status | 协议状态,记录HTTP状态代码,其中,200表示成功,403表示没有权限,404表示找不到该页面。 |
sc-bytes | 服务器发送的字节数。 |
cs-bytes | 服务器接收的字节数。 |
3.2、Apache中间件日志
安装Apache后,Apache的配置文件“httpd.conf”中存在着两个可调配的日志文件,这两个日志文件分别是访问日志access_log/access.log
和错误日志error_log/error.log
。如果使用SSL服务,则可能存在ssl_access_log、ssl_error_log、ssl_request_log
这3种日志文件。
日志文件的路径根据安装方式不同,其位置也不一样,一般是在Apache安装目录的logs子目录中,日志文件路径可根据实际安装情况在Apache的配置文件中进行查找。
在应急响应中,重点关注的是访问日志,访问日志access_ log
记录了所有对Web服务器的访问活动。
示例如下:
127.0.0.1 - - [08/Jun/2021:11:43:08 +0800] "GET /sqli-labs/index.html_files/freemind2html.css HTTP/1.1" 200 1335
参数 | 说明 |
---|---|
远程主机IP | 表示访问网站的是谁。 |
空白(E- mail) | 为了避免用户的邮箱被垃圾邮件骚扰,使用–取代。 |
空白(登录名) | 用于记录浏览者进行身份验证时提供的名字。 |
请求时间 | 用方括号包围,采用“公用日志格式”或“标准英文格式”。时间信息最后的+0800表示服务器所处时区位于UTC之后的8小时。 |
方法资源协议 | 表示服务器收到的是一个什么样的请求。该项信息的典型格式是“METHOD RESOURCE PROTOCOL”。 |
状态代码 | 请求是否成功,或者遇到了什么样的错误。大多数时候,这项值为200,它表示服务器已经成功响应浏览器的请求。 |
发送字节数 | 发送给客户端的总字节数,可说明传输是否被打断(该数值是否和文件的大小相同)。 |
3.3、Tomcat中间件日志
Tomcat对应日志的配置文件是Tomcat目录下的/conf/logging.properties
。Tomcat默认有四类日志,分别是catalina、localhost、 manager、 host-manager
。 Tomcat的日志类别也可以进行自定义。
catalina.out | 表示标准输出(stdout) 和标准出错(stderr) ,所有输出到这两个位置时都会进入catalina.out,这里包含Tomcat运行自己输出的日志,以及应用里向console输出的日志。 |
catalina.yyyy-MM-dd.log | 表示Tomcat自 己运行的一些日志,这些日志还会输出到catalina.out,但是应用向console输出的日志就不会输出到这个日志文件中,它包含Tomcat 的启动和暂停时的运行日志,和catalina.out的内容不一样。 |
localhost.yyyy-MM-dd.log | 主要应用初始化(listener、 filter、 servlet) 未处理的异常后被Tomcat捕获而输出的日志。它也是包含Tomcat的启动和暂停的运行日志,但它没有catalina.yyy-MM-dd.log日志的记录全,只是部分日志。 |
localhost_access_log.yyy-MM-dd.txt | 是访问Tomcat的日志,对请求地址、路径、时间、协议和状态码都有记录。 |
host-manager.yyy-MM-dd.log | 存放Tomcat自带manager项目的日志信息。 |
manager.yyyy-MM-dd.log: | Tomcat manager项目专有的日志文件。 |
3.4、Weblogic
在默认配置情况下,WebLogic会有3种日志,分别是access log、Server log和domain log
,
WebLogic 8.x和WebLogic 9及其以后版本目录区别如下:
WebLogic 8.x版本:
access log在:$MW_HOME\user_projects\domains\<domain_name>\<server_name>\access.log"
;
server log在:$MW_HOME\user_ projects\domains\<domain_name>\<server_ name>\<server_name>.log"
;
domain logz在:$MW_HOME\user_projects\domains\<domain_name>\<domain_name>.log
;
WebLogic 9及其以后版本:
access log在:$MW_HOME\user_projects\domains\<domain_name>\servers\<server_name>\logs\access.log
server log在:$MW_HOME\user_projects\domains\<domain_name>\servers\<server_name>\logs\<server_name>.log
domain logz在:$MW_HOME\user_projects\domains\<domain_name>\servers\<adminserver_name>\logs\<domain_name>.log
$MW_HOME | WebLogic的安装目录; |
<domain_name> | 域的实际名称,是在创建域时指定的; |
<server_ name> | 是Server的实际名称,是在创建Server时指定的; |
<adminserver_ name> | 是管理服务器的实际名称,是在创建Admin Server时指定的。 |
3.5、Nginx中间件日志
Nginx中间件日志分为两种:访问日志和错误日志access.log、error.log
,默认情况下,access.log
日志会放在Nginx安装路径的logs目录中,如果通过yum源安装Nginx,那么access.log
的默认路径为/var/log/nginx/access.log
。也可以自定义日志文件的路径。