发送自定义指纹配对扫描引擎

如果您开发自定义指纹,您可以让安全控制台将它们自动分发到当前运行扫描时正在使用的任何配对扫描引擎。要做到这一点,只需将指纹文件复制到安全控制台主机上的[installation_directory]/plugins/fp/custom/目录。

您不需要在之后重新启动安全控制台。位于[installation_directory]/nsc/logs/目录下的nsc .log文件将显示一条消息,表明新添加的指纹的位置和编号。

确保指纹的格式正确

自定义XML指纹文件必须满足一定的格式标准才能正常工作,示例如下:

         
1
<?xml version = " 1.0 " ?>
2
<指纹匹配= " ssh.banner " >
3.
<指纹模式= " ^ RomSShell_ ([\ d \] +) $ " >
4
<描述>快板RomSShell SSH > < /描述
5
<例子service.version = " 4.62 " > RomSShell_4.62 < / >示例
6
< param pos = " 0 " name = "服务。供应商“价值= "快板" / >
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中的测试覆盖率中使用,它验证所提供的数据是否与指定的正则表达式匹配。此外,如果指纹正在使用参数元素来从数据中提取字段值,您可以将这些预期的提取添加为示例元素的属性。在前面的例子中,字符串

         
1
<例子service.version = " 4.62 " > RomSShell_4.62 < / >示例

测试,RomSShell_4.62匹配提供的正则表达式和服务的值。版本是4.62。

每一个参数元素包含一个pos属性,该属性指示应该从模式中提取什么捕获字段,或0表示静态字符串。

的名字属性是将在成功匹配时报告的键,该值将是pos值为0或丢失并从捕获的字段中获取。

创建指纹的最佳实践

为每个产品创建一个单一的指纹,只要图案保持清晰和可读。如果这是不可能的,在逻辑上将模式分离成额外的指纹。

创建允许灵活的版本号匹配的正则表达式。这确保了匹配产品的更大概率。例如,一个产品的所有已知的公开发布要么是主要的。Minor或major.minor.build格式版本号。如果指纹严格匹配这个版本号格式,它将无法匹配只报告主要版本号格式的产品的修改版本。

通过命令行测试自定义指纹

您可以通过输入execute命令行来测试指纹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"=