恶意Bot流量识别分析实践
1、摘要
随着互联网的发展,自动化工具和脚本(Bots)的使用越来越普遍。虽然一些善意 Bots 对于网站的正常运行和数据采集至关重要,但恶意 Bots 可能会对网站带来负面影响,如爬取敏感信息、恶意注册、刷流量等。因此,检测和分析 Bot 流量变得至关重要。
Bot恶意流量检测手段大致可分为前端检测和后端数据分析,前端包括设备指纹获取、浏览器插件信息获取等,后端主要是制定检测模型,与威胁情报、IP信誉等手段结合。在整个恶意流量识别过程中,前端与后端的两者相辅相成。
在这篇文章中,我们将基于网宿自身站点的访问日志分析,探讨如何使用后端基础检测方案来分析识别恶意Bot流量,包括 IP 情报、 User-Agent、 TLS 指纹、 请求头特征等。
2、情报与检测策略
威胁情报是支撑后端检测模型最重要的数据之一,通过这些信息,安全专家可以更好地预防、检测和应对网络攻击。持续更新和共享威胁情报是防范恶意Bot攻击的关键步骤,能够大幅提升整体防御水平,保障网络的稳定和安全。我们可以通过以下方式来检测恶意Bots请求:
IP情报
IP作为互联网的身份标识,一直是黑灰产竞争最激烈的资源。随着防护手段的升级,黑产技术也在快速发展,秒播代理、4G代理代理、动态住宅代理成为当前主流的黑产IP资源,大量应用于各种Bot场景中,包括恶意刷量、注册、抢票、薅羊毛等,由于其代理的隐匿性较高,特征难以被发现,因此对互联网安全存在较高的威胁。因此如何收集IP情报以及使用IP情报在恶意Bot流量检测中显得尤为重要。
| 特性 | 秒播IP | 4G代理 | 动态住宅代理 |
|---|---|---|---|
| 来源 | 数据中心服务器 | 移动运营商4G网络 | 互联网服务提供商(ISP) |
| 隐匿性 | 较低,易被识别为代理IP | 高,难以被识别为代理IP | 高,难以被识别为代理IP |
| 动态变化 | 可以快速切换,但仍较易被识别 | 高频率动态变化,隐匿性强 | 动态变化,隐匿性强 |
| 带宽和性能 | 高带宽和高性能,适合大规模数据传输 | 带宽有限,性能受移动网络环境影响 | 较低带宽,受家庭网络环境限制 |
| 成本 | 较低 | 较高 | 较高 |
| 应用场景 | 数据抓取、网络营销、自动化测试 | 账号注册登录、广告点击、投票、反爬虫绕过 | 反爬虫绕过、广告验证、访问受限内容 |
对IP特征和行为上分析有助于我们持续定位和收集威胁情报:
地理位置过滤:正常用户的访问通常来自全球各地,而恶意Bot可能集中在特定的国家或地区。例如,短时间内来自同一个IP段的访问,如图1所示。

图1 异常IP段
ISP和数据中心过滤:普通用户通常使用家庭宽带或移动网络,而恶意Bot 流量IP通常来自于云厂商或者数据中心,识别这些ISP信息,可以帮助过滤潜在的恶意流量,如图2所示。

图2 数据中心IP
DDoS攻击源:DDoS攻击场景与恶意Bot场景通用需要使用代理或者僵尸网络,同一批恶意IP通常不会只发起一次攻击,而是会被多次使用,如图3所示。

图3 DDoS攻击源
TLS指纹
TLS指纹是一种极其有效的工具,通过对TLS客户端client hello包中的不同字段进行深入分析,我们可以生成独特的JA4指纹并利用这些指纹来识别特定的恶意Bot流量。此前我们已着重对TLS指纹进行深度分析,在本文中不再赘述,感兴趣的读者可以访问文章:https://www.freebuf.com/articles/web/393136.html
| TLS策略详情 | 描述 |
|---|---|
| Chrome 指纹异常 | User_agent为Chrome,但是实际tls指纹不匹配 |
| Firefox 指纹异常 | User_agent为Firefox,但是实际tls指纹不匹配 |
| MS Edge 指纹异常 | User_agent为Edge,但是实际tls指纹不匹配 |
| Safari 指纹异常 | User_agent为Safari,但是实际tls指纹不匹配 |
| IE 指纹异常 | User_agent为IE,但是实际tls指纹不匹配 |
| Opera 指纹异常 | User_agent为Opera,但是实际tls指纹不匹配 |
| 不常见的指纹 | tls指纹异常并且很少见 |
HTTP请求头检测策略
正常用户的请求通常带有丰富的HTTP头信息,包括用户代理(User-Agent)、浏览器版本、操作系统等信息,而恶意爬虫往往使用伪造或异常的User-Agent字符串,甚至可能缺少其他必需的头信息。

