Suricata新增POP3協議解析(未完待續)
阿新 • • 發佈:2022-04-22
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 | 新增解析器註冊函式 |
問題記錄
解決步驟:
-
用
autoscan
產生一個configure.in
的原型,執行autoscan
後會產生一個configure.scan
的檔案,可以用它作為configure.in
的藍本 -
執行
aclocal
和autoconf
,分別會產生aclocal.m4
和configure
兩個檔案 -
然後執行
automake --add-missing
-
最後執行
./configure
等繼續其他步驟即可
2. 修改協議解析器的實現
協議識別
(1)字串檢索
新增 Pop3RegisterPatternsForProtocolDetection 函式為Pop3協議註冊關鍵字"USER","PASS"和"APOP",在註冊解析器時(RegisterPop3Parsers
(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
還可在配置檔案中新增多個埠,如下(需要注意的是,每一項必須嚴格用空格對齊,埠之前用空格間隔)