1. 程式人生 > 其它 >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 新增解析器註冊函式

問題記錄

解決步驟:

  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

還可在配置檔案中新增多個埠,如下(需要注意的是,每一項必須嚴格用空格對齊,埠之前用空格間隔)

協議解析


3. 修改輸出模組的實現