描述
服务项目
SERVICE ITEMS
当前位置:

黑产大数据|黑产攻击流程自动化体系

二、自动化攻击的技术手段和攻防对抗

黑产实现自动化攻击,主要通过 2 种技术手段:协议破解/伪造,以及模拟点击/操控。

前者需要先破解应用的接口协议,存在一定的技术门槛,难度相对较大;而后者开发简单,可读性强,上手门槛较低,对于黑产来说,受众也更广。我们近期捕获到的自动化攻击工具里面,模拟点击/操控类工具的占比也更高:

接下来我们对这两类自动化攻击技术做更详细的介绍。

2.1 协议破解/伪造

协议破解/伪造指的是通过抓包+逆向分析等方式,获取到客户端跟服务端通信的请求接口以及参数,直接伪造接口协议和参数来完成自动化操作。

我们先以一款旅游类应用的自动发帖机为例。通过分析,我们可以看到这个发帖机会自动访问该应用的很多后端接口:

由于破解了接口协议和参数,所以在访问接口之前,所有的参数都已经构造好了:

其中有一些参数的伪造成本并不高,甚至直接硬编码在代码里面。

有一些参数会根据一定的规则动态生成,以满足合法性校验。以os_api和os_version这两个参数为例,在代码里面内置了一个os_version的数组:

构造参数时,会根据这个数组随机选择os_version的值,同时会根据os_version的值来适配os_api的值:

再比如device_type和device_brand这两个参数,在代码里面内置了一个很大的设备类型的数组:

构造参数时,也是进行随机选择。如果选择了数组的第 1 个元素,那么生成的参数就是device_type=B7330 并且device_brand=SAMSUNG。

以上举例的这些参数,伪造起来都比较简单,但是还有一些参数的伪造,难度要大很多。特别是一些做了协议保护的应用,会存在专门用于校验接口请求合法性的参数,而且多个参数之间相互校验,只要其中一个参数构造得有问题便无法通过校验。

理论上来说,黑产似乎因为对抗成本的提高而望而却步,但实际情况却并非如此。

其次,存在一些破解网站,其背后有专门的技术人员,也提供收费的算法破解服务:

另外,虽然随着移动端应用加固技术的发展(包括成熟的商业化产品和方案),核心算法的破解难度也越来越大,但由于攻防的不对等,黑产可以绕过这道防线,选择从防御的薄弱点下手。而Web端应用就成为了这样的一个突破口。虽然Web前端的代码可以做混淆做加密,但破解的难度相对要小很多。甚至可以不用破解,直接把算法的关键代码扣出来,通过脚本发动机进行调用和执行,从而完成加密参数的构造:

对于厂商而言,由于协议破解/伪造脱离了环境和设备的限制,黑灰产可以用很低的成本完成批量化规模化作案,因此危害也更加严重。如何更加有效的防止或检测这类自动化攻击,除了加强核心算法的复杂度之外,也可以尝试从情报入手。前面提到伪造的接口协议中,其中有一些参数是硬编码的,基于这些硬编码的参数,可以做特征聚类和分析,并针对性的提取识别规则。此外,黑产在构造自动化攻击的代码时,也不是天衣无缝,往往会在一些地方留下破绽。其中一种比较典型的情况是访问不同接口时,存在构造的参数不一致的情况。比如登录请求传入的设备类型的是iPhone:

但紧接着进行设备注册时,注册的信息却变成了操作系统是Android,设备厂商是华为:

通过这些情报信息,可以不断补充和完善对于协议破解/伪造类自动化攻击的识别。

2.2 模拟点击/操控

模拟点击/操控是指通过触发鼠标/键盘/触控等事件,或者通过代码注入等方式,完成界面控件的输入、点击、移动等操作。如果说协议破解/伪造的对抗是技术的硬碰硬,模拟点击/操控则可以说是以巧致胜,而且由于上手门槛低,也成为了当前黑灰产最为喜欢的自动化攻击方式。接下来我们分别讲解几种比较常见的模拟点击/操控类攻击方式。

