Recog指纹库详解:30+协议类型与匹配场景全解析
Recog指纹库详解30协议类型与匹配场景全解析【免费下载链接】recogPattern recognition for hosts, services, and content项目地址: https://gitcode.com/gh_mirrors/re/recogRecog是一个强大的指纹识别框架专门用于通过模式匹配技术识别网络服务、操作系统和硬件设备。这个开源项目由Rapid7维护提供了超过50种协议类型的指纹库能够从各种网络探测返回的数据中提取有价值的信息。对于网络安全从业者、系统管理员和开发人员来说Recog是一个不可或缺的工具能够快速识别网络环境中的服务和设备。 Recog指纹库核心功能概览Recog的核心价值在于其庞大的指纹数据库这些指纹以XML格式存储在项目的xml/目录中。每个指纹文件都针对特定的协议响应字符串或字段进行设计能够精确识别服务版本、厂商信息、操作系统类型等关键信息。主要协议类型分类Recog指纹库覆盖了网络安全的多个层面主要包括以下几大类协议1. Web服务协议 (HTTP相关)HTTP服务器识别http_servers.xmlHTTP Cookie分析http_cookies.xmlHTTP认证头识别http_wwwauth.xmlHTTP X-Powered-By头http_xpoweredby.xml网站图标指纹favicons.xml2. 邮件服务协议SMTP服务器识别smtp_banners.xmlSMTP命令响应smtp_ehlo.xml,smtp_help.xml,smtp_vrfy.xml等POP3服务器pop_banners.xmlIMAP服务器imap_banners.xml3. 远程访问协议SSH服务器识别ssh_banners.xmlTelnet服务器telnet_banners.xmlFTP服务器ftp_banners.xmlRSH响应rsh_resp.xml4. 数据库服务MySQL服务器mysql_banners.xmlMySQL错误信息mysql_error.xmlLDAP搜索响应ldap_searchresult.xml5. 网络基础设施DNS版本信息dns_versionbind.xmlSNMP系统描述snmp_sysdescr.xmlSNMP系统OIDsnmp_sysobjid.xmlNTP服务器ntp_banners.xmlDHCP厂商类dhcp_vendor_class.xml6. 多媒体与通信协议SIP服务器sip_banners.xmlSIP用户代理sip_user_agents.xmlRTSP服务器rtsp_servers.xmlH.323呼叫响应h323_callresp.xml7. 操作系统与硬件识别操作系统识别operating_system.xml系统架构architecture.xmlApache操作系统apache_os.xmlApache模块apache_modules.xmlHP PJL标识hp_pjl_id.xml8. 安全与加密协议TLS JARM指纹tls_jarm.xmlX.509证书签发者x509_issuers.xmlX.509证书主题x509_subjects.xml 指纹匹配工作原理Recog的指纹匹配基于正则表达式模式识别技术。每个指纹文件都包含多个fingerprint元素每个元素定义了匹配特定服务响应的模式。让我们通过一个实际例子来了解指纹的结构fingerprints matchesssh.banner fingerprint pattern^OpenSSH_([\d\.]) descriptionOpenSSH Server/description example service.version8.9OpenSSH_8.9/example param pos0 nameservice.vendor valueOpenBSD/ param pos0 nameservice.product valueOpenSSH/ param pos1 nameservice.version/ /fingerprint /fingerprints关键组件解析1. 模式匹配 (pattern)使用正则表达式定义匹配规则支持捕获组提取版本信息等动态数据示例^Apache/([\d\.])匹配Apache服务器版本2. 示例数据 (example)提供测试用例验证指纹准确性可包含预期提取的参数值支持Base64编码处理特殊字符3. 参数提取 (param)pos0表示静态值pos1表示从第一个捕获组提取支持参数值插值value{hw.product} 实战应用场景场景一Web服务器识别使用Recog识别HTTP服务器的厂商和版本信息非常简单# 从HTTP Server头识别Apache服务器 echo -n Apache/2.4.38 (Debian) | bin/recog_match xml/http_servers.xml - # 输出结果示例 MATCH: { matched: Apache, service.vendor: Apache, service.product: HTTPD, service.family: Apache, service.version: 2.4.38, service.cpe23: cpe:/a:apache:http_server:2.4.38, apache.info: (Debian) }场景二FTP服务器指纹识别通过FTP服务横幅识别服务器类型# 识别Microsoft FTP服务 echo -n 220 Microsoft FTP Service | bin/recog_match xml/ftp_banners.xml - # 使用nmap扫描结合Recog nmap -sV -scriptbanner -p 21 target.com | grep _banner | cut -d: -f2- | bin/recog_match xml/ftp_banners.xml -场景三TLS服务器JARM指纹基于JARM技术识别TLS服务器# 识别Metasploit监听器 echo -n 07d14d16d21d21d07c42d43d000000f50d155305214cf247147c43c0f1a823 | bin/recog_match xml/tls_jarm.xml - # 使用JARM工具获取指纹 python3 jarm.py -p 443 target.com | grep JARM: | awk -F: {print $2} | bin/recog_match xml/tls_jarm.xml - 项目结构与文件组织Recog项目采用清晰的目录结构便于管理和维护recog/ ├── xml/ # 指纹库目录 │ ├── http_servers.xml # HTTP服务器指纹 │ ├── ssh_banners.xml # SSH服务器指纹 │ ├── ftp_banners.xml # FTP服务器指纹 │ ├── smtp_banners.xml # SMTP服务器指纹 │ └── ... (50个指纹文件) ├── identifiers/ # 标识符定义 │ ├── vendor.txt # 厂商标识符 │ ├── os_product.txt # 操作系统产品标识符 │ ├── hw_product.txt # 硬件产品标识符 │ └── ... ├── bin/ # 命令行工具 │ ├── recog_match # 指纹匹配工具 │ ├── recog_verify # 指纹验证工具 │ ├── recog_export # 指纹导出工具 │ └── recog_cleanup # 指纹清理工具 └── features/ # 测试用例 高级功能特性1. CPE自动生成Recog能够自动生成Common Platform Enumeration (CPE)标识符这对于漏洞管理和资产跟踪至关重要param pos0 nameservice.cpe23 valuecpe:/a:apache:http_server:{service.version}/2. 临时参数支持使用_tmp前缀的参数进行中间计算不污染最终输出fingerprint pattern^foo baz switchThing-(\d{4})$ descriptionNetCorp NX系列交换机/description example hw.productNX8200foo baz switchThing-8200/example param pos0 namehw.vendor valueNetCorp/ param pos0 namehw.product valueNX{_tmp.001}/ param pos2 name_tmp.001/ /fingerprint3. 多语言支持Recog框架提供了多种编程语言实现Ruby: rapid7/recog-rubyJava: rapid7/recog-javaGo: runZeroInc/recog-go 最佳实践指南1. 指纹开发规范开发新的指纹时请遵循以下最佳实践提供充分的测试用例每个指纹至少包含3-5个真实的示例使用准确的描述清晰说明指纹匹配的服务或设备包含完整的参数提供vendor、product、version等关键信息支持CPE生成为安全工具集成提供标准化的漏洞标识2. 性能优化建议正则表达式优化避免过于复杂的正则表达式提高匹配效率指纹排序将最常见的指纹放在文件前面减少匹配时间避免重复匹配确保指纹之间没有重叠或冲突3. 集成使用技巧Recog可以轻松集成到各种安全工具和工作流中# 批量处理网络扫描结果 cat scan_results.txt | while read line; do echo $line | bin/recog_match xml/http_servers.xml - done # 自动化资产识别管道 nmap -sV -oG - target.com | \ grep open | \ cut -f2,4 | \ while read port banner; do echo $banner | bin/recog_match xml/${port}_banners.xml - 2/dev/null done 实际应用案例案例一企业资产发现一家中型企业使用Recog进行网络资产盘点扫描阶段使用nmap进行全端口扫描提取横幅收集所有服务的banner信息指纹匹配使用Recog识别服务类型和版本资产分类生成详细的资产清单和漏洞报告通过这个过程企业发现了15个未打补丁的Apache服务器8个使用旧版本OpenSSH的系统3个暴露的MySQL数据库案例二红队渗透测试渗透测试团队使用Recog加速信息收集# 快速识别Web技术栈 curl -sI http://target.com | \ grep -i server\|x-powered-by\|set-cookie | \ while read header; do value$(echo $header | cut -d: -f2-) echo $value | bin/recog_match xml/http_servers.xml - echo $value | bin/recog_match xml/http_xpoweredby.xml - echo $value | bin/recog_match xml/http_cookies.xml - done 未来发展方向Recog项目持续发展未来可能增加的功能包括AI增强识别结合机器学习提高指纹匹配准确率云服务识别增加对AWS、Azure、GCP等云服务的指纹物联网设备扩展对IoT设备的识别能力容器技术增加对Docker、Kubernetes等容器技术的支持API集成提供RESTful API服务方便工具集成 学习资源与社区官方文档项目READMEREADME.md贡献指南CONTRIBUTING.md指纹规范fingerprints.xsd实用工具指纹匹配工具bin/recog_match指纹验证工具bin/recog_verify指纹导出工具bin/recog_export社区支持问题报告GitHub Issues代码贡献Pull Requests讨论交流社区论坛 总结与建议Recog指纹库作为网络安全领域的重要工具提供了强大而灵活的服务识别能力。通过50多种协议类型的覆盖和精确的模式匹配它能够帮助安全团队快速识别网络环境中的服务和设备。对于初学者建议从http_servers.xml和ssh_banners.xml开始学习这两个文件包含了最常用的指纹模式。对于中级用户可以尝试集成Recog到现有的安全工具链中如与nmap、masscan等扫描工具结合使用。对于高级用户考虑贡献新的指纹或优化现有指纹参与社区建设。无论您是安全研究人员、系统管理员还是开发人员Recog都能为您提供强大的服务识别能力。通过合理利用这个工具您可以显著提高网络资产管理的效率和准确性。立即开始使用Recoggit clone https://gitcode.com/gh_mirrors/re/recog cd recog bundle install开始您的指纹识别之旅探索网络世界的无限可能【免费下载链接】recogPattern recognition for hosts, services, and content项目地址: https://gitcode.com/gh_mirrors/re/recog创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考