结合AI和安全做个产品

Posted security_yj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结合AI和安全做个产品相关的知识,希望对你有一定的参考价值。

前几年搞了个“钓鱼网站智能检测系统”的网站,运营了三年后下架了,效果不是很好,唯一的收获是让我体会到“做好一个产品,光靠技术是不行的”。

下面我从技术层面把产品开发过程分享下。

1、部署网站

传统的方式一般是先购买一台性能好点的服务器,放置到某个机房,然后购买公网ip,购买域名等。

现在比较主流的方式是直接购买云服务(百度,腾讯,阿里,亚马逊等)。服务器、公网ip、域名等一站式搞定。

特别需要注意的是,在中国需要给你的网站备案,备案的方法云服务商也会告诉你。

2、产品定位

这个产品主要是帮用户检测钓鱼网站。当时是作为一个独立站,其实最好的方式是以插件的方式集成到浏览器、邮件客户端等。

3、技术实现

涉及的技术点有BP神经网络,钓鱼网站样本集,web框架,网站黑白名单等。

1、BP神经网络

详细关于BP神经网络的描述,可以到网上搜索,也可以参照这里

神经网络库比较多,本产品中使用的是pybrain

2、钓鱼网站样本集

样本的收集工作也是比较耗时的,如下网站有收集好的钓鱼网站样本集,可以直接使用pybrain训练神经网络。这个uci貌似比较厉害,存储了比较全的机器学习相关的数据集。

http://archive.ics.uci.edu/ml/machine-learning-databases/00327/

3、web框架

涉及到python,bottle,jquery,bootstrap等技术,这里不详细展开了。这里简单讲下将网站关联到微信公众号的方法。首先需要申请一个微信公众订阅号或服务号,然后简单设置,如下:

 将appid,token等信息配置到自己的网站,如下:

#!/usr/bin/env python
#coding=utf8

import urllib2
import json
import hashlib
import time
import xml.etree.ElementTree as ET

WEIXIN_TOKEN = '****'
WEIXIN_APPID = 'wx26942ed464cbb444'
WEIXIN_SECRET = '917cd5d34143e3cd2a1b366228f27ae2'
WEIXIN_URL = 'http://phishfeeds.com'

class weixin_handle:
    def get_access_token(self):
        url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s' % (
        WEIXIN_APPID,WEIXIN_SECRET)
        result = urllib2.urlopen(url).read()
        weixin_access_token = json.loads(result).get('access_token')
        print 'access_token===%s' % weixin_access_token
        return weixin_access_token
   
    def message(self , body):
        data = ET.fromstring(body)
        tousername = data.find('ToUserName').text
        fromusername = data.find('FromUserName').text
        createtime = data.find('CreateTime').text
        msgtype = data.find('MsgType').text
        content = "本公众号可查询钓鱼,诈骗等恶意网站,如果您遇到可疑网站,可访问如下网站进行查询!\\n\\nhttp://www.phishfeeds.com\\n"
        textTpl = """<xml>
            <ToUserName><![CDATA[%s]]></ToUserName>
            <FromUserName><![CDATA[%s]]></FromUserName>
            <CreateTime>%s</CreateTime>
            <MsgType><![CDATA[text]]></MsgType>
            <Content><![CDATA[%s]]></Content>
            <MsgId>1234567890123456</MsgId>
            </xml>"""
        out = textTpl % (fromusername, tousername, str(int(time.time())),  content)
        return out 
 
    def get(self,signature,timeStamp,nonce,echostr):
        if timeStamp == None or nonce == None:
        return None
        tmp = [WEIXIN_TOKEN, timeStamp, nonce]
        tmp.sort()
        raw = ''.join(tmp).encode()
        sha1Str = hashlib.sha1(raw).hexdigest()
        print sha1Str
        print signature
        if sha1Str == signature:
            return echostr
        else:
            return None
    
    def post(self,body):
        return self.message(body)

4、网站黑白名单

通过爬虫,定期到如下两个站点获取完整黑白名单。所谓黑名单是指已经确认是钓鱼网站,所谓白名单是指已经确认是正常网站。

黑名单
http://data.phishtank.com/data/68b4c2263bc5687ad3f275f69de3dbba4ae5219aa88c349125d73a064260f866/online-valid.csv.gz
白名单
alexa
http://alexa.chinaz.com/Global/index.html

4、源代码

https://github.com/yanjinjin/phishing_AI.git

以上是关于结合AI和安全做个产品的主要内容,如果未能解决你的问题,请参考以下文章

2022 年主要的技术变革内容

专注安防监控,雄迈消费类产品全线标配AI功能,让家用类监控更智能

结合工程实践选题调研分析同类软件产品

当嵌入式遇上人工智能,用OK3399-C来做个AI“云监工”!

重庆理工学生“攻陷”图像识别技术,AI安全问题再引热议!

《安富莱嵌入式周报》第279期:强劲的代码片段搜索工具,卡内基梅隆大学安全可靠C编码标准,Nordic发布双频WiFi6 nRF7002芯片