2.2.1 按键精灵

按键精灵是一款大家非常熟悉的老牌自动化脚本工具,也是目前黑产使用最为普遍的通过模拟点击实现自动化攻击的工具。黑灰产从业人员通过编写相关的逻辑脚本,便可通过模拟用户操作去实现他们想要的功能,比如手机触摸、按键等操作;也可以先手动“录制”一遍想要操作的功能,这样按键精灵会自动记录操作行为序列和坐标轨迹,十分方便。

我们以某短视频平台的一款引流工具为例,该工具是基于按键精灵(安卓版)脚本打包生成的一个apk文件,其主要功能是自动给平台上的短视频点赞、评论,以及给用户发私信,从而达到引流的效果,如下所示:

使用该工具时,只要打开短视频平台某网红主页的粉丝列表界面,便可自动按顺序打开每个粉丝的主页,给视频点赞、评论以及给粉丝发私信,并且该工具也支持自定义配置,比如是否关注粉丝、自定义引流话术等。

2.2.2 Auto.js

如果说按键精灵是老牌精英,Auto.js则可以说是后起之秀。

根据情报显示,大约从 18 年底开始,越来越多的黑灰产从业者使用Auto.js来开发自动化攻击脚本。Auto.js是一个基于JavaScript的安卓平台自动化脚本框架,相比与按键精灵,Auto.js有以下一些优势:

1)设备无需Root,使用成本更低,而且可以躲避基于Root的风险设备环境检测;

2)按键精灵基于识别图片、颜色、坐标等实现模拟操作,存在分辨率的兼容问题,而Auto.js可以直接操作控件,自动适配各种安卓机型,稳定性更高;

3)使用Auto.js开发打包生成的apk文件体积更小。

我们以某社交平台的添加群成员好友的自动化脚本为例,首先判断是否处于群聊天窗口:

在获取到群成员QQ号后,自动完成点击“加好友”、填写验证信息、发送请求:

Auto.js脚本开发者可以使用Visual Studio Code + Auto.js插件开发脚本,电脑连接手机终端,可直接控制装有Auto.js客户端的手机执行脚本,也可将脚本保存至手机终端,编译为APK,运行APK执行操作。

2.2.3 浏览器内核

对于Web端应用来说,黑灰产往往通过浏览器做自动化攻击的载体。

其中一种方式就是在工具中嵌入浏览器内核。以Chromium为例,Google为了方便给第三方应用提供可嵌入的浏览器支持,做了一个开源项目:CEF,全称Chromium Embedded Framework。

CEF隔离底层Chromium和Blink的复杂代码,并提供一套产品级稳定的API,发布跟踪具体Chromium版本的分支,以及二进制包。CEF的大部分特性都提供了丰富的默认实现,让使用者做尽量少的定制即可满足需求。CEF的应用场景之一就是用于自动化Web测试,这也给黑灰产打开了便利之门,将之用于自动化攻击。

我们以某智能爬虫采集器为例,该软件内置了 Chromium浏览器,通过直接操控页面控件来完成自动化操作。该爬虫采集器使用方式非常简单,只需在软件界面输入目标网站,就可以根据需求爬取目标网站的数据,界面如下:

利用该工具,爬取某旅游网站数据如下:

2.2. 4 自动化Web测试

为了方便自动化Web测试,主流的浏览器自身也展现出了足够的开放性,比如大家都比较熟悉的自动化测试工具Selenium/WebDriver,就是基于浏览器的一些开放特性,完成了对Web页面的自动化操控,而黑灰产利用Selenium/WebDriver来完成自动化攻击也非常常见。对于厂商而言,也往往会在Web端代码里面嵌入一段JavaScript脚本,来检测这类自动化测试工具:

除了以上这些,还有一种自动化Web测试的手段:Chrome远程调试,也被黑灰产用于自动化攻击。我们以某社区软件的账号注册机为例,该工具会通过远程调式的方式打开Chrome浏览器:

