本文原创作者:bt0sea,本文属FreeBuf原创奖励计划,未经许可禁止转载
信息安全发展到了今天繁荣的程度,传统的安全还是靠静态的特征码的方式来识别攻击,但是伴随着新型的APT攻击的出现,很多企业才意识到传统安全技术手段已经无法满足对内部威胁的及时发现,于是,很多传统的安全公司大佬都开始转战使用动态沙箱技术来解决问题,有卖设备型的例如Symantec ATP硬件配合终端的SEP构成、有360安全卫士联动威胁情报的方式,来探测未知威胁,当然这种方式主要是针对APT攻击的第一个环节,你黑客通过社会工程学的手段得到用户的信息,使用网络钓鱼或者水坑攻击的方式进入企业内网个人PC。但是要拿到有价值的内部敏感信息,黑客需要进一步部署攻击链,包括获取凭证、内网资产扫描等探测工作,因为很多行业包括金融机构是不允许在业务服务器上安装安全解决方案的,甚至配置日志系统都不可以,那么,目前部署蜜罐是最好的解决方案了。
那么研究蜜罐解决方案,我们目前更关注的有以下几个方面:
开源蜜罐和商业蜜罐区别?
到底蜜罐是否需要大数据分析(机器学习算法)?
蜜罐创业商业模式如何?
本节介绍包括开源蜜罐分析和国内外商业蜜罐分析。
开源蜜罐按照类型可以划分为以下几种:
ElasticSearch Honeypot:看了一下源码,发现是使用go语言实现的几个fake函数
Fake banner:访问根目录时候,返回函数
FakeNodes:访问/Nodes目录时候,返回函数
FakeSearch:访问/Search目录时候,返回函数
hpfeedsConnect:使用hpfeed协议通讯
发现都是伪造的函数返回,这样很有可能被入侵者发现是蜜罐,所以建议使用原始软件版本加patch的方式完成蜜罐记录功能,当然研发投入也比较大。个人建议模拟以下Elastic search漏洞:
ESA ID | CVE Link | Vulnerability Summary |
---|---|---|
ESA-2015-08 | CVE-2015-5531 | Elasticsearch versions from 1.0.0 to 1.6.0 are vulnerable to a directory traversal attack. |
ESA-2015-06 | CVE-2015-5377 | Elasticsearch versions prior to 1.6.1 are vulnerable to an attack that can result in remote code execution. |
ESA-2015-05 | CVE-2015-4165 | All Elasticsearch versions from 1.0.0 to 1.5.2 are vulnerable to an attack that uses Elasticsearch to modify files read and executed by certain other applications. |
ESA-2015-02 | CVE-2015-3337 | All Elasticsearch versions prior to 1.5.2 and 1.4.5 are vulnerable to a directory traversal attack that allows an attacker to retrieve files from the server running Elasticsearch when one or more site plugins are installed, or when Windows is the server OS. |
拿漏洞ESA-2015-08目录列举漏洞举例子,创建仓库,elasticsearch 解析出现了异常,并返回了读取文件的内容,以后都是读取的/etc/passwd 文件的内容。那么这个蜜罐怎么做呢?应该把文件变更记录做好,然后使用原始版本以patch的方式记录登录、RESTful API提交记录,这个使用真实服务模拟的研发投入也比较大。
漏洞类型仿真
未知的攻击
支持多种数据库类型
HPFeeds通讯
过内置的沙箱PHP远程文件包含,本地文件包含通过POST请求
通常对手使用搜索引擎和特殊制作的搜索请求找到他们的受害者
模拟SQL注入、爬虫响应等。
如果要是我做,还是要结合WAF精细化攻击数据。因为正常和不正常的URL访问太多。
伪装文件系统
• 伪装用户文件存储
• Sftp子文件系统 上传文件存储
• 模拟一些特殊的黑客关心的文件/etc/passwd
伪造系统命令
• 文件上传下载命令 sftp、scp,同时支持客户端wget/curl命令解析
• SSH交互执行的命令(黑客入侵常用命令):w/exit/cat/uname/chmod/ps/cd
伪装系统相关配置
• Hostname
• SSH服务指纹
• SSH账号和密码
• SSH key
与外部威胁情报联动
• 连接IP白名单威胁情报
• 上传可疑文件内容检查威胁情报
日志大数据处理
• 支持elastic search日志导出
SSH蜜罐目前开源解决方案比较成熟,但是还是缺乏BASH内部命令审计和文件变更审计。。。。
这个不在我们讨论的范围,工控有致命的弱点,通讯协议本身没有加密,Wireshark完全透视,我觉得,还是把工控防火墙做好,然后再想蜜罐的事吧。
RDPY:RDPY是基于Twisted Python实现的微软RDP远程桌面协议。RDPY支持标准的RDP安全协议,通过SSL或者NLA加密验证(或者通过nltmv2验证协议)其子项目rdpy-rdphoneypot是一个基于RDP的蜜罐。使用会话场景记录并通过RDP协议来重放会话场景。
技术发展路线图
技术路线 | 描述 | 厂商 |
---|---|---|
网络蜜罐 | 欺骗技术与IPS设备结合 | Cisco, HP, IBM, Intel Security |
端点蜜罐 | 欺骗技术与沙箱结合 | Intel Security, Symantec, Kaspersky Lab, Sophos |
Web蜜罐 | 欺骗技术与WAF结合 | Shape Security |
这里主要关注Internal network Data Center security
公司名称 | 功能 |
---|---|
Attivo Networks | 服务型蜜罐+工控蜜罐 |
Cymmetria | 在客户端模拟一些面包削(file shares, stored credentials, and browser cookies)+Appliance模拟多个VLAN+和防御设备联动API |
TrapX | TSoC+Appliance(病毒蜜罐+botnet检测者)+sandbox(文件监控+bash监控+沙箱) |
GuardiCore | Appliance(文件监控+bash监控) |
TOPSpin Security | 服务型蜜罐+botnet检测 redirect the attacker into a deception zone |
分布式诱饵提供商专门利用欺骗和分布在企业中进行检测作为核心价值主张,通过虚拟化,软件定义网络,模拟服务和实时操作系统或应用程序来部署诱饵系统,以提高检测成功率和减少对先进的攻击误报。
(3)国内初创安全公司解决方案
公司-产品名称 | 技术路线 |
---|---|
乌云 threatkey | 公网蜜罐威胁情报系统+模拟已知漏洞 |
长亭科技-谛听内网感知系统 | 服务型蜜罐,主要功能快速发现内部威胁及时响应 |
默安科技 | 听说产品10月份出,目前没有介绍资料,无法判断 |
本节主要介绍报表系统、机器学习在蜜罐系统的应用和蜜罐客户端技术。有人会问了为什么聊报表系统?者算什么核心技术?基础的数据库查询报表都做不好,还谈什么机器学习?如果数据库查询基本上满足用户的需求,还用什么机器学习?饭要一口一口吃,事要一件一件做。我们先假定一个目标,我们使用来自SSH蜜罐的数据,我们能做什么。。。
一级报表 | 二级报表 | 三级报告 |
---|---|---|
登录情况分析 | 登录尝试次数 | |
不同的IP地址统计 | ||
不同的用户名统计 | ||
不同的密码统计 | ||
活跃的蜜罐数量 | ||
分别从不同的时间截点 今天/第一次发现/这个月/今年/从有记录开始 | ||
高级统计分析{用户名热词/密码热词} | ||
命令执行情况分析 | Top 10 系统执行成功的命令 | |
Top 10 系统执行失败的命令 | ||
apt-get 执行的命令 | ||
Wget命令下载tool 是否有病毒 | ||
攻击趋势分析 | 每日趋势 | Top 20 账号统计 |
Top 20 Root密码统计 | ||
Top 20 admin密码统计 | ||
Top 20 非root&admin密码统计 | ||
Top 20 密码统计 | ||
2000个最长密码 | ||
每日活跃统计 | 每日活跃的IP地址统计 | |
每日活跃的用户名统计 | ||
每日活跃的密码统计 | ||
每日活跃 IP 地址统计 | 每日第一次发现的IP地址 | |
Top 20每日活跃的IP地址 | ||
Attacks By Country, By IP Address | ||
每日活跃的账号统计 | 每日第一次发现的账号 | |
Top 20 尝试登陆的账号 | ||
Top 20 非 “root”/”admin” 配对 | ||
每日活跃的密码统计 | 每日第一次发现的密码 | |
root账号 密码登陆失败的 | ||
Top 20 “root” 密码 | ||
Admin账号 密码登陆失败的 | ||
Top 20 Account “admin” Passwords | ||
Top 20 “root”/”admin” 配对的密码 | ||
Top 20 非 “root”/”admin” 配对的密码 | ||
第一次发现 | 第一次出现用户名 | |
什么时候一次出现这个用户名 | ||
什么时候第一次出现的密码 | ||
第一次出现密码是什么 | ||
第一次出现IP | ||
什么时候出现的IP地址 | ||
攻击模式和僵尸网络分析 | 攻击模式分析 | 分析方法: l 用于暴力破解的用户名和密码是否一致 l 是否来自于一个单个IP地址是否是攻击一个IP地址 l 两次之间攻击时间截小于180秒IP地址关联 显示选项 l IP Address l Netbot Name l 第一次发现时间 l 最后一次发现时间 l 记录的攻击模式数量 |
僵尸网络聚类/溯源分析 | 分析方法: l 僵尸网络倾向于攻击同一个帐户 l 僵尸网络倾向于使用同一个客户端软件 l 僵尸网络倾向于使用密码相同的“风格” l Nmap扫描netbot IP操作系统/开放服务指纹 l 被感染的蜜罐主机列表统计 l 攻击账号分析 显示选项 l Accounts Tried l Client ssh software l Originating countries l Open Ports and Operating Systems |
到这里,我发现了一个问题,那就是这些高级统计报表,也无法告诉我们未知威胁来源于哪里,我们如何设置告警,事情发展到了什么程度才算APT攻击?我想这些预测性的问题应该交给机器学习算法来处理吧。说到机器学习,我们必须要知道它是通过大量的基于已知数据计算,然后对新的数据做出判断的一个过程,所以它必定和大数据是一对孪生兄弟。那么我们做未知威胁发现,就需要一定的算法模型来匹配大数据。
工欲善其事,必先利其器。我们需要找到能够识别未知威胁的建模算法和算法所使用的工具。工具基本上使用:Elasticsearch, Logstash, Kibana/Hadoop Spark。数据挖掘算法方面:我选用的是非监督式学习算法。这种算法数据并不被特别标识,学习模型是为了推断出数据的一些内在结构。常见的应用场景包括关联规则的学习以及聚类等。常见算法包括k-Means算法等。
K-Means 是聚类的一种,就像回归一样,有时候人们描述的是一类问题,有时候描述的是一类算法。聚类算法通常按照中心点或者分层的方式对输入数据进行归并。所以的聚类算法都试图找到数据的内在结构,以便按照最大的共同点将数据进行归类。这种算法适合网络蜜罐判断异常流量。具体的算法处理过程可以参考KDD Cup1999 数据集分类。我就不详细说了。算法库使用spark mlib。
开源蜜罐开发没有一个完整的软件生命周期管理,能部分实现功能就成。开发周期慢,无法和商业蜜罐产品相抗衡
如果是针对公网蜜罐,我觉得可以使用机器学习算法来分析,针对于内网网络蜜罐,我觉得也是非常有必要的,可以发现未知威胁。但是针对服务型蜜罐,本身数据量就小,目前状态基本上用不上。
针对内网未知威胁感知场景,国外使用蜜罐技术反APT的公司都赚的盆满钵满,因为如果公司请专业的团队做应急,是非常贵的 听说 $400/hour,如果是2个人一天要1万USD。而且整个发现时间不止一天,一般最少一周吧。所以公司宁可买这种自动化发现APT攻击的工具也不愿意掏钱做consulting。这就是国外市场,国内安全市场,这个怎么说呢?竞争环境激烈,让用户在本来紧张的安全预算中拿出几十万买一个不知道有没有作用的新技术,我想还需要更多的市场培育,销售和售前的工作。针对外网威胁情报这个商业模式,目前还有待观察,做为To B的安全企业我不看好这种商业模式。
*本文原创作者:bt0sea,本文属FreeBuf原创奖励计划,未经许可禁止转载