【网络安全】日志文件格式

日志文件格式概览

    • [1. 简介](#1. 简介)
    • [2. JSON(JavaScript 对象表示法)](#2. JSON(JavaScript 对象表示法))
      • [2.1 JSON 语法元素包括:](#2.1 JSON 语法元素包括:)
    • [2.2 系统日志 (Syslog)](#2.2 系统日志 (Syslog))
      • [2.3 Syslog 日志示例](#2.3 Syslog 日志示例)
      • [2.4 Header](#2.4 Header)
      • [2.5 Structured-data](#2.5 Structured-data)
      • [2.6 Message](#2.6 Message)
      • [2.7 优先级 (PRI)](#2.7 优先级 (PRI))
    • [3. XML (可扩展标记语言)](#3. XML (可扩展标记语言))
      • [3.1 标签](#3.1 标签)
      • [3.2 元素](#3.2 元素)
      • [3.3 属性](#3.3 属性)
    • [4. CSV (逗号分隔值)](#4. CSV (逗号分隔值))
    • [5. CEF (Common Event Format 通用事件格式)](#5. CEF (Common Event Format 通用事件格式))
    • [6. 总结](#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 是用于记录和传输数据的标准。它可用于指代其三种不同功能中的任何一种:

  1. 协议:syslog 协议用于将日志传输到集中式日志服务器进行日志管理。它使用端口 514 传输明文日志,使用端口 6514 传输加密日志。

  2. 服务:Syslog 服务充当日志转发服务,将来自多个来源的日志整合到单个位置。该服务的工作原理是接收所有 syslog 日志条目,然后将其转发到远程服务器。

  3. 日志格式: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 小时制的时间,包含毫秒数003Z表示时区,即协调世界时 (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 条目必须至少包含一个根元素。根元素包含位于其下方的其他元素,这些元素称为子元素。

以下是一个例子:

xml 复制代码
<Event>	
    <EventID>4688</EventID>
    <Version>5</Version>
</Event>

在此示例中,<Event>是根元素,并包含两个子元素<EventID><Version>。每个相应的子元素中都包含数据。

3.3 属性

XML 元素也可以包含属性。属性用于提供有关元素的附加信息。属性包含在标签本身的第二部分中,并且必须始终使用单引号或双引号括起来。

例如:

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、防火墙、扫描仪等)在日志中包含哪些字段至关重要。

以下是一个例子:

csv 复制代码
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 复制代码
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.2dst=2.1.2.2,以及一个源端口号spt=1232。扩展名不是必需的,可以选择添加。

此日志条目包含有关名为threatmanager的安全应用程序的详细信息,该应用程序成功阻止了蠕虫病毒从内部网络10.0.0.2通过端口1232传播到外部网络2.1.2.2 。报告的严重性级别为10 。

注意:扩展名和 syslog 前缀是可选的,可以添加到 CEF 日志中。


6. 总结

关键点总结:

  • 日志格式没有统一标准,每种系统和设备可能使用不同的格式。
  • 了解多种日志格式对于事件调查和威胁检测至关重要。
  • 掌握格式结构可以帮助你快速提取关键数据,如时间、主机名、IP、告警信息等。
相关推荐
小白不想白a2 小时前
【MySQL安全】什么是SQL注入,怎么避免这种攻击:前端防护、后端orm框架、数据库白名单
数据库·sql·mysql·安全
开开心心就好3 小时前
专业鼠标点击器,自定义间隔次数
javascript·安全·计算机外设·excel·音视频·模拟退火算法
大虾别跑5 小时前
tomcat隐藏400报错信息
java·安全·tomcat
GKDf1sh6 小时前
【前端安全】聊聊 HTML 闭合优先级和浏览器解析顺序
前端·安全·html
xyphf_和派孔明6 小时前
Web前端文件上传安全与敏感数据安全处理
安全
Cyyyy_g7 小时前
CVE-2025-5947 漏洞场景剖析
网络·安全·系统安全
xyphf_和派孔明7 小时前
关于Web前端安全防御之内容安全策略(CSP)
安全·csp·内容安全策略
周先森的怣忈9 小时前
渗透高级-----应急响应
网络安全
༺ཉི།星陈大海།ཉྀ༻CISSP13 小时前
专网内网IP攻击防御:从应急响应到架构加固
网络·安全