0x01 蜜罐的概述
先看一下百科对蜜罐的定义
“蜜罐技术本质上是一种对攻击方进行欺骗的技术,通过布置一些作为诱饵的主机、网络服务或者信息,诱使攻击方对它们实施攻击,从而可以对攻击行为进行捕获和分析,了解攻击方所使用的工具与方法,推测攻击意图和动机,能够让防御方清晰地了解他们所面对的安全威胁,并通过技术和管理手段来增强实际系统的安全防护能力。”
那么我们自己来分析一下什么是蜜罐呢?
蜜罐?的英文:honeypot,应用广泛,可应用在恶意样本捕获、攻击手法分析、网络取证、入侵检测等方面
通常位于屏蔽子网或者是DMZ中,引诱攻击者主动攻击
这里的屏蔽子网(Screened-Subnet)指的是在被隔离的主机架构的基础上添加的用于提高安全性的部分,也是在内部网络和外部网络之间建立一个被隔离的子网
图片地址:https://image2.slideserve.com/4171790/screened-subnet-l.jpg
在子网内构成一个DMZ(demilitarized zone)区,也称为隔离区,在这个区域内可放置一些公开的服务器设施,如企业Web服务器、FTP服务器和论坛等
在只有被屏蔽主机的环境中,攻击者突破防火墙就会出现很大的安全问题,在屏蔽子网中,攻击者需要攻破另一个路由器或防火墙才能获得进一步的访问权限
这张图把 meet 换成 honey 就能生动体现蜜罐的含义?
现在回到蜜罐,攻击者在攻击蜜罐系统时,管理员会获得相应以知道有攻击者在攻击蜜罐,之后采取相应的行动进行分析,捕获等,蜜罐系统会汇总发生的攻击,供管理员进行进一步的分析,但不能将蜜罐连接关键的生产系统
蜜罐要做到
蜜罐的出现,为攻受双方的平衡做出了贡献,在使用蜜罐过程中,尽可能模仿真实系统以降低攻击者警惕性,并在攻击者攻击时尽量搜集有用的身份信息,收集的攻击记录可以推测攻击者的意图
还要做到能够吸引攻击者的攻击,例如用弱口令等来触发实时监测
蜜罐类型
按照交互程度:
- 高交互性蜜罐
- 通常基于一个全功能的应用环境,提高真实性引诱黑客攻击,通常能获得大量的有用信息
- 低交互性蜜罐
- 模拟一个生产环境,所以只能提供有限的信息,例如端口暴力破解的检测
- 蜜罐的交互程度也取决于某些功能的模拟程度
蜜罐按照实现的方式可以分为物理蜜罐和虚拟蜜罐
- 物理蜜罐
- 物理蜜罐通常指真实的物理计算机,安装了相应的操作系统并具备网络环境,它能提供部分或完全真实的应用服务,物理蜜罐通常成本较高
- 虚拟蜜罐
- 虚拟蜜罐通常是利用虚拟机技术模拟而成的蜜罐,成本相对物理蜜罐较低,但由于虚拟机本身的特点,虚拟蜜罐容易被有经验的攻击者识别
蜜网
蜜罐技术首次在1989年被提出,后来出现了蜜网等技术
Honeynet Project 是领先的国际 501c3 非营利性安全研究组织,致力于调查最新的攻击并开发开源安全工具以提高 Internet 安全性
除此之外,还在一些近些年关于蜜罐?的论文中看到了一些新的术语,例如拟态蜜罐,解释为具有动态防御及检测功能的在传统蜜罐技术的基础上的技术
(不知道名称是否来自于拟态蜜罐蚁(Myrmecocystus mimicus),是一种存在掠夺行为,也会杀死和驱逐敌方的一种,属于蜜罐蚁属(Myrmecocystus)中的一种)
0x02 常见攻击检测
端口扫描检测
主要用来判断主机存活和端口开放,通过向目标主机发送请求,然后主机的回复进行判断,在扫描到目标系统对应端口开放后,攻击者可能会对需要登陆的服务进行弱口令尝试、未授权访问、暴力破解等,比如对21端口的FTP服务进行反复登录尝试
针对端口扫描的检测通常可采用监听本地端口的方式,被动等待连接,可对常用端口和服务进行监听,也可对全端口进行监听,监听对应端口后便可对该端口的连接请求进行检测并对来源和频率进行记录
ARP攻击检测
ARP(Address Resolution Protocol)地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议
图片地址:https://www.okta.com/sites/default/files/media/image/2021-04/ARPPoisoningSpoofing.png
ARP欺骗通常通过在局域网中发送伪造IP地址和MAC地址的ARP应答包对目标进行攻击,在目前主流的基于路由器的局域网中,ARP欺骗攻击同样适用,ARP欺骗攻击可使受害者无法上网,造成拒绝服务,也可通过伪造网关的ARP应答包进行中间人攻击,嗅探内网敏感数据,甚至能获取到内网用户的用户名口令等信息
ARP攻击检测中,可对新的IP和MAC对应关系的真实性进行判断和确认,从而检测是否遭受了ARP攻击,并记录攻击源的MAC地址
DNS劫持检测
DNS(Domain Name System)域名服务它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网
图片地址:https://go4hosting.in/blog/wp-content/uploads/2020/04/DNS-attacks.png
路由器一旦被攻击者控制,攻击者便可通过篡改DNS指向自己控制的可定制的DNS服务器,就能实现区域的网络流量劫持和篡改,窃取敏感信息,甚至通过替换返回流量植入远控木马,从而控制内网计算机,极大危害整个内部网络的安全
DNS劫持检测中,可以定期读取本地的DNS配置,然后通过建立可信DNS白名单的方式对本地DNS的安全性进行判断,通过ping命令,ping若干知名站点,如百度(www.baidu.com)、若返回IP为当前DNS的IP或某一个相同的IP,则可判断已受到上述这种DNS劫持攻击
0x03 几款蜜罐工具
Kippo
攻击者通常会在同网段进行大范围的端口探测,专门针对22端口的SSH服务,软件触发实时告警哪台服务器受到攻击,攻击者在蜜罐上做了哪些操作,通过将蜜罐服务器与生产服务器混合部署在网络中,可以实现对入侵行为的捕获
在之前的分类中,我们讲了基于交互有两种类型,高交互性蜜罐和低交互性蜜罐,kippo是一个中等交互的ssh蜜罐,它可以记录shell的交互
Kippo原理
正常使用SSH服务为22端口,通过rinetd工具进行端口转发,将正常的服务迁移到其他端口,将22端口留给攻击者,也就是在目标服务器设置rinetd,黑客在通过22端口访问这个服务器时,其实是在访问蜜罐服务器的某个端口
rinetd
将一台主机的端口x转发到另一台主机的端口y并由这台主机提供转发的网络服务
安装依赖
GitHub地址:https://github.com/desaster/kippo
—————————————————————————————————————————
运行时会遇到这个问题?
“XXX is not in the sudoers file. This incident will be reported”
解决方法:命令行输入:
—————————————————————————————————————————
创建用户
分配权限(因为会出现?的问题)
下载包,kippo默认配置文件是kippo.cfg.dist
应该没有后缀所以cp一下
——————————————————————————————————————
可能会遇到这个问题下面:
首先安装pip
参考地址:https://blog.csdn.net/u010510962/article/details/80690084
运行即可
之后解决
参考地址:https://blog.csdn.net/DanielJackZ/article/details/104531615/
————————————————————————————————————————
查看默认密码
在其他主机访问此机的端口时,这里的日志就会记录下来
除此之外还有其他选择
现代密网(MHN)
图片地址:http://bagl.io/images/post6/pic2.png
这有一片讲的比较全面(英文):https://itandsecuritystuffs.wordpress.com/2015/02/03/honeypot-networks/
是一个开源项目,可以通过web接口添加,便于收集和统计蜜罐的数据,MHN可以部署多个开源蜜罐,并且可以通过Web界面轻松添加其他蜜罐,蜜罐的部署过程非常简单,只需在传感器机器上复制并粘贴服务器给您的一些命令,一旦安装完成在传感器中,它开始通过称为 hpfeeds 的开源协议收集信息
Dionaea(捕蝇草)
github地址:https://github.com/DinoTools/dionaea
图片地址:http://revista.seguridad.unam.mx/sites/default/files/Poc.jpg
Dionaea蜜罐的目标 是获取恶意软件的副本,该恶意软件通过提供伪装成易受攻击的服务来试图通过网络传播,Dionaea起始于Google Summer of Code 2009的一款低交互式蜜罐,属于开源
Dionaea蜜罐可以诱导和记录攻击行为,能捕获攻击载荷和恶意代码样本,基于监听端口来模拟各种服务
Dionaea 将 python 作为脚本语言嵌入,使用 libemu 检测 shellcode,支持 ipv6 和 TLS
Dionaea蜜罐提供的服务 如下:
SMB(服务器消息块):445
HTTP(超文本传输协议):80
HTTPS(安全超文本传输协议):443
FTP(文件传输协议):21
TFTP(普通文件传输协议):69
MySQL(结构化查询语言):3306
MSSQL(微软结构化查询语言服务器):1433
EPMAP(端点映射器):135
SIP(会话发起协议):5060/5061
名称服务器(主机名服务器):42
cowrie
github地址:https://github.com/cowrie/cowrie
Cowrie 是一个中高交互 SSH 和 Telnet 蜜罐,旨在记录暴力攻击和攻击者执行的 shell 交互。在中等交互模式(shell)下,它在 Python 中模拟 UNIX 系统,在高交互模式(代理)下,它充当 SSH 和 telnet 代理,以观察攻击者对另一个系统的行为
地址
选择作为模拟 shell 运行(默认)
具有添加/删除文件能力的假文件系统。包含一个类似于 Debian 5.0 安装的完整假文件系统
添加虚假文件内容的可能性,以便攻击者可以 cat 文件,例如 /etc/passwd。仅包含最少的文件内容
Cowrie 保存使用 wget/curl 下载或使用 SFTP 和 scp 上传的文件以供以后检查
代理 SSH 和 telnet 到另一个系统
作为纯 telnet 和 ssh 代理运行并进行监控
或者让 Cowrie 管理一个 QEMU 模拟服务器池,以提供用于登录的系统
References: