去年,我在360Netlab沙龙和ISC2018上分享了《通过Anglerfish蜜罐发现未知的恶意软件威胁》这个议题,会后有跟一些听众简单交流,但我觉得还不够。按照我上篇文章《如何去挖掘物联网环境中的高级恶意软件威胁》的模式,我也需要写一篇文章来描述下Anglerfish蜜罐的一些核心思路和技术,我还会介绍下Anglerfish蜜罐的新变化,希望可以分享给更多人并进行有意义地交流。
我也希望这篇文章能够让你少走些弯路,甚至迸发出更多灵感。
网络安全行业,大多数人从事的工作应该都只是互联网技术中的一环吧,久而久之可能成为了“安全专家”(也有可能是“螺丝钉”),这对于我来说是不太感兴趣的。
在我设计和开发Anglerfish蜜罐之后,我遇到很多问题(模拟应用协议,捕获恶意软件,分析Payload数据,检测未知ELF Botnet等),我并不能够完美解决,但我学习到了很多新知识。就这样,我对互联网技术略窥一二,不断地探索,这个过程是很有意思的。
背景介绍
就从这开始吧,恶意软件传播方式有很多种(我也一下写不清楚),大多数攻击者想方设法通过互联网远程入侵目标系统,并植入恶意软件。如果是在互联网上广泛传播,那么一般就会出现异常流量,网络扫描流量就是其中一种表现形式。
而如今,漏洞挖掘成为越来越多人的安全研究方向,公开的RCE PoC也越来越多,网络攻击者的RCE武器库也越来越丰富,因此研究互联网扫描数据是广阔天地, 大有可为。
我标红了“以攻击者的思维去防守”,那是因为我对渗透测试技术的热爱,才进入网络安全行业,工作后我从“攻击者”的角色转变成防御者,一些渗透测试中的方法已经印象深刻,在我设计和开发Anglerfish蜜罐中我就自然而然地去想我会怎么去搜集和利用这个漏洞,我会因为哪些习惯而露出破绽。这种思维方式,是对构建安全防御系统有些帮助的,也可能会起到画龙点睛的作用。
我为什么要开发Anglerfish蜜罐呢?
我没有大网流量,但我看到了一些大网安全问题。而蜜罐系统灵活可控,搜集到的网络扫描数据大部分都是恶意行为,分析足够多,足够丰富的蜜罐数据也能看到大网安全现状。
工作中,我开发Anglerfish蜜罐起初是因为Mirai爆发但是当时没有一款开源的Telnet协议蜜罐能够捕获到它,所以我修改了Hontel蜜罐代码让它适应Mirai Loader程序。
再后来,Mirai变种不断出现,各种奇怪的端口(TCP/6789,TCP/7547,TCP/37777等 )扫描流量暴涨,但我都没有这些端口上部署蜜罐程序,在扫描异常告警之后我会去模拟相应的应用协议。后来,我就基于Blackhole开发了TCP和UDP全端口蜜罐,以便能捕获到部分扫描数据。
Angelrfish蜜罐简介
Anglerfish蜜罐是360Netlab主要运行的蜜罐系统之一,它能够监听TCP和UDP所有端口,并模拟了大量IoT和服务器环境的指纹,应用协议和漏洞,捕获针对互联网扫描的恶意软件威胁。(Anglerfish蜜罐原来没有起名,因为是借鉴了Blackhole蜜罐的思路和框架,代码中我也一直沿用这个名称。当我开发了一年半多的时候,Anglerfish蜜罐代码量已经是Blackhole的数百倍,需要对外公开演讲,所以我将这个蜜罐项目命名为Anglerfish。)
**应用协议:**TCP和UDP
**模拟环境:**IoT和服务器环境的指纹,应用协议和漏洞
**应用场景:**互联网扫描,大网安全分析
**项目目的:**捕获网络扫描Payload和恶意软件
对于我来说,能够捕获到Payload和样本就是达到目的了,所以Anglerfish蜜罐大部分协议是低交互的,少部分协议支持高交互。(有一部分Windows系统的应用协议也还没有实现,后续还得继续研究)
每个RCE漏洞都会被Botnet发挥得淋漓尽致
目前模拟的应用协议和漏洞也新增很多,因为HTTP协议可以应用在大多数Web APP上,就算50个应用协议和100+漏洞吧。
通过Anglerfish蜜罐捕获的部分漏洞利用
通过Anglerfish蜜罐捕获的部分恶意样本
**Anglerfish架构
**原来Anglerfish架构有点丑,又简单优化了一下,还有一些新的的技术组件比如:Cloud Shell Service,Exploits Yara,ESET NOD32,ClickHouse,Redash等没有在上面体现,AVAR2019我还会再公布Anglerfish蜜罐系统新的架构图。
RSS Feed
既然是模拟IoT和服务器环境的漏洞,我是通过Slack创建一个RSS Feed Channel,每1个小时去抓取安全媒体和Twitter上的信息,主要关注Botnet,Honeypot,IoT,DNS,Opensource,RCE等话题。(这个小工具从2017年11月17日运行至今,人肉筛选数据源,匹配关键字话题,及时关注行业趋势)
个人觉得RSS Feed还是比较有意思的,但我还没想好怎么把它分享给大家。
Docker Shell
蜜罐模拟必然也要解决shell交互问题,我运用到了Docker技术实现了一个简单的Cloud Shell Service(目前只处理LinuxShell,也可以搭建Windows Xshell Service),可以解析蜜罐捕获的Linux shell脚本并返回真实的运行结果。(演讲现场,我只是简单介绍了使用busybox来实现一个docker shell的demo)
**Fuzz testing
**Fuzz testing技术应用在蜜罐中是我的一个主要创新点,它在Anglerfish蜜罐中部分协议中有所体现,有的时候,它可以发挥一些意想不到的作用。(Fuzz testing的思想很简单,一些Fuzz特征也很容易被识别,这就是攻防对抗的一个表现。)
Anglerfish蜜罐数据结构
目前,我是把Anglerfish蜜罐数据导入到Mysql和ClickHouse数据库中,结合Redash,HighCharts,D3.js,SSDC,Yara,Python脚本等技术组件,进行数据分析。(以下展示是基础数据结构)
蜜罐攻防对抗
Anglerfish蜜罐会解析Payload中样本下载链接/数据,通过一些自实现的爬虫逻辑去遍历下载更多的样本。
Anglerfish蜜罐数据分析
Botnet扫描检测算法1和2,聚类分析是我对蜜罐数据分析的主要方法,另外还有未知Exploit检测流程等也是屡试不爽。我是运用一些现有的算法(比如Pearson correlation coefficient,SSDC等),结合到Anglerfish蜜罐数据分析的场景里去。只要真正理解了数据本质,我也能取得不错的成果。
一些见解和学习方式
网络安全环环相扣没有具体的界限,我也没有限定自己的学习范围,我是凭着兴趣,以自己的方式循序渐进地探索一些未知的网络世界。
Botnet和Honeypot安全经验和技术需要在攻防对抗的场景下不断地更新,有时“跨界”一下也许会有额外收获。
我现在大多时候是自由地浏览开源项目,尝试去理解和学习作者的设计思路,有的代码表现得很简单甚至还只是demo,那可能就是我的灵感来源。
我也希望你能从我的分享中找到灵感。
《通过Anglerfish蜜罐发现未知的恶意软件威胁》完整PPT下载链接
https://drive.google.com/file/d/1seWgXZBf-pHPgW3JFrCzPji29IuvqFm\_/view
另外我创建了一个Botnet安全交流群,主要讨论Botnet,Honeypot等话题。
**感兴趣的朋友可以先加我的个人微信号:**geenul,备注姓名和所在公司/学校/单位,通过后我会邀请你入群。
如果你想加入360Netlab一起探索更多的未知安全,欢迎你联系我并附上简历。