BNF范式
ATTACK::= ATTACK_NAME { SIGNATURES
MATCH
DESCRIPTION }
ATTACK_NAME::= <字符串>
SIGNATURES::= SIGNATURE SIGNATURES | ε
SIGNATURE::= IP_SIGNATURE | DIR | GET_SIGNATURE |
OPT_SIGATURE | EXP_SIGNATURE | PROTO | ε
PROTO::= tcp | ip | icmp | udp
IP_SIGNATURE::= (sip | dip) IP_ADDR [/ MASK] |ε
IP_ADDR::= <整数>.<整数>.<整数>.<整数> // 大于0小于255的自然数
MASK::= <整数> // 大于1小于32的自然数
OPT_SIGATURE::= opt: OPTS |ε
OPTS::= (OPT | !OPT) OPTS |ε
OPT::= cwr | ecn | urg | ack | push | reset | syn | fin |ε
DIR::= s2d | d2s |ε
EXP_SIGNATURE::= EXP_NAME : EXPS |ε
EXP_NAME::= sport | dport | udplen | tcplen | iplen |
tcpsequence |ε
EXPS::= EXP EXPS | Z
EXP::= <整数> : <整数>
EXP::= EXP (or | and) EXP
EXP::= !EXP
GET_SIGNATURE::= MatchGet
MATCH::= SUBSTR MATCH | Z
SUBSTR::= substr (匹配字符串,匹配起始点,匹配结束点,匹配模式)
匹配模式::= nocase | anamorphosis
DESCRIPTION::= ALARM CONFIDENCE SEVERITY CVE
ALARM::= @alarm=攻击代号,攻击类型
CONFIDENCE::= !Confidence= <整数>
SEVERITY::= !Severity= <整数>
CVE::= <字符串>
本文介绍了如何使用C++语言来实现BNF(巴科斯范式)定义的攻击检测规则,包括ATTACK结构、签名定义、匹配条件等。涉及TCP/IP协议,涵盖IP地址、端口、协议类型以及各种选项标志。同时,文章还讨论了匹配字符串、信心度和严重性等关键要素。
536

被折叠的 条评论
为什么被折叠?



