10.25. ENIP/CIP 关键词

10.25.1. enip_command

针对ENIP命令,我们匹配ENIP封装中的命令字段。

示例:

enip_command:99;
enip_command:list_identity;

enip_command使用:ref:16位无符号整数 <rules-integer-keywords>。 也可以通过枚举文本指定。

10.25.2. cip_service

对于CIP服务,我们最多使用3个逗号分隔值,分别表示服务、类和属性。 这些值在CIP规范中有描述。CIP类与其服务相关联,CIP属性与其服务相关联。 如果只需匹配到服务级别,则只需提供服务值。若需匹配到CIP属性,则必须提供全部3个值。

示例:

cip_service:75
cip_service:16,246,6

(参考 http://read.pudn.com/downloads166/ebook/763211/EIP-CIP-V1-1.0.pdf)

协议信息可在此处查阅: http://literature.rockwellautomation.com/idc/groups/literature/documents/wp/enet-wp001_-en-p.pdf

10.25.3. enip.status

针对ENIP状态,我们匹配ENIP封装中的状态字段。 使用32位无符号整数值。

enip.status使用:ref:32位无符号整数 <rules-integer-keywords>。 也可以通过枚举文本指定。

示例:

enip.status:100;
enip.status:>106;
enip.status:invalid_cmd;

10.25.4. enip.protocol_version

匹配不同消息中的协议版本。 使用16位无符号整数值。

enip.protocol_version使用:ref:16位无符号整数 <rules-integer-keywords>

示例:

enip.protocol_version:1;
enip.protocol_version:>1;

10.25.5. enip.cip_attribute

匹配不同消息中的cip属性。 使用32位无符号整数值。

允许在不匹配cip.service的情况下进行匹配。

enip.cip_attribute使用:ref:32位无符号整数 <rules-integer-keywords>

示例:

enip.cip_attribute:1;
enip.cip_attribute:>1;

10.25.6. enip.cip_instance

匹配CIP请求路径中的cip实例。 使用32位无符号整数值。

enip.cip_instance使用:ref:32位无符号整数 <rules-integer-keywords>

示例:

enip.cip_instance:1;
enip.cip_instance:>1;

10.25.7. enip.cip_class

匹配CIP请求路径中的cip类。 使用32位无符号整数值。

enip.cip_class使用:ref:32位无符号整数 <rules-integer-keywords>

允许在不匹配cip.service的情况下进行匹配。

示例:

enip.cip_class:1;
enip.cip_class:>1;

10.25.8. enip.cip_extendedstatus

匹配存在的cip扩展状态(如果有)。 对于多服务数据包,将匹配任何出现的状态。 使用16位无符号整数值。

enip.cip_extendedstatus使用:ref:16位无符号整数 <rules-integer-keywords>

示例:

enip.cip_extendedstatus:1;
enip.cip_extendedstatus:>1;

10.25.9. enip.revision

匹配身份消息中的修订版本。 使用16位无符号整数值。

enip.revision使用:ref:16位无符号整数 <rules-integer-keywords>

示例:

enip.revision:1;
enip.revision:>1;

10.25.10. enip.identity_status

匹配身份消息中的状态(非ENIP头部)。 使用16位无符号整数值。

enip.identity_status使用:ref:16位无符号整数 <rules-integer-keywords>

示例:

enip.identity_status:1;
enip.identity_status:>1;

10.25.11. enip.state

匹配身份消息中的状态。 使用8位无符号整数值。

enip.state使用:ref:8位无符号整数 <rules-integer-keywords>

示例:

enip.state:1;
enip.state:>1;

10.25.12. enip.serial

匹配身份消息中的序列号。 使用32位无符号整数值。

enip.serial使用:ref:32位无符号整数 <rules-integer-keywords>

示例:

enip.serial:1;
enip.serial:>1;

10.25.13. enip.product_code

匹配身份消息中的产品代码。 使用16位无符号整数值。

enip.product_code使用:ref:16位无符号整数 <rules-integer-keywords>

示例:

enip.product_code:1;
enip.product_code:>1;

10.25.14. enip.device_type

匹配身份消息中的设备类型。 使用16位无符号整数值。

enip.device_type使用:ref:16位无符号整数 <rules-integer-keywords>

示例:

enip.device_type:1;
enip.device_type:>1;

10.25.15. enip.vendor_id

匹配身份消息中的厂商ID。 使用16位无符号整数值。

enip.vendor_id使用:ref:16位无符号整数 <rules-integer-keywords>

示例:

enip.vendor_id:1;
enip.vendor_id:>1;

10.25.16. enip.product_name

匹配身份消息中的产品名称。

示例:

enip.product_name; pcre:"/^123[0-9]*/";
enip.product_name; content:"swordfish";

enip.product_name 是'粘性缓冲区',可用作 fast_pattern

10.25.17. enip.service_name

匹配服务列表消息中的服务名称。

示例:

enip.service_name; pcre:"/^123[0-9]*/";
enip.service_name; content:"swordfish";

enip.service_name 是'粘性缓冲区',可用作 fast_pattern

10.25.18. enip.capabilities

匹配服务列表消息中的功能。 使用16位无符号整数值。

enip.capabilities使用:ref:16位无符号整数 <rules-integer-keywords>

示例:

enip.capabilities:1;
enip.capabilities:>1;

10.25.19. enip.cip_status

匹配cip状态(多服务数据包中的任意一个状态)。 使用8位无符号整数值。

enip.cip_status使用:ref:8位无符号整数 <rules-integer-keywords>

示例:

enip.cip_status:1;
enip.cip_status:>1;