记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

自定义Nmap探针文件,检测互联网上的SAP服务

2017-09-01 08:20

前情提要

前几日,国外网络安全公司ERPScan称其研究人员发现了SAP POS支付系统存在一处高危漏洞,允许攻击者任意修改SAP销售站点的产品价格、拦截支付数据、收集特定时间内使用过的信用卡的详细信息等。为此,还专门录制了一个视频,展示了如何利用该漏洞修改商品价格,实现1美元购买MacBook Pro笔记本。

漏洞利用原理如下图所示:

SAP公司已经在7月份发布了相关安全补丁程序( Security Note 2476601 与SAP Security Note 2520064),并建议客户尽快更新系统以保护公司关键业务资产免遭攻击

本文的目的旨在说明如何提高nmap网络扫描仪检测SAP服务的能力。

*这决不是一个完整的、100%准确的检测方法,本文也无法囊括全部的场景和案例,如果你想有一个更好的检测SAP服务的方法,欢迎留言进行交流。

如何使用Nmap协助检测

我们的目标是检测互联网上SAP服务器暴露的每一个网络服务。这些服务器是复杂的、有许多组件默认暴露在网络上,并且这些组件中的每一个都存在潜在的漏洞。因此,我们希望通过发送特定的网络探测来检测这些服务的存在,进而更好地评估这些服务的脆弱性。

Nmap是一个开放源代码的网络端口扫描器,可以完成很多工作,尤其是通过指纹检测服务信息。本文将详细解析如何使用Nmap实现一个SAP端口扫描器。

官方NmapSAP的支持

首先,如果仔细查看Nmap发布的官方文档,会发现一些对SAP支持的痕迹,但非常稀少,关于这一点可以通过扫描一个真正的SAP服务器来确认:

如上图所示,SERVICE(服务)和 VERSION(版本)字段大多现实了unknown或不正确的命名。

对此,ERPScan核心安全员Martin Gallo写过一些关于改进Nmap支持SAP专有协议的方法,以便于更好的提取SAP服务器的相关信息,详情参见:

https://www.coresecurity.com/system/files/publications/2016/05/corelabs-nmap-service-probes.txt

这是一个很好的开始,接下来我们进入正题。

服务和版本探测

Nmap通过特定的探针来了解更多的数据并确认其含义,除了基于nmap-services文件识别常用的端口信息外,可以通过修改或添加nmap-service-probes来检测服务,nmap-service-probes数据库中包含了查询不同服务的探测报文和解析识别响应的匹配表达式。Linux系统中,文件存储在/usr/share/nmap/目录下。

这里举一个简单的例子对nmap-service-probes的特征加以说明:

Probe行描述了发送给服务器的TCP有效载荷。在上例中,经过3次握手连接到TCP端口后,没有发送任何TCP有效载荷。

上图中的第二行描述了希望从服务器的应答中检测的内容。在这个例子中,我们通过正则表达式语法寻找ASCII字符串“SAP_Clutser_Manager”,如果匹配上,Nmap会打上“SAP Java Cluster Join Service”的标签。不使用softmatch机制的话,解析器不会可能会检查到指定探针的另一条匹配语句。

探针可以被多个协议使用,例如SSH、FTP或邮件协议,我们要做的只是在探针文件后面添加其他的匹配语句。

有关nmap-service-probes文件格式的完整文档:

https://nmap.org/book/vscan-fileformat.html

如何生成和测试探针

现在,我们需要确定发送哪些数据包,以及服务器应答中的哪些特定信息可以确定正在使用的协议,在此基础上确认使用该协议的具体服务。关于服务和协议之间的关系,可以查看HTTP协议及相关服务的资料。

SAP服务实现了许多不同的二进制协议,这是一个挑战。我们以SAP Router为例,描述一下如何使用一个简单的探针进行检测:

按官方文档,SAP Router默认监听tcp/ 3299端口。

当向SAP Router发送一个二进制请求\x00\x00\x00\x00时,服务器根据router的版本/配置进行应答。

某些情况下,SAP Router会泄漏一些类似version或hostname之类的信息,所以我们首先尝试匹配特定的应答,然后搭配在没有信息泄露的情况下更通用的应答。在这个示例中,正则表达式使用了括号进行匹配,标签中的v代表版本(version),h代表主机名(hostname)。

如何控制扫描端口的范围

如果不指定-p选项的话,nmap默认会扫描1000个最常用的端口(从互联网统计得出的)。不幸的是,如果这样做的话,就会丢失许多SAP服务器开放的端口。因此,可以选择扫描所有的65535个端口,但这会花费较长的时间。还有一个优化方案,就是尽可能多的收集到潜在的SAP使用的端口,这样做可以提高扫描效率。

