向成对扫描引擎发送自定义指纹
如果您开发自定义指纹,您可以让安全控制台将它们自动分发到当前运行扫描时正在使用的任何配对扫描引擎。要做到这一点,只需将指纹文件复制到安全控制台主机上的[installation_directory]/plugins/fp/custom/目录。
您不需要在之后重新启动安全控制台。位于[installation_directory]/nsc/logs/目录下的nsc .log文件将显示一条消息,表明新添加的指纹的位置和编号。
确保指纹的格式正确
自定义指纹XML文件必须满足某些格式标准才能正常工作,如以下示例所示:
1
<?xml version = " 1.0 " ?>
2
3.
<指纹模式= " ^ RomSShell_ ([\ d \] +) $ " >
4
<描述> allegro romsshell ssh 描述>
5
<例子service.version = " 4.62 " > RomSShell_4.62 < / >示例
6
7
< param pos = " 0 " name = "服务。产品“价值= " RomSShell " / >
8
< param pos = " 1 " name = " service.version " / >
9
< /指纹>
10
> < /指纹
第一行包含XML版本声明。
第一个元素是a指纹块,该块带有一个matches属性,该属性指示指纹文件要匹配的数据。
的比赛属性的形式通常为protocol.field.
的指纹元素包含一个或多个指纹元素。
每个指纹都包含一个图案属性使用正则表达式匹配数据。
可选的flags属性控制如何解释正则表达式。看到FLAG_MAP的Recog文档了解更多信息。
每个指纹都包含一个描述元素,该元素具有描述指纹的可读字符串。
至少一个例子元素,但最好包含多个示例元素。这些元素在rspec中的测试覆盖率中使用,它验证所提供的数据是否与指定的正则表达式匹配。此外,如果指纹正在使用param元素来从数据中提取字段值,您可以将这些预期的提取添加为示例元素的属性。在前面的例子中,字符串
1
<例子service.version = " 4.62 " > RomSShell_4.62 < / >示例
测试,罗姆舍尔4.62匹配提供的正则表达式,并且服务的值.Version是4.62。
每一个param元素包含一个销售时点情报系统属性,该属性指示应该从模式中提取什么捕获字段,或0表示静态字符串。
的名称属性是将在成功匹配时报告的键,该值将是销售时点情报系统值为0或缺失,并从捕获的字段中获取。
创建指纹的最佳实践
为每个产品创建一个单一的指纹,只要图案保持清晰和可读。如果这是不可能的,在逻辑上将模式分离成额外的指纹。
创建允许灵活版本号匹配的正则表达式。这确保了匹配产品的可能性更大。例如,产品报告的所有已知公共发布版本(major.minor或major.minor.build格式)的版本号。如果指纹严格匹配此版本号格式,它将无法匹配仅报告主要版本号格式的产品的修改版本。
通过命令行测试自定义指纹
您可以通过命令行输入executing来测试指纹bin / recog_verify.针对指纹文件:
1
bin / recog_verify xml / ssh_banners.xml美元
你可以通过命令行类似地测试匹配:
1
$ echo 'OpenSSH_6.6p1 Ubuntu-2ubuntu1' | bin/recog_match xml/ssh_banner .xml -
2
MATCH: {"service.version"=>"6.6p1", "openssh.comment"=>"Ubuntu-2ubuntu1", "service.vendor"=