然后通过WebSocket通信对浏览器进行控制。包括:

  1. 执行

    document.querySelector('[name=username]').select()获得手机号输入框的焦点;

  2. 发送

    Input.dispatchKeyEvent消息,自动填写从接码平台获取到的手机号;

  3. 执行

    document.querySelector(‘button.Button.CountingDownButton.SignFlow-smsInputButton.Button--plain’).click()点击“获取短信验证码”按钮;

  4. 执行

    document.querySelector('[name=digits]').select()获得验证码输入框的焦点,自动填写验证码,并执行

    document.querySelector(‘button.Button.SignFlow-submitButton.Button--primary.Button--blue’).click()点击“注册/登陆”按钮。

移动端的模拟点击/操控类攻击,需要在设备上运行被攻击的移动端应用。

而且如果要实现批量化规模化攻击,需要有大量的设备资源(群控、云控、箱控,或者通过模拟器/改机工具伪造设备资源),因此对于厂商来说,可以从设备环境层面进行风险检测。无论是使用按键精灵、Auto.js、改机工具、GPS伪造等工具,还是模拟器、群控等设备环境,可从设备指纹数据中找到蛛丝马迹,设备指纹除了用作唯一性标识之外,还应该对基本的应用多开、改机环境/环境伪造、Hook行为、Root/越狱、代理/VPN等风险场景有识别能力。如果具备较强的情报能力,可以尽可能多的收集自动化攻击脚本程序,并在应用启动的时候检测安装列表(Applist)中是否存在这类程序。

另一方面,模拟点击/操控类攻击虽然会模仿正常用户的操作行为,但与用户实际的行为特征还是会存在差异,可以从 行为层面做检测。

比如针对某电商平台刷店铺访问量的工具,每一次刷量行为一定会包含“打开首页”、“搜索目标店铺的商品关键词”、“先进入两家同类商品的店铺浏览商品”(模仿正常用户货比三家的习惯)、“在进入目标店铺浏览商品完成刷量”,并且在每个页面的停留时间也在固定的。

从业务数据中提取用户关键行为做特征进行聚类分析,可以有效识别程序化的模拟操作。

再比如上述的某智能爬虫采集器,虽然会产生看似正常的页面浏览行为,但是没有正常的鼠标点击、键盘输入或屏幕触控等操作,也属于高度可疑的行为。

当然,设备层面和行为层面的数据往往是互补的。为保证高准确性和识别率,风险行为的判定要结合多个维度综合判断。

总 结

从技术上实现攻击流程的高度自动化,是黑灰产提高运营效率,降低运营成本的必然道路。

稳定的、成熟的自动化测试工具和技术被黑产滥用,又极大的提高了黑产的开发和攻击效率。这对于厂商的业务安全防护策略来讲,无疑将不断面临更大的挑战。庆幸的是人机识别的对抗是一个持续升级和演进的过程,不管是对于业务方来讲,还是对于黑灰产来讲,都没有绝对的银弹。

业务方除了在风控规则模型上下功夫外,还可以在设备上进行风险检测:

1) 对业务运行的设备环境进行检测。黑灰产无论是在设备信息欺骗上,运行自动化脚本工具,都需要使用一些特殊的运行环境。这些环境通过分析一般都能找到一些通用的检测点。比如改机工具,可以对Hook框架进行检测,模拟点击可以检测系统参数。这些都可以作为可疑设备特征进行加权打分。

2) 对业务上的用户行为识别。黑产自动化通常会用到的协议模拟技术和模拟按键技术,这都跟自然人的操作路径会有巨大的差距。比如当用户登录时,账号密码的输入不会是瞬间完成的,又或者每次按钮的点击,也不会在相同位置。这些都可以作为检测特征,当我们对用户操作行为进行识别,这大大增加了黑灰产的对抗成本。

在未来的人机对抗中,企业将会面临越来越多的自动化攻击。

企业在业务安全的纵深防御上,除了基础风控的建设之外,还需要在设备上进行防护,从而才能提高黑产的攻击成本,提升防护效果。