查看SAP的官方文档,寻找定义每个服务潜在端口的规则,通过整理这些规则,可以收集到潜在的SAP端口的完整列表。SAP服务中使用的所有TCP端口的信息:

https://cp.hana.ondemand.com/dps/d/preview/47673f06bd494db680ff6150c0b08108/2.0/en-US/frameset.htm

SAP 服务有一个实例数(instance number)的概念,它是一个从00到99的数字,服务的端口号可以从中进行选择。

例如,规则中现实ICMHTTP服务的端口是80NN,其中NN就代指实例数,这意味着其端口的覆盖范围是8000-8099。

再举另外一个例子,SAP 的TREX nameserver服务将监听3NN01端口,这代表其潜在的端口号为:30001、 30101、30201…39901。

需要注意的是,经过观察可以发现两个或多个SAP服务/协议可能使用相同的端口号,这中间存在冲突,

只要配置好适当的Nmap-service-probe文件,Nmap的服务检测算法可以很好的处理这个问题,允许在探针规则中使用相同的端口,一个端口上有多个匹配项。

端口生成工具

这里提供一个现成的脚本sap_ports.py,可以生成SAP的可用端口列表。通过Nmap -p参数指定它,命令如下所示:

sap_ports.py的主要思想是使用一个静态定义的字典,从SAP的在线文档收集信息生成潜在的端口列表,有可能生成端口的子集依赖于几个标准。详情参见:

https://github.com/gelim/nmap-erpscan/blob/master/sap_ports.py

管理员使用自定义端口的话,怎么办?

在我们的安全审计中,很少看到自定义端口的情况。如果分析过程中发现实际使用的端口号和服务实例号不匹配的话(例如,邮件服务器服务的实例数32NN,但使用了3617端口),有必要通过检查协议和已知的其他泄露信息来消除这种情况。

关于不想扫描所有的65535个端口的解决方案,我们也没有标准答案。本文中默认接受一些管理员可能自定义端口从而逃出静态端口范围的风险,实际经验表明,这种情况很少发生。

使用自定义SAP探针的扫描效果

如下图所示:

遇到的问题:SSL

理论上,包含关键词sslports的service-probe文件,意味着该探针检测SSL层的某个端口。但在实践中,发现指定的端口没有正确地被验证为SSL,原因是由于原始的Nmap-service-probe文件没有撷取与SSL相关的所有探测。

改进方法

使用Nmap的脚本引擎(NSE)和Lua编程语言对漏洞利用/ 信息泄露中的端口进行归类:

  • version, discovery, exploit, auth, dos
  • safe, intrusive

下一步该怎么做?

如果你是一名渗透测试人员,你可能有一麻袋的针对特定SAP服务的漏洞利用,因此,您希望能够自动链接开放的端口,进行攻击尝试。使用-oX选项,将存储nmap扫描结果存储到一个XML文件中,然后编写一个解析器,对特定的开放端口进行自动化渗透。

如果您是一名安全分析师或安全操作人员,您可能希望存储这些结果,之后可以通过搜索检测场景的变化,或者能够通过它们的版本号来定位易受攻击的服务。将nmap扫描得到的XML文件导入IVRE框架,我们会得到一个良好的Web界面,不仅便于查询扫描结果,还可以完成基本的统计/报表的任务。

下边的截图显示了一个扫描结果导入IVRE后的景象,扫描结果中过滤了内部实验室(办公室)的扫描源头,试图检测网络中的P4服务(Java NetWeaver应用服务器上)的网络检测。右栏显示了从扫描结果中统计出的排名靠前的端口的直方图:

结论

我们希望这篇文章能够帮助您更好地理解那些隐藏在SAP服务器背后的东西,并且向您展示了,只使用类似Nmap这样的网络探测工具,就能够深入了解SAP服务器背后的内容。

与此同时,这篇文章也说明了SAP服务器有一个广泛的、巨大的攻击面,需要执行严格的网络安全策略才能更好的保护系统和业务安全。

文章中提到的相关Nmap文件在github上的地址:

https://github.com/gelim/nmap-erpscan

欢迎交流!

知识来源: www.mottoin.com/105119.html

阅读:110879 | 评论:0 | 标签:安全报告

想收藏或者和大家分享这篇好文章→复制链接地址

“自定义Nmap探针文件,检测互联网上的SAP服务”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云

本页关键词