『网络安全』蜜罐到蜜网入门指南(三)蜜罐内部组成分析

2023-10-30

原创不易,点个赞呗!如果喜欢,关注、收藏不迷路。

前言

大家好,《『网络安全』蜜罐到蜜网入门指南》进入第三篇。

通过前面的内容,我们知道了什么是蜜罐以及蜜罐的作用和分类等。点击下方链接,可快速查看。

相关文章
  1. 『网络安全』蜜罐到蜜网入门指南(一)蜜罐初识

  2. 『网络安全』蜜罐到蜜网入门指南(二)蜜罐的起源、作用及分类

本文,我们深入蜜罐内部,探讨蜜罐的内部组成模块。简单了解各个模块的作用和一般设计方法等。

这里主要是为了让大家有一个初步的了解,不会太详细,了解即可。

通常,一个蜜罐的组成,可以分为三个部分:功能模块、数据处理模块、安全控制模块。

如果仅仅是部署一个单独的蜜罐,也许还需要报警模块。当蜜罐被入侵时,报警模块通过邮件或者短信的方式通知网络管理员。蜜网系统中,报警模块放置在云端,这里不单独介绍。

本文目录

  • 一、功能模块
  • 二、数据处理模块
  • 三、安全控制模块

一、功能模块

功能模块,通过模拟系统或服务的基础功能,使蜜罐能够对外提供与之相同或相似的服务功能,以此引诱黑客攻击。
功能模块可以分为:基础功能蜜饵功能

通常,正常用户是不会访问蜜罐服务的!所以,对蜜罐的访问,均可视为攻击者发起。

1.1、基础功能

基础功能,指系统或服务的主要基本功能,如。mysql服务提供的数据存储功能,ftp服务提供的文件传输功能等。
蜜罐通过模拟实现这些基础功能,让人难以辨别是蜜罐还是真实服务,达到迷惑攻击者的目的。

基础功能的实现方式多种多样,没有统一标准和固定方法。根据不同的功能,有不同的实现方法。在制作蜜罐时,往往需要花大量时间去调研,最后选择出符合场景的最优实现方法。

简单的蜜罐,如:telnetsocks5 等协议蜜罐,我们可以编写代码,自行解析协议,实现对应的功能。这样的蜜罐,我们几乎可以完全掌控。

复杂的蜜罐,如:mysqlwindows 系统等高交互蜜罐,完全重新实现一个完整服务是很困难的。可以选择基于源码二次开发,或者就直接使用真实的系统服务。这时,往往需要解决的问题是:如何记录操作日志?

最优的实现方法,需要根据具体的需求去调研决定。在满足需求的基础上,让蜜罐与真实系统或服务具有相差无几的功能即可。

不管黑猫还是白猫,能抓老鼠的就是好猫!

总之,一个原则:看上去像!

像啥?像真实服务或系统!

作为开发者,我们当然是希望方式越简单越好的!

例如,需求是“制作一个web蜜罐,获取攻击者常用的 nmae/password 爆破字典”。那么,我们仅仅提供一个web系统的登录页面即可,不管攻击者输入什么 nmae/password,后台记录后,均返回用户名或密码错误,让黑客如同面对一个黑洞,永远无法登录成功。

如果,蜜罐需要提供真实的登录功能,建议用户名/密码尽量简单,方便黑客爆破,web系统甚至可以取消验证码。admin/passwordroot/123456等,是常用的弱密码选择。

功能模块,往往决定着蜜罐的交互程度。模拟的功能越多越真实,蜜罐的交互程度越高,能够收集到的数据就越多,被黑客识破的概率也越小。

1.2、蜜饵功能

蜜饵,指蜜罐中的诱饵,可以是一些漏洞或者看上去很有价值的假数据。

特别提醒:假数据一定要脱敏处理,包括内容和结构的处理,以防某些敏感数据无意间泄露,造成不必要损失。

永远不要低估一个黑客的能力,优秀的黑客能够根据冰山的一角推论整个冰山!

蜜饵不是必须的,但是有蜜饵的蜜罐看上去更真实。恰当的蜜饵,还能黏住黑客,延缓攻击。

例如,一个没有数据的空壳mysql蜜罐,黑客攻陷后,可能直接就会退出。如果在蜜罐中,根据真实业务数据库设置一些假数据,一切看起来就不一样了。

二、数据处理模块

当攻击者通过蜜罐对外提供的功能入侵后,会产生各种数据。我们需要处理这些数据,提取出有效信息,实时记录下蜜罐内发生的一切。

我们要知道:谁攻击了蜜罐?攻击方式是什么?执行了什么操作?… …