联系达州恒福环境监测服务有限公司
电 话:0818-2378903  
地址:达州市达川商贸物流园区杨柳路116号莱克汽车博览园配件城1号楼3楼1-24号

黑产大数据|黑产攻击流程自动化体系

二、自动化攻击的技术手段和攻防对抗

黑产实现自动化攻击,主要通过 2 种技术手段:协议破解/伪造,以及模拟点击/操控。

前者需要先破解应用的接口协议,存在一定的技术门槛,难度相对较大;而后者开发简单,可读性强,上手门槛较低,对于黑产来说,受众也更广。我们近期捕获到的自动化攻击工具里面,模拟点击/操控类工具的占比也更高:

接下来我们对这两类自动化攻击技术做更详细的介绍。

2.1 协议破解/伪造

协议破解/伪造指的是通过抓包+逆向分析等方式,获取到客户端跟服务端通信的请求接口以及参数,直接伪造接口协议和参数来完成自动化操作。

我们先以一款旅游类应用的自动发帖机为例。通过分析,我们可以看到这个发帖机会自动访问该应用的很多后端接口:

由于破解了接口协议和参数,所以在访问接口之前,所有的参数都已经构造好了:

其中有一些参数的伪造成本并不高,甚至直接硬编码在代码里面。

有一些参数会根据一定的规则动态生成,以满足合法性校验。以os_api和os_version这两个参数为例,在代码里面内置了一个os_version的数组:

构造参数时,会根据这个数组随机选择os_version的值,同时会根据os_version的值来适配os_api的值:

再比如device_type和device_brand这两个参数,在代码里面内置了一个很大的设备类型的数组:

构造参数时,也是进行随机选择。如果选择了数组的第 1 个元素,那么生成的参数就是device_type=B7330 并且device_brand=SAMSUNG。

以上举例的这些参数,伪造起来都比较简单,但是还有一些参数的伪造,难度要大很多。特别是一些做了协议保护的应用,会存在专门用于校验接口请求合法性的参数,而且多个参数之间相互校验,只要其中一个参数构造得有问题便无法通过校验。

理论上来说,黑产似乎因为对抗成本的提高而望而却步,但实际情况却并非如此。

其次,存在一些破解网站,其背后有专门的技术人员,也提供收费的算法破解服务:

另外,虽然随着移动端应用加固技术的发展(包括成熟的商业化产品和方案),核心算法的破解难度也越来越大,但由于攻防的不对等,黑产可以绕过这道防线,选择从防御的薄弱点下手。而Web端应用就成为了这样的一个突破口。虽然Web前端的代码可以做混淆做加密,但破解的难度相对要小很多。甚至可以不用破解,直接把算法的关键代码扣出来,通过脚本发动机进行调用和执行,从而完成加密参数的构造:

对于厂商而言,由于协议破解/伪造脱离了环境和设备的限制,黑灰产可以用很低的成本完成批量化规模化作案,因此危害也更加严重。如何更加有效的防止或检测这类自动化攻击,除了加强核心算法的复杂度之外,也可以尝试从情报入手。前面提到伪造的接口协议中,其中有一些参数是硬编码的,基于这些硬编码的参数,可以做特征聚类和分析,并针对性的提取识别规则。此外,黑产在构造自动化攻击的代码时,也不是天衣无缝,往往会在一些地方留下破绽。其中一种比较典型的情况是访问不同接口时,存在构造的参数不一致的情况。比如登录请求传入的设备类型的是iPhone:

但紧接着进行设备注册时,注册的信息却变成了操作系统是Android,设备厂商是华为:

通过这些情报信息,可以不断补充和完善对于协议破解/伪造类自动化攻击的识别。

2.2 模拟点击/操控

模拟点击/操控是指通过触发鼠标/键盘/触控等事件,或者通过代码注入等方式,完成界面控件的输入、点击、移动等操作。如果说协议破解/伪造的对抗是技术的硬碰硬,模拟点击/操控则可以说是以巧致胜,而且由于上手门槛低,也成为了当前黑灰产最为喜欢的自动化攻击方式。接下来我们分别讲解几种比较常见的模拟点击/操控类攻击方式。

