今天分享的论文对互联网上的网络机器人及其发起的自动访问行为进行了深入研究。作者建立了一个分布式蜜罐系统,部署真实的万维网应用程序,用以记录真实的网络机器人日志数据,并进行详尽的分析。在为期7个月的实验中,蜜罐系统共记录了超过28万个IP地址发送的2,640万个请求。利用收集到的数据,作者识别出超过7万个恶意的网络机器人,并对它们的攻击模式进行了全面的分析。该工作由来自纽约州立大学石溪分校的四名研究人员共同完成,已被网络安全领域顶级会议S&P 2021录用(录用率12.1%)。
全文共3000字,阅读时间约9分钟。
01
【研究背景】
随着万维网规模的增长,有漏洞的网站也随之增多。这些网站暴露在复杂的网络环境中,每时每刻都面临着安全威胁,其中有相当一部分是网络机器人带来的。所谓网络机器人[1],是指能自动化地快速发现并获取互联网内容的程序或工具。这些网络机器人可能是由合法的组织操作的,带有善意目的,例如搜索引擎的网络爬虫,安全研究机构的网络分析系统等;也可能是由恶意人员操作的,具有不良的意图,会对目标网站进行指纹检测、漏洞利用、文件扫描等。一项研究[2]指出,网络机器人流量占万维网总流量的约37.2%,其中恶意机器人流量又占网络机器人总流量的约64.7%。所以,对网络机器人进行深入研究,理解网络机器人的行为模型,分辨良性和恶意的网络机器人、识别并阻止恶意的网络机器人,对提高万维网的安全性是很有必要的。
以前的一些与网络机器人有关的研究,往往面临着循环依赖的问题。这些研究提出的网络机器人检测方法,往往是利用网络机器人与正常用户对网站进行访问时的不同特征,通过机器学习的方法来对它们进行区分[3-7]。然而,这些方法都需要足够规模的高质量数据集,而数据集又需要优质的模型来提供,存在技术挑战。
现有的研究之所以存在不足,本质的原因是网站收集到的原始数据,混杂了正常用户的流量与网络机器人的流量。况且一些机器人会对自身进行伪装(修饰HTTP报文的user-agent字段等),让正常流量与机器人流量的区分变得更加棘手。
本文提出的方法试图在根本上解决这个问题——搭建一个分布式蜜罐网站系统,每个蜜罐网站都运行着完整而真实的网络应用(WordPress网站等),但是这些蜜罐网站并不对公众进行宣传,从而保证系统收集到的所有流量都源于网络机器人。
02
【数据收集】
图表1:分布式蜜罐网站系统架构图
如图表1所示,分布式蜜罐网站系统分为三部分:分布式站点、日志聚合节点、流量分析节点。研究人员在世界各地部署了数量众多的蜜罐网站,它们与真实的网站相似,但是具有日志记录功能,而且这些网站不对用户宣传。机器人对这些蜜罐网站的访问会在网站的日志上留下足迹(包括机器人的源IP地址、HTTP请求的方法、请求路径等),蜜罐网站把所有日志上传到日志聚合节点,日志聚合节点把汇总后的日志交给流量分析节点。研究人员操作流量分析节点,利用日志信息,对网络机器人进行分析。
研究者一共部署了100个蜜罐网站,选择了5种网络应用(WordPress、Joomla、Drupal、PHPMyAdmin和Webmin),进行了7个月的数据收集,这些蜜罐网站分布在北美(42)、欧洲(39)、亚洲(19)。
为了深入地考察网络机器人的行为模式,在蜜罐网站上,研究人员不仅记录网络机器人的基本信息(如IP地址、HTTP请求等),而且对这些机器人的行为模式进行了更细致的评估,以便进一步了解它们的特征。研究人员主要关注三个方面:
1. 浏览器特征
网络机器人依赖的浏览器引擎可能具有不同的特征(如不同的JavaScript环境、不同的安全访问策略),因此HTML页面上相同的JavaScript代码,在不同的网络机器人客户端上,可能会有不同的执行结果。研究人员在JavaScript代码中嵌入了具有指纹检测功能的一些判断函数,并把结果回传到服务器。他们期望通过这种方式,了解网络机器人客户端浏览器的特征。
2. robots.txt对网络机器人的约束力
robots.txt是万维网的一个通用的约定。网站提供此文件给网络爬虫,用于标记哪些文件允许访问,哪些不允许访问。良性的网络爬虫应当遵守robots.txt中的规定,然而网络机器人未必遵守其中的规定。研究人员希望了解网络机器人是否遵守robots.txt中的规定。
3. TLS指纹
一些网络机器人可能在HTTP报文的user-agent字段中伪造它们的身份。例如一个用Python编写的网络机器人,可能在user-agent字段中把自己标记为谷歌浏览器。然而,TLS作为一个具有很多细节的网络协议,在不同的底层网络库中具有不完全相同的实现方案。基于此,可以通过TLS指纹检测的办法识别网络机器人真正使用的TLS库。
03
【主要发现】
1. 整体流量趋势
在7个月的时间里,研究者收到来自287017个IP地址的26427667个自动访问请求。平均每个蜜罐网站每天收到1235个请求,来自14个IP地址。
图表2:蜜罐系统记录的每日新增IP数量(上),和每日请求数量(下)
图表2绘制了蜜罐系统记录的每日新增IP数量和每日请求数量。研究人员指出,虽然每日新增IP数量有下降的趋势,但是在实验的后半部分仍然保持在较高水平(每天1000个IP左右)。每日请求数量在4月28日之后出现激增。经过进一步的分析,研究人员把这个现象归因于WordPress蜜罐网站受到的暴力密码破解攻击。
2. 地理位置分布
研究人员指出,蜜罐记录的网络机器人流量,与蜜罐网站部署的位置(北美、欧洲或亚洲)基本无关。但是这些机器人流量的源IP,在不同国家的分布是不均衡的,最多的是美国,其次是中国和巴西。研究人员按照网络机器人源IP的数量,对各个国家和地区进行排序,图表3给出了前十名的结果。
图表3:网络机器人源IP数量排名前十的国家或地区
3. 与IP地址黑名单的对比
研究人员根据蜜罐系统收集到的IP数据指出,当前一些开源的IP黑名单列表是不完整的,需要更新。作者从9个开源的IP黑名单(包括AlienVault、BadIPs、Blocklist.de和BotScout等)中收集数据,并与自己的蜜罐系统收集到的恶意IP列表进行对比。在研究人员发现的的表现出恶意行为的所有IP中,只有13%出现在这些黑名单上。
4. 机器人对目标网站的针对性访问
网络机器人在不同类型的蜜罐网站上可能请求不同的资源。对此,研究人员统计了各种类型的资源请求在不同类型蜜罐网站上出现的百分比,结果如图表4所示。
图表4:对不同类型的资源请求在5种蜜罐网站上的数量分布热力图 每一列之和是100%。每个方块右下角的图标表示这项资源的存在性,对钩表示存在,叉表示不存在,禁止符号表示存在但禁止访问
研究人员指出,有些资源在不同类型蜜罐网站上的请求数量都很频繁(如robots.txt)。也有一些路径(如xmlrpc.php),一般是网络机器人专门针对某种类型的网站发送的。根据图表5,研究人员认为,网络机器人会识别它们正在访问的网站类型,从而进行有目的的攻击,而不是盲目地向每种网站发送所有类型的资源请求。
5. 机器人对目标网站的针对性访问
在网络机器人的请求中,有些请求是明显的恶意行为,比如暴力密码破解。另外,研究人员基于一些开源的资料[8-10]库,生成了具有指纹检测、漏洞利用、后门扫描、文件扫描等功能的路径列表,进一步识别网络机器人的恶意行为。研究人员一共识别到了76396个恶意的网络机器人,它们的恶意行为主要集中在5个方面,详见图表5。
图表5:恶意网络机器人的常见行为
6. 通过TLS指纹揭露网络机器人的伪造身份
研究人员认为,一些网络机器人可能在HTTP请求的user-agent字段中伪造它们的身份,这种现象可以通过TLS指纹检测的方式予以揭露。在所有的HTTPS请求中,研究人员只提取出558个独立的TLS指纹。这说明相当一部分机器人使用了相同的TLS库。经过研究人员的分析,网络机器人可能在user-agent字段中把自身标记为浏览器,然而实际上可能是由其他的网络工具搭建的。例如,有12148个IP地址声称它们是谷歌浏览器,但是经过指纹检测,实际上它们绝大多数(82.6%)是linux操作系统的curl或wget工具。
04
【总结】
研究人员设计并搭建了一个具有100个节点的分布式蜜罐网站系统,经过为期7个月的实验,收集到了大量网络机器人数据。论文对网络机器人的特征和行为模式进行了深入分析,发现了网络机器人的身份伪造等手段,以及暴力密码破解、漏洞利用等恶意行为。
—
原文链接
https://par.nsf.gov/servlets/purl/10250016
参考文献
[1] Doran, Derek, and Swapna S. Gokhale. “Web robot detection techniques: overview and limitations.” Data Mining and Knowledge Discovery 22 (2011): 183-210.
[2] Imperva, “Bad bot report 2020: Bad bots strike back.” [Online]. Available: https://www.imperva.com/resources/resource-library/reports/ 2020-bad-bot-report/
[3] A. G. Lourenc¸o and O. O. Belo, “Catching web crawlers in the act,” in Proceedings of the 6th international Conference on Web Engineering, 2006, pp. 265–272.
[4] P.-N. Tan and V. Kumar, “Discovery of web robot sessions based on their navigational patterns,” in Intelligent Technologies for Information Analysis. Springer, 2004, pp. 193–222.
[5] G. Jacob, E. Kirda, C. Kruegel, and G. Vigna, “Pubcrawl: Protecting users and businesses from crawlers,” in Presented as part of the 21st USENIX Security Symposium (USENIX Security 12), 2012, pp. 507–522.
[6] A. Vastel, W. Rudametkin, R. Rouvoy, and X. Blanc, “FP-Crawlers: Studying the Resilience of Browser Fingerprinting to Block Crawlers,” in MADWeb’20 – NDSS Workshop on Measurements, Attacks, and Defenses for the Web.
[7] B. Amin Azad, O. Starov, P. Laperdrix, and N. Nikiforakis, “Web Runner 2049: Evaluating Third-Party Anti-bot Services,” in 17th Conference on Detection of Intrusions and Malware & Vulnerability Assessment (DIMVA), 2020. [Online]. Available: https://hal.archives-ouvertes.fr/hal-02612454
[8] O. Starov, J. Dahse, S. S. Ahmad, T. Holz, and N. Nikiforakis, “No honor among thieves: A large-scale analysis of malicious web shells,” in Proceedings of the 25th International Conference on World Wide Web, ser. WWW ’16, 2016, p. 1021–1032.
[9] “Seclists: A collection of multiple types of lists used during security assessments.” [Online]. Available: https://github.com/danielmiessler/SecLists
[10] “lhlsec/webshell.” [Online]. Available: https://github.com/lhlsec/webshell
编辑&审校 | 陆超逸
原文始发于微信公众号(NISL实验室):【论文分享】来自网络机器人的自动访问行为分析