基于Docker的蜜罐系统的设计与实现

2022-05-10 20:24黄成鑫康晓凤王可孙典茅璋瑞
软件工程 2022年5期
关键词:主动防御蜜罐网络安全

黄成鑫 康晓凤 王可 孙典 茅璋瑞

摘  要:面对日益严峻的网络安全威胁,只有主动发现存在的漏洞和风险,才能最大限度地减少损失。然而主流的杀毒软件、防火墙等都属于被动防御技术,而蜜罐技术的出现弥补了之前技术的不足,变被动为主动。本文基于Docker和Python,设计实现了针对MySQL恶意攻击的蜜罐系统,系统包括MySQL服务器模拟模块、日志模块、捕获模块、管理模块和Docker模块。使用本系统可以捕获攻击者信息,追踪和分析黑客,达到主动防御网络威胁的目的。

关键词:主动防御;蜜罐;MySQL;网络安全

中图分类号:TP315     文献标识码:A

Design and Implementation of Honeypot System based on Docker

HUANG Chengxin, KANG Xiaofeng, WANG Ke, SUN Dian, MAO Zhangrui

(College of Information Engineering, Xuzhou Institute of Technology, Xuzhou 221000, China)

Abstract: With the increasingly severe network security threats, only by proactively discovering existing vulnerabilities and risks can losses be minimized. However, mainstream anti-virus software, firewalls, etc. are passive defense technologies. The emergence of honeypot technology makes up for the shortcomings of this technology, changing passive defense to active defense. Based on Docker and Python, this paper proposes to design and implement a honeypot system for MySQL malicious attacks. The system includes MySQL server simulation module, log module, capture module, management module and Docker module. The system can capture attacker information, track and analyze hackers, achieving the purpose of actively defending against network threats.

Keywords: active defense; honeypot; MySQL; network security

1   引言(Introduction)

隨着计算机技术与信息技术的发展和融合,计算机网络技术覆盖了人们生活的方方面面。计算机网络技术从20 世纪中叶发展至21 世纪,仅仅通过几十年的时间就极大地改变了人们的生活,这一点在信息交换上尤为明显。然而伴随着计算机网络技术的飞速发展,网络空间中愈演愈烈的安全威胁也不可忽视[1-2]。

本蜜罐系统使用Python语言开发,通过解析MySQL的数据包,模拟了正常的MySQL服务[3],实现了MySQL的TCP/IP

套接字连接过程中客户端和服务器的通信模拟。本系统封装在Docker容器中,能够更高效地利用系统资源[4],一致的运行环境降低了交付和部署的难度,减少了用户对运行系统所需环境、版本的部署成本。同时,Docker特有的隔离性更满足了用户的安全需求。本系统与Web服务相结合,用户可在Web端查看当前服务器捕获到的网络攻击和反制的恶意攻击者的信息。

2   Flask介绍(Introduction to flask)

Flask是一个用Python语言编写的轻量级Web应用程序框架,比其他类似的框架更灵活,更安全,更易于使用。Flask结合MVC模式进行开发,可以根据自己的需要调用插件增加功能。Flask的基本方式是将view函数赋给URL。在程序中,用户每次访问URL,系统都会在URL上执行指定的视图函数,并获取该函数的返回值显示给浏览器,如图1所示。

3  系统设计与实现(System design and implementation)

本系统核心模块基于Python的Socket模块,结合Flask框架模板渲染技术,实现蜜罐诱捕攻击和查看统计功能。服务器与用户进程之间采用TCP/IP套接字进行通信。系统可分为五大功能模块[5]:MySQL服务器模拟模块、日志模块、捕获模块、管理模块、Docker模块[6]。

3.1   MySQL服务器模拟模块

本模块是系统的核心模块,负责伪装成正常的MySQL服务器。使用MySQL数据库时,需要使用TCP/IP协议和MySQL服务器建立通信,在MySQL服务端与客户端通信的过程中,通过以下三个步骤实现认证。

第一步,初始化握手消息。服务端首先发送问候包Greeting,返回服务端的版本信息如Version、salt等[7]。

第二步,客户端向服务器发送登录认证消息。当账户密码正确时,服务器返回成功的身份验证包。在此过程中,蜜罐需要模拟出正常的MySQL服务器发送给客户端Greeting认证包,如图2所示。当攻击者尝试爆破用户密码时,会向服务器发送用户名密码字段。

第三步,此时MySQL返回认证成功的消息,攻击者就会被误导成功爆破出MySQL服务器的用户名、密码。

客户端收到服务器发送的Greeting包后,会尝试发送账户密码进行验证。MySQL服务器收到发送的账户密码后进行验证,验证成功后向客户端发送认证成功包,如图3所示,发送用户名为root的验证包,服务器返回Response OK的返回包。

第四步,身份验证成功后,客户端会向服务器发送查询包查看MySQL状态,Info为Request Query的数据包就是客户端向服务器发送的查询包,如图4所示,发送了三个查询包,此时即可准备反制攻击者。

3.2   日志模块