2.2.1 按键精灵

按键精灵是一款大家非常熟悉的老牌自动化脚本工具,也是目前黑产使用最为普遍的通过模拟点击实现自动化攻击的工具。黑灰产从业人员通过编写相关的逻辑脚本,便可通过模拟用户操作去实现他们想要的功能,比如手机触摸、按键等操作;也可以先手动“录制”一遍想要操作的功能,这样按键精灵会自动记录操作行为序列和坐标轨迹,十分方便。

我们以某短视频平台的一款引流工具为例,该工具是基于按键精灵(安卓版)脚本打包生成的一个apk文件,其主要功能是自动给平台上的短视频点赞、评论,以及给用户发私信,从而达到引流的效果,如下所示:

使用该工具时,只要打开短视频平台某网红主页的粉丝列表界面,便可自动按顺序打开每个粉丝的主页,给视频点赞、评论以及给粉丝发私信,并且该工具也支持自定义配置,比如是否关注粉丝、自定义引流话术等。

2.2.2 Auto.js

如果说按键精灵是老牌精英,Auto.js则可以说是后起之秀。

根据情报显示,大约从 18 年底开始,越来越多的黑灰产从业者使用Auto.js来开发自动化攻击脚本。Auto.js是一个基于JavaScript的安卓平台自动化脚本框架,相比与按键精灵,Auto.js有以下一些优势:

1)设备无需Root,使用成本更低,而且可以躲避基于Root的风险设备环境检测;

2)按键精灵基于识别图片、颜色、坐标等实现模拟操作,存在分辨率的兼容问题,而Auto.js可以直接操作控件,自动适配各种安卓机型,稳定性更高;

3)使用Auto.js开发打包生成的apk文件体积更小。

我们以某社交平台的添加群成员好友的自动化脚本为例,首先判断是否处于群聊天窗口:

在获取到群成员QQ号后,自动完成点击“加好友”、填写验证信息、发送请求:

Auto.js脚本开发者可以使用Visual Studio Code + Auto.js插件开发脚本,电脑连接手机终端,可直接控制装有Auto.js客户端的手机执行脚本,也可将脚本保存至手机终端,编译为APK,运行APK执行操作。

2.2.3 浏览器内核

对于Web端应用来说,黑灰产往往通过浏览器做自动化攻击的载体。

其中一种方式就是在工具中嵌入浏览器内核。以Chromium为例,Google为了方便给第三方应用提供可嵌入的浏览器支持,做了一个开源项目:CEF,全称Chromium Embedded Framework。

CEF隔离底层Chromium和Blink的复杂代码,并提供一套产品级稳定的API,发布跟踪具体Chromium版本的分支,以及二进制包。CEF的大部分特性都提供了丰富的默认实现,让使用者做尽量少的定制即可满足需求。CEF的应用场景之一就是用于自动化Web测试,这也给黑灰产打开了便利之门,将之用于自动化攻击。

我们以某智能爬虫采集器为例,该软件内置了 Chromium浏览器,通过直接操控页面控件来完成自动化操作。该爬虫采集器使用方式非常简单,只需在软件界面输入目标网站,就可以根据需求爬取目标网站的数据,界面如下:

利用该工具,爬取某旅游网站数据如下:

2.2. 4 自动化Web测试

为了方便自动化Web测试,主流的浏览器自身也展现出了足够的开放性,比如大家都比较熟悉的自动化测试工具Selenium/WebDriver,就是基于浏览器的一些开放特性,完成了对Web页面的自动化操控,而黑灰产利用Selenium/WebDriver来完成自动化攻击也非常常见。对于厂商而言,也往往会在Web端代码里面嵌入一段JavaScript脚本,来检测这类自动化测试工具:

除了以上这些,还有一种自动化Web测试的手段:Chrome远程调试,也被黑灰产用于自动化攻击。我们以某社区软件的账号注册机为例,该工具会通过远程调式的方式打开Chrome浏览器:

