写点什么

教你用 5 步检测出企业网络中的恶意爬虫

  • 2021-02-24
  • 本文字数:3272 字

    阅读完需:约 11 分钟

教你用5步检测出企业网络中的恶意爬虫

恶意爬虫(bot)在企业网络的安全漏洞中起到至关重要的作用。这已经不是什么秘密。爬虫经常被恶意软件利用,在企业网络中传播。但检测和移除恶意爬虫却很复杂,这是由于操作环境中的许多日常进程,诸如软件更新,用的都是爬虫。


直到最近,一直都没有什么有效的方式让安全团队能区分出“好爬虫”和“坏爬虫”。开源源码和社区规则声称它们可以辨别爬虫,但收效甚微;误报太多。最后,安全分析专家会因为追踪分析“好爬虫”触发的无关紧要的安全警报而疲于奔命。


在 Cato,我们保护客户网络时也面临相同问题。为解决这个问题,我们发明了一种新方法,在我们的安全即服务中实施的多维度方法论,可以比单纯使用开源源码或社区规则多鉴别 72%以上的恶意事件。


最重要的是,你可以在自己的网络中采用类似策略。您的工具将会是任何网络工程师的交易手段:访问您的网络,像分接传感器一样捕获流量,保留足够的磁盘空间来存储一周的数据包。下面是如何分析这些捕获的数据包,以便更好地保护你的网络。

辨别恶意爬虫和流量的五项原则


在这篇文章中,我们将引入多维度的方法来分辨恶意爬虫。仅凭一条规律或许并不能让我们准确辨别出恶意爬虫,但综合多条规则并加以分析利用,将让这些爬虫无所遁形。方法并不难懂,是常见的逐步缩小狩猎范围,从人们日常产生的会话缩小到危害网络安全的那部分会话。


具体步骤如下:


  • 区分人类与爬虫

  • 区分浏览器与其他用户客户端

  • 找出浏览器中的爬虫

  • 分析 payload

  • 确定目标威胁程度


下面,让我们一步一步地看:

根据对话频率区分人类与爬虫


爬虫的本质决定了它们会更倾向于与对象进行连续不断的会话。这是由于它们需要接收命令、发送 KeepAlive 信号,或者是渗出数据。区分爬虫与人类行为的第一步便是要揪出这些与目标机械性的重复对话。


我们需要找到那些与多个目标有规律且不间断对话的主机,过往经验告诉我们,收集一周左右的流量便足以判断这些客户端与目标间对话的本质。从统计学的角度来看,这些会话越是有规律,他们越有可能是由爬虫生成的(见图一)。



图中所示为今年五月中旬时收集的爬虫对话频率,对话产生的流量均匀分布,基本可以确定是爬虫流量。

区分浏览器与其他用户客户端


仅仅是分辨出爬虫寄居的主机并没有太大的用处,如我们之前提到的,大多数的主机都可能产生爬虫流量,因此我们还需要搞清楚网络中客户端的通信类型。一般来说,良性爬虫存在于浏览器之中,而恶意爬虫则相反。


操作系统中有很多种客户端和库都会产生流量,像是“Chrome”、“WinINet”,以及“Java Runtime Environment”都是客户端类型。乍一看这些客户端产生的流量可能大同小异,但通过一些方法,我们还是可以将他们区分开来的。


首先是应用层的头。因为大多数防火墙都会在设置里允许 HTTP 和 TLS 访问任意 IP,许多爬虫都会利用这些协议与他们的目标进行对话。我们只需要辨别客户端设置中的 HTTP 和 TLS 特征群组,便可轻易揪出在浏览器外运行的爬虫。


每一个 HTTP session 都有请求头来定义请求,以及服务器端的应对方法。这些头的序列、值,都是在生成 HTTP 请求的时候就设定好的(见图二)。类似的,TLS 的 session 属性,例如加密套件、扩展列表、ALPN(应用层协议协商)和椭圆曲线等,这些都是在初始的 TLS 消息中确定的。这条初始的消息又被称作“ClientHello”消息,也是未经过加密处理的。根据 HTTP 和 TLS 属性种类的不同进行聚类,可以在一定程度上将爬虫进行分类。


举例来说,如果我们捕获到了加密套件不相符的 TLS 流量,那么我们基本就可以确定这些流量是在浏览器外生成的了,这种非人为行为也就意味着是爬虫在制造流量。



