世界上最流行的编程语言恰恰也是大多数黑客的首选武器
Python很快将是世界上最流行的编程语言。这算得上是豪言壮语,但如果你看一下Python的简单性、灵活性以及相对容易上手的优点,不难看出为什么《经济学人》杂志最近将Python誉为是即将在全球使用量最多的语言。当然,我们的威胁研究小组想看看Python在不法分子当中有多受欢迎。
当然,最好的研究地方是Github。粗略估计,实现攻击工具/漏洞概念证明(PoC)的GitHub代码仓库中20%以上是用Python编写的。在GitHub中几乎所有与安全有关的主题中,大多数代码仓库都是用Python编写的,包括w3af和Sqlmap之类的工具,甚至臭名昭著的AutoSploit工具。
我们Imperva使用先进的智能客户分类机制来区别和分类各种Web客户软件。我们查看了自己的数据,尤其是安全事件,结果我们识别的大多数(25%以上)客户软件(不包括漏洞扫描器)都基于Python。
与其他客户软件不同,我们在Python方面看到了许多不同的攻击途径和使用已知漏洞。与开发人员一样,黑客也在享用Python的优点,因而Python成为一种流行的黑客工具。
图1:按客户软件分类的安全事件,不包括漏洞扫描器。25%以上的客户软件是不法分子使用的基于Python的工具,因而Python成为实施漏洞攻击的最常见途径。
对针对我们保护的网站发动的攻击中使用Python的情况分析后发现,结果并不令人惊讶:大部分网站(多达77%)被基于Python的工具攻击过;在超过三分之一的情况下,大多数日常攻击是基于Python的工具实施的。这表明,基于Python的工具用于广度扫描和深度扫描。
图2:遭到基于Python攻击的网站的每日百分比。
Python模块
用于Web攻击的两个最流行的Python模块是Urllib和Python Requests。下图显示了攻击分布状况。新模块Async IO的使用刚开始多起来,如果你考虑到该库在第7层DDoS方面扮演的角色,也就不难理解了,尤其是在使用“Spray N'Pray”手法时:
图3
Python和已知漏洞
Python这种编程语言的优点让它成为实现已知漏洞的一种流行工具。我们收集了一款基于Python的工具最近利用的十大漏洞方面的信息。
近2个月中两次最猖獗的攻击使用了CVE-2017-9841和CVE-2015-8562,前者是 PHPUnit框架中基于PHP的远程执行代码(RCE)漏洞,后者是针对Joomla!框架的RCE。考虑到RCE对不法分子来说很重要,最常见的攻击可能利用RCE漏洞也就不足为奇了。
另一个不属于十大漏洞的例子是CVE-2018-1000207,它在2018年8月的最后一周内有好几天每天都导致数百次攻击。更深入地分析后发现,这起攻击是针对多个受到保护的客户发动的。
CVE方面的变化
图4
可以从我们的数据中看出,攻击者利用CVE的数量在过去几年有所增加:
图5
此外,Python用于攻击特定的应用程序和框架,根据我们的数据,你可以在下面找到十大框架:
图6
我们查看了Python攻击的所有框架后,最惹眼的攻击是针对Struts、WordPress、Joomla和Drupal的那些攻击,这并不奇怪,因为目前这些是市面上一些最流行的框架。
攻击途径
我们看到攻击中使用的最流行的HTTP参数值(占使用的所有不同参数值的30%左右)属于通过Joomla!中的PHP Unserialize漏洞,使用JDatabaseDriverMysqli对象企图植入后门的攻击。植入后门的有效载荷托管在ICG-AuthExploiterBot上。
我们还看到一个经常出现的有效载荷,结果证明是企图感染系统的特洛伊木马Coinbitminer,更多细节详见附录。请注意,附录仅仅是一个例子。由于Python被黑客广泛使用,因此许多不同的攻击途径需要考虑。Python只需要一点编程技能,这使得编写脚本、利用漏洞易如反掌。
我们的建议
除非你能够区分基于Python的工具的请求和任何其他工具的请求,否则我们的建议仍然一样:确保开发软件时牢记安全性,给系统打上最新的补丁,尽量避免被认为不安全的任何做法。
附录:攻击示例
这是我们观察到的一个值得关注的、经常出现的有效载荷(最后有个小的差异):
图7
在base64解码之后,我们得到了二进制有效载荷:
图8
在上述有效负载中,提到了反序列化漏洞工具所用的GitHub代码仓库和jpg文件中的wget命令下载,这强烈表明存在着恶意活动。从http://45.227.252.250/jre.jpg下载文件后,我们可以看到它实际上是含有以下内容的脚本:
图9
脚本中的最后两行试图获得http://45.227.252.250/static/font.jpg%7Csh,这被赛门铁克端点保护系统确认为是特洛伊木马Coinbitminer。