原创不易,点个赞呗!如果喜欢,关注、收藏不迷路。
前言
大家好,《『网络安全』蜜罐到蜜网入门指南》进入第三篇。
通过前面的内容,我们知道了什么是蜜罐以及蜜罐的作用和分类等。点击下方链接,可快速查看。
相关文章
本文,我们深入蜜罐内部,探讨蜜罐的内部组成模块。简单了解各个模块的作用和一般设计方法等。
这里主要是为了让大家有一个初步的了解,不会太详细,了解即可。
通常,一个蜜罐的组成,可以分为三个部分:功能模块、数据处理模块、安全控制模块。
如果仅仅是部署一个单独的蜜罐,也许还需要报警模块。当蜜罐被入侵时,报警模块通过邮件或者短信的方式通知网络管理员。蜜网系统中,报警模块放置在云端,这里不单独介绍。
本文目录
- 一、功能模块
- 二、数据处理模块
- 三、安全控制模块
一、功能模块
功能模块,通过模拟系统或服务的基础功能,使蜜罐能够对外提供与之相同或相似的服务功能,以此引诱黑客攻击。
功能模块可以分为:基础功能,蜜饵功能。
通常,正常用户是不会访问蜜罐服务的!所以,对蜜罐的访问,均可视为攻击者发起。
1.1、基础功能
基础功能,指系统或服务的主要基本功能,如。mysql服务提供的数据存储功能,ftp服务提供的文件传输功能等。
蜜罐通过模拟实现这些基础功能,让人难以辨别是蜜罐还是真实服务,达到迷惑攻击者的目的。
基础功能的实现方式多种多样,没有统一标准和固定方法。根据不同的功能,有不同的实现方法。在制作蜜罐时,往往需要花大量时间去调研,最后选择出符合场景的最优实现方法。
简单的蜜罐,如:telnet
、socks5
等协议蜜罐,我们可以编写代码,自行解析协议,实现对应的功能。这样的蜜罐,我们几乎可以完全掌控。
复杂的蜜罐,如:mysql
、windows
系统等高交互蜜罐,重新实现是很困难的。可以选择基于源码二次开发,或者就直接使用真实的系统服务。这时,往往需要解决的问题是:如何记录操作日志?
最优的实现方法,需要根据具体的需求去调研决定。在满足需求的基础上,让蜜罐与真实系统或服务具有相差无几的功能即可。
不管黑猫还是白猫,能抓老鼠的就是好猫!
总之,一个原则:看上去像!
像啥?像真实服务或系统!
作为开发者,我们当然是希望方式越简单越好的!
例如,需求是“制作一个web蜜罐,获取攻击者常用的 nmae/password
爆破字典”。那么,我们仅仅提供一个web系统的登录页面即可,不管攻击者输入什么 nmae/password
,后台记录后,均返回用户名或密码错误,让黑客如同面对一个黑洞,永远无法登录成功。
如果,蜜罐需要提供真实的登录功能,建议用户名/密码尽量简单,方便黑客爆破,web系统甚至可以取消验证码。
admin/password
、root/123456
等,是常用的弱密码选择。
功能模块,往往决定着蜜罐的交互程度。模拟的功能越多越真实,蜜罐的交互程度越高,能够收集到的数据就越多,被黑客识破的概率也越小。
1.2、蜜饵功能
蜜饵,指蜜罐中的诱饵,可以是一些漏洞或者看上去很有价值的假数据。
特别提醒:假数据一定要脱敏处理,包括内容和结构的处理,以防某些敏感数据无意间泄露,造成不必要损失。
永远不要低估一个黑客的能力,优秀的黑客能够根据冰山的一角推论整个冰山!
蜜饵不是必须的,但是有蜜饵的蜜罐看上去更真实。恰当的蜜饵,还能黏住黑客,延缓攻击。
例如,一个没有数据的空壳mysql蜜罐,黑客攻陷后,可能直接就会退出。如果在蜜罐中,根据真实业务数据库设置一些假数据,一切看起来就不一样了。
二、数据处理模块
当攻击者通过蜜罐对外提供的功能入侵后,会产生各种数据。我们需要处理这些数据,提取出有效信息,实时记录下蜜罐内发生的一切。
我们要知道:谁攻击了蜜罐?攻击方式是什么?执行了什么操作?... ...
在介绍数据处理之前,先来了解两个蜜罐中常有的进程:
- 服务进程:提供蜜罐基础功能,并记录各种数据的程序。
- 日志处理进程:读取服务进程记录的数据,并加以处理,将数据泛化为基本格式的程序。
在蜜罐内,至少都会存在这两个进程。它们相互独立,不具有父子依赖关系,即:数据处理不影响基础功能。
服务进程可能会有多个,比如一个系统蜜罐中,提供了多种服务!
回到正题,继续讨论数据处理模块,同样包括两个部分:数据收集、数据上报。
2.1、数据收集
数据收集,指通过某种方式,记录下蜜罐内所有操作产生的数据,以此分析攻击事件、追踪黑客。
数据收集,往往在服务进程中通过日志记录的方式实现。在设计实现蜜罐功能模块时,就应该兼顾数据收集,以一种简单有效的方式记录日志。
日志记录的方式很多样,写入文件、写入rsyslog等都可以,甚至还能直接通过套接字将原始日志传递到的日志处理进程。
下面,提供几种日志记录方法,仅供参考。
2.1.1、通过fifo文件记录日志
fifo文件记录日志,是一种简单而高效的方式。适用于linux下,蜜罐日志记录。
fifo文件与普通文件不同,普通文件需要考虑删除已读日志,防止文件持续增长,占用过多磁盘。
这,其实是一件很麻烦的事情。比如,当你计算好应该删除的日志行数后,执行删除操作过程中,新的日志刚好被记录,日志行数被改变,一切就乱套了。
通过fifo文件,可以完美避开这个问题。
fifo文件,是一种管道技术。可以很好的解决两个独立进程间数据交换问题,一个进程只负责写入,一个进程只负责读取。
fifo代表先进先出,这就保证了蜜罐日志的顺序。一旦读进程读取一条日志后,fifo文件会自动删除已读内容,避免了文件中日志堆积问题。
如何创建一个fifo
文件?使用mkfifo
指令:
mkfifo 文件名
示例,创建一个名为log.fifo
的文件:
[root@程序员的一天 home]#
[root@程序员的一天 home]# mkfifo log.fifo
[root@程序员的一天 home]#
[root@程序员的一天 home]# ls -al | grep log.fifo
prw-r--r-- 1 root root 0 10月 16 16:15 log.fifo
[root@程序员的一天 home]#
可以看到,使用 ls -al
命令查看文件属性时,在prw-r--r--
中,第一个符号是 p
,这表示该文件是一个 fifo
类型的文件。fifo
文件,在使用中还有一些坑,不过都很容易排查解决,留给大家自己去发现吧~
windows下不支持fifo文件,虽然大部分蜜罐都是在linux环境下部署,但还是会有部分windows环境下的蜜罐,这类蜜罐日志记录,可以通过套接字进行。
2.1.2、通过代理记录日志
对于tomcat这样的web服务,可以通过代理服务器记录日志。
例如,在http蜜罐服务前搭建一层nginx服务器,通过nginx自带日志功能来记录所有流量数据。
2.1.3、通过抓包记录日志
部分直接通过部署真实服务而实现的蜜罐,日志记录也许会很困难。
当原始服务日志中,缺失我们需要的日志信息,而我们又无法修改源码,添加额外的日志记录功能时,可以选择通过抓包的方式,来记录下所有进出流量。
不管何种方式记录,在日志中都应该包含一些基本信息,例如:时间、蜜罐id、事件id、来源ip/port、目的ip/port、用户名/密码等等。通常采用json格式记录,是不错的选择。
2.2、数据上报
在蜜网系统中,所有蜜罐内记录的数据需要上报到蜜网云端,统一分析。
如果不是蜜网,仅仅单独使用某个蜜罐而言,是不需要上报数据的。
蜜罐原始日志格式千奇百怪的都有,为了方便云端统一处理,在数据上报前,一般会将日志在蜜罐内简单处理,泛化为一个统一的格式,json字符串是最常见的选择。
日志传递过程中,使用json字符串,云端接收后,load为json字典,可直接根据key提取信息。
蜜网系统中往往会存在很多蜜罐,所以需要给每个蜜罐分配一个唯一标识,我们称之为:蜜罐id。在日志上报时,带上蜜罐id,以便云端知道日志来自具体哪个蜜罐。
同一个蜜罐,会被不同的攻击者攻击,或者被同一个攻击者攻击多次。我们需要将相关联的日志聚合在一起,形成事件。聚合的方法有很多,例如,我们可以将某段时间内ip和端口相同的日志聚合为一个事件,相同事件的日志分配相同的事件id,数据上报时,携带事件id,方便云端分析。
三、安全控制模块
除了功能模块和数据处理模块外,蜜罐还需要一个安全控制模块。该模块可能比较容易被忽略,但是蜜罐作为一个诱饵资产,安全是非常重要的。
安全控制模块,可以分为:访问控制、数据安全。
3.1 访问控制
访问控制,严格控制蜜罐的进出流量。
蜜罐必须要能够控制所有进入蜜罐内的攻击者的行为,防止攻击者利用蜜罐作为跳板来攻击同网络中的其他应用系统。
常用的方法是,通过设置iptables规则,来限制蜜罐访问同网络中的其他主机ip。
注意数据上报通道的开放。
其次,还可以在云端,通过日志分析,发现某个蜜罐大量连接网络中其他主机后,通过一定手段停止蜜罐,或者恢复蜜罐到某个安全状态。
3.2 数据安全
数据安全,指的是当蜜罐内置数据(诱饵数据)被破坏,或者蜜罐被大量植入木马、病毒后,影响到蜜罐正常功能时,应及时删除病毒,重置蜜罐到某个初始状态。
另外,如果是一个操作系统蜜罐,我们的功能代码、日志代码,均在蜜罐内。如果蜜罐被攻陷,这些将直接暴露给黑客,是非常不安全的。因此,我们可能需要进程隐藏、代码混淆等安全操作。
题外话
出于某些考虑,《『网络安全』蜜罐到蜜网入门指南》后续内容,将发布在公众号平台,感兴趣的朋友,欢迎移步公众号,持续关注。
公众号名:程序员的一天。微信搜一搜,关注不迷路!
END.
如果喜欢,欢迎随意赞赏,动力支援,请作者喝奶茶 :)