浅谈流量安全框架

流量安全解决什么威胁?

最近在总结安全工作的过程中思考:

为何产品需求上线前做了全面的SDLC,业务上线后仍有各种恶意的行为或事件?

在最近的流量安全工作实战中,隐约找到了一丝答案:相比之前SDLC流程上线前的各种需求评审、CI/CD卡点、人工渗透测试,流量安全是属于业务上线后的运营阶段,也是业务安全周期的最后一站。之前做流量安全之前以为线上接入WAF,产品服务没有安全漏洞就能安全稳定的运行,其实并不然,就算WAF可以高质量检出越权逻辑问题,仍无法避免有些不法分子的恶意行为,比如电商场景下竞争对手监控商品价格提供竞价策略、转账场景下提供收款人掩码信息供验证、注册场景下判断手机号是否已注册等等,这些行为影响后果往往更隐蔽,可能是对平台长期竞争力的影响、可能是对个人信息泄露的影响等等。所以线上业务的安全对抗的假想敌不止是挖漏洞的白帽子,还有各种黑灰产行为,怎么才能在业务上线后实现持续安全呢?那么流量层面的对抗就很有必要了。

综上,个人认为流量安全解决的威胁是线上不符合业务预期的流量,如黑灰产的洗号、养号、虚假注册、敏感信息爬虫等等,以保障平台正常用户不影响影响,提高平台稳定可靠形象。

结合目前做流量安全经验浅谈一下流量安全的实践框架,分享与交流。

流量安全需要做哪些事情?

流量安全工作个人理解主要有四个方面:数据采集与清洗、日志行为分析、实时打击策略、持续检测与升级

数据采集与清洗

流量安全工作最基础也是最重要的事情就是流量数据采集与清洗,如同安全事件溯源分析一样,如果日志缺失、字段不全,巧妇难为无米之炊,将直接影响到分析结果。数据采集清洗应包含以下信息:

  1. 客户端基础信息:操作系统类型、浏览器类型/版本、IP ASN、APP 版本、设备ID等;
  2. 请求头信息:请求方法、请求URL、请求参数、User Agent等请求头所有字段、TLS 指纹、TCP 指纹等;
  3. 设备环境信息:无头浏览器插件、浏览器插件列表、设备是否虚拟、设备是否Root、设备是否越狱、是否有Hook等风险等等,平均一类设备有上百个风险检测点;
  4. 响应头信息:用户ID、响应状态码、响应头所有字段、响应大小、响应时间;
  5. 接口信息:接口类型(交易类接口、账户类接口、PII信息类、订单类接口等),接口已有措施(如需登录、脱敏、限制频率、查定比等)

日志行为分析

假设日志字段都收集足够齐全并且进行了清洗,那么下一步就是对日志进行行为分析,这里通常需要基于大数据分析平台来实现,平台流量一天的日志量可能轻松上亿,因此需要选择合适的平台,如Hive、Flink,HDFS、PostgreSQL等等。 这一步最重要的目标是在海量日志中识别出恶意的行为,那么什么样的行为是恶意行为呢?如果刚开始可能会觉得无从下手,我觉得按识别难度从简单到困难排序的话,可以有如下阶段:

  1. 小白模式:简单爬虫小白,写脚本高频请求业务接口,通常此类行为表现明显,User Agent包含python requests,固定IP,请求目标固定等。 通常一般监控或写个SQL告警就能找出此类行为。
  2. 初级模式:当不法分子发现直接脚本不行的后,会把请求尽量伪装成正常的请求,使用代理IP池、降低频率等措施。这阶段一般是小规模团伙,爬虫使用的账号有限,可以从日志中统计出用户维度的请求次数,或者检测TLS指纹、TCP指纹等隐藏特征来发现异常流量。
  3. 中级模式:这时候作为平台可能上线了更强的防护门槛,如接口参数加签、加密,提高攻击者伪造请求的门槛。攻击还想通过直接调用接口模式的话,那么就需要逆向工程,完美模拟客户端的签名、加密、验证码绕过等行为。从日志分析角度,此类行为需要开始团伙分析的能力,结合采集到的日志,只要是团伙作案的团伙必然会留下一些共性特征,而这些特征往往跟正常用户特征是有差异的。
  4. 高级模式:前面攻击模式目标还聚集在伪装请求访问接口,当攻击者发现伪造成本过高时,就会特征效率转换成模拟操作,借助模拟器、自动化插件、云设备等手段进行模拟化操作。这时设备环境风险检测就很重要了,如果设备环境检测出异常,那么就可以认为这是团伙的攻击行为。
  5. 终极模式:如果团伙发现接口协议门槛很高、设备模拟操作成本高,进而转换成众包模式。这时在平台日志中要发现此类行为的难度就比较困难了,一般要深入理解业务场景的前提下进行深度分析账户行为、设备行为、业务目的行为多维度分析,进而提取出团伙的特征。

线上打击策略

一旦发现恶意行为,就要采取相应的措施,一般的处置的方式有:弹出验证码降低爬虫整体效率、用户会话失效、下载新版本客户端、重定向、拦截请求、封禁用户、封禁设备、封禁IP等。按打击颗粒度可以分为:

  1. 请求API:通常恶意行为目标是有清晰的API目标,有可能是一个,有可能是多个API组合。一般在目标接口上配置准确率高、误报低的打击策略,比如User-Agent检测、TLS指纹检测、加密加签检测等,这些策略一般不会对用户造成影响,可以把初级爬虫以下的行为拦截掉。
  2. 设备与IP:通常结合历史结果数据得知,某些IP或设备定性为恶意,那么也可以配置在线上进行拦截,起到一定的防护效果。
  3. 登录账户:现在能被恶意流量盯上的API接口,基本是需要账户登录的,因此可以将一些异常账户进行封禁处理,按封禁级别可以限制某些功能的访问或者冻结账户。

线上打击策略很重要的一点:需要在不影响正常用户的前提下尽量多的识别并阻拦恶意请求流量。否则杀敌一千,自损八百就不值当了。

持续检测与升级

流量安全是攻击防守双方的持久战,正所谓道高一尺,魔高一丈。在流量安全运营过程中需要时刻跟最前沿的伪装手法进行对抗,比如端侧指纹分析、picasso检测,账户的行为模型检测,请求报文异常异常,甚至用上机器学习、深度学习等算法来识别海量日志中的异常用户行为,在线上打击策略也能考虑使用模型训练结果来提高检测维度。

流量安全框架

前面详情拆分了流量安全工作所需要的环节,那么流量安全的框架也就水到渠成了,个人目前理解的流量安全框架图如下:

1

自下而上分别对应的是日志数据采集与清洗、日志行为分析、线上打击策略和持续检测与升级四个模块。这套框架可以很清晰地描述流量安全运营框架,同时也是一个金字塔模型,底层的数据与能力直接影响了上层业务的产出质量:

  • 日志数据采集与清洗决定了日志分析的风险场景,比如想分析盗号场景,那么就需要用到账号登录日志,历史流量日志中的设备信息、IP信息、高频活动时间、修改密码业务功能等。
  • 日志行为分析的场景决定了线上策略打击的目标,线上打击策略需要根据日志行为分析的结果来制定打击策略,比如打击盗卡行为,那么就需要在日志行为分析中提取盗卡行为特征
  • 线上打击策略决定了流量安全治理的业务价值,比如通过盗号策略的上线打击,降低了用户投诉的数量,从而提高用户体验。

运营框架的内容就先写到这里吧,里面的细节以后有时间再记录一下。