为什么机器学习在安全、风控领域频频遇冷?

机器学习

959 年,美国塞缪尔 (Samuel) 设计了一个下棋程序,这个程序具有学习能力,它可以在不断的对弈中改善自己的棋艺。4年后,这个程序战胜了设计者本人。又过了 3 年,这个程序战胜了美国一个保持8年之久的常胜不败的冠军。这个程序向人们展示了机器学习的能力,提出了许多令人深思的社会问题与哲学问题。

野望

登高而望,满眼皆是机器学习的颠覆 IT 行业的燎原之火,但是事实是否真的如此?至少目前看来,在安全、风控领域,机器学习的势能还远达不到颠覆的效果。

机器学习的正途

如果我们从机器学习取得不错效果的领域去窥见的话,也许能找到一些思路:无论是语音识别、图片识别、还是 AlphaGO 的应用都有现成的大量的音频、图片、棋谱的样本去训练,而商品推荐、音乐推荐系统这些相对低频的累计用户的正反馈的方式无疑例外的都指出了机器学习的正途无疑是积累样本。

bigsec

虽然近年来又有类似 GAN 对抗网络这种非监督式机器学习的兴起,但是也鲜闻有特别成功的商业应用。我们这时总结到: 机器学习重要的东西有三样:样本, 样本, 还是样本(也许我们能在本文中找到第四样)。

机器学习的吸引力

机器学习为什么如此之火呢?本文不试图管中窥豹,只是简单举个例子,大家可以自行感受。

项目来源

https://github.com/faizann24/Machine-Learning-based-Password-Strength-Classification/blob/master/script.py

训练样本

csv 格式::strength 代表密码强度;0 代表弱;1 代表一般;2 代表强。

password,strength
    kzde5577,1
    kino3434,1
    visi7k1yr,1
    megzy123,1
    lamborghin1,1
    AVYq1lDE4MgAZfNt,2
    u6c8vhow,1
    v1118714,1
    universe2908,1
    as326159,1
    asv5o9yu,1
    612035180tok,1
    jytifok873,1
    WUt9IZzE0OQ7PkNE,2
    jerusalem393,1
    g067057895,1
    52558000aaa,1
    idofo673,1
    6975038lp,1
    sbl571017,1
    elyass15@ajilent-ci,2
    intel1,0
    klara-tershina3H,2
    czuodhj972,1
    faranumar91,1
    cigicigi123,1
    0169395484a,1
    schalke04,1
    prisonbreak1,1
    asgaliu11,1
    gaymaids1,1
    trabajonet9,1
    go7kew7a2po,1
    fk9qi21m,1
    memjan123,1
    lsdlsd1,0
    exitos2009,1
    fahad123,1
    kswa2mrv,1
    yitbos77,1
    juliel009,1
    pHyqueDIyNQ8vmhb,2 

这里只是 TF-IDF 算法找到低词频的密码字符段,然后做个简单的逻辑回归,就在样本量不大的情况下获得了 81% 准确率的密码强度检测模型。 然后我们找到了这么一篇介绍如何检测恶意 URL1 的机器学习文章, 相同的算法,只是不同的样本, 现在就连一个程序员都不差了。

机器学习之踵

《Outside the Closed World:On Using Machine Learning For Network Intrusion Detection》2 该论文比较详细的分析了机器学习为什么没有在安全监测方面取得广泛应用的原因, 有兴趣的童鞋可以移步到文末‘引用’处去细读,如果你放弃了,那么我们就直接看看下面的总结吧。

  1. 机器学习是寻找相似性,没有足够多的恶意访问、攻击的样本,无从训练。
  2. 分类错误的成本很高,且一般实际应用的良好准确率的模型都是 黑盒无法解释无法人工干预
  3. 网络监控到实际的检测对象之间的抽象成本,即比如说一个撞库活动与底层网络信息通讯之间的对应关系有一个抽象、翻译的难度。(虽然这篇不是广告,但是有一句话我还是要讲一下,笔者参与的 Warden 业务风控系统,自己搞了一套通过配置的流量、日志解析成业务事件的组件,虽然不甚完美,但是我们还是做到了)