图中的例子是某条由 Windows 加密库生成的消息的头。通过查看与设置不相符的 seq、key 以及 value 可以辨别出爬虫的存在。

找出浏览器中的爬虫


判定恶意爬虫的另一种方法则是通过观察 HTTP 头中的一些特定信息:网络浏览器的 HTTP 头通常都是规范且清晰的。在正常的浏览 session 中,点击浏览器中的链接后生成的请求头中会包含 Referer,标明这个链接的来源。爬虫流量则相反,直接访问链接的请求头中 Referer 会为空,部分恶意访问甚至可以仿造 Referer。因此,在所有信息流中都长得一模一样的请求,大概率是爬虫流量。



图中显示的是在浏览 session 中包含 Referer 的头的示例


User-Agent(UA)这个字符段代表了程序在发起对话请求,一些诸如 fingerbank.org 这类的第三方服务会将 UA 里的程序版本号与已知版本相对应,并试图通过这条信息检测异常爬虫。


举例来说,最新版本浏览器会在 UA 字段使用“Mozilla/5.0”,低于这个版本的 Mozilla 或者缺失这条信息的请求基本意味着会是异常爬虫。有信誉的浏览器产生都流量不会不携带 UA 值。

Payload 分析


但是,我们并不希望异常爬虫的检查被局限在 HTTP 和 TLS 协议上,所有我们需要将更多的协议纳入考虑范围。以 IRC 协议为例,IRC 上的爬虫为僵尸网络贡献了不少有生力量。我们可以通过观察在已知端口上,使用固定未知协议的现有恶意软件样本,利用应用识别来标记恶意爬虫。


而流量的方向(入方向或出方向)在鉴别爬虫时同样有重要价值。直连到互联网的设备通常会被暴露在扫描操作中,因此,我们可以将这些爬虫看作是入站扫描器。另一方面,出站扫描行为则代表了该设备已被扫描器感染。感染的后果则是目标可能会被袭击,降低企业的 IP 地址信誉。


下图显示了在某一时间段内的流量图,这样的活动轨迹很可能是扫描机器人的杰作。这种类型的图可以通过计算流量/秒来进行数据分析。


高频率出站扫描活动示例

目标分析:了解你的目的地是什么


在了解过从客户端-服务器的通信频率以及客户端类型判断恶意爬虫后,我们将引入另一判定维度:爬虫的目标或者说目的地。判定恶意爬虫的目标需要考虑两种因素:


  • 一是目标的信誉

  • 二是目标的受欢迎度


目标信誉可以从各种渠道中收集来的经验,判断一个域受到恶意攻击的可能性而计算得出。信誉的判定需要由第三方服务给出,或者是通过收集用户反馈的受到攻击的报告得出。


然而,通常情况下,仅仅是凭借着对目标信誉、URL 信誉的判断,并不足以标记恶意爬虫。每个月都要有数以百万计的新域名注册成功,在没有充足背景调查下的域名信誉判定系统并不能很好地给出该域名是否可信的判断,由此带来的高误判率也证明了这一点。

总而言之


将文中的方法总结后,可以发现,如果 session 满足以下条件,其为恶意爬虫的可能性很高:


  • 由计算机生成而非人为

  • 产生于浏览器之外,或是带有异常元数据的浏览器流量

  • 与低人气目标沟通,目标如果被标记为恶意或未归类,那么将更可疑。正常或良性爬虫不应当与低人气目标对话。

练习:揭开仙女座恶意软件的网络面纱


通过综合这几种判定手段,我们可以找出网络中的各类危险因素。光说不练假把式,下面我们将通过“仙女座爬虫”这个经典例子来练习。“仙女座”是其他恶意软件的常用下载器,而通过文中介绍的四种手段进行数据分析,我们将揭露“仙女座”爬虫的真面目。

目标声誉


多家高信誉的网站均判断“disorderstatus.ru”为恶意域名,他们给这个域名打上的标签大多是:“已知感染源”,“僵尸网络”之类。然而,仅凭如此,我们并不能直接判定与该域名对话的主机感染了仙女座病毒:用户可能只是访问过这个网站而已。更何况,这个 URL 大概率只会被归类为“未知”或“非恶意”。

目标受欢迎度


访问某个目标的用户万中无一,这个“一”很不寻常,也为该贡献了“低人气”分数。

对话频率


