10.81. LDAP 关键词¶
10.81.1. LDAP 请求与响应操作¶
代码 |
操作类型 |
---|---|
0 |
bind_request |
1 |
bind_response |
2 |
unbind_request |
3 |
search_request |
4 |
search_result_entry |
5 |
search_result_done |
6 |
modify_request |
7 |
modify_response |
8 |
add_request |
9 |
add_response |
10 |
del_request |
11 |
del_response |
12 |
mod_dn_request |
13 |
mod_dn_response |
14 |
compare_request |
15 |
compare_response |
16 |
abandon_request |
19 |
search_result_reference |
23 |
extended_request |
24 |
extended_response |
25 |
intermediate_response |
关键词 ldap.request.operation 和 ldap.responses.operation 既支持操作代码也支持操作名称作为参数。
10.81.2. ldap.request.operation¶
Suricata 提供 ldap.request.operation
关键词,可用于签名中以识别和基于轻量目录访问协议请求操作过滤网络数据包。
语法:
ldap.request.operation: 操作;
ldap.request.operation 使用 无符号8位整数。
该关键词映射到 EVE 字段 ldap.request.operation
。
10.81.2.1. 示例¶
以下签名示例会在数据包包含 LDAP 绑定请求操作时触发告警:
alert ldap any any -> any any (msg:"测试 LDAP 绑定请求"; ldap.request.operation:0; sid:1;)
alert ldap any any -> any any (msg:"测试 LDAP 绑定请求"; ldap.request.operation:bind_request; sid:1;)
10.81.3. ldap.responses.operation¶
Suricata 提供 ldap.responses.operation
关键词,可用于签名中以识别和基于轻量目录访问协议响应操作过滤网络数据包。
语法:
ldap.responses.operation: 操作[,索引];
ldap.responses.operation 使用 无符号8位整数。
该关键词映射到 EVE 字段 ldap.responses[].operation
。
一个 LDAP 请求操作可能收到多个响应。默认情况下,ldap.responses.operation 关键词匹配所有索引,但也可以指定特定索引进行匹配,并使用 all
和 any
等标志。
10.81.3.1. 示例¶
以下签名示例会在数据包包含 LDAP 绑定响应操作时触发告警:
alert ldap any any -> any any (msg:"测试 LDAP 绑定响应"; ldap.responses.operation:1; sid:1;)
alert ldap any any -> any any (msg:"测试 LDAP 绑定响应"; ldap.responses.operation:bind_response; sid:1;)
以下签名示例会在数据包在索引1处包含 LDAP search_result_done 响应操作时触发告警:
alert ldap any any -> any any (msg:"测试 LDAP 搜索响应"; ldap.responses.operation:search_result_done,1; sid:1;)
以下签名示例会在所有响应类型均为 search_result_entry 时触发告警:
alert ldap any any -> any any (msg:"测试 LDAP 搜索响应"; ldap.responses.operation:search_result_entry,all; sid:1;)
关键词 ldap.responses.operation 支持使用负数进行从后向前索引,即-1表示最后一个索引,-2表示倒数第二个索引,依此类推。以下签名示例会在最后一个索引处找到 search_result_entry 响应时触发告警:
alert ldap any any -> any any (msg:"测试 LDAP 搜索响应"; ldap.responses.operation:search_result_entry,-1; sid:1;)
10.81.4. ldap.responses.count¶
基于响应数量进行匹配。
语法:
ldap.responses.count: [操作符]数量;
可以精确匹配或使用 op
设置进行比较:
ldap.responses.count:3 # 精确匹配3个响应
ldap.responses.count:<3 # 少于3个响应
ldap.responses.count:>=2 # 大于或等于2个响应
ldap.responses.count 使用 无符号32位整数。
该关键词映射到 EVE 字段 len(ldap.responses[])
。
10.81.4.1. 示例¶
以下签名示例会在数据包包含0个 LDAP 响应时触发告警:
alert ldap any any -> any any (msg:"数据包包含0个 LDAP 响应"; ldap.responses.count:0; sid:1;)
以下签名示例会在数据包包含超过2个 LDAP 响应时触发告警:
alert ldap any any -> any any (msg:"数据包包含超过2个 LDAP 响应"; ldap.responses.count:>2; sid:1;)
10.81.5. ldap.request.dn¶
匹配请求操作中的 LDAP 专有名称。
比较区分大小写。
语法:
ldap.request.dn; content:"<要匹配的内容>";
ldap.request.dn
是 'sticky buffer',可用作 fast_pattern
。
该关键词映射到以下 EVE 字段:
ldap.request.bind_request.name
ldap.request.add_request.entry
ldap.request.search_request.base_object
ldap.request.modify_request.object
ldap.request.del_request.dn
ldap.request.mod_dn_request.entry
ldap.request.compare_request.entry
10.81.5.1. 示例¶
以下签名示例会在数据包包含 LDAP 专有名称 uid=jdoe,ou=People,dc=example,dc=com
时触发告警:
alert ldap any any -> any any (msg:"测试 LDAPDN"; ldap.request.dn; content:"uid=jdoe,ou=People,dc=example,dc=com"; sid:1;)
可以在同一条规则中使用 ldap.request.operation
关键词指定要匹配的操作。
以下签名示例会在数据包包含 LDAP 搜索请求操作且包含 LDAP 专有名称 dc=example,dc=com
时触发告警:
alert ldap any any -> any any (msg:"测试 LDAPDN 和操作"; ldap.request.operation:search_request; ldap.request.dn; content:"dc=example,dc=com"; sid:1;)
10.81.6. ldap.responses.dn¶
匹配响应操作中的 LDAP 专有名称。
比较区分大小写。
语法:
ldap.responses.dn; content:"<要匹配的内容>";
ldap.responses.dn
是 'sticky buffer',可用作 fast_pattern
。
ldap.responses.dn
支持多缓冲区匹配,参见 多缓冲区匹配。
该关键词映射到以下 EVE 字段:
ldap.responses[].search_result_entry.base_object
ldap.responses[].bind_response.matched_dn
ldap.responses[].search_result_done.matched_dn
ldap.responses[].modify_response.matched_dn
ldap.responses[].add_response.matched_dn
ldap.responses[].del_response.matched_dn
ldap.responses[].mod_dn_response.matched_dn
ldap.responses[].compare_response.matched_dn
ldap.responses[].extended_response.matched_dn
Note
如果数组中的某个响应不包含专有名字段,该字段将被解释为空缓冲区。
10.81.6.1. 示例¶
以下签名示例会在数据包包含 LDAP 专有名称 dc=example,dc=com
时触发告警:
alert ldap any any -> any any (msg:"测试 LDAPDN"; ldap.responses.dn; content:"dc=example,dc=com"; sid:1;)
可以在同一条规则中使用 ldap.responses.operation
关键词指定要匹配的操作。
以下签名示例会在数据包在响应数组的索引1处包含 LDAP 搜索结果条目操作且包含 LDAP 专有名称 dc=example,dc=com
时触发告警:
alert ldap any any -> any any (msg:"测试 LDAPDN 和操作"; ldap.responses.operation:search_result_entry,1; ldap.responses.dn; content:"dc=example,dc=com"; sid:1;)
10.81.7. ldap.responses.result_code¶
Suricata 提供 ldap.responses.result_code
关键词,可用于签名中以基于 LDAP 结果代码识别和过滤网络数据包。
语法:
ldap.responses.result_code: 代码[,索引];
ldap.responses.result_code 使用 无符号32位整数。
该关键词映射到以下 EVE 字段:
ldap.responses[].bind_response.result_code
ldap.responses[].search_result_done.result_code
ldap.responses[].modify_response.result_code
ldap.responses[].add_response.result_code
ldap.responses[].del_response.result_code
ldap.responses[].mod_dn_response.result_code
ldap.responses[].compare_response.result_code
ldap.responses[].extended_response.result_code
代码 |
名称 |
---|---|
0 |
success |
1 |
operations_error |
2 |
protocol_error |
3 |
time_limit_exceeded |
4 |
size_limit_exceeded |
5 |
compare_false |
6 |
compare_true |
7 |
auth_method_not_supported |
8 |
stronger_auth_required |
10 |
referral |
11 |
admin_limit_exceeded |
12 |
unavailable_critical_extension |
13 |
confidentiality_required |
14 |
sasl_bind_in_progress |
16 |
no_such_attribute |
17 |
undefined_attribute_type |
18 |
inappropriate_matching |
19 |
constraint_violation |
20 |
attribute_or_value_exists |
21 |
invalid_attribute_syntax |
32 |
no_such_object |
33 |
alias_problem |
34 |
invalid_dns_syntax |
35 |
is_leaf |
36 |
alias_dereferencing_problem |
48 |
inappropriate_authentication |
49 |
invalid_credentials |
50 |
insufficient_access_rights |
51 |
busy |
52 |
unavailable |
53 |
unwilling_to_perform |
54 |
loop_detect |
60 |
sort_control_missing |
61 |
offset_range_error |
64 |
naming_violation |
65 |
object_class_violation |
66 |
not_allowed_on_non_leaf |
67 |
not_allowed_on_rdn |
68 |
entry_already_exists |
69 |
object_class_mods_prohibited |
70 |
results_too_large |
71 |
affects_multiple_dsas |
76 |
control_error |
80 |
other |
81 |
server_down |
82 |
local_error |
83 |
encoding_error |
84 |
decoding_error |
85 |
timeout |
86 |
auth_unknown |
87 |
filter_error |
88 |
user_canceled |
89 |
param_error |
90 |
no_memory |
91 |
connect_error |
92 |
not_supported |
93 |
control_not_found |
94 |
no_results_returned |
95 |
more_results_to_return |
96 |
client_loop |
97 |
referral_limit_exceeded |
100 |
invalid_response |
101 |
ambiguous_response |
112 |
tls_not_supported |
113 |
intermediate_response |
114 |
unknown_type |
118 |
canceled |
119 |
no_such_operation |
120 |
too_late |
121 |
cannot_cancel |
122 |
assertion_failed |
123 |
authorization_denied |
4096 |
e_sync_refresh_required |
16654 |
no_operation |
更多关于 LDAP 结果代码值的信息可参考: https://ldap.com/ldap-result-code-reference/
一个 LDAP 请求操作可能收到多个响应。默认情况下,ldap.responses.result_code 关键词匹配任意索引,但也可以指定特定索引进行匹配,并使用 all
和 any
等标志。
10.81.7.1. 示例¶
以下签名示例会在数据包在任意索引处包含 success
LDAP 结果代码时触发告警:
alert ldap any any -> any any (msg:"测试 LDAP 结果代码"; ldap.responses.result_code:0; sid:1;)
alert ldap any any -> any any (msg:"测试 LDAP 结果代码"; ldap.responses.result_code:success,any; sid:1;)
以下签名示例会在数据包在索引1处包含 unavailable
LDAP 结果代码时触发告警:
alert ldap any any -> any any (msg:"测试索引1处的 LDAP 结果代码"; ldap.responses.result_code:unavailable,1; sid:1;)
以下签名示例会在所有响应均包含 success
LDAP 结果代码时触发告警:
alert ldap any any -> any any (msg:"测试所有 LDAP 响应均为成功结果代码"; ldap.responses.result_code:success,all; sid:1;)
关键词 ldap.responses.result_code 支持使用负数进行从后向前索引,即-1表示最后一个索引,-2表示倒数第二个索引,依此类推。以下签名示例会在最后一个索引处找到 success
结果代码时触发告警:
alert ldap any any -> any any (msg:"测试最后一个索引处的 LDAP 成功"; ldap.responses.result_code:success,-1; sid:1;)
10.81.8. ldap.responses.message¶
匹配响应操作中的 LDAP 错误消息。
比较区分大小写。
语法:
ldap.responses.message; content:"<要匹配的内容>";
ldap.responses.message
是 'sticky buffer',可用作 fast_pattern
。
ldap.responses.message
支持多缓冲区匹配,参见 多缓冲区匹配。
该关键词映射到以下 EVE 字段:
ldap.responses[].bind_response.message
ldap.responses[].search_result_done.message
ldap.responses[].modify_response.message
ldap.responses[].add_response.message
ldap.responses[].del_response.message
ldap.responses[].mod_dn_response.message
ldap.responses[].compare_response.message
ldap.responses[].extended_response.message
Note
如果数组中的某个响应不包含错误消息字段,该字段将被解释为空缓冲区。
10.81.8.1. 示例¶
以下签名示例会在数据包包含 LDAP 错误消息 Size limit exceeded
时触发告警:
alert ldap any any -> any any (msg:"测试 LDAP 错误消息"; ldap.responses.message; content:"Size limit exceeded"; sid:1;)
10.81.9. ldap.request.attribute_type¶
匹配请求操作中的 LDAP 属性类型。
比较区分大小写。
语法:
ldap.request.attribute_type; content:"<要匹配的内容>";
ldap.request.attribute_type
是 'sticky buffer',可用作 fast_pattern
。
ldap.request.attribute_type
支持多缓冲区匹配,参见 多缓冲区匹配。
该关键词映射到以下 EVE 字段:
ldap.request.search_request.attributes[]
ldap.request.modify_request.changes[].modification.attribute_type
ldap.request.add_request.attributes[].name
``ldap