在介绍数据处理之前,先来了解两个蜜罐中常有的进程:

  1. 服务进程:提供蜜罐基础功能,并记录各种数据的程序。
  2. 日志处理进程:读取服务进程记录的数据,并加以处理,将数据泛化为基本格式的程序。

在蜜罐内,至少都会存在这两个进程。它们相互独立,不具有父子依赖关系,即:数据处理不影响基础功能。

服务进程可能会有多个,比如一个系统蜜罐中,提供了多种服务!

回到正题,继续讨论数据处理模块,同样包括两个部分:数据收集、数据上报。

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.

如果喜欢,欢迎随意赞赏,动力支援,请作者喝奶茶

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

『网络安全』蜜罐到蜜网入门指南(三)蜜罐内部组成分析 的相关文章

  • jar包打不开怎么处理?

    第一种情况 首先win R 输入cmd打开命令行窗口 输入javac 检查一下是否有问题 正常的情况应该是下图这种 如果不是这种的 重新弄配置下你的环境变量 第二种情况 找到jdk目录下的bin文件夹 用里面的javaw打开 可以设置为默认
  • 约瑟夫问题

    约瑟夫问题 约瑟夫问题一般有两种解决方法 一种数组 一种链表 本次采用数组方式说明解决 规则 n个人围成一个圈 每个人分别标注为1 2 n 要求从1号从1开始报数 报到k的人出圈 接着下一个人又从1开始报数 如此循环 直到只剩最后一个人时
  • eclipse web项目目录结构

    按照 Java EE 规范的规定 一个典型的 Web 应用程序有四个部分 1 公开目录 2 WEB INF web xml 文件 发布描述符 必选 3 WEB INF classes 目录 编译后的 Java类文件 可选 4 WEB INF
  • Vue实现动态锚点

    前几天做项目的时候 需要实现一个动态锚点的效果 如果是传统项目 这个效果就非常简单 但是放到 Vue 中 就有两大难题 1 在没有 jQuery 的 animate 方法的情况下 如何实现平滑滚动 2 如何监听页面滚动事件 在浏览了大量文章
  • STM32串口中断卡死主循环一直进中断问题分析-2021-10-05

    在一项目中 使用STM32作为主控 程序运行一段时间后概率出现主循环卡死现象 问题分析如下 1 程序USART2不停接收并处理串口数据 波特率115200 2 主循环卡死 3 USART1中断及TIM2中断响应函数运行正常 USART1及T
  • Html中截取url参数 实现HTML间的url传值

    大家好 今天遇到一个问题 页面全是html url传值 竟然获取不到参数值 A html 登录按钮 jQuery function login click function ajax url http 10 9 80 211 8090 ia
  • vue的多层主键的通信

    div div
  • 标准化与标准计分

    其实就是衡量 含金量 的一种方法 标准计分其实就是 距离 标准差 貌似和离差很像 离差就是 距离 标准差 10 50 对于分数来说 如果与平均分的距离越大 含金量就越高呢 在组数据中 可以求分均值 中位数以及标准差了 以考试成绩为例 现在
  • 模糊算法51单片机学习应用(一)模糊化

    模糊算法51单片机学习应用 一 模糊化 最近在尝试学习模糊算法 网上查了很多材料 大多都是写原理 粗略一看好像感觉我懂了 但是真的要做的话 却完全不知道从哪里开始入手 其实 对我们首次学习使用的人来说 我们不要那些高大上的原理 我们先理解他
  • react中样式的使用(内联和外部样式表)

    1 在src中新建三个子组件分别为 Header Footer Content 2 在里面分别写入代码 建议用rcc快捷方式 Header js中代码如下 import React Component from react var Head

