近期,安全公司 Trustwave 旗下 SpiderLabs 实验室发现了可能与新加坡新保集团(SingHealth)网络攻击相关的一些信息线索,在前一篇文章中,他们以威胁情报视角分析了新保集团的整个网络攻击事件。此次攻击导致了约150万患者的病历记录和16万人的门诊记录泄露,这些记录中中包含了大量的个人信息,如姓名、地址、生日、性别、种族和身份证号码 (NRIC) 等。

据官方调查发现,攻击发生的持续时间为2018年6月27日至7月4日期间。但根据SpiderLabs的分析表明,攻击者至少在早于该时间段的数周前,就已经在新保集团内网中开始了前期踩点侦察和访问据点建立,攻击者的这些行为最早可以追溯到2018年6月9日。以下是SpiderLabs的分析:

在新保集团数据泄露事件发生后,我们立即展开了一些相关研究分析,最终发现了一些可能与此次网络攻击相关的其他证据片段。我们的 SpiderLabs 团队发现了在两个不同时间点上传的两篇单独的 Pastebin 帖子,该两篇Pastebin帖子包含的信息,是一些对新保集团的数据库访问操作,其中一篇帖子罗列了Java服务器相关的异常日志,而另一篇帖子则为一些SQL查询操作。为此,基于两个时间节点,我们展开来分析所发现的线索。

2018年5月24日

2018年5月24日,一条Java异常跟踪日志被发布到了 Pastebin 上,这篇特殊的帖子表明了一些踪迹。其中涉及的查询操作看似是为了获取新保集团总部(SHHQ)的数据库访问授权,如下图所示:

攻击者曾尝试把数据库访问权限,以新加坡卫生服务医疗技术办公室(Medical Technology Office of Singapore Health Services)的一名高级经理的身份,委托给新加坡大型IT承包商CTC的一名员工:

而经我们分析发现,这名我们认为的CTC承包商员工,其名字与LinkedIn上的某位IT分析师匹配,真实情况是,他本身是一名CTC分包商员工。很有可能是,攻击者通过入侵控制了该名员工的CTC工作账号,想利用该账号深入渗透进入新保集团总部(SHHQ)数据库。

具体的数据库委托请求操作发生在6月9日至6月17日之间,为了保护该名员工的隐私,我们特意对LinkedIn图片作了模糊处理。

可以在请求日志中看到,卫生服务医疗技术办公室的高级经理和CTC分包商员工双方的联系号码都是伪造的 “97865432”,这只是用来倒数的一串数字,攻击者目的可能出于规避简单的伪造字段过滤。

在该篇 Pastebin 帖子中,其异常请求日志的其它部分表明,攻击者正在尝试访问的目标是名为 “portaldev” 的数据库,注意其名字是portal+dev,可以想象,开发环境服务器没有生产环境服务器的保护措施严密,因此更容易成为攻击入侵目标。最后,还可以从中看到,该日志中抛出的错误表明,其 “delegatorID” 被设置为了NULL 。尽管日志中列出了大量语句参数,但这是唯一的一个运行错误,这也间接表明了攻击者的老练和高深。如果这是他们遇到的唯一错误,对他们而言,这个问题也非常容易解决。

以下是该篇 Pastebin 帖子中,请求日志涉及的其它完整语句参数:

经查询分析,目前该篇 Pastebin 帖子已经被上传者删除,可以点此( webcache)查看其谷歌快照。

2018年6月15日

另外,SpiderLabs 团队还发现了一篇 6 月 15 日上传的 Pastebin 帖子,其中包含了一些新保集团数据库相关的SQL查询信息,这个帖子上传日期在两个关键时间点-6月9日至6月17日中间。以下就是这篇帖子中涉及的一些SQL查询语句,其中明显包含了SingHealth、NHG等关键线索:

从上图可以看出,攻击者的探测查询不仅涉及新保集团,还涉及新加坡国家医疗保健集团NHG。还能从上述查询语句中看到,攻击者正尝试排除查询结果中与 “牙科手术”相关的返回记录,且特定了这些记录须满足”Direct Access” 和 “Direct Admit” 权限,用到的两条相关查询语句分别是:

WHERE `Sub-Specialty` <> “Dental Surgery”

`Ref. Type`IN (“Direct Access P”, “Direct Admit P”)

这种特定的数据库查询,所能获得的敏感信息比从牙科患者自身上所能获取的还多,查询执行结果最终限定了一定范围,这可能是为了把高价值目标患者进行区分的操作。

此外,查询部分中引用的类别类型为:”Class IN (“A”, “AP”, “ARF”, “B1″, “B1P”, “B1RF”, “B2RF”, “CRF”, “NR”, “PTE”, “PTEP”, “PTRF”)” ,这些都是有效的医疗类别类型。以上的两个查询将“个人”病患类别和 “政府补贴” 病患类别作了区分,这可能是为了进一步关注潜在的高价值目标病患记录。

最终,我们发现攻击者为了隐藏痕迹,已经删除了这篇数据库查询的 Pastebin 帖子,谷歌快照也不存在相关缓存内容,只在Pastebin上存有内容不可见的记录:

可以说,这种包含错误日志和查询的 Pastebin 帖子,很多时候可能是开发人员之间为了排除故障而进行的相互共享,所以,基于此种原因,我们不能确定到底是谁上传了这些内容到Pastebin,也不清楚其实际意图。但是,有三种可能的情况:

第一,攻击者自己上传了这篇查询帖子,方便与合作者共享代码进行故障排除;

第二,某位内部开发人员发现了数据泄露情况,并在系统中发现了异常日志,因此把它上传到Pastebin进行分享,以进行故障排除;

第三种场景是,可能与攻击毫无关联,仅只是某位内部开发人员为了进行故障排除而上传到Pastebin的。如果是这种情况的话,还是有些意思的,如果攻击者正尝试突破入侵新保集团(SingHealth) 或新加坡国家医疗保健集团(NHG)的话,发现这篇Pastebin帖子会是一个很好的信息宝藏。

总结

因此,虽然我们不能确定这些发现是否与新保集团(SingHealth)的数据泄露事件直接相关,但所有这些可疑线索组合都发生在攻击者的网络攻击时间窗口期。在官方声称发生数据泄露事件时,我们发现了至少两个月前的这两条的线索信息:

Java异常日志中表明,嫌疑人试图把新保集团(SingHealth)某个数据库访问权限委托授权给一名信息分包商员工;

在Pastebin上识别了已经被删除的,针对新保集团(SingHealth)某个数据库医疗数据的SQL查询。

单纯来看,这些线索可能多少有点不正常,但结合网络攻击的时间和结果,我们认为这些线索与新保集团(SingHealth)数据泄露事件相关。截至目前,虽然我们具备高度的怀疑指向,但还不具备足够的证据来支撑确认实际的幕后攻击组织,然而,我们仍然认为,他们不是简单的网络犯罪团伙,而是一个以情报收集为主要目的的国家支持型黑客组织。

*参考来源:spiderlabs ,clouds 编译

声明:本文来自FreeBuf,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。