【网络安全】日志文件格式
日志文件格式概览
- 1. 简介
- 2. JSON(JavaScript 对象表示法)
- 2.1 JSON 语法元素包括:
- 2.2 系统日志 (Syslog)
- 2.3 Syslog 日志示例
- 2.4 Header
- 2.5 Structured-data
- 2.6 Message
- 2.7 优先级 (PRI)
- 3. XML (可扩展标记语言)
- 3.1 标签
- 3.2 元素
- 3.3 属性
- 4. CSV (逗号分隔值)
- 5. CEF (Common Event Format 通用事件格式)
- 6. 总结
1. 简介
在网络或系统中,日志记录着事件的发生情况。在信息安全领域,日志提供了组织内部各项活动的重要细节,比如某个用户在特定时间登录了某个应用程序。作为一名安全分析师,你将会使用**日志分析(Log Analysis)**来识别感兴趣的事件。掌握多种日志格式的结构和含义,对于你识别异常或恶意活动至关重要。本文将介绍以下几种常见的日志格式:
- JSON
- Syslog
- XML
- CSV
- CEF
2. JSON(JavaScript 对象表示法)
JSON 是一种用于存储和传输数据的轻量级文件格式,语法简洁,易于阅读和编写。它常用于 Web 和云环境中的数据交换。
2.1 JSON 语法元素包括:
-
键值对(Key-Value Pair)
键值对是一组表示两个关联项的数据:一个键及其对应的值。键值对由一个键、一个冒号和一个值组成。键值对的一个示例为"Alert": "Malware"
-
逗号(,)
用于分隔不同的键值对:"Alert": "Malware", "Alert code": 1090, "severity": 10"
-
双引号(" ")
双引号用于括起文本数据(也称为字符串),例如:"Alert": "Malware"
。包含数字的数据无需用引号括起来,例如:"Alert code": 1090
。 -
花括号({ })
用于包裹一个对象,该数据类型将数据存储在以逗号分隔的键值对列表中。对象通常用于描述给定键的多个属性。JSON 日志条目以大括号开头和结尾。在此示例中, User是包含多个属性的对象:"User": {"id": "1234", "name": "user", "role": "engineer"}
-
方括号([ ])
用于包裹一个数组,数组是一种以逗号分隔的有序列表形式存储数据的数据类型。当您想要将数据存储为有序集合时,数组非常有用:["Administrators", "Users", "Engineering"]
2.2 系统日志 (Syslog)
Syslog 是用于记录和传输数据的标准。它可用于指代其三种不同功能中的任何一种:
-
协议:syslog 协议用于将日志传输到集中式日志服务器进行日志管理。它使用端口 514 传输明文日志,使用端口 6514 传输加密日志。
-
服务:Syslog 服务充当日志转发服务,将来自多个来源的日志整合到单个位置。该服务的工作原理是接收所有 syslog 日志条目,然后将其转发到远程服务器。
-
日志格式:Syslog 日志格式是最常用的日志格式之一,也是您将要关注的。它是 Unix® 系统中使用的原生日志格式。它由三个部分组成:头部、结构化数据和消息。
2.3 Syslog 日志示例
下面是一个包含所有三个组件的系统日志条目的示例:Header、Structured-data 和 Message :
<236>1 2022-03-21T01:11:11.003Z virtual.machine.com evntslog - ID01
[user@32473 iut="1" eventSource="Application" eventID="9999"]
This is a log entry!
2.4 Header
标头包含时间戳、主机名(即发送日志的机器的名称)、应用程序名称和消息 ID 等详细信息。
时间戳:本例中的时间戳为2022-03-21T01:11:11.003Z
,其中2022-03-21
是 YYYY-MM-DD 格式的日期。T
用于分隔日期和时间。01 :11:11.003
是 24 小时制的时间,包含毫秒数003
。Z
表示时区,即协调世界时 (UTC) 。
主机名:virtual.machine.com
应用程序:eventslog
消息ID:ID01
2.5 Structured-data
日志条目的结构化数据部分包含额外的日志信息。这些信息括在方括号中,并以键值对的形式组织起来。此处有三个键及其对应的值:[user@32473 iut="1" eventSource="Application" eventID="9999"]
。
2.6 Message
该消息包含有关该事件的详细日志消息。此处,该消息为This is a log entry!
2.7 优先级 (PRI)
优先级 (PRI) 字段指示已记录事件的紧急程度,并以尖括号括起来。在本例中,优先级值为<236>
。通常,优先级越低,事件越紧急。
注意:Syslog 标头可以与 JSON 和 XML 格式组合使用。此外,还可以使用自定义日志格式。
3. XML (可扩展标记语言)
XML(可扩展标记语言)是一种用于存储和传输数据的语言和格式。XML 是 Windows 系统使用的原生文件格式。XML 语法使用以下内容:
- 标签
- 元素
- 属性
3.1 标签
XML 使用标签来存储和识别数据。标签是一对必须包含起始标签和结束标签的标签。起始标签用尖括号括起数据,例如<tag>
,而结束标签则用尖括号和正斜杠括起数据,例如</tag>
。
3.2 元素
XML 元素既包含标签内的数据,也包含标签本身。所有 XML 条目必须至少包含一个根元素。根元素包含位于其下方的其他元素,这些元素称为子元素。
以下是一个例子:
<Event> <EventID>4688</EventID><Version>5</Version>
</Event>
在此示例中,<Event>
是根元素,并包含两个子元素<EventID>
和<Version>
。每个相应的子元素中都包含数据。
3.3 属性
XML 元素也可以包含属性。属性用于提供有关元素的附加信息。属性包含在标签本身的第二部分中,并且必须始终使用单引号或双引号括起来。
例如:
<EventData><Data Name='SubjectUserSid'>S-2-3-11-160321</Data><Data Name='SubjectUserName'>JSMITH</Data><Data Name='SubjectDomainName'>ADCOMP</Data><Data Name='SubjectLogonId'>0x1cf1c12</Data><Data Name='NewProcessId'>0x1404</Data>
</EventData>
在此示例的第一行中,标签为<Data>
它使用属性 Name='SubjectUserSid'
来描述标签 S-2-3-11-160321
中包含的数据。
4. CSV (逗号分隔值)
CSV(逗号分隔值)使用逗号分隔数据值。在 CSV 日志中,数据的位置与其字段名称相对应,但字段名称本身可能不包含在日志中。了解源设备(例如 IPS、防火墙、扫描仪等)在日志中包含哪些字段至关重要。
以下是一个例子:
2009-11-24T21:27:09.534255,ALERT,192.168.2.7,
1041,x.x.250.50,80,TCP,ALLOWED,1:2001999:9,
"ET MALWARE BTGrab.com Spyware Downloading Ads",1
5. CEF (Common Event Format 通用事件格式)
通用事件格式 (CEF)是一种日志格式,它使用键值对来构造数据并标识字段及其对应的值。CEF 语法定义为包含以下字段:
CEF:Version|Device Vendor|Device Product|Device Version|Signature ID|Name|Severity|Extension
所有字段都用竖线字符|分隔。但是, CEF 日志条目扩展部分的任何内容都必须以键值格式写入。Syslog 是传输 CEF 等日志的常用方法。使用 Syslog 时,时间戳和主机名将添加到 CEF 消息的前面。以下是一条 CEF 日志条目的示例,其中详细说明了与蠕虫感染相关的恶意活动:
Sep 29 08:26:10 host CEF:1|Security|threatmanager|1.0|100|worm successfully stopped|10|src=10.0.0.2 dst=2.1.2.2 spt=1232
以下是各个字段的细分:
- Syslog 时间戳:
Sep 29 08:26:10
- Syslog 主机名:
host
- 版本:
CEF:1
- 设备供应商:
Security
- 设备产品:
threatmanager
- 设备版本:
1.0
- 签名ID:
100
- 名称:
worm successfully stopped
- 严重程度:
10
- 扩展名:此字段包含以键值对形式写入的数据。有两个
IP 地址:src=10.0.0.2
和dst=2.1.2.2
,以及一个源端口号spt=1232
。扩展名不是必需的,可以选择添加。
此日志条目包含有关名为threatmanager
的安全应用程序的详细信息,该应用程序成功阻止了蠕虫病毒从内部网络10.0.0.2
通过端口1232
传播到外部网络2.1.2.2
。报告的严重性级别为10 。
注意:扩展名和 syslog 前缀是可选的,可以添加到 CEF 日志中。
6. 总结
关键点总结:
- 日志格式没有统一标准,每种系统和设备可能使用不同的格式。
- 了解多种日志格式对于事件调查和威胁检测至关重要。
- 掌握格式结构可以帮助你快速提取关键数据,如时间、主机名、IP、告警信息等。