15.1.2. EVE JSON格式

例子:

{
  "timestamp": "2017-04-07T22:24:37.251547+0100",
  "flow_id": 586497171462735,
  "pcap_cnt": 53381,
  "event_type": "alert",
  "src_ip": "192.168.2.14",
  "src_port": 50096,
  "dest_ip": "209.53.113.5",
  "dest_port": 80,
  "proto": "TCP",
  "metadata": {
    "flowbits": [
      "http.dottedquadhost"
    ]
  },
  "tx_id": 4,
  "alert": {
    "action": "allowed",
    "gid": 1,
    "signature_id": 2018358,
    "rev": 10,
    "signature": "ET HUNTING GENERIC SUSPICIOUS POST to Dotted Quad with Fake Browser 1",
    "category": "Potentially Bad Traffic",
    "severity": 2
  },
  "app_proto": "http"
}

15.1.2.1. 公共部分

所有JSON日志类型都共享一个公共结构:

{"timestamp":"2009-11-24T21:27:09.534255","event_type":"TYPE", ...tuple... ,"TYPE":{ ... type specific content ... }}

15.1.2.1.1. 事件类型

公共部分有一个字段“事件类型”来指示日志类型。

"event_type":"TYPE"

当检测到应用层协议事件时,公共部分将具有 app_proto 田野。

"app_proto": "http"

15.1.2.1.2. PCAP字段

如果Suricata正在处理PCAP文件,则会添加其他字段:

"pcap_cnt": 123

pcap_cnt 包含PCAP中的数据包编号。例如,这可以用于在Wireshark中查找数据包。

"pcap_filename":"/path/to/file.pcap"

pcap_filename 包含生成事件的PCAP的文件名和位置。

注解

PCAP字段仅在“真实”数据包上可用,并从内部“伪”数据包(如流超时数据包)中省略。

15.1.2.2. 事件类型:警报

15.1.2.2.1. 现场行动

可能值:“允许”和“阻止”

例子:

"action":"allowed"

操作设置为“允许”,除非使用了规则“删除”操作并且Suricata处于IPS模式,或者规则使用了“拒绝”操作。

如果特征码中使用了target关键字,它还可以在alert.Source和alert.target字段中包含有关攻击的来源和目标的信息。

"alert": {
  "action": "allowed",
  "gid": 1,
  "signature_id": 2024056,
  "rev": 4,
  "signature": "ET MALWARE Win32/CryptFile2 / Revenge Ransomware Checkin M3",
  "category": "Malware Command and Control Activity Detected",
  "severity": 1,
  "metadata": {
    "affected_product": [
      "Windows_XP_Vista_7_8_10_Server_32_64_Bit"
    ],
    "attack_target": [
      "Client_Endpoint"
    ],
    "created_at": [
      "2017_03_15"
    ],
    "deployment": [
      "Perimeter"
    ],
    "former_category": [
      "MALWARE"
    ],
    "malware_family": [
      "CryptFile2"
    ],
    "performance_impact": [
      "Moderate"
    ],
    "signature_severity": [
      "Major"
    ],
    "updated_at": [
      "2020_08_04"
    ]
  }
},

15.1.2.3. 事件类型:异常

类型为“异常”的事件报告意外情况,如截断的数据包、具有无效值的数据包、使数据包无法进一步处理的事件或意外行为。

当启用异常日志记录时,异常情况频繁出现的网络可能会经历数据包处理降级。

15.1.2.3.1. 领域

  • “type”:可以是“decode”、“stream”或“applayer”。在极少数情况下,类型为“未知”。出现这种情况时,将出现一个名为“code”的附加字段。“applayer”类型的事件由应用层解析器检测。

  • “事件”异常事件的名称。“decode”类型的事件以“decoder”为前缀;“stream”类型的事件以“stream”为前缀。

  • 如果“type”为“unknown”,则“code”包含无法识别的事件代码。否则,此字段不存在。

当“type”的值为“applayer”时,包含以下字段:

  • “layer”表示检测到事件的处理层。这将是“proto_parser”(协议解析器)、“proto泳detect”(协议检测)或“parser”

什么时候? packethdr 如果启用,数据包的前32个字节将作为字节64编码的blob包含在记录的主要部分中。这仅适用于“类型”、“数据包”或“流”的事件。

15.1.2.3.2. 实例

"anomaly": {
  "type": "decode",
  "event": "decoder.icmpv4.unknown_type"
}

"anomaly": {
  "type": "decode",
  "event": "decoder.udp.pkt_too_small"
}

"anomaly": {
  "type": "decode",
  "event": "decoder.ipv4.wrong_ip_version"
}

"anomaly": {
  "type": "stream",
  "event": "stream.pkt_invalid_timestamp"
}

{
  "timestamp": "1969-12-31T16:04:21.000000-0800",
  "pcap_cnt": 9262,
  "event_type": "anomaly",
  "src_ip": "208.21.2.184",
  "src_port": 0,
  "dest_ip": "10.1.1.99",
  "dest_port": 0,
  "proto": "UDP",
  "packet": "////////AQEBAQEBCABFAAA8xZ5AAP8R1+DQFQK4CgE=",
  "packet_info": {
    "linktype": 1
  },
  "anomaly": {
    "type": "decode",
    "event": "decoder.udp.pkt_too_small"
  }
}

{
  "timestamp": "2016-01-11T05:10:54.612110-0800",
  "flow_id": 412547343494194,
  "pcap_cnt": 1391293,
  "event_type": "anomaly",
  "src_ip": "192.168.122.149",
  "src_port": 49324,
  "dest_ip": "69.195.71.174",
  "dest_port": 443,
  "proto": "TCP",
  "app_proto": "tls",
  "anomaly": {
    "type": "applayer",
    "event": "APPLAYER_DETECT_PROTOCOL_ONLY_ONE_DIRECTION",
    "layer": "proto_detect"
  }
}

{
  "timestamp": "2016-01-11T05:10:52.828802-0800",
  "flow_id": 201217772575257,
  "pcap_cnt": 1391281,
  "event_type": "anomaly",
  "src_ip": "192.168.122.149",
  "src_port": 49323,
  "dest_ip": "69.195.71.174",
  "dest_port": 443,
  "proto": "TCP",
  "tx_id": 0,
  "app_proto": "tls",
  "anomaly": {
    "type": "applayer",
    "event": "INVALID_RECORD_TYPE",
    "layer": "proto_parser"
  }
}

15.1.2.4. 事件类型:http

15.1.2.4.1. 领域

  • “hostname”:此HTTP事件所属的主机名

  • “url”:访问主机名的url

  • “http_user_agent”:所使用软件的用户代理

  • “http_content_type”:返回的数据类型(例如:application/x-gzip)

  • “饼干”

除了这些字段外,如果在suricata.yaml文件中启用了扩展日志记录,则还包括(可以)以下字段:

  • “长度”:HTTP主体的内容大小

  • “状态”:HTTP状态码

  • “协议”:HTTP协议/版本(例如:HTTP/1.1)

  • “http_方法”:http方法(例如:get、post、head)

  • “http_refer”:此操作的引用

除了扩展的日志记录字段之外,还可以选择启用/添加超过50个在suricata.yaml文件中启用的自定义日志记录HTTP字段。其他字段可以按以下方式启用:

