panabit是国内协议识别性能最高的厂商,作为一个安全开发者,确实很有理由去研究下。
panabit一般运行在freeBSD系统下,但是最近的版本都有liveCD这也省去了我很多下在系统的时间。直接用vmware新建一个虚拟机,如果需要功能正常的话,至少需要3块网卡,通过liveCD启动,然后运行./setup, 虚拟机的安装就搞定了。panabit的数据网卡只能运行在2层模式(网桥模式), 不支持路由,有点遗憾。
安装完成后重起系统,执行/usr/panabit/bin/ipectrl start启动panabit服务。如果安装时配置的IP为192.168.80.123,那么就可以在主机上通过IE查看管理页面了。访问方式为https://192.168.80.123, 注意是https。
panabit系统将硬盘分为以下几个分区
Filesystem Size Used Avail Capacity Mounted on
/dev/da0s1a 91M 21M 62M 25% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/da0s2a 15M 4.8M 9.0M 35% /usr/panabit //主程序
/dev/da0s3a 23M 22K 21M 0% /usr/panaetc //配置文件
/dev/da0s4a 19G 40K 18G 0% /usr/panalog //纪录日志信息
/dev/md1 31M 4.7M 24M 17% /usr/ramdisk //这是一个内存镜像, 应该是升级的时候用到
在目录/usr/panabit目录下
2 ./.snap
2 ./rdf
32 ./kernel/joskm.ko
352 ./kernel/if_em.ko
114 ./kernel/ixgbe.ko
10 ./kernel/josnet.ko
510 ./kernel
2 ./etc/version
2 ./etc/localtime
2 ./etc/panabit.inf
8 ./etc
4 ./bin/natcfg
608 ./bin/floweye
128 ./bin/ipe_datamon
256 ./bin/ipe_xping
272 ./bin/ipe_mgd
64 ./bin/ipe_httpd
8 ./bin/ipe_monitor
10 ./bin/ipectrl
2 ./bin/natinit
1280 ./bin/panaos
190 ./bin/lcdshow
2824 ./bin
admin目录下存放的是web后台, etc下存放的version是特征库的版本,localtime是本地时间配置。
kernel下是内核模块,if_em.ko应该是内核的接口驱动,josnet应该就是说的内核网口调度相关的实现了,好像是重写了poll接口。我很高兴看到ixgbe.ko,至少让我明白panabit也用到了UIO来优化性能(ixgbe是一个开源项目)。老版本没有ixgbe.ko文件,这个文件应该是为了应付i386多核的性能优化加入的,同时也可以猜测出多核模式下panaos进行的多线程绑定关系。
bin目录下我就我个人理解来说下都是干嘛用的。
floweye 流量分析展示
ipe_datamon 数据中心
ipe_xping 不明白,有谁知道可以告知下
ipe_mgd 应该是消息中心
ipe_httpd web服务器
ipe_monitor 监控
ipectrl 启动脚本
panaos 这个应该是流量解析的主程序。
我很遗憾没有看到真实的特征库,而是一个个的可执行文件。
为了分析是否真的有特征库, 我特意到panabit官网下载了个特征库Panabit_20100524_FreeBSD7x_new.pdb,以为能看出点端倪,结果很失望。
Panabit_20100524_FreeBSD7x_new.pdb就只是一个gz格式的tar压缩包。
通过以下命令就能解压
mv Panabit_20100524_FreeBSD7x_new.pdb Panabit_20100524_FreeBSD7x_new.tar.gz
tar -zxvf Panabit_20100524_FreeBSD7x_new.tar.gz
解压后只有floweye ipe_datamon panaos version这个文件。所以可以肯定是panabit执行代码和库是绑定的。这有别于传统的协议识别引擎,
传统的识别引擎和库是分离的, 也就是说引擎一般是一个可执行的程序或者代码段,而特征库在引擎启动时进行加载,库一般是一个加密文件。
那么我觉得一种就是在代码中通过if else这种逻辑去判断是什么协议,这种实现效率和代码逻辑感觉都不好。
那另外一个就是代码中已经将特征进行了预编译,启动时直接使用内存镜像,省去了预编译等等工作。
个人觉得应该是第二种情况。
在panabit的官网中也提到了特征库的描述语言。“协议特征描述语言”——PSDL(Protocol Signature Description Language)“