蜜罐技术学习笔记
Kippo、Dionaea蜜罐技术学习笔记
本文为蜜罐技术的入门学习、工具使用,所有涉及到的资料全部来自Internet,所有引用到的资料都会在文章中标明,在这里只是做一个使用总结
1. 相关学习资料
http://dionaea.carnivore.it/
http://netsec.ccert.edu.cn/zhugejw/2011/09/08/kippo/
http://297020555.blog.51cto.com/1396304/553382/
http://netsec.ccert.edu.cn/zhugejw/files/2011/09/Kippo介绍PPT.pdf
http://netsec.ccert.edu.cn/zhugejw/files/2011/09/Kippo-介绍.pdf
http://www.2cto.com/Article/201403/285377.html
http://blog.csdn.net/sealyao/article/details/6708923
http://security.ctocio.com.cn/securitycomment/414/8185414.shtml
http://netsec.ccert.edu.cn/zhugejw/2011/09/08/kippo/
面向蜜场环境的网络攻击流重定向机制的研究与实现.pdf
Dionaea低交互式蜜罐介绍.pdf
Collapsar.pdf
2007.通信学报.HoneyBow_一个基于高交互式蜜罐技术的恶意代码自动捕获器.诸葛建伟.pdf
蜜罐技术研究与应用进展.pdf
Kippo介绍PPT.pdf
Kippo-介绍.pdf
Dionaea低交互式蜜罐部署实践.pdf
http://ruo.me/index.php/archives/77
http://www.05112.com/anquan/wzaq/stwx/2014/0312/8400.html
http://www.05112.com/anquan/wlgf/2013/0609/3444.html
http://www.freebuf.com/articles/system/12696.html
http://dionaea.carnivore.it/
2. 蜜罐基本概念
蜜罐技术,通过蜜罐技术可以捕获到黑客的攻击规则,从而为我们提取、建模攻击模式提供数据基础
1) 蜜罐好比是情报收集系统。它是故意引诱黑客攻击的目标 2) 黑客入侵后,我们可以收集他的攻击轨迹,知道他是如何发动攻击的
数据收集是设置蜜罐的另一项技术挑战
1) 蜜罐监控者只要记录下进出系统的每个数据包,就能够对黑客的所作所为一清二楚 2) 蜜罐本身上面的日志文件也是很好的数据来源。 3) 但同时要注意的是日志文件很容易被攻击者删除,所以通常的办法就是让蜜罐向在同一网络上但防御机制较完善的远程系统日志服务器发送日志备份 4) 务必同时监控日志服务器。如果攻击者用新手法闯入了服务器,那么蜜罐无疑会证明其价值
蜜罐的优势
1) 蜜罐系统的优点之一就是它们大大减少了所要分析的数据 2) 对于通常的网站或邮件服务器,攻击流量通常会被合法流量所淹没 3) 而蜜罐进出的数据大部分是攻击流量。因而,浏览数据、查明攻击者的实际行为也就容易多了
蜜罐技术的发展历史
蜜罐工具的发展历史: 1. 蜜罐工具DTK: 绑定在系统的未使用端口上,对任何想探测这些端口的攻击源提供欺骗性网络服务 2. LaBrea蜜罐软件: 接受网络上所有空闲IP 地址的TCP 连接,并通过TCP 协议中的窗口调节与持久连接等技巧实现一种Tarpit 服务,能够尽可能地拖长无效连接的持续时间,从而减缓网络扫描探测与蠕虫传播的速度 http://support.microsoft.com/kb/842851/zh-cn 3. Honeyd 著名安全专家Provos开发的一款"虚拟蜜罐框架性开源软件" 1) 引入了在网络协议栈层次上模拟各种类型蜜罐系统的方法 2) Honeyd 支持在"协议栈指纹特征"上伪装成指定的操作系统版本,对攻击者利用nmap 等工具实施主动指纹识别进行欺骗 3) 支持模拟构建虚拟网络拓扑结构,并以插件方式提供对各种应用层网络服务的模拟响应 4) 利用Honeyd软件, 安全研究人员可以很容易地按照需求定制出一个包含指定操作系统类型与应用服务的蜜罐系统,用于蠕虫检测与应对、垃圾邮件监测等多种用途 5) 由于Honeyd 最早引入了网络协议栈层次上的蜜罐系统模拟机制,以及采用了可集成各种应用层服务蜜罐的灵活框架性结构,使其在蜜罐工具软件发展过程中具有举足轻重的重要地位 4. The Honeynet Project Giraffe Chapter 开发的Nepenthes蜜罐软件 1) 它继承了Honeyd 的网络协议栈模拟机制与框架性结构, 针对互联网上主动传播恶意代码的监测需求, 实现了可供大规模部署的恶意代码样本采集工具 2) 与之前蜜罐系统尝试模拟整个网络服务交互过程不同, Nepenthes 的基本设计原则是只模拟网络服务中存在安全漏洞的部分, 使用"Shellcode 启发式识别"与"仿真执行技术"来发现针 对网络服务安全漏洞的渗透攻击, 从中提取到主动传播恶意代码的下载链接,并进一步捕获样本 3) 这种机制使其较其他已有蜜罐工具对自动化传播恶意代码捕获更为高效 目前业内主流的蜜罐项目 The Honeynet Project http://www.honeynet.org/codeofconduct 5. Dionaea Nepenthes已被新一代恶意代码样本捕获蜜罐软件Dionaea所替代 1) Dionaea采用内嵌Python 脚本代码实现对漏洞服务的模拟 2) 同样采用Libemu来检测Shellcode 3) 并支持IPv6 与TLS 协议 4) Dionaea蜜罐软件是目前技术最为先进、体系结构最优化的虚拟蜜罐工具 6. GHH(Google hack honeypot) 1) 针对Web应用攻击威胁研究并开发的Web应用服务蜜罐 2) GHH针对搜索存有安全漏洞Web应用程序的Google Hacking技术来诱骗Web应用程序攻击并进行日志记录,可以发现命令注入、Web 垃圾邮件、博客垃圾评论注入、网页篡改、植入僵尸 程序、搭建钓鱼站点等各种攻击事件 7. HIHAT(high interaction honeypot analysistoolkit) 1) 可将任意的PHP应用程序自动地转换为提供充分交互环境的Web蜜罐工具 2) 并通过"透明链接方式"获取恶意Web访问请求, 从而对现有PHP应用程序所面临的威胁进行监测分析 8. Kojoney、Kippo蜜罐 1) 模拟为SSH网络服务进程, 记录每次SSH口令暴力破解所尝试使用的用户名与口令 2) 并在口令猜测成功之后为攻击者提供模拟的shell 执行环境 3) 对攻击源IP 地址、使用的SSH 客户端类型、输入的控制命令以及下载的攻击工具文件进行捕获与记录. 9. 客户端蜜罐工具软件Capture-HPC 1) 近年来,由于防火墙、入侵防御系统等网络边界防御机制的广泛应用,针对传统网络服务的渗透攻击变得 越来越难以成功实现,以浏览器与插件为主要目标的客户端渗透攻击逐渐成为互联网上的主流安全威胁 2) 而蜜罐技术也随着安全威胁热点的这一变化,演化出客户端蜜罐工具软件.Capture-HPC 3) 这是一个高交互式的客户端蜜罐框架,支持在Windows 虚拟机环境中运行IE,Firefox 等浏览器,并通过内核中的系统状态变化监控机制来检测浏览器当前访问的网页中是否包含客户端 渗透攻击代码 10. PhoneyC 1) 采用"浏览器仿真"与"Javascript动态分析技术"来对抗恶意网页脚本的混淆机制 2) 并通过模拟各种已知浏览器与插件安全漏洞来检测出恶意网页中包含的渗透攻击类型 3) 通过对Javascript引擎进行opcode指令动态插装,实现了对恶意网页中的heapspray 堆散射攻击的检测能力.
蜜罐技术的关键
1. 核心机制 核心机制是蜜罐技术达成对攻击方进行诱骗与检测的必须组件 1) 欺骗环境构建机制: 构造出对攻击方具有诱骗性的安全资源,吸引攻击方对其进行探测、攻击与利用,这里所谓的"安全资源"可以理解为存在受攻击面的一切资源,包括 1.1) 蜜罐所模拟的操作系统,即系统级漏洞,例如MS06-28 1.2) 蜜罐所模拟的系统服务、系统端口,例如RPC、SMP、FTP 1.3) 蜜罐所模拟的应用层服务: CMS系统、VoIP等 2) 威胁数据捕获机制: 对诱捕到的安全威胁进行日志记录,尽可能全面地获取各种类型的安全威胁原始数据: 2.1) 网络连接 2.2) 原始数据包 2.3) 系统行为数据 2.4) 恶意代码样本(.exe、shellcode) 3) 威胁数据分析机制: 在捕获的安全威胁原始数据的基础上,分析追溯安全威胁的类型与根源,并对安全威胁姿势进行感知 2. 辅助机制 对蜜罐技术其他扩展需求的归纳,主要包括: 1) 安全风险控制机制 2) 配置与管理机制 3) 反蜜罐技术对抗机制等 辅助机制的主要目标 1) 安全风险控制机制要确保部署蜜罐系统不被攻击方恶意利用去攻击互联网和业务网络,让部署 方规避道德甚至法律风险; 2) 配置与管理机制使得部署方可以便捷地对蜜罐系统进行定制与维护; 3) 反蜜罐技术对抗机制的目标是提升蜜罐系统的诱骗效果,避免被具有较高技术水平的攻击方利用反蜜罐技术而识别
根据交互程度第蜜罐进行分类
1. Low-Interaction Honeypot(低交互蜜罐: 虚拟出一个服务) 1) 服务端蜜罐 DTK、LaBrea、Honeyd、Nepenthes、Dionaea 2) 应用层蜜罐 Glastopf、GlastopNG、SPAMPot、Kojoney、Kippo 3) 客户端蜜罐 PhoneyC 2. High-Interation Honeypot(高交互蜜罐: 旁路在一个真实的服务之后,进行蜜罐监控) 1) 服务端蜜罐 HoneyBow、Argos 2) 应用层蜜罐 GHH、HIHAT 3) 客户端蜜罐 Capture-HPC HoneyMonkey、SpyProxy
3. Kippo: SSH低交互蜜罐安装、使用
Kippo是采用Python模拟出一个端口监听服务,模仿SSH服务端的样子与潜在的攻击者进行伪交互的一款开源软件
关于Kippo的安装、配置参考以下文章
http://code.google.com/p/kippo/
http://www.haiyun.me/archives/centos-install-kippo.html
http://297020555.blog.51cto.com/1396304/553382/
1. rhel5下下载准备环境的的RPM包 python26-2.6-geekymedia1.i386.rpm python26-2.6-geekymedia1.src.rpm python26-debuginfo-2.6-geekymedia1.i386.rpm python26-devel-2.6-geekymedia1.i386.rpm python26-libs-2.6-geekymedia1.i386.rpm python26-test-2.6-geekymedia1.i386.rpm python26-tools-2.6-geekymedia1.i386.rpm tkinter26-2.6-geekymedia1.i386.rpm Twisted-10.2.0.tar.bz2 zope.interface-3.3.0.tar.gz pycrypto-2.0.1.tar.gz pyasn1-0.0.12a.tar.gz 2. 安装这些准备环境软件包 1) libTix8.4.so is needed by tkinter26-2.6-geekymedia1.i386 yum install tix tcl tk 2) 安装RPM包 rpm -ivh *.rpm 3) 安装Twisted tar -xvf Twisted-10.2.0.tar.bz2 cd Twisted-10.2.0 python26 setup.py build python26 setup.py install 4) 安装zope tar -xvf zope.interface-3.3.0.tar.gz cd zope.interface-3.3.0 python26 setup.py build python26 setup.py install 5) 安装pycrypto tar -xvf pycrypto-2.0.1.tar.gz cd pycrypto-2.0.1 python26 setup.py build python26 setup.py install 6) 安装pyasn1 unzip pyasn1-0.0.12a.tar.gz cd pyasn1-0.0.12a python26 setup.py build python26 setup.py install 3. 准备Kippo的日志记录环境 1) kippo需要把数据存放到数据库中,所以单独创建一个kippo的库 /etc/init.d/mysqld start mysql -uroot -p111 create database kippo; grant all privileges on kippo.* to kippo@'localhost' identified by 'kippo'; flush privileges; 2) 生成Kippo需要的数据表 cd /usr/local/src/kippo-0.5/doc/sql/ vim mysql.sql: 在头部加上一句: USE kippo mysql -ukippo -pkippo < mysql.sql 4. 安装Kippo,以非root用户运行 1) wget http://kippo.googlecode.com/files/kippo-0.5.tar.gz 2) tar zxvf kippo-0.5.tar.gz 3) cd /usr/local/src/kippo-0.5 4) vim kippo.cfg 4) useradd kippo 5) chown -R kippo.kippo /usr/local/src/kippo-0.5 5) su -l kippo 6) cd /usr/local/src/kippo-0.5 7) ssh-keygen -t rsa ./private.key 28:a5:58:10:78:39:ee:ed:69:1c:9e:c1:b8:9f:81:57 kippouser@node2 7) ./start.sh 5. import MySQLdb, uuid exceptions.ImportError: No module named MySQLdb Failed to load application: No module named MySQLdb 1) 下载、安装setuptools wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz --no-check-certificate tar zxvf setuptools-0.6c11.tar.gz cd setuptools-0.6c11 python26 setup.py build python26 setup.py install 2) 下载、安装mysql-python wget https://pypi.python.org/packages/source/M/MySQL-python/MySQL-python-1.2.3.tar.gz --no-check-certificate tar zxvf MySQL-python-1.2.3.tar.gz cd MySQL-python-1.2.3 python26 setup.py build python26 setup.py install 安装完毕 在客户机上进行远程登录 ssh root@192.168.159.128 -p 2222 输入密码123456(刚才在配置文件里配置的) 6. 通过日志或数据库查看记录 cd /usr/local/src/kippo-0.5 tail -10 log/kippo.log
程序启动后,SSH蜜罐就启动了,并监听来自外部的连接
Kippo会自动把所有访问轨迹都记录下来,并保存到Mysql中(如果你有配置的话),那怎么解读这些数据就是我们接下来的问题了,即数据可视化,从什么角度去分析这些数据,个人觉得这才是蜜罐系统的重点、也是难点
从原则上来讲,我们进行入侵分析,要做到以下几个方面:
1) 尽可能多的覆盖多的可能的访问路径,即尽可能多的模拟多一些主流的服务、端口、应用 2) 即可能全面的记录下所有的访问轨迹,在数据记录阶段应该广而杂地记录所有可能有用的信息,为一下进行数据提取、分层作准备 3) 从入侵、反入侵领域的角度去看待已经记录下的数据,建立相应的分析模型,这种模型应该具有很强的针对性。能直接、或间接地反映出入侵趋势、原因、强度