本模块记录了攻击者的IP和尝试爆破MySQL密码的时间。日志保存在log文件夹下的attacker.log文件中,管理员可根据需要用日志审计工具生成攻击者画像。attacker.log文件格式如图5所示。

3.3   捕获模块

本模块用于连接反制,当攻击者爆破到MySQL服务器的密码时,便会尝试用Navicat等工具进行连接。当攻击者尝试连接后,会发现无法连接。此时会调用MySQL的load data local infile '' into table test fields terminated by '\n'; 语句。可以读取客户端本地文件并插进表中,向连接服务器的客户端发送读取文件的payload。读取文件流量包如图6所示。

此数据包是伪造的MySQL蜜罐向客户端发送读取C:\Windows\PFRO.log文件的数据请求。在能够实现任意文件读取的情况下,我们就可以读取攻击者PC上的文件,以此来捕获攻击者的画像。首先会读取C:\Windows\PFRO.log这个文件,然后返回结果并以Base64的加密格式保存在log文件夹下对应IP文件夹下的PFRO.log文件里,如圖7所示。

当获取到了PFRO.log文件中的用户名之后,系统就会尝试拼接文件目录,读取微信、QQ、Chrome历史记录文件。同样,数据以Base64格式储存。

系统尝试获取C:\Users\username\Documents\WeChat Files\All Users\config\config.data文件内容,此文件中含有攻击者机器上登录过的微信号。C:\Users\username\AppData\Local\Google\Chrome\UserData\Default\History文件下缓存了用户上网的历史记录。通过获取这个文件,我们就有可能从中找到攻击者最常访问的网站或者一些特殊的站点。

3.4   管理模块

本模块是Web管理界面,可以查看捕获到的攻击者的信息。当蜜罐捕获攻击者的本地文件时,会储存到本地相应的路径下,通过正则匹配等方式将本地文件提取出来,从中识别出攻击者的信息,并呈现在Web界面上。Web端由Flask构建,默认端口为5000,这样就能在任意的环境下访问到管理模块。Flask采用模板渲染的方式呈现数据,可以动态地展示已捕获的攻击者信息。

本模块采用会话认证鉴定用户身份,用户需完成身份认证才可以使用本系统。本模块可以前端查看捕获到的微信、QQ、Chrome History等信息,如图8和图9所示。

3.5   Docker模块

本模块负责整个系统的封装,旨在减少用户使用、移植的成本,方便用户部署,用户只需下载Docker软件并使用简单的命令即可启动Docker容器。运行docker-compose up -d 命令,Docker会自行构建容器[8]。docker-compose.yml中记录了Docker的相关信息,包括Docker容器端口和服务器端口的映射情况,前一项是宿主机端口,后一项是Docker端口。如需改变映射端口,可以直接修改前一项的值,配置界面如图10所示。

4   结论(Conclusion)

MySQL因其优秀的性能使众多开发者选择其作为数据库,但是网络中充斥着大量的针对MySQL的恶意攻击,缺少有效反制攻击者的手段。本系统基于Docker和Python实现了MySQL的蜜罐系统。本系统能够在多种操作系统中运行,用户利用Web控制台的可视化交互界面可以捕获到攻击者信息,为溯源黑客提供了强力的支持。

参考文献(References)

[1] 闫龙.关于网络威胁检测与防御关键技术的探讨[J].大众用电,2017(S1):163-165.

[2] MAIGIDA A M, ABDULHAMID S M, OLALERE  M, et al. Systematic literature review and metadata analysis of ransomware attacks and detection mechanisms[J]. Journal of Reliable Intelligent Environments, 2019, 5(2):67-89.

[3] 何昊坤.蜜罐技术在网络安全领域的应用与研究[J].网络安全和信息化,2022(01):128-133.

[4] 黄冰.基于Docker的MySQL数据库性能分析[J].无线互联科技,2021,18(06):69-70.

[5] 张双双,卜佑军,陈博,等.拟态Web蜜罐的研究与设计[J].工业控制计算机,2022,35(01):78-80.

[6] 王敏.基于Docker的数据科学虚拟化实验平台构建[J].实验室科学,2019,22(03):104-106,110.

[7] 安延文.数据库审计系统中MySQL协议的研究与解析[D].北京:华北电力大学,2016.

[8] 罗利,蒋杰,胡柳,等.Docker环境下Docker-Compose部署应用实践[J].现代信息科技,2021,5(10):94-96.

作者简介:

黄成鑫(2001-),男,本科生.研究领域:信息安全.

康晓凤(1978-),女,硕士,副教授.研究领域:信息安全.

王   可(2001-),男,本科生.研究领域:信息安全.

孙   典(2000-),男,本科生.研究领域:信息安全.

茅璋瑞(2001-),男,本科生.研究领域:信息安全.

猜你喜欢
主动防御蜜罐网络安全
主动防御撞击地球的“杀手”
蜜罐蚁
主动防御飞行器的范数型微分对策制导律
被自己撑死的蜜罐蚁
网络安全
网络安全人才培养应“实战化”
基于博弈的蜜罐和入侵检测系统最优配置策略
上网时如何注意网络安全?
哈密瓜:乡间蜜罐
网络安全主动防御技术分析