3、策略模型
诚然,在Bots对抗场景中,仅基于特征来识别Bots未免有些太小儿科,也容易被攻击者通过通过伪造特征的方式绕过检测手段,因此,多特征模型检测的重要性不言而喻,它不是单一维度的检测,而是基于多维度数据分析进行综合评估,不仅有助于提高识别效率,也同时能降低误报的风险。
在情报和检测策略的基础上,我们可以制定策略的权重和得分,当一个请求发起的时候,根据命中的策略进行评分,本方案设置三个区间:可疑、中风险、高风险,并根据风险等级进行不同的处置动作,各风险等级的分数如下:
可疑:0-20分
中风险:20-60分
高风险:大于60分
Bot对抗过程中,除了识别准确率之外,误报率是衡量一个模型是否可靠的重要性指标,虽然恶意Bot流量给网站带来很大的影响,但是误报可能给业务带来灾难性的后果,因此Bot检测模型设计的时候,在保证准确率的同时更应尽量避免误报的发生。
使用评分方式来设计模型的好处在于具备一定的容错率,通常情况下一个恶意的Bot请求会有多个异常特征,而正常的请求不可能具备多个异常特征。因此在进行高风险处置的情况下,准确性较高,误报率较低。

图4 检测模型
4、流量分析
数据过滤
通过第三步的检测模型,对线上流量进行统计分析,选取部分模型结果为高风险的IP进行验证,筛选的高风险IP对应的得分如图5所示:

图5高风险IP
数据验证
验证模型输出结果的准确性以及是否误报,借助国内知名威胁情报中心对高风险IP进行查询,结果如图所示,7个IP中2个为恶意,3个可疑,2个未知。

图6 威胁情报查询
为了进一步验证准确性,将2个未知风险IP:111.170.14.*(IDC服务器)、106.15.73.*(阿里云IP) 进一步分析。
通过异常指纹情报库查询发现IP:111.170.14.* 在6月7号-6月9号出现过异常指纹特征,并伪造了Chrome95、69、114,如图7所示。IP 106.15.73.* 则更为活跃,并伪造了多种类型的浏览器进行异常访问,如图8所示。

图7 异常指纹情报