随机推荐

  • Java中哈希集(HashSet)概念,实现以及操作

    Java中HashSet的用法 1 HashSet概念 2 Java文档中HashSet的实现 3 HashSet的构造函数 3 1 HashSet 3 2 HashSet int initialCapacity 3 3 HashSet i
  • Ubuntu 安装 pytorch

    使用 pytorch 进行深度学习训练 这也是我不得不选择 linux 的原因 系统 ubuntu 22 04 型号 Lenovo Yoga 14sIHU 2021 集显 Irix Xe lspci grep i vga 独显 GeForc
  • diff linux文件夹patch,Linux中的版本控制---diff和patch命令

    一 构造两个用于测试的文件 hello txt world txt 二 用diff命令比较两个文本文件的差异 对这个两个文本文件执行diff 命令 并通过输出重定向 将差异保存在diff txt文件中 diff u hello txt wo
  • 使用 Docker Compose 部署 Elasticsearch + Kibana

    本篇文章主要介绍了使用 Docker Compse 部署 Elasticsearch Kibana 并整合到 Spring Boot 项目中的详细步骤 Elasticsearch Kibana 版本 7 17 0 7 的最新版本 Sprin
  • Android 语音播放Media Player

    原文地址 https developer android com guide topics media mediaplayer html viacontentresolver 语音播放 因为实习工作相关的缘故 最近在学习android语音播
  • 多个RecycleView 嵌套显示不全的情况

    场景 项目中最外层使用ScrollView 里面嵌套了recycleview recycleview中又嵌套了多个recycleview 导致部分recycleview显示不出来 app界面的结构图
  • 空间域图像增强:图像锐化/增强

    空间域图像增强 OpenCV图像锐化 增强 0 综述 1 Laplacian高通滤波算子 2 Laplacian锐化代码实践 3 USM锐化增强算法 4 USM代码实践 0 综述 图像的卷积计算除了可以完成我们前面介绍的模糊去噪 边缘检测等
  • anaconda3.6.5安装pyhive

    1 首先安装anaconda3 6 5 略 2 配置好bin下环境变量 3 来到anaconda官网 搜索需要的包 pyhive 不是anaconda前缀的也行 例如biaze pyhive https anaconda org anaco
  • Qt学习笔记

    1 Qt 音同 cute 是一个跨平台的 C 开发库 主要用来开发图形用户界面 Graphical User Interface GUI 程序 当然也可以开发不带界面的命令行 Command User Interface CUI 程序 2
  • Ubuntu 16.04出现:Problem executing scripts APT::Update

    Ubuntu 16 04出现 Problem executing scripts APT Update Post Invoke Success if usr bin test w var cache app info a e usr bin
  • unity按钮实现人物变大效果

    unity按钮实现人物变大效果 游戏里面模型变大效果的实现 如下动态图所示 点我下载 https download csdn net download weixin 43474701 71975042
  • java 通过pdf模板,生成PDF,并下载到本地

    注意 本例子是从向模板定义的变量赋值 而不是从无到有的来生成pdf 直接就能用 maven依赖
  • 精通MySQL之架构篇

    今天给大家分享的是大数据开发基础部分MySQL的第一篇 老刘讲点和别人不一样的内容 众多伙伴都知道MySQL的基础知识以及使用 但是对里面的原理知道的不多 咱们学知识只看表面绝对是不行的 所以老刘争取把MySQL的架构知识给大家讲明白 My
  • Shell编程之echo命令

    Shell 的 echo 指令与 PHP 的 echo 指令类似 都是用于字符串的输出 命令格式 echo string 您可以使用echo实现更复杂的输出格式控制 1 显示普通字符串 echo It is a test 这里的双引号完全可
  • Vue3 (computed函数,watch函数,watchEffect函数)

    1 computed函数 与vue2中computed配置功能一致 变化 需要引入 组合式的API
  • 树莓派第一讲:入门那些事(系统烧录、外设连接)

    目录 基本了解 系统烧录 连接外设 基本了解 树莓派4B是一款单板计算机 采用ARM架构处理器 配备4GB内存 Gigabit以太网口 多个USB接口 HDMI输出接口等 它具备1 5Ghz运行的64位四核处理器 最高支持以60fps速度刷
  • 因果推断 - 基础知识

    目录 因果关系之梯 因果图的路径结构 阻断 d 分离 混杂 结构因果模型 SCM 版权 转载前请联系作者获得授权 声明 部分内容出自因果关系之梯 已获得原作者授权 参考书籍 The Book of Why Judea Pearl 因果关系之
  • 什么是回调函数Callback----自己的一点理解

    何为回调函数 若把函数的指针作为函数参数传递给一个函数 当这个指着被用来调用它所指向的函数时 我们将该指针所指向的函数称为回调函数 回调函数与普通函数最大区别在于函数的调用 对普通函数而言 函数实现者可以直接拿来用 可以直接将它放在main
  • 金山逍遥网 sersync 服务器实时镜像同步方案

    金山逍遥网 sersync 服务器实时镜像同步方案 1 sersync rsync原理 2 inotify和sersync同步的区别 3 配置sersync rsync实现实时同步 2台centos7 4 一台装sersync一台装rsyn
  • 『网络安全』蜜罐到蜜网入门指南(三)蜜罐内部组成分析

    原创不易 点个赞呗 如果喜欢 关注 收藏不迷路 前言 大家好 网络安全 蜜罐到蜜网入门指南 进入第三篇 通过前面的内容 我们知道了什么是蜜罐以及蜜罐的作用和分类等 点击下方链接 可快速查看 相关文章 网络安全 蜜罐到蜜网入门指南 一 蜜罐初