DNP3 检查器

DNP3 检查器概述

类型

检查器(服务)

使用方式

检测

实例类型

多实例

所需其他检查器

stream_tcpstream_udp

已启用

false

分布式网络协议 (DNP3) 是一种监控和数据采集 (SCADA) 协议,最初开发是为了在发电站之间提供一致的通信。DNP3 在水务、废弃物、运输行业中得到广泛使用。

dnp3 检查器会检测 DNP3 流量中的异常并分析 DNP3 协议。dnp3 入侵规则选项可访问某些 DNP3 协议字段。

DNP3 检查器参数

DNP3 TCP 端口配置

绑定程序 检查器定义 DNP3 TCP 端口配置。有关详细信息,请参阅绑定程序检查器概述

示例:
[
   {
       "when": {
           "role": "any",
           "service": "dnp3"
	   },
       "use": {
           "type": "dnp3"
       }
    }
]

check_crc

指定是否验证DNP3链路层帧中包含的校验和。 dnp3 检查器会忽略具有无效校验和的帧。如果入侵规则 145:1 已启用,则 Snort 会针对无效校验和生成警报。

类型: boolean

有效值:truefalse

默认值:false

DNP3 检查器规则

启用 dnp3 检查器规则以 生成事件并在内联部署中丢弃攻击性数据包

表 1. DNP3 检查器规则

GID:SID

Rule Message

145:1

DNP3 链路层帧包含错误的 CRC

145:2

DNP3 链路层帧已丢弃

145:3

DNP3 传输层网段在重组期间已丢弃

145:4

已清除 DNP3 重组缓冲区而未重组完整报文

145:5

DNP3 链路层帧使用保留地址

145:6

DNP3 应用层分片使用保留功能代码

DNP3 检查器入侵规则选项

dnp3_data

dnp3_data 关键字将检测光标定位到应用层分片中 DNP3 数据的开头,无论前面的规则选项如何。使用此选项,您可以基于分段内的数据编写规则,而无需拆分数据和每 16 个字节添加 CRC。

语法: dnp3_data;

示例: dnp3_data;

dnp3_func

此选项与 DNP3 应用层请求/响应信头内的功能代码进行匹配。该代码可以是一个十进制数字或下方列表中的字符串。

类型: 字符串

语法: dnp3_fuc:<DNP3_function>;

有效值: DNP3_function 是以下值之一:

  • 介于 0255之间的整数

  • confirm (对应于功能代码 0。)

  • read (对应于功能代码 1。)

  • write (对应于功能代码 2。)

  • select (对应于功能代码 3。)

  • operate (对应于功能代码 4。)

  • direct_operate (对应于功能代码 5。)

  • direct_operat_nr (对应于功能代码 6。)

  • imed_freeze (对应于功能代码 7。)

  • imed_freeze_nr (对应于功能代码 8。)

  • Freeze_clear (对应于功能代码 9。)

  • Freeze_clear_nr (对应于功能代码 10。)

  • Freeze_at_time (对应于功能代码 11。)

  • freeze_at_time_nr (对应于功能代码 12。)

  • cold_restart (对应于功能代码 13。)

  • warm_restart (对应于功能代码 14。)

  • Initialize_data (对应于功能代码 15。)

  • Initialize_appl (对应于功能代码 16。)

  • start_appl (对应于功能代码 17。)

  • stop_appl (对应于功能代码 18。)

  • save_config (对应于功能代码 19。)

  • enable_unservices (对应于功能代码 20。)

  • disable_un Requested (对应于功能代码 21。)

  • Assign_class (对应于功能代码 22。)

  • delay_scale (对应于功能代码 23。)

  • record_current_time (对应于功能代码 24。)

  • open_file (对应于功能代码 25。)

  • close_file (对应于功能代码 26。)

  • delete_file (对应于功能代码 27。)

  • get_file_info (对应于功能代码 28。)

  • authenticate_file (对应于功能代码 29。)

  • abort_file (对应于功能代码 30。)

  • activate_config (对应于功能代码 31。)

  • authenticate_req (对应于功能代码 32。)

  • authenticate_err (对应于功能代码 33。)

  • response (对应于功能代码 129。)

  • unsolicited_response (对应于功能代码 130。)

  • authenticate_resp (对应于功能代码 131。)

示例:

dnp3_func: 1;

dnp3_func: delete_file;

dnp3_ind

提供要根据 DNP3 应用层响应信头中的内部指示符标志进行匹配的内部指示符标志列表。如果在一个选项中提供多个标志,则在设置其中任何一个标志时,该规则都会触发。要对多个标志发出警报,请使用多个规则选项。

类型: 字符串

语法: dnp3_ind: "<flag> ";

有效值: 一个或多个 DNP3 内部指示器标志,其中 flag 为以下之一:

  • all_stations

  • class_1_events

  • class_2_events

  • class_3_events

  • need_time

  • local_control

  • device_trouble

  • device_restart

  • no_func_code_support

  • object_unknown

  • parameter_error

  • event_buffer_overflow

  • already_executing

  • config_corrupt

  • reserved_2

  • reserved_1

示例:

设备重启时或开始时间同步时发出警报:

dnp3_ind:"device_restart need_time";

关于 class_1 、class_2 和 class_3 事件的警报:

dnp3_ind:class_1_events; dnp3_ind:class_2_events; dnp3_ind:class_3_events;

dnp3_obj

在 DNP3 对象报头组及其变体上匹配。

类型: 整数

语法: dnp3_obj:<groupnum> 、<varnum>中所述:

有效值: DNP3 对象组标识符和变体标识符,其中:

  • groupnum 是指定 DNP3 对象组的 0255 之间的整数。

  • varnum 是介于 0255 之间的整数,用于指定对象组内的变体。

示例:

DNP3 上的警报 日期和时间 对象:

dnp3_obj:50,1;