图8 异常指纹情报
通过上述模型过滤,可以得出风险较高的请求,通过结合其他处置动作,例如验证码等操作,可以有效过滤恶意流量,从而保障业务的安全和稳定。
5、结语
在当今数字化时代,恶意Bot流量已成为威胁网络安全和数据隐私的主要挑战之一。通过对IP地址、请求头和TLS指纹的综合分析,我们能够更有效地识别和防范恶意Bot的活动。这些技术手段不仅有助于提升网站和应用的安全性,还能优化用户体验,防止合法用户受到不必要的影响。
在本文中,我们探讨了如何利用这些关键数据点来检测和分析恶意Bot流量。通过详细的案例研究和实验,我们展示了多层次防御机制的重要性,以及不同方法的协同作用。虽然恶意Bot的技术手段不断进化,但通过持续的研究和技术创新,我们有能力保持在这场网络安全攻防战中的主动地位。
未来的研究方向可能包括更多的机器学习算法应用、更精细的指纹识别技术,以及跨平台的协同防御机制。我们相信,随着技术的不断进步和安全社区的共同努力,互联网将变得更加安全和可靠。
总的来说,恶意Bot流量的分析和防护是一项复杂但至关重要的任务。通过不断更新和优化我们的检测和防御策略,我们能够更好地保护网络环境,确保互联网的健康发展。
相关文章:
恶意Bot流量识别分析实践
1、摘要 随着互联网的发展,自动化工具和脚本(Bots)的使用越来越普遍。虽然一些善意 Bots 对于网站的正常运行和数据采集至关重要,但恶意 Bots 可能会对网站带来负面影响,如爬取敏感信息、恶意注册、刷流量等。因此&am…...
Java2 实用教程(第6版)习题2 第四题
【源文件的命名与书中的不同】 四、阅读程序题 1、上机运行下列程序,注意观察输出的结果。 public class E2_1 {public static void main(String args[]){for(int i20302;i<20322;i){System.out.println((char) i);}} } 运行结果: 低 住 佐 佑 佒…...
HashMap和ConcurrentHashMap的区别
1.是什么 HashMap和ConcurrentHashMap都是Java集合框架中的成员,它们用于存储键值对,但它们在并发场景下的表现和行为有很大的不同。以下是它们之间的一些主要区别: 1. 并发安全性 HashMap: HashMap不是线程安全的。如果多个线程同时访问Has…...
css 下拉框展示:当hover的时候展示下拉框 z-index的用法解释
代码如下: <template><div class"outer"><div class"left"></div><div class"aTest2"><div class"box">显示方框</div><div class"aTest3"></div></…...
spring装配笔记
spring装配是个大课题,能懂一点是一点吧。 关于代码链路,最后的方式就是倒序摸索,正序那么多逻辑,没有一百万也差不多少,所以就用倒序。 .(点号)和#井号是一个意思,下面代码可能不详细区分,复…...
vscode【实用插件】Notes 便捷做笔记
安装 在 vscode 插件市场的搜索 Notes点 安装 安装成功后,vscode 左侧栏会出现 使用 初次使用 需先选择一个本地目录 重启 vscode 后,得到 切换笔记目录 新建笔记 快捷键为 Alt N 默认会创建 .md 文件 配合插件 Markdown Preview Enhanced 预览 .md…...
中间件:maxwell、canal
文章目录 1、底层原理:基于mysql的bin log日志实现的:把自己伪装成slave2、bin log 日志有三种模式:2.1、statement模式:2.2、row模式:2.3、mixed模式: 3、maxwell只支持 row 模式:4、maxwell介…...
postman控制变量和常用方法
1、添加环境: 2、环境添加变量: 3、配置不同的环境:local、dev、sit、uat、pro 4、 接口调用 5、清除cookie方法: 6、下载文件方法:...
Spring Boot 中整合 Kafka
在 Spring Boot 中整合 Kafka 非常简单,Spring Kafka 提供了丰富的支持,使得我们可以轻松地实现 Kafka 的生产者和消费者。下面是一个简单的 Spring Boot 整合 Kafka 的示例。 1. 添加依赖 首先,在 pom.xml 中添加 Spring Kafka 的依赖&#…...
什么是开放式耳机?具有什么特色?非常值得入手的蓝牙耳机推荐
开放式耳机是当下较为热门的一种耳机类型。它具有以下特点: 设计结构: 呈现开放式的构造,不会完全堵住耳道。如此一来,外界声音能够较容易地被使用者听到,在使用耳机时可以保持对周围环境的察觉。比如在户外…...
编译 FFmpeg 以支持 AV1 编解码器以及其他硬件加速选项(如 NVENC、VAAPI 等)
步骤 1: 安装必要的依赖 sudo apt update sudo apt install -y \autoconf automake build-essential cmake git libass-dev libfreetype6-dev \libsdl2-dev libtool libva-dev libvdpau-dev libxcb1-dev libxcb-shm0-dev \libxcb-xfixes0-dev pkg-config texinfo wget zlib1g-…...
解释一下Java中的多线程。如何创建一个新的线程?
在Java中,多线程是一种机制,允许一个程序同时执行多个任务或处理。每个任务被称为一个线程。 这种并行执行可以极大地提高应用程序的效率和响应速度。 例如,在开发一个桌面应用程序时,你可以使用一个线程来更新用户界面…...
Java语言程序设计基础篇_编程练习题**18.30 (找出单词)
题目:**18.30 (找出单词) 编写一个程序,递归地找出某个目录下的所有文件中某个单词出现的次数。从命令行如下传递参数: java Exercise18_30 dirName word 习题思路 (读取路径方法)和18.28题差不多,把找…...
MyBatis中 #{} 和 ${} 的区别
1. #{id}(参数占位符) 作用: 使用 #{id} 时,MyBatis 会将 id 参数绑定为 JDBC 的参数。这种方式能够有效防止 SQL 注入攻击,因为它会进行参数的预处理,将参数值作为数据类型的绑定,而不是直接插入到 SQL 语…...
Android Perfetto 学习
1、如何抓取性能日志 方式1、通过手机里的System Tracing抓取 1、点击Settings->System->Developer options->System Tracing->Record trace 打开 2、操作完成后,点击Settings->System->Developer options->System Tracing->Record trace…...
ES数据的删除与备份
背景 需要删除索引下满足指定条件的文档数据,并将删除的数据进行备份。 操作步骤 新建索引 该索引结构与映射关系与原索引一致 查看原索引设置 GET /tb/_settings结果: {"tb" : {"settings" : {"index" : {"ro…...
论文解读《Object-Centric Learning with Slot Attention》
系列文章目录 文章目录 系列文章目录论文细节理解 1. 研究背景2. 论文贡献3. 方法框架3.1 Slot Attention模块3.2 无监督对象发现架构 4. 研究思路5. 实验6. 限制 论文细节理解 supervised property prediction tasks是什么? Supervised property prediction tasks…...
YOLOv8+注意力机制+PyQt5玉米病害检测系统完整资源集合
资源包含可视化的玉米病害检测系统,基于最新的YOLOv8注意力机制训练的玉米病害检测模型,和基于PyQt5制作的可视玉米病害系统,包含登陆页面和检测页面,该系统可自动检测和识别图片或视频当中出现的七类玉米病害:矮花叶病…...
tcp、udp通信调试工具Socket Tool
tcp、udp通信调试工具Socket Tool ]...
MedPrompt:基于提示工程的医学诊断准确率优化方法
Medprompt:基于提示工程的医学诊断准确率优化方法 秒懂大纲解法拆解MedPrompt 提示词全流程分析总结创意视角 论文:Can Generalist Foundation Models Outcompete Special-Purpose Tuning? Case Study in Medicine 秒懂大纲 ├── 1 研究背景【描述背…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...
Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...
ZYNQ学习记录FPGA(一)ZYNQ简介
一、知识准备 1.一些术语,缩写和概念: 1)ZYNQ全称:ZYNQ7000 All Pgrammable SoC 2)SoC:system on chips(片上系统),对比集成电路的SoB(system on board) 3)ARM:处理器…...