在一周的数据收集中,我们注意到了客户端与目标在连续三天内均有流量产生。重复的对话意味着爬虫的存在。



用户与 disorderstatus.ru 在三天内均有持续一小时的 client-target 对话流量产生

头分析


请求头中的“User-Agent”值为“Mozilla/4.0”,无效的服务器版本信息意味着该 UA 多半是爬虫制造。


图中是我们在与 disorderstatus.ru 对话时捕获的 HTTP 头。值得注意的是,在我们捕获的所有请求中,没有一个头包含“Referer”。另外,UA 值为“Mozilla/4.0”。这两点都指向了 Andromeda 会话。

总结


IP 网络中的爬虫检测正在逐渐成为检测恶意软件的基本组成部分之一,虽然不易,但我们相信,通过文中介绍的这五种手段的组合变种,爬虫检测将会更加有效。


原文链接:


https://www.catonetworks.com/blog/how-to-identify-malicious-bots-on-your-network-in-5-steps

2021-02-24 11:019269
用户头像

发布了 152 篇内容, 共 93.0 次阅读, 收获喜欢 198 次。

关注

评论 1 条评论

发布
用户头像
专家老师您好,我是Ryan Ding来自亮数据。我们是品牌方,寻求付费商业合作。请加我微信联系 ryanding-brd
2024-03-18 11:19 · 美国
回复
没有更多了
发现更多内容

斩获可信云最佳实践,天翼云存储资源盘活系统助力“一云多芯”!

天翼云开发者社区

云计算 存储

中小企业都用哪些工具进行项目管理?

爱吃小舅的鱼

项目管理 PingCode 项目管理软件

一文读懂快速开发平台

互联网工科生

低代码 开发平台 JNPF

用低代码开发平台构建高效敏捷工作流

力软低代码开发平台

Llama2 评测大公开!知识库场景下能否赶超 ChatGPT?

Zilliz

Zilliz Towhee ChatGPT llama llama2

JMeter源码解析之结果收集器

优测云服务平台

Jmeter 性能测试 压力测试 #性能测试

拨开迷雾:利用全链路消息跟踪揭示系统奥秘

鲸品堂

数据库 分布式 全链路 企业号 8 月 PK 榜

Concealer for Mac(文件信息加密工具) v1.3.6中文版

mac

苹果mac Windows软件 Concealer 密码管理软件

使用appuploader工具流程(Windows版本)

AI融入管理软件,是否会是下一个“ERP时代”的前奏?

B Impact

AREX 如何支持 Dubbo 自定义私有协议的录制回放

AREX 中文社区

dubbo 自动化测试 流量回放 流量录制

HTML5 Canvas 和 SVG哪个简单好用

2D3D前端可视化开发

html5 SVG 数据可视化 canvas 前端设计

CommunityOverCode Asia 专题介绍之流处理

Apache Flink

大数据

企业选择大文件传输软件的真正原因

镭速

大文件传输软件

华为阅读与博集新媒达成合作 推进数字化阅读高质量发展

最新动态

为什么要选择文件传输软件?有哪些最佳高速文件传输软件?

镭速

文件传输软件

那些 MySQL 8.0 中的隐藏特性

爱可生开源社区

MySQL 8.0

大文件传输软件| 生命科学中的关键因素

镭速

大文件传输快速

三言两语说透webpack对vue的编译

互联网工科生

源码 Vue webpack

10. 数据类型 - 元组详解

茶桁

Python 数据类型 tuple

文心一言 VS 讯飞星火 VS chatgpt (72)-- 算法导论7.1 3题

福大大架构师每日一题

福大大架构师每日一题

拓展知识 启望未来 | 记内蒙古移动《AntDB ACA初级认证培训》活动

亚信AntDB数据库

数据库 AntDB AntDB数据库

中国电信与国家信息中心共同发布国信政务云

天翼云开发者社区

云计算 政务云

NFTScan | 07.31~08.06 NFT 市场热点汇总

NFT Research

NFT\

EndNote 21 for Mac(文献管理软件) v21.0.1激活版

mac

苹果mac Windows软件 EndNoter 参考文献管理软件

使用 RKE 方式搭建 K8s 集群并部署 NebulaGraph

NebulaGraph

k8s

基于PINN的传播动力学研究

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨 百度飞桨

教你用5步检测出企业网络中的恶意爬虫_安全_Avidan Avraham_InfoQ精选文章