然后通过WebSocket通信对浏览器进行控制。包括:

  1. 执行

    document.querySelector('[name=username]').select()获得手机号输入框的焦点;

  2. 发送

    Input.dispatchKeyEvent消息,自动填写从接码平台获取到的手机号;

  3. 执行

    document.querySelector(‘button.Button.CountingDownButton.SignFlow-smsInputButton.Button--plain’).click()点击“获取短信验证码”按钮;

  4. 执行

    document.querySelector('[name=digits]').select()获得验证码输入框的焦点,自动填写验证码,并执行

    document.querySelector(‘button.Button.SignFlow-submitButton.Button--primary.Button--blue’).click()点击“注册/登陆”按钮。

移动端的模拟点击/操控类攻击,需要在设备上运行被攻击的移动端应用。

而且如果要实现批量化规模化攻击,需要有大量的设备资源(群控、云控、箱控,或者通过模拟器/改机工具伪造设备资源),因此对于厂商来说,可以从设备环境层面进行风险检测。无论是使用按键精灵、Auto.js、改机工具、GPS伪造等工具,还是模拟器、群控等设备环境,可从设备指纹数据中找到蛛丝马迹,设备指纹除了用作唯一性标识之外,还应该对基本的应用多开、改机环境/环境伪造、Hook行为、Root/越狱、代理/VPN等风险场景有识别能力。如果具备较强的情报能力,可以尽可能多的收集自动化攻击脚本程序,并在应用启动的时候检测安装列表(Applist)中是否存在这类程序。

另一方面,模拟点击/操控类攻击虽然会模仿正常用户的操作行为,但与用户实际的行为特征还是会存在差异,可以从 行为层面做检测。

比如针对某电商平台刷店铺访问量的工具,每一次刷量行为一定会包含“打开首页”、“搜索目标店铺的商品关键词”、“先进入两家同类商品的店铺浏览商品”(模仿正常用户货比三家的习惯)、“在进入目标店铺浏览商品完成刷量”,并且在每个页面的停留时间也在固定的。

从业务数据中提取用户关键行为做特征进行聚类分析,可以有效识别程序化的模拟操作。

再比如上述的某智能爬虫采集器,虽然会产生看似正常的页面浏览行为,但是没有正常的鼠标点击、键盘输入或屏幕触控等操作,也属于高度可疑的行为。

当然,设备层面和行为层面的数据往往是互补的。为保证高准确性和识别率,风险行为的判定要结合多个维度综合判断。

总 结

从技术上实现攻击流程的高度自动化,是黑灰产提高运营效率,降低运营成本的必然道路。

稳定的、成熟的自动化测试工具和技术被黑产滥用,又极大的提高了黑产的开发和攻击效率。这对于厂商的业务安全防护策略来讲,无疑将不断面临更大的挑战。庆幸的是人机识别的对抗是一个持续升级和演进的过程,不管是对于业务方来讲,还是对于黑灰产来讲,都没有绝对的银弹。

业务方除了在风控规则模型上下功夫外,还可以在设备上进行风险检测:

1) 对业务运行的设备环境进行检测。黑灰产无论是在设备信息欺骗上,运行自动化脚本工具,都需要使用一些特殊的运行环境。这些环境通过分析一般都能找到一些通用的检测点。比如改机工具,可以对Hook框架进行检测,模拟点击可以检测系统参数。这些都可以作为可疑设备特征进行加权打分。

2) 对业务上的用户行为识别。黑产自动化通常会用到的协议模拟技术和模拟按键技术,这都跟自然人的操作路径会有巨大的差距。比如当用户登录时,账号密码的输入不会是瞬间完成的,又或者每次按钮的点击,也不会在相同位置。这些都可以作为检测特征,当我们对用户操作行为进行识别,这大大增加了黑灰产的对抗成本。

在未来的人机对抗中,企业将会面临越来越多的自动化攻击。

企业在业务安全的纵深防御上,除了基础风控的建设之外,还需要在设备上进行防护,从而才能提高黑产的攻击成本,提升防护效果。