Web日志分析(一)之爬虫IP标记方法
作者: 日期:2020年07月16日 阅:2,516

随着互联网技术的发展与普及,企业网站每天接收各种正常或者非正常请求。如果不能有效识别非正常请求并执行适当的防护策略进行控制,则将影响网站的正常运行,甚至造成企业的经济损失。

面对每日产生的TB级别、条目达百亿级别的海量日志,如何挖掘其中非正常访问的行为特征,是们不断探索的方向。

非正常请求范围很广,如扫描、爬虫、CC攻击等,本文主要探索针对爬虫行为IP进行特征识别和标记。通过对海量日志的分析发现,恶意爬虫为了提高攻击成功率,避免被识别、拦截,一般会针对请求UA、IP、时间粒度三个维度进行调整控制。

本文将探索以上三个维度下的爬虫特征识别。

01 通过UA判定爬虫IP

特定引擎UA

搜索引擎、商业引擎、开源爬虫框架等使用的UA一般特征明确,通过对历史日志的统计分析发现,具有特定引擎UA特征的请求每日访问大概占比5%。

搜索引擎(如百度)使用的UA都是通过互联网可查询,一般都是确定的。由于大部分网站需要搜索引擎爬虫访问,因此有很多伪造搜索引擎UA的请求。那么如何识别正常的搜索引擎和伪造的搜索引擎请求呢?目前大部分搜索引擎的爬虫IP支持rdns查询,根据查询结果可以确定对应的搜索引擎厂商。

针对这一特征,通过对历史日志中的IP查询和每天增量IP的rdns查询,我们已经积累了各大主流搜索引擎的爬虫IP库,确保快速发现、更新最新使用的搜索引擎爬虫IP。通过积累的搜索引擎IP库,可以针对伪造搜索引擎UA的请求快速识别拦截。

通过对系统历史日志分析发现,作为国内第一大中文搜索引擎,来自百度搜索引擎的请求最多,同时伪造百度搜索引擎UA的请求也最多(如图1、图2所示)。

图1,主流搜索引擎访问中各引擎占比

图2,被伪造搜索引擎中各引擎占比

图3,Rdns的搜索引擎IP查询比对

在具有特定引擎UA的请求中,非主流搜索引擎的占比较大(如图4所示)。因此,在考虑到实际情况下,大部分网站只需要放行主流搜索引擎,针对其他特征引擎UA的请求进行主动防护拦截,则能大大降低网站压力。

图4,引擎请求分布情况

基于以上数据分析,针对搜索引擎爬虫的防护操作建议是:只允许搜索引擎爬虫进行爬取访问。

频繁变化UA

恶意爬虫为了模拟正常访问,欺骗防护服务,会采用不断变换UA的方式对抗防护服务。

假设某IP在指定时间内访问了M个域名,使用了N个UA,如果M和N满足系统内置的一些检测条件,则认为当前IP在频繁变化UA,行为可疑,需要进行标记。为了验证该类特征的IP行为是否真实存在恶意行为,通过对部分标记的IP进行日志审计,确认抽样IP基本都属于异常访问。通过对每天的日志进行分析,已标记10W+该类特征IP。

图5,IP访问域名和使用UA情况

图6,对特征IP进行日志审计

针对该类特征IP的防护建议操作是:拦截该类特征IP访问。

 

02 通过IP判定爬虫IP

使用代理IP池

为避免单一IP请求特征明显,易被防护服务识别的缺点,恶意爬虫会通过代理IP池使用大量IP进行访问,以便降低每个IP的请求量和请求特征。分析发现,这类IP请求通常具有请求量小、分散、域名多、与正常请求关联度小等特点。

假设某IP在指定时间内访问的域名数为M,每个域名的请求数为N,使用的UA为K,则对M、N、K,如果满足系统内置的一些检测条件,则认为该IP是动态IP,行为可疑,需要进行标记。为了验证该类特征IP,针对部分标记的IP进行日志审计,发现抽样的IP基本都属于异常访问,同时将抽样IP在 ipip.net上查询,发现对应IP的风控信息也会被标注为代理、动态IP。通过对每天的日志进行分析,已标记200W+该类特征IP。

图7,IP访问域名和域名请求情况

针对该类特征IP的防护操作建议是:配置人机识别策略。

 

通过时间维度判定爬虫IP

爬虫请求时间粒度有较大差异,有些爬虫为了获取网站实时最新信息,会全天候不间断请求;有些为了避免影响网站或者用户工作时间访问被发现会在特定时间访问。例如:某网站由于可以查询全国公共信息,导致一些IP全天24小时每分钟都在对该域名发起大量请求。

A.全天高频访问

对于大部分网站,正常用户请求都会集中在有限的时间范围内,全天绝大部分时间都在请求,且请求次数多的行为很大概率是异常访问行为。这类特征的请求由于时间范围广、访问量大,对网站的资源消耗较大。目前系统每天会自动分析标记该类特征IP。

针对该类特征IP的防护操作建议是:拦截该类特征IP访问。

B.非工作时间高频访问

通过历史日志分析发现,大部分网站正常的用户请求一般集中在工作时间,非工作时间的大量访问很大概率是异常访问行为。这类行为虽然对网站工作时间内的服务影响不大,但也是在消耗网站资源。系统每天会自动分析所有IP在非工作时间段内的访问情况,针对集中在非工作时间段内的大量访问IP会自动进行判定和标记。

针对该类特征IP的防护操作建议是:配置人机识别策略。

图8,IP访问时间段情况

本文针对恶意爬虫的特定访问行为,基于对海量日志的挖掘和关联分析,通过请求UA、IP、时间粒度三个维度进行特征提取和识别标记来判定恶意爬虫IP。

“道高一尺,魔高一丈”,为了躲避防护服务,降低被识别、拦截的概率,恶意爬虫行为特征也在不断升级变化。为了对抗这种变化,为了给客户提供更好的爬虫防护服务,我们也在不间断对日志进行分析和爬虫特征识别。

 

申明:本文系厂商投稿收录,所涉观点不代表安全牛立场!


相关文章