其他分享
首页 > 其他分享> > Suricata新增POP3协议解析(未完待续)

Suricata新增POP3协议解析(未完待续)

作者:互联网

1. 生成新协议的解析模板

例:创建pop3协议的解析模板

scripts文件夹下 setup-app-layer_原版.py 文件适用于python3,setup-app-layer.py 适用于python2

cd suricata-6.0.3
python scripts/setup-app-layer.py Pop3

执行脚本后新增文件:

src/app-layer-pop3.c pop3协议的应用层检测器和解析器
src/app-layer-pop3.h
src/output-json-arp.c pop3协议的JSON应用层事务记录器
src/output-json-arp.h

修改的文件:

src/Makefile.am 添加解析器和输出模块源码文件
suricata.yaml.in 添加协议解析配置,添加输出输出配置
src/suricata-common.h 添加输出模块号枚举
src/output.c 添加输出模块注册函数
src/util-profiling.c 新增输出模块号与其等价字符串映射
src/app-layer-protos.h 添加协议号枚举
src/app-layer-protos.c 新增协议名与协议号映射
src/app-layer-detect-proto.c 新增协议名与协议号映射
src/app-layer-parser.c 添加解析器注册函数

问题记录

img

解决步骤:

  1. autoscan产生一个configure.in的原型,执行autoscan后会产生一个configure.scan的文件,可以用它作为configure.in的蓝本

  2. 执行aclocalautoconf,分别会产生aclocal.m4configure两个文件

  3. 然后执行automake --add-missing

  4. 最后执行./configure等继续其他步骤即可

2. 修改协议解析器的实现

协议识别

(1)字符串检索

添加 Pop3RegisterPatternsForProtocolDetection 函数为Pop3协议注册关键字"USER","PASS"和"APOP",在注册解析器时(RegisterPop3Parsers)调用 ,关键字注册函数 AppLayerProtoDetectPMRegisterPatternCI

(2)端口检测

修改 AppLayerProtoDetectPPRegister 端口注册函数,默认端口改为110

/* The default port to probe for echo traffic if not provided in the
 * configuration file. */
#define POP3_DEFAULT_PORT "110"

/* The minimum size for a message. For some protocols this might
 * be the size of a header. */
#define POP3_MIN_FRAME_LEN 3

还可在配置文件中添加多个端口,如下(需要注意的是,每一项必须严格用空格对齐,端口之前用空格间隔)

img

协议解析


3. 修改输出模块的实现

标签:未完待续,layer,src,协议,Suricata,POP3,添加,pop3,app
来源: https://www.cnblogs.com/cetacean/p/16178742.html