nmap安装完成后,nmap-service-probes文件(默认路径为:/usr/local/share/nmap)中包含了大量的probe请求以及响应的对应关系。
文件中附带标记####NEXT PROBE####的部分,既为nmap中预先构造好的banner识别请求。
在扫描中附加--version-trace --version-all选项,可以看到nmap主动发送这些请求。
但nmap中内置指纹库不可能那么齐全,因此即便对于某些常见的HTTP服务,邮件服务等,都会存在误报或者无法识别的情况。
对于这种情况,需要在nmap-service-probes文件手工添加match记录,并添加自定义的服务描述,让nmap具备对未知指纹的识别,以及后续扫描脚本的执行功能。
对于上图的143端口,已知其是imap服务,并返回可用于识别的字符串OK Hermes (ver-1.0.0-2018-01-25) Thu,22 Feb 2018 11:05:56 +0800 ..
因此只需要将可识别的字符串,通用化成正则表达式加入nmap-service-probes文件中,即可。
因为imap服务在不需要payload的情况下,便会返回该字符串,因此将用于匹配该指纹的
规则记录match imap m|^\* OK Hermes| p/Hermes imap/
添加到nmap-service-probes文件中的Probe TCP NULL项目下即可。
这样原先不可被识别的imap服务,现在已经变成可识别的了,同时扫描时间大大缩短。