- eve-log:
    enabled: yes
    type: file #file|syslog|unix_dgram|unix_stream
    filename: eve.json
    # the following are valid when type: syslog above
    #identity: "suricata"
    #facility: local5
    #level: Info ## possible levels: Emergency, Alert, Critical,
                 ## Error, Warning, Notice, Info, Debug
    types:
      - alert
      - http:
          extended: yes     # enable this for extended logging information
          # custom allows additional http fields to be included in eve-log
          # the example below adds three additional fields when uncommented
          #custom: [Accept-Encoding, Accept-Language, Authorization]
          custom: [accept, accept-charset, accept-encoding, accept-language,
          accept-datetime, authorization, cache-control, cookie, from,
          max-forwards, origin, pragma, proxy-authorization, range, te, via,
          x-requested-with, dnt, x-forwarded-proto, accept-range, age,
          allow, connection, content-encoding, content-language,
          content-length, content-location, content-md5, content-range,
          content-type, date, etags, expires, last-modified, link, location,
          proxy-authenticate, referrer, refresh, retry-after, server,
          set-cookie, trailer, transfer-encoding, upgrade, vary, warning,
          www-authenticate, x-flash-version, x-authenticated-user]

这里使用扩展日志的好处是查看这个操作,例如,是一个日志,还是一个可执行文件的下载实际返回了任何字节。

也可以通过关键字转储HTTP请求/响应的每个头,或者同时转储这两个头。 dump-all-headers .

15.1.2.4.2. 实例

具有非扩展日志记录的事件:

"http": {
    "hostname": "www.digip.org",
    "url" :"\/jansson\/releases\/jansson-2.6.tar.gz",
    "http_user_agent": "<User-Agent>",
    "http_content_type": "application\/x-gzip"
}

如果主机名显示端口号,例如,如果有标题“host:www.test.org:1337”:

"http": {
    "http_port": 1337,
    "hostname": "www.test.org",
    "url" :"\/this\/is\/test.tar.gz",
    "http_user_agent": "<User-Agent>",
    "http_content_type": "application\/x-gzip"
}

具有扩展日志记录的事件:

"http": {
    "hostname": "direkte.vg.no",
    "url":".....",
    "http_user_agent": "<User-Agent>",
    "http_content_type": "application\/json",
    "http_refer": "http:\/\/www.vg.no\/",
    "http_method": "GET",
    "protocol": "HTTP\/1.1",
    "status":"200",
    "length":310
}

事件 dump-all-headers 设置为“两个”:

"http": {
    "hostname": "test.co.uk",
    "url":"\/test\/file.json",
    "http_user_agent": "<User-Agent>",
    "http_content_type": "application\/json",
    "http_refer": "http:\/\/www.test.com\/",
    "http_method": "GET",
    "protocol": "HTTP\/1.1",
    "status":"200",
    "length":310,
    "request_headers": [
        {
            "name": "User-Agent",
            "value": "Wget/1.13.4 (linux-gnu)"
        },
        {
            "name": "Accept",
            "value": "*/*"
        },
    ],
    "response_headers": [
        {
            "name": "Date",
            "value": "Wed, 25 Mar 2015 15:40:41 GMT"
        },
    ]
}

15.1.2.5. 事件类型:DNS

引入了新版本的DNS日志记录,以改进如何记录DNS答案。

使用该新版本,DNS应答将记录在一个事件中,而不是每个应答的一个事件中。

可以自定义如何使用以下格式记录DNS应答:

  • “detailed”:“rrname”、“rrtype”、“rdata”和“ttl”字段将记录每个答案。

  • “分组”:记录的答案按其类型(A、AAAA、NS等)聚合。

仍然可以使用旧的DNS日志记录格式,您可以在DNS配置部分使用“版本”选项控制它。

15.1.2.5.1. 领域

在不同种类的DNS事件中看到的字段概要:

  • “type”:表示DNS消息类型,可以是“answer”或“query”。

  • “ID”:标识符字段

  • “version”:表示使用中的DNS日志记录版本

  • “flags”:表示DNS应答标志,十六进制(如8180,请注意不输出0x)

  • “qr”:表示在DNS应答标志的情况下,查询/应答标志(例如:设置为真)

  • “aa”:表示在DNS应答标志的情况下,权威应答标志(例如:如果设置为真)

  • “tc”:表示在DNS应答标志的情况下,截断标志(例如:如果设置为真)

  • “rd”:表示在DNS应答标志的情况下,递归所需标志(例如:如果设置为真)

  • “ra”:表示在DNS应答标志的情况下,递归可用标志(例如:如果设置为真)

  • “rcode”:(例如:noerror)

  • “rrname”:资源记录名(如域名)

  • “rrtype”:资源记录类型(例如:A、AAAA、NS、PTR)

  • “rdata”:资源数据(例如:域名解析到的IP)

  • “TTL”:此资源记录的生存时间

更复杂的DNS记录类型可能会记录资源数据的其他字段:

  • “soa”:包含soa(起始权限)记录类型字段的部分

    • “mname”:此区域的主名称服务器

    • “rname”:当局邮箱

    • “serial”:序列版本号

    • “刷新”:刷新间隔(秒)

    • “重试”:重试间隔(秒)

    • “过期”:区域不再具有权威性之前的时间上限(秒)

    • “minimum”:此区域中记录的最小ttl(秒)

  • “sshfp”:包含sshfp(ssh fingerprint)记录类型字段的部分

    • “指纹”:指纹的十六进制格式(例如: 12:34:56:78:9a:bc:de:...

    • “algo”:算法编号(例如:1代表RSA,2代表DSS)

    • “类型”:指纹类型(例如:SHA-1为1)

  • “srv”:包含SRV(服务位置)记录类型字段的部分

    • “target”:目标主机的域名(例如: foo.bar.baz )

    • “Priority”:目标优先级(例如:20)

    • “Weight”:目标选择的权重(例如:1)

    • “port”:此服务的此目标主机上的端口(例如:5060)

可以使用中的“类型”字段来控制记录哪些RR类型苏瑞塔亚姆文件。如果未指定此字段,则记录所有RR类型。可以使用此字段指定50个以上的值,如下所示:

- eve-log:
    enabled: yes
    type: file #file|syslog|unix_dgram|unix_stream
    filename: eve.json
    # the following are valid when type: syslog above
    #identity: "suricata"
    #facility: local5
    #level: Info ## possible levels: Emergency, Alert, Critical,
                 ## Error, Warning, Notice, Info, Debug
    types:
      - alert
      - dns:
        # Control logging of requests and responses:
        # - requests: enable logging of DNS queries
        # - responses: enable logging of DNS answers
        # By default both requests and responses are logged.
        requests: yes
        responses: yes
        # DNS record types to log, based on the query type.
        # Default: all.
        #types: [a, aaaa, cname, mx, ns, ptr, txt]
        types: [a, ns, md, mf, cname, soa, mb, mg, mr, null,
        wks, ptr, hinfo, minfo, mx, txt, rp, afsdb, x25, isdn,
        rt, nsap, nsapptr, sig, key, px, gpos, aaaa, loc, nxt,
        srv, atma, naptr, kx, cert, a6, dname, opt, apl, ds,
        sshfp, ipseckey, rrsig, nsec, dnskey, dhcid, nsec3,
        nsec3param, tlsa, hip, cds, cdnskey, spf, tkey,
        tsig, maila, any, uri]

15.1.2.5.2. 实例

“twitter.com”(资源记录类型“a”)的IPv4地址的DNS查询示例:

"dns": {
    "type": "query",
    "id": 16000,
    "rrname": "twitter.com",
    "rrtype":"A"
}

“详细”格式的DNS应答示例:

"dns": {
    "version": 2,
    "type": "answer",
    "id": 45444,
    "flags": "8180",
    "qr": true,
    "rd": true,
    "ra": true,
    "rcode": "NOERROR",
    "answers": [
      {
        "rrname": "www.suricata-ids.org",
        "rrtype": "CNAME",
        "ttl": 3324,
        "rdata": "suricata-ids.org"
      },
      {
        "rrname": "suricata-ids.org",
        "rrtype": "A",
        "ttl": 10,
        "rdata": "192.0.78.24"
      },
      {
        "rrname": "suricata-ids.org",
        "rrtype": "A",
        "ttl": 10,
        "rdata": "192.0.78.25"
      }
    ]
}

“分组”格式的DNS应答示例:

"dns": {
    "version": 2,
    "type": "answer",
    "id": 18523,
    "flags": "8180",
    "qr": true,
    "rd": true,
    "ra": true,
    "rcode": "NOERROR",
    "grouped": {
      "A": [
        "192.0.78.24",
        "192.0.78.25"
      ],
      "CNAME": [
        "suricata-ids.org"
      ]
    }
}

使用IPv4(资源记录类型“a”)返回的旧DNS应答示例:

"dns": {
    "type": "answer",
    "id":16000,
    "flags":"8180",
    "qr":true,
    "rd":true,
    "ra":true,
    "rcode":"NOERROR"
    "rrname": "twitter.com",
    "rrtype":"A",
    "ttl":8,
    "rdata": "199.16.156.6"
}

15.1.2.6. 事件类型:ftp

15.1.2.6.1. 领域

  • “command”:ftp命令。

  • “命令数据”:伴随命令的数据。

  • “应答”:命令应答,可以包含多行,数组格式。

  • “完成代码”:3位完成代码。第一个数字表示响应是好的、坏的还是不完整的。这也是数组格式,可能包含多个与多个回复行匹配的完成代码。

  • “动态端口”:为后续数据传输而建立的动态端口,如适用,使用“端口”或“EPRT”命令。

  • “模式”:FTP连接的类型。大多数连接都是“被动”的,但也可能是“主动”的。

  • “reply_received”:指示响应是否与命令匹配。在某些非典型情况下,命令可能缺少响应。

15.1.2.6.2. 实例

常规FTP日志记录示例:

"ftp": {
  "command": "RETR",
  "command_data": "100KB.zip",
  "reply": [
    "Opening BINARY mode data connection for 100KB.zip (102400 bytes).",
    "Transfer complete."
  ],
  "completion_code": [
    "150",
    "226"
  ],

显示所有字段的示例:

"ftp": {
  "command": "EPRT",
  "command_data": "|2|2a01:e34:ee97:b130:8c3e:45ea:5ac6:e301|41813|",
  "reply": [
    "EPRT command successful. Consider using EPSV."
  ],
  "completion_code": [
    "200"
  ],
  "dynamic_port": 41813,
  "mode": "active",
  "reply_received": "yes"
}

15.1.2.7. 事件类型:ftp_data

15.1.2.7.1. 领域

  • “command”:与事件相关联的ftp命令。

  • “文件名”:所涉及文件的名称。

15.1.2.7.2. 实例

ftp_数据记录示例:

"ftp_data": {
  "filename": "temp.txt",
  "command": "RETR"
}

15.1.2.8. 事件类型:TLS

15.1.2.8.1. 领域

  • “主题”:来自TLS证书的主题字段

  • “颁发者”:来自TLS证书的颁发者字段

  • “会话已恢复”:如果通过会话ID恢复了TLS会话,则此字段的值为“真”。如果出现此字段,则不会出现“主题”和“颁发者”,因为看不到TLS证书。

如果启用扩展日志记录,则还包括以下字段:

  • “serial”:TLS证书的序列号

  • “指纹”:TLS证书的(sha1)指纹

  • “sni”:客户端发送的服务器名称指示(sni)扩展

  • “版本”:使用的SSL/TLS版本

  • “not_before”:来自TLS证书的notbefore字段

  • “Not_After”:来自TLS证书的NotAfter字段

  • “JA3”:由JA3哈希和JA3字符串组成的JA3指纹

  • “JA3S”:由JA3哈希和JA3字符串组成的JA3S指纹。

必须在suricata配置文件中启用JA3(将“app layer.protocols.tls.ja3 fingerprints”设置为“yes”)。

除此之外,自定义日志还允许以下字段:

  • “证书”:已编码的TLS证书base64

  • “chain”:整个TLS证书链base64编码

15.1.2.8.2. 实例

常规TLS日志记录示例:

"tls": {
    "subject": "C=US, ST=California, L=Mountain View, O=Google Inc, CN=*.google.com",
    "issuerdn": "C=US, O=Google Inc, CN=Google Internet Authority G2"
}

恢复会话的常规TLS日志记录示例:

"tls": {
    "session_resumed": true
}

扩展TLS日志记录示例:

"tls": {
    "subject": "C=US, ST=California, L=Mountain View, O=Google Inc, CN=*.google.com",
    "issuerdn": "C=US, O=Google Inc, CN=Google Internet Authority G2",
    "serial": "0C:00:99:B7:D7:54:C9:F6:77:26:31:7E:BA:EA:7C:1C",
    "fingerprint": "8f:51:12:06:a0:cc:4e:cd:e8:a3:8b:38:f8:87:59:e5:af:95:ca:cd",
    "sni": "calendar.google.com",
    "version": "TLS 1.2",
    "notbefore": "2017-01-04T10:48:43",
    "notafter": "2017-03-29T10:18:00"
}

使用TLS自定义日志记录(主题、sni、证书)的证书日志记录示例:

"tls": {
    "subject": "C=US, ST=California, L=Mountain View, O=Google Inc, CN=*.googleapis.com
    "sni": "www.googleapis.com",
    "certificate": "MIIE3TCCA8WgAwIBAgIIQPsvobRZN0gwDQYJKoZIhvcNAQELBQAwSTELMA [...]"
 }

15.1.2.9. 事件类型:tftp

15.1.2.9.1. 领域

  • “包”:操作码,可以是“读”或“写”或“错”

  • “file”:使用tftp协议传输的文件名。

  • “模式”:模式字段,可以是“八位字节”或“邮件”或“netascii”(或大小写的任意组合)

TFTP日志记录示例:

"tftp": {
    "packet": "write",
    "file": "rfc1350.txt",
    "mode": "octet"
 }

15.1.2.10. 事件类型:SMB

15.1.2.10.1. SMB字段

  • “id”(整数):内部交易id

  • “方言”(字符串):协商的协议方言,如果缺少,则为“未知”。

  • “command”(字符串):命令名。例如smb2_command_create或smb1_command_write_andx

  • “status”(字符串):状态字符串。可以是NT和DOS状态,也可以是DOS错误和其他变体

  • “状态代码”(字符串):状态代码为十六进制字符串

  • “session_id”(整数):smb2+session_id.smb1用户id。

  • “tree_id”(整数):树id

  • “filename”(字符串):用于创建和其他命令的文件名。

  • “Disposition”(字符串):请求的处置。例如,文件打开、文件创建和文件覆盖。请参阅https://msdn.microsoft.com/en-us/library/ee442175.aspx附录目标_119

  • “access”(字符串):指示如何打开文件。“正常”或“关闭时删除”(字段可能会更改)

  • “created”、“accessed”、“modified”、“changed”(整数):自Unix epoch以来的时间戳(秒)

  • “大小”(integer):请求文件的大小

  • “fuid”(字符串):smb2+文件guid。smb1 fid作为十六进制。

  • “share”(字符串):共享名。

  • “share_type”(字符串):文件、管道、打印或未知。

  • “客户机方言”(字符串数组):客户机所说的SMB方言列表。

  • client_-guid”(字符串):客户端guid

  • “服务器GUID”(字符串):服务器GUID

  • “request.native_os”(字符串):smb1 native os字符串

  • “request.native_lm”(字符串):smb1 native lan manager字符串

  • “response.native_os”(字符串):smb1 native os字符串

  • “response.native_lm”(字符串):smb1 native lan manager字符串

SMB日志记录示例:

管道打开:

"smb": {
  "id": 1,
  "dialect": "unknown",
  "command": "SMB2_COMMAND_CREATE",
  "status": "STATUS_SUCCESS",
  "status_code": "0x0",
  "session_id": 4398046511201,
  "tree_id": 1,
  "filename": "atsvc",
  "disposition": "FILE_OPEN",
  "access": "normal",
  "created": 0,
  "accessed": 0,
  "modified": 0,
  "changed": 0,
  "size": 0,
  "fuid": "0000004d-0000-0000-0005-0000ffffffff"
}

文件/管道关闭:

"smb": {
  "id": 15,
  "dialect": "2.10",
  "command": "SMB2_COMMAND_CLOSE",
  "status": "STATUS_SUCCESS",
  "status_code": "0x0",
  "session_id": 4398046511121,
  "tree_id": 1,
}

树连接(共享打开)::

"smb": {
  "id": 3,
  "dialect": "2.10",
  "command": "SMB2_COMMAND_TREE_CONNECT",
  "status": "STATUS_SUCCESS",
  "status_code": "0x0",
  "session_id": 4398046511121,
  "tree_id": 1,
  "share": "\\\\admin-pc\\c$",
  "share_type": "FILE"
}

从smb1到smb2方言2.10的方言谈判:

"smb": {
  "id": 1,
  "dialect": "2.??",
  "command": "SMB1_COMMAND_NEGOTIATE_PROTOCOL",
  "status": "STATUS_SUCCESS",
  "status_code": "0x0",
  "session_id": 0,
  "tree_id": 0,
  "client_dialects": [
    "PC NETWORK PROGRAM 1.0",
    "LANMAN1.0",
    "Windows for Workgroups 3.1a",
    "LM1.2X002",
    "LANMAN2.1",
    "NT LM 0.12",
    "SMB 2.002",
    "SMB 2.???"
  ],
  "server_guid": "aec6e793-2b11-4019-2d95-55453a0ad2f1"
}
"smb": {
  "id": 2,
  "dialect": "2.10",
  "command": "SMB2_COMMAND_NEGOTIATE_PROTOCOL",
  "status": "STATUS_SUCCESS",
  "status_code": "0x0",
  "session_id": 0,
  "tree_id": 0,
  "client_dialects": [
    "2.02",
    "2.10"
  ],
  "client_guid": "601985d2-aad9-11e7-8494-00088bb57f27",
  "server_guid": "aec6e793-2b11-4019-2d95-55453a0ad2f1"
}

smb1部分smb1_命令_会话_设置_和x::

"request": {
  "native_os": "Unix",
  "native_lm": "Samba 3.9.0-SVN-build-11572"
},
"response": {
  "native_os": "Windows (TM) Code Name \"Longhorn\" Ultimate 5231",
  "native_lm": "Windows (TM) Code Name \"Longhorn\" Ultimate 6.0"
}

15.1.2.10.2. dcerpc字段

  • “请求”(字符串):命令。例如请求、绑定。

  • “response”(字符串):回复。例如响应、绑定或故障。

  • “opnum”(整数):opnum

  • “call_id”(整数):调用ID

  • “frag_cnt”(整数):存根数据的片段数

  • “存根数据大小”:总存根数据大小

  • “接口”(数组):接口列表

  • “interfaces.uuid”(字符串):uuid的字符串表示形式

  • “interfaces.version”(字符串):接口版本

  • “interfaces.ack_result”(整数):ack result

  • “interfaces.ack-reason”(整数):ack-reason

DCERPC请求/响应:

"smb": {
  "id": 4,
  "dialect": "unknown",
  "command": "SMB2_COMMAND_IOCTL",
  "status": "STATUS_SUCCESS",
  "status_code": "0x0",
  "session_id": 4398046511201,
  "tree_id": 0,
  "dcerpc": {
    "request": "REQUEST",
    "response": "RESPONSE",
    "opnum": 0,
    "req": {
      "frag_cnt": 1,
      "stub_data_size": 136
    },
    "res": {
      "frag_cnt": 1,
      "stub_data_size": 8
    },
    "call_id": 2
  }
}

dcerpc绑定/绑定:

"smb": {
  "id": 53,
  "dialect": "2.10",
  "command": "SMB2_COMMAND_WRITE",
  "status": "STATUS_SUCCESS",
  "status_code": "0x0",
  "session_id": 35184439197745,
  "tree_id": 1,
  "dcerpc": {
    "request": "BIND",
    "response": "BINDACK",
    "interfaces": [
      {
        "uuid": "12345778-1234-abcd-ef00-0123456789ac",
        "version": "1.0",
        "ack_result": 2,
        "ack_reason": 0
      },
      {
        "uuid": "12345778-1234-abcd-ef00-0123456789ac",
        "version": "1.0",
        "ack_result": 0,
        "ack_reason": 0
      },
      {
        "uuid": "12345778-1234-abcd-ef00-0123456789ac",
        "version": "1.0",
        "ack_result": 3,
        "ack_reason": 0
      }
    ],
    "call_id": 2
  }

15.1.2.10.3. NTLMSP字段

  • “域”(字符串):Windows域。

  • “user”(字符串):用户。

  • “主机”(字符串):主机。

例子::

"ntlmssp": {
  "domain": "VNET3",
  "user": "administrator",
  "host": "BLU"
}

更完整的示例:

"smb": {
  "id": 3,
  "dialect": "NT LM 0.12",
  "command": "SMB1_COMMAND_SESSION_SETUP_ANDX",
  "status": "STATUS_SUCCESS",
  "status_code": "0x0",
  "session_id": 2048,
  "tree_id": 0,
  "ntlmssp": {
    "domain": "VNET3",
    "user": "administrator",
    "host": "BLU"
  },
  "request": {
    "native_os": "Unix",
    "native_lm": "Samba 3.9.0-SVN-build-11572"
  },
  "response": {
    "native_os": "Windows (TM) Code Name \"Longhorn\" Ultimate 5231",
    "native_lm": "Windows (TM) Code Name \"Longhorn\" Ultimate 6.0"
  }
}

15.1.2.10.4. Kerberos字段

  • “kerberos.realm”(字符串):kerberos领域。

  • “kerberos.snames(字符串数组):snames。

例子::

"smb": {
  "dialect": "2.10",
  "command": "SMB2_COMMAND_SESSION_SETUP",
  "status": "STATUS_SUCCESS",
  "status_code": "0x0",
  "session_id": 35184439197745,
  "tree_id": 0,
  "kerberos": {
    "realm": "CONTOSO.LOCAL",
    "snames": [
      "cifs",
      "DC1.contoso.local"
    ]
  }
}

15.1.2.11. 事件类型:ssh

15.1.2.11.1. 领域

  • “协议版本”:使用ssh协议传输的协议版本(1.x,2.x)

  • “软件版本”:最终用户使用的软件版本。

  • "哈什。哈什“:客户端或服务器的hash算法的MD5

  • "哈什.string“:客户机或服务器的hash算法

必须在Suricata配置文件中启用hash(设置'app-layer.protocols.ssh层.hash'到'yes')。

ssh日志记录示例:

"ssh": {
  "client": {
      "proto_version": "2.0",
      "software_version": "OpenSSH_6.7",
      "hassh": {
          "hash": "ec7378c1a92f5a8dde7e8b7a1ddf33d1",
          "string": "curve25519-sha256,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c",
      }
   },
  "server": {
      "proto_version": "2.0",
      "software_version": "OpenSSH_6.7",
      "hassh": {
          "hash": "ec7378c1a92f5a8dde7e8b7a1ddf33d1",
          "string": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256",
      }
   }
}

15.1.2.12. 事件类型:流

15.1.2.12.1. 领域

  • “pkts-to server”:到服务器的数据包总数,包括绕过的数据包

  • “pkts-to client”:到客户端的数据包总数

  • “字节服务器”:服务器的总字节数

  • “bytes-to client”:客户端的总字节数

  • “bypassed.pkts-to server”:到服务器的被绕过的数据包数

  • “bypassed.pkts_to client”:到客户端的被绕过数据包数

  • “bypassed.bytes-to server”:绕过的字节数到服务器

  • “bypassed.bytes_to client”:客户端的bypassed bytes计数

  • “开始”:流程开始日期

  • “结束”:流结束日期(最后看到的数据包)

  • “年龄”:流量持续时间

  • “旁路”:如果流量被旁路,它被设置为“本地”(内部旁路)或“捕获”

  • “状态”:显示流的状态(包括“新建”、“已建立”、“已关闭”、“旁路”)。

  • “原因”:触发流结束的机制(包括“超时”、“强制”和“关闭”)。

  • “alerted”:“true”或“false”,取决于是否在流上看到警报

例子::

"flow": {
  "pkts_toserver": 23,
  "pkts_toclient": 21,
  "bytes_toserver": 4884,
  "bytes_toclient": 7392,
  "bypassed": {
    "pkts_toserver": 10,
    "pkts_toclient": 8,
    "bytes_toserver": 1305,
    "bytes_toclient": 984
  },
  "start": "2019-05-28T23:32:29.025256+0200",
  "end": "2019-05-28T23:35:28.071281+0200",
  "age": 179,
  "bypass": "capture",
  "state": "bypassed",
  "reason": "timeout",
  "alerted": false
}

15.1.2.13. 事件类型:RDP

RDP客户机和服务器之间的初始协商存储为事务并记录。

每个RDP记录包含每个流递增的“tx_id”字段。

“event_type”字段表示RDP事件子类型。可能值:

  • "initial_request"

  • "initial_response"

  • "connect_request"

  • "connect_response"

  • "tls_handshake"

15.1.2.13.1. RDP类型:初始请求

可选的“cookie”字段是RDP客户机选择提供的字符串标识符。

可选的“flags”字段是客户端指令的列表。可能值:

  • "restricted_admin_mode_required"

  • "redirected_authentication_mode_required"

  • "correlation_info_present"

15.1.2.13.2. RDP类型:初始响应

在标准初始响应的情况下:

“协议”字段是选定的协议。可能值:

  • “rdp”

  • “ssl”

  • “混合动力”

  • "rds_tls"

  • "hybrid_ex"

可选的“标志”字段是支持服务器模式的列表。可能值:

  • "extended_client_data"

  • "dynvc_gfx"

  • "restricted_admin"

  • "redirected_authentication"

或者,如果出现指示初始响应的错误:

不会有“协议”或“标志”字段。

“错误代码”字段将包含RDP服务器提供的数字代码。

“原因”字段将包含此代码的文本摘要。可能值:

  • “服务器需要ssl”(错误代码0x1)

  • “服务器不允许ssl”(错误代码0x2)

  • “ssl证书不在服务器上”(错误代码0x3)

  • “标志不一致”(错误代码0x4)

  • “服务器需要混合模式”(错误代码0x5)

  • “服务器需要用户身份验证的ssl”(错误代码0x6)

15.1.2.13.3. RDP类型:连接请求

可选的“channel”字段是请求的数据通道名称的列表。

常用频道:

  • “rdpdr”(设备重定向)

  • “cliprdr”(共享剪贴板)

  • “rdpsnd”(声音)

可选的“客户机”字段是一个子对象,可能包含以下内容:

  • “版本”:RDP协议版本。可能的值有“v4”,“v5”,“v10.0”,“v10.1”,“v10.2”,“v10.3”,“v10.4”,“v10.5”,“v10.6”,“v10.7”,“未知”。

  • “桌面宽度”:数字桌面宽度值。

  • “桌面高度”:数字桌面高度值。

  • “颜色深度”:数字颜色深度。可能的值为4、8、15、16、24。

  • “键盘布局”:区域设置标识符名称,例如“en-US”。

  • “构建”:操作系统和SP级别,例如“Windows XP”、“Windows 7 SP1”。

  • “客户机名”:客户机名称。

  • “键盘类型”:可能的值为“xt”、“ico”、“at”、“增强型”、“1050”、“9140”、“jp”。

  • “键盘_subtype”:键盘的数字代码。

  • “功能键”:客户端键盘上的功能键数量。

  • “ime”:输入法编辑器(ime)文件名。

  • “product_id”:产品标识字符串。

  • “序列号”:数值。

  • “功能”:以下任何一个列表:“support_errinfo_pdf”,“want_32bpp_session”,“support_statusinfo_pdu”,“strong_unsymmetric_key”,“有效连接类型”,“support_monitor_layout_pdu”,“support_netchar_autodetect”,“支持_dynvc_gfx_协议”,“支持_动态时区”,“支持_heartbeat_pdu”。

  • 客户机id“字符串”:产品id。

  • “连接提示”:可能的值为“调制解调器”、“低带宽”、“卫星”、“高带宽”、“广域网”、“局域网”、“自动检测”。

  • “物理宽度”:显示的数字物理宽度。

  • “物理高度”:显示的数字物理高度。

  • “桌面方位”:数字方位角。

  • “比例因子”:桌面的数值比例因子。

  • “设备比例因数”:显示的数字比例因数。

15.1.2.13.4. RDP类型:连接响应

与RDP的初始跟踪是完全的。

15.1.2.13.5. RDP类型:TLS握手

与RDP的初始跟踪是完全的。

会话将使用TLS加密。

“x509_serials”字段是观察到的证书序列号的列表,例如“16ed2aa0495f259d4f5d99edada570d1”。

15.1.2.13.6. 实例

RDP日志记录:

"rdp": {
  "tx_id": 0,
  "event_type": "initial_request",
  "cookie": "A70067"
}

"rdp": {
  "tx_id": 1,
  "event_type": "initial_response"
}

"rdp": {
  "tx_id": 2,
  "event_type": "connect_request",
  "client": {
    "version": "v5",
    "desktop_width": 1152,
    "desktop_height": 864,
    "color_depth": 15,
    "keyboard_layout": "en-US",
    "build": "Windows XP",
    "client_name": "ISD2-KM84178",
    "keyboard_type": "enhanced",
    "function_keys": 12,
    "product_id": 1,
    "capabilities": [
      "support_errinfo_pdf"
    ],
    "id": "55274-OEM-0011903-00107"
  },
  "channels": [
    "rdpdr",
    "cliprdr",
    "rdpsnd"
  ]
}

"rdp": {
  "tx_id": 3,
  "event_type": "connect_response"
}

RDP日志记录,并转换到TLS:

"rdp": {
  "tx_id": 0,
  "event_type": "initial_request",
  "cookie": "AWAKECODI"
}

"rdp": {
  "tx_id": 1,
  "event_type": "initial_response",
  "server_supports": [
    "extended_client_data"
  ],
  "protocol": "hybrid"
}

"rdp": {
  "tx_id": 2,
  "event_type": "tls_handshake",
  "x509_serials": [
    "16ed2aa0495f259d4f5d99edada570d1"
  ]
}

15.1.2.14. 事件类型:RFB

15.1.2.14.1. 领域

  • “服务器协议_版本.major“,”服务器协议_次要版本“:服务器提供的RFB协议版本。

  • “客户端协议_版本.major“,”客户端协议_次要版本“:客户同意的版本。

  • "authentication.security_类型“:记录事务中约定的安全类型,例如。 2 是VNC auth。

  • "authentication.vnc.质询", "authentication.vnc.响应“:仅在使用安全类型2时可用。包含服务器和客户端以十六进制字符串形式交换的质询和响应字节缓冲区。

  • "认证.安全-result”:认证过程的结果 (OKFAILTOOMANY

  • “screen_shared”:描述客户端是否请求屏幕共享的布尔值。

  • “framebuffer”:包含关于初始屏幕设置过程的元数据。只有在握手完成时才可用。

  • "framebuffer.width", "framebuffer.height“:屏幕大小由服务器提供。

  • "framebuffer.name“:服务器公布的桌面名称。

  • "framebuffer.pixel_格式“:像素表示信息,例如颜色深度。见RFC6143(https://tools.ietf.org/html/rfc6143)了解详情。

15.1.2.14.2. 实例

RFB日志记录示例,带有完整的VNC样式的身份验证参数:

"rfb": {
  "server_protocol_version": {
    "major": "003",
    "minor": "007"
  },
  "client_protocol_version": {
    "major": "003",
    "minor": "007"
  },
  "authentication": {
    "security_type": 2,
    "vnc": {
      "challenge": "0805b790b58e967f2b350a0c99de3881",
      "response": "aecb26faeaaa62179636a5934bac1078"
    },
    "security-result": "OK"
  },
  "screen_shared": false,
  "framebuffer": {
    "width": 1280,
    "height": 800,
    "name": "foobar@localhost.localdomain",
    "pixel_format": {
      "bits_per_pixel": 32,
      "depth": 24,
      "big_endian": false,
      "true_color": true,
      "red_max": 255,
      "green_max": 255,
      "blue_max": 255,
      "red_shift": 16,
      "green_shift": 8,
      "blue_shift": 0
    }
  }

15.1.2.15. 事件类型:MQTT

MQTT的EVE-JSON输出包含每个MQTT事务的一个对象,以及一些常见的和各种类型的特定字段。

15.1.2.15.1. 交易

单个MQTT通信可以由需要在代理和客户机之间交换的多个消息组成。例如,在更高的QoS级别(>0)下的一些操作通常涉及由一个公共标识符链接的请求和确认消息的组合:

  • CONNECT followed by CONNACK

  • PUBLISH followed by PUBACK (QoS 1) or PUBREC/PUBREL /``PUBCOMP``(QoS 2)

  • SUBSCRIBE followed by SUBACK

  • UNSUBSCRIBE followed by UNSUBACK

MQTT解析器将单个消息合并到一个EVE输出项中(如果它们属于一个事务)。在这种情况下,源和目标信息(IP/端口)反映初始请求的方向,但包含来自双方的消息。

以QoS 2发布的示例:

{
  "timestamp": "2020-05-19T18:00:39.016985+0200",
  "flow_id": 1454127794305760,
  "pcap_cnt": 65,
  "event_type": "mqtt",
  "src_ip": "0000:0000:0000:0000:0000:0000:0000:0001",
  "src_port": 60105,
  "dest_ip": "0000:0000:0000:0000:0000:0000:0000:0001",
  "dest_port": 1883,
  "proto": "TCP",
  "mqtt": {
    "publish": {
      "qos": 2,
      "retain": false,
      "dup": false,
      "topic": "house/bulbs/bulb1",
      "message_id": 3,
      "message": "OFF"
    },
    "pubrec": {
      "qos": 0,
      "retain": false,
      "dup": false,
      "message_id": 3
    },
    "pubrel": {
      "qos": 1,
      "retain": false,
      "dup": false,
      "message_id": 3
    },
    "pubcomp": {
      "qos": 0,
      "retain": false,
      "dup": false,
      "message_id": 3
    }
  }
}

注意一些消息类型(又称控制包类型),例如 PINGREQPINGRESP ,没有类型特定的数据,也没有便于分组到事务中的信息。这些将作为单个项目记录,并且只包含下面列出的公共字段。

15.1.2.15.2. 公共字段

MQTT固定头中的公共字段:

  • “ * .qos“:消息的服务质量级别,介于0和2之间的整数。

  • “ * .retain”:MQTT'retain'标志的布尔值。

  • “ * .dup“:MQTT'dup'(duplicate)标志的布尔值。

15.1.2.15.3. MQTT连接字段

  • "connect.protocolu字符串“:规范中定义的协议字符串,例如。 MQTT (MQTT 3.1.1及更高版本)或 MQIsdp (MQTT 3.1)。

  • "connect.protocolu版本“:规范中定义的协议版本:

    • 协议版本 3 :MQTT 3.1

    • 协议版本 4 :MQTT 3.1.1

    • 协议版本 5 :MQTT 5.0版

  • "connect.flags.username", "connect.flags.password“:设置为 true 如果凭据随连接请求一起提交。

  • "connect.flags.will“:设置为 true 如果立了遗嘱。

  • "connect.flags.willu保留“:设置为 true 如果遗嘱保留在经纪人身上。

  • "connect.will.clean_会话“:设置为 true 如果要使用干净会话建立连接。

  • "connect.client_标识“:客户端ID字符串提交了我的连接客户端。

  • "连接.用户名", "connect.password连接密码“:与连接请求一起提交的用户/密码身份验证凭据。只有在启用相应的配置设置时才会记录密码 (mqtt.passwords: yes

  • "connect.will.topic“:要将遗嘱消息发布到的主题。

  • "connect.will.message“:连接丢失时要发布的消息。

  • "connect.will.properties连接.will.properties“:(可选,MQTT 5.0)将对此请求设置属性。看到了吗 3.1.3.2 in the spec 有关遗嘱属性的详细信息。

  • "connect.properties连接.properties“:(可选,MQTT 5.0)在此请求上设置连接属性。看到了吗 3.1.2.11 in the spec 有关连接属性的详细信息。

MQTT CONNECT日志记录示例:

"connect": {
  "qos": 0,
  "retain": false,
  "dup": false,
  "protocol_string": "MQTT",
  "protocol_version": 5,
  "flags": {
    "username": true,
    "password": true,
    "will_retain": false,
    "will": true,
    "clean_session": true
  },
  "client_id": "client",
  "username": "user",
  "password": "pass",
  "will": {
    "topic": "willtopic",
    "message": "willmessage",
    "properties": {
      "content_type": "mywilltype",
      "correlation_data": "3c32aa4313b3e",
      "message_expiry_interval": 133,
      "payload_format_indicator": 144,
      "response_topic": "response_topic1",
      "userprop": "uservalue",
      "will_delay_interval": 200
    }
  },
  "properties": {
    "maximum_packet_size": 11111,
    "receive_maximum": 222,
    "session_expiry_interval": 555,
    "topic_alias_maximum": 666,
    "userprop1": "userval1",
    "userprop2": "userval2"
  }
}

15.1.2.15.4. MQTT连接字段

  • "connack.session_出席“:设置为 true 如果会话处于继续状态,则为会话。

  • "connack.return U代码“:此回复的返回代码/原因代码。看到了吗 3.2.2.2 in the spec 有关这些代码的更多信息。

  • "connect.properties连接.properties“:(可选,MQTT 5.0)在此请求上设置连接属性。看到了吗 3.2.2.3 in the spec 有关连接属性的详细信息。

MQTT CONNACK日志记录示例:

"connack": {
  "qos": 0,
  "retain": false,
  "dup": false,
  "session_present": false,
  "return_code": 0,
  "properties": {
    "topic_alias_maximum": 10
  }
}

15.1.2.15.5. MQTT发布字段

  • "发布.topic“:此邮件已发布到主题。

  • "publish.message_标识“:(仅在QOS级别>0时出现)此发布的消息ID。

  • "发布.message“:要发布的消息。

  • "publish.properties发布.properties“:(可选,MQTT 5.0)发布对此请求设置的属性。看到了吗 3.3.2.3 in the spec 有关发布属性的详细信息。

MQTT发布日志记录示例:

"publish": {
  "qos": 1,
  "retain": false,
  "dup": false,
  "topic": "topic",
  "message_id": 1,
  "message": "baa baa sheep",
  "properties": {
    "content_type": "mytype",
    "correlation_data": "3c32aa4313b3e",
    "message_expiry_interval": 77,
    "payload_format_indicator": 88,
    "response_topic": "response_topic1",
    "topic_alias": 5,
    "userprop": "userval"
  }
}

15.1.2.15.6. MQTT PUBACK/PUBREL/PUBREC/PUBCOMP字段

  • “ [puback |公共广播|公共广播|公共广播] .message_id“:此消息引用的原始消息id。

  • “ [puback |公共广播|公共广播|公共广播] .reason_code“:此回复的返回码/原因码。有关这些代码的更多信息,请参见规范。

  • “ [puback |公共广播|公共广播|公共广播] .properties“:(可选,MQTT 5.0)对此请求设置的属性。有关这些特性的详细信息,请参见规范。

MQTT PUBACK/PUBREL/PUBREC/PUBCOMP日志记录示例:

"puback": {
  "qos": 0,
  "retain": false,
  "dup": false,
  "message_id": 1,
  "reason_code": 16
}

15.1.2.15.7. MQTT订阅字段

  • "订阅.message_id“:(仅在QOS级别>0时显示)此订阅的消息ID。

  • "订阅.topics“:描述订阅主题的成对数组:

    • "订阅.topics[].topic“:要订阅的主题。

    • "订阅.topics[.qos”:订阅时要申请的qos级别。

  • "订阅.properties“:(可选,MQTT 5.0)对此请求设置订阅属性。看到了吗 3.8.2.1 in the spec 有关订阅属性的详细信息。

MQTT订阅日志记录示例:

"subscribe": {
  "qos": 1,
  "retain": false,
  "dup": false,
  "message_id": 1,
  "topics": [
    {
      "topic": "topicX",
      "qos": 0
    },
    {
      "topic": "topicY",
      "qos": 0
    }
  ]
}

15.1.2.15.8. MQTT子块字段

  • "suback.message_标识“:此邮件引用的原始邮件ID。

  • "suback.qos_授权“:按原始请求的顺序为订阅的主题授予的QOS级别数组。

  • "子组属性“:(可选,MQTT 5.0)在此请求上设置子包属性。看到了吗 3.9.2.1 in the spec 有关子块属性的详细信息。

MQTT子块日志记录示例:

"suback": {
  "qos": 0,
  "retain": false,
  "dup": false,
  "message_id": 1,
  "qos_granted": [
    0,
    0
  ]
}

15.1.2.15.9. MQTT取消订阅字段

  • "取消订阅.message_id“:(仅在QOS级别>0时出现)此取消订阅操作的消息ID。

  • "取消订阅.topics“:要取消订阅的主题数组。

  • "取消订阅.properties“:(可选,MQTT 5.0)取消对此请求设置的属性。看到了吗 3.10.2.1 in the spec 有关取消订阅属性的详细信息。

MQTT取消订阅日志记录示例:

"unsubscribe": {
  "qos": 1,
  "retain": false,
  "dup": false,
  "message_id": 1,
  "topics": [
    "topicX",
    "topicY"
  ]
}

15.1.2.15.10. MQTT UNBACK字段

  • "unback.message_id未备份“:此邮件引用的原始邮件ID。

MQTT unback日志记录示例:

"unsuback": {
  "qos": 0,
  "retain": false,
  "dup": false,
  "message_id": 1
}

15.1.2.15.11. MQTT验证字段(MQTT 5.0)

  • "授权原因代码“:此消息的返回代码/原因代码。看到了吗 3.15.2.1 in the spec 有关这些代码的更多信息。

  • "身份验证属性“:(可选,MQTT 5.0)对此请求设置属性。看到了吗 3.15.2.2 in the spec 有关这些属性的详细信息。

MQTT AUTH日志记录示例:

"auth": {
  "qos": 0,
  "retain": false,
  "dup": false,
  "reason_code": 16
}

15.1.2.15.12. MQTT断开连接字段

  • "授权原因代码“:(可选)此消息的返回代码/原因代码。看到了吗 3.14.2.1 in the spec 有关这些代码的更多信息。

  • "身份验证属性“:(可选,MQTT 5.0)对此请求设置属性。看到了吗 3.14.2.2 in the spec 有关断开连接属性的详细信息。

MQTT断开连接日志记录示例:

"disconnect": {
  "qos": 0,
  "retain": false,
  "dup": false,
  "reason_code": 4,
  "properties": {
    "session_expiry_interval": 122,
  }
}

15.1.2.15.13. 截断的MQTT数据

超过最大消息长度限制的消息(配置设置 app-layer.protocols.mqtt.max-msg-length )不会完全解析以减少拒绝服务问题的危险。在这种情况下,EVE-JSON输出中将只包含精简的元数据。此外,由于没有解析消息ID,这些消息不能被放入事务中,因此,它们总是作为单个事务出现。

这些被截断的事件(除了基本通信元数据之外)只包含以下字段:

  • “截断”:设置为 true 如果条目被截断。

  • “跳过长度”:原始消息的大小。

截断的MQTT发布消息示例(最大长度为10000):

{
  "timestamp": "2020-06-23T16:25:48.729785+0200",
  "flow_id": 1872904524326406,
  "pcap_cnt": 107,
  "event_type": "mqtt",
  "src_ip": "0000:0000:0000:0000:0000:0000:0000:0001",
  "src_port": 53335,
  "dest_ip": "0000:0000:0000:0000:0000:0000:0000:0001",
  "dest_port": 1883,
  "proto": "TCP",
  "mqtt": {
    "publish": {
      "qos": 0,
      "retain": false,
      "dup": false,
      "truncated": true,
      "skipped_length": 100011
    }

15.1.2.16. 事件类型:HTTP2

15.1.2.16.1. 领域

有两个字段“请求”和“响应”,每个字段可以包含同一组字段: “设置”:带有“名称”和“值”的设置列表 “headers”:一个包含“name”和“value”或“table_size_update”或“error”(如果有)的标题列表 * "error_code": the error code from GOAWAY or RST_STREAM, which can be "NO_ERROR" * “优先级”:流优先级。

15.1.2.16.2. 实例

设置框架的HTTP2日志记录示例:

"http2": {
  "request": {
    "settings": [
      {
        "settings_id": "SETTINGSMAXCONCURRENTSTREAMS",
        "settings_value": 100
      },
      {
        "settings_id": "SETTINGSINITIALWINDOWSIZE",
        "settings_value": 65535
      }
    ]
  },
  "response": {}
}

HTTP2日志记录、请求和响应的示例:

"http2": {
  "request": {
    "headers": [
      {
        "name": ":authority",
        "value": "localhost:3000"
      },
      {
        "name": ":method",
        "value": "GET"
      },
      {
        "name": ":path",
        "value": "/doc/manual/html/index.html"
      },
      {
        "name": ":scheme",
        "value": "http"
      },
      {
        "name": "accept",
        "value": "*/*"
      },
      {
        "name": "accept-encoding",
        "value": "gzip, deflate"
      },
      {
        "name": "user-agent",
        "value": "nghttp2/0.5.2-DEV"
      }
    ]
  },
  "response": {
    "headers": [
      {
        "name": ":status",
        "value": "200"
      },
      {
        "name": "server",
        "value": "nghttpd nghttp2/0.5.2-DEV"
      },
      {
        "name": "content-length",
        "value": "22617"
      },
      {
        "name": "cache-control",
        "value": "max-age=3600"
      },
      {
        "name": "date",
        "value": "Sat, 02 Aug 2014 10:50:25 GMT"
      },
      {
        "name": "last-modified",
        "value": "Sat, 02 Aug 2014 07:58:59 GMT"
      }
    ]
  }
}

15.1.2.17. 事件类型:IKE

IKEv1和IKEv2的解析器实现具有略有不同的功能集。可以使用“VERSION_MAJOR”字段(等于1或2)来区分它们。唯一属性包含在单独的“ikev1”和“ikev2”子对象中。

15.1.2.17.1. 领域

  • “init_spi”,“resp_spi”:发起方和响应方的安全参数索引(SPI)。

  • “VERSION_MAJOR”:ISAKMP头部的主要版本。

  • “VERSION_MINOR”:ISAKMP报头的次要版本。

  • payload:当前包中的负载类型列表。

  • “exchange_type”:交换的类型,以数值表示。

  • “EXCHANGE_TYPE_VERBOSE”:交换的类型,以人类可读的形式表示。需求 extended: yes 设置在 ike EVE输出选项。

  • “alg_enc”、“alg_hash”、“alg_auth”、“alg_dh”、“alg_esn”:服务器选择的安全关联的属性。

  • “ikev1.crypted_payload”:设置为 true 如果分组中的有效载荷是加密的。

  • “ikev1.doi”:解释域值(DOI)。

  • “ikev1.server.key_exchange_payload”,“ikev1.client.key_exchange_payload”:服务端和客户端的公钥交换负载。

  • “ikev1.server.key_exchange_payload_length”,“ikev1.client.key_exchange_payload_length”:公钥交换负载的长度。

  • “ikev1.server.nonce_payload”,“ikev1.client.nonce_payload”:服务端和客户端的nonce负载。

  • “ikev1.server.nonce_payload_length”,“ikev1.client.nonce_payload_length”:nonce负载长度。

  • “ikev1.client.client_proposations”:建议给服务器的安全关联列表。

  • “ikev1.vendor_ids”:通信中观察到的供应商ID列表。

  • “SERVER_PROBECTIONS”:带参数的服务器建议列表(如果有多个参数的话)。这是一种非标准情况;只有在被检查的通信量中观察到这种情况时,才会显示此字段。

15.1.2.17.2. 实例

IKE日志记录示例:

"ike": {
  "version_major": 1,
  "version_minor": 0,
  "init_spi": "8511617bfea2f172",
  "resp_spi": "c0fc6bae013de0f5",
  "message_id": 0,
  "exchange_type": 2,
  "exchange_type_verbose": "Identity Protection",
  "sa_life_type": "LifeTypeSeconds",
  "sa_life_type_raw": 1,
  "sa_life_duration": "Unknown",
  "sa_life_duration_raw": 900,
  "alg_enc": "EncAesCbc",
  "alg_enc_raw": 7,
  "alg_hash": "HashSha2_256",
  "alg_hash_raw": 4,
  "alg_auth": "AuthPreSharedKey",
  "alg_auth_raw": 1,
  "alg_dh": "GroupModp2048Bit",
  "alg_dh_raw": 14,
  "sa_key_length": "Unknown",
  "sa_key_length_raw": 256,
  "alg_esn": "NoESN",
  "payload": [
    "VendorID",
    "Transform",
    "Proposal",
    "SecurityAssociation"
  ],
  "ikev1": {
    "doi": 1,
    "encrypted_payloads": false,
    "client": {
      "key_exchange_payload": "0bf7907681a656aabed38fb1ba8918b10d707a8e635a...",
      "key_exchange_payload_length": 256,
      "nonce_payload": "1427d158fc1ed6bbbc1bd81e6b74960809c87d18af5f0abef14d5274ac232904",
      "nonce_payload_length": 32,
      "proposals": [
        {
          "sa_life_type": "LifeTypeSeconds",
          "sa_life_type_raw": 1,
          "sa_life_duration": "Unknown",
          "sa_life_duration_raw": 900,
          "alg_enc": "EncAesCbc",
          "alg_enc_raw": 7,
          "alg_hash": "HashSha2_256",
          "alg_hash_raw": 4,
          "alg_auth": "AuthPreSharedKey",
          "alg_auth_raw": 1,
          "alg_dh": "GroupModp2048Bit",
          "alg_dh_raw": 14,
          "sa_key_length": "Unknown",
          "sa_key_length_raw": 256
        }
      ]
    },
    "server": {
      "key_exchange_payload": "1e43be52b088ec840ff81865074b6d459b5ca7813b46...",
      "key_exchange_payload_length": 256,
      "nonce_payload": "04d78293ead007bc1a0f0c6c821a3515286a935af12ca50e08905b15d6c8fcd4",
      "nonce_payload_length": 32
    },
    "vendor_ids": [
      "4048b7d56ebce88525e7de7f00d6c2d3",
      "4a131c81070358455c5728f20e95452f",
      "afcad71368a1f1c96b8696fc77570100",
      "7d9419a65310ca6f2c179d9215529d56",
      "cd60464335df21f87cfdb2fc68b6a448",
      "90cb80913ebb696e086381b5ec427b1f"
    ]
  },
}

15.1.2.18. 事件类型:Modbus

15.1.2.18.1. 公共字段

  • “id”:Suricata给出的唯一交易号

15.1.2.18.2. 请求/响应字段

  • “transaction_id”:数据包中找到的交易id

  • “protocol_id”:Modbus版本

  • “unit_id”:与之交互的远程服务器ID

  • “function_raw”:函数代码字节的原始值

  • “function_code”:原始函数值的关联名称

  • “access_type”:函数请求的访问类型

  • “类别”:功能码的类别

  • “ERROR_FLAGS”:解析时发现数据错误

15.1.2.18.3. 例外字段

  • “raw”:异常码字节的原始值

  • “code”:原始异常值的关联名称

15.1.2.18.4. 诊断字段

  • “raw”:子函数代码字节的原始值

  • “code”:原始子函数值的关联名称

  • “data”:子函数代码后面的字节

15.1.2.18.5. 梅田

  • “raw”:mei函数代码字节的原始值

  • “code”:原始梅函数值的关联名称

  • “data”:mei函数代码后面的字节

15.1.2.18.6. 读取请求字段

  • “address”:要读取的起始地址

  • “Quantity”:要阅读的金额

15.1.2.18.7. 读取响应字段

  • “data”:读取的数据

15.1.2.18.8. 多个写入请求字段

  • “address”:写入的起始地址

  • “数量”:写入金额

  • “data”:要写入的数据

15.1.2.18.9. 屏蔽写入字段

  • “address”:内容修改起始地址

  • “AND_MASK”:用于修改内容的掩码

  • “or_ask”:或用于修改内容的掩码

15.1.2.18.10. 其他写入字段

  • “address”:写入的起始地址

  • “data”:要写入的数据

15.1.2.18.11. 通用数据字段

  • “data”:函数代码后面的数据

15.1.2.18.12. 例子

请求和响应的Modbus日志记录示例:

"modbus": {
  "id": 1,
  "request": {
    "transaction_id": 0,
    "protocol_id": 0,
    "unit_id": 0,
    "function_raw": 1,
    "function_code": "RdCoils",
    "access_type": "READ | COILS",
    "category": "PUBLIC_ASSIGNED",
    "error_flags": "NONE",
  },
  "response": {
    "transaction_id": 0,
    "protocol_id": 0,
    "unit_id": 0,
    "function_raw": 1,
    "function_code": "RdCoils",
    "access_type": "READ | COILS",
    "category": "PUBLIC_ASSIGNED",
    "error_flags": "DATA_VALUE",
  },
}