结合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和安全做个产品的主要内容,如果未能解决你的问题,请参考以下文章
专注安防监控,雄迈消费类产品全线标配AI功能,让家用类监控更智能
当嵌入式遇上人工智能,用OK3399-C来做个AI“云监工”!
《安富莱嵌入式周报》第279期:强劲的代码片段搜索工具,卡内基梅隆大学安全可靠C编码标准,Nordic发布双频WiFi6 nRF7002芯片