所以坊间甚嚣尘上的机器学习的传闻是多么美好,我们凑近一看,其实还是镜花水月,所以大部分愿意使用机器学习的公司基本都是拿机器学习的结果当做参考,最终还是要靠人的判断。

但是

上文似乎给机器学习在安全、风控领域应用的前景扣上了不容乐观的帽子,但是故事肯定不会就这么结束,因为十年前当我们断言人工智能是遥不可及、围棋是人类最后且唯一的堡垒的时候也是这么言之凿凿的。

bigsec

双刃剑已然出鞘

McAfee 的 2017 威胁预测报告中3 就提到了一起利用机器学习来进行诈骗引起 FBI 调查的案例,如前所说机器学习是学习样本中的相似性,这个案例中就利用推荐系统类似的原理,通过收集到的大量基于人的社交媒体的行为数据,去筛选出容易诈骗的对象。举个几个实际的例子:

  • 如果你经常在微博、脸书上上传你开箱亚马逊的包裹、你就会被标记为一个亚马逊的忠实会员、然后偶尔发一个伪造亚马逊推广的邮件给你。
  • 如果你的 Instagram 上发布了一张你去亚马逊的照片,这时候你很有可能处于经常联系不上的情况,这时候发一个诈骗的邮件或者消息给你的家人。

上述的例子可以套用到生活中的任何场景去,是不是有点细思极恐呢?当我们使用机器学习这个新工具还不利索的时候,实际上攻方已经用的很欢了。

实践中匍匐前进

基于提取文本的源数据和结构去检测恶意文件

原文出自《Malicious PDF Detection Using Metadata and Structural Features》[4] ,所述的恶意文件样本来自于 http://contagiodump.blogspot.com/2010/08/malicious-documents-archive-for.html 提取特征之后使用随机森林得到了一个 99% 准确率,0.01% 的假误报率的分类模型。 结论:还是传统的靠积累恶意样本的正途。

检测基于 DGA 算法的恶意软件的趋势

原文出自 《Detecting the Rise of DGA-Based Malware》[5] ,关于 DGA 算法的简要说明是:DGA 就是恶意程序去动态生成域名去与控制端通讯的域名生成算法。 数据来源于北美的网络供应商的真实 DNS 请求。 首先用聚类的算法尝试将这些编造的域名和请求这些编造的域名的机器分组,再用将生成的模式跟已知的 DGA 算法对比,去发现新的 DGA 变种,成功找到了已知算法之外另一半的未知实现。 结论:传统路数之外的思路。

Tensorflow

样本谁都想要,但是你们都得给我,这也许就是 Google 为什么开源 Tensorflow 的最重要的原因吧。 结论:思路的正确使用方式。

说到思路, Google 是不缺的,之前 Google 的图片验证码服务 reCAPCHA 经常使用街景里面识别不出来的门牌号来作为验证码,可爱的用户不自觉的情况下已经不知道无偿的做了多少次分析师了。 也许有一句话叫天道有轮回比较适合接下来的剧情: 街景团队升级了机器学习的算法,世人称之为深度学习, 然后自家的图片识别完了,感觉不错,顺手测了一下之前帮忙识别的 reCAPCHA 组的验证码,结果准确率很不错: 99.8%。于是,现在 Google 的 reCAPCHA 服务已经停了。

引用

1 http://www.kdnuggets.com/2016/10/machine-learning-detect-malicious-urls.html 2 http://www.icir.org/robin/papers/oakland10-ml.pdf 3 https://www.mcafee.com/us/resources/reports/rp-threats-predictions-2017.pdf?clickid=UPuyCF3l6QMNyNnWCy3kw0xtUkhwZeSmTWRaVY0&lqmcat=Affiliate:IR:null:74047:10078:10078:null&sharedid= [4] http://cs.gmu.edu/~tr-admin/papers/GMU-CS-TR-2012-5.pdf [5] http://www.covert.io/research-papers/security/From%20throw-away%20traffic%20to%20bots%20-%20detecting%20the%20rise%20of%20dga-based%20malware.pdf

toyld 岂安科技搬运代码负责人

主导各处的挖坑工作,擅长挖坑于悄然不息,负责生命不息,挖坑不止 。

反爬虫