黃成鑫 康曉鳳 王可 孫典 茅璋瑞
摘? 要:面對日益嚴峻的網(wǎng)絡(luò)安全威脅,只有主動發(fā)現(xiàn)存在的漏洞和風(fēng)險,才能最大限度地減少損失。然而主流的殺毒軟件、防火墻等都屬于被動防御技術(shù),而蜜罐技術(shù)的出現(xiàn)彌補了之前技術(shù)的不足,變被動為主動。本文基于Docker和Python,設(shè)計實現(xiàn)了針對MySQL惡意攻擊的蜜罐系統(tǒng),系統(tǒng)包括MySQL服務(wù)器模擬模塊、日志模塊、捕獲模塊、管理模塊和Docker模塊。使用本系統(tǒng)可以捕獲攻擊者信息,追蹤和分析黑客,達到主動防御網(wǎng)絡(luò)威脅的目的。
關(guān)鍵詞:主動防御;蜜罐;MySQL;網(wǎng)絡(luò)安全
中圖分類號: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)
隨著計算機技術(shù)與信息技術(shù)的發(fā)展和融合,計算機網(wǎng)絡(luò)技術(shù)覆蓋了人們生活的方方面面。計算機網(wǎng)絡(luò)技術(shù)從20 世紀中葉發(fā)展至21 世紀,僅僅通過幾十年的時間就極大地改變了人們的生活,這一點在信息交換上尤為明顯。然而伴隨著計算機網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)空間中愈演愈烈的安全威脅也不可忽視[1-2]。
本蜜罐系統(tǒng)使用Python語言開發(fā),通過解析MySQL的數(shù)據(jù)包,模擬了正常的MySQL服務(wù)[3],實現(xiàn)了MySQL的TCP/IP
套接字連接過程中客戶端和服務(wù)器的通信模擬。本系統(tǒng)封裝在Docker容器中,能夠更高效地利用系統(tǒng)資源[4],一致的運行環(huán)境降低了交付和部署的難度,減少了用戶對運行系統(tǒng)所需環(huán)境、版本的部署成本。同時,Docker特有的隔離性更滿足了用戶的安全需求。本系統(tǒng)與Web服務(wù)相結(jié)合,用戶可在Web端查看當前服務(wù)器捕獲到的網(wǎng)絡(luò)攻擊和反制的惡意攻擊者的信息。
2? ?Flask介紹(Introduction to flask)
Flask是一個用Python語言編寫的輕量級Web應(yīng)用程序框架,比其他類似的框架更靈活,更安全,更易于使用。Flask結(jié)合MVC模式進行開發(fā),可以根據(jù)自己的需要調(diào)用插件增加功能。Flask的基本方式是將view函數(shù)賦給URL。在程序中,用戶每次訪問URL,系統(tǒng)都會在URL上執(zhí)行指定的視圖函數(shù),并獲取該函數(shù)的返回值顯示給瀏覽器,如圖1所示。
3? 系統(tǒng)設(shè)計與實現(xiàn)(System design and implementation)
本系統(tǒng)核心模塊基于Python的Socket模塊,結(jié)合Flask框架模板渲染技術(shù),實現(xiàn)蜜罐誘捕攻擊和查看統(tǒng)計功能。服務(wù)器與用戶進程之間采用TCP/IP套接字進行通信。系統(tǒng)可分為五大功能模塊[5]:MySQL服務(wù)器模擬模塊、日志模塊、捕獲模塊、管理模塊、Docker模塊[6]。
3.1? ?MySQL服務(wù)器模擬模塊
本模塊是系統(tǒng)的核心模塊,負責(zé)偽裝成正常的MySQL服務(wù)器。使用MySQL數(shù)據(jù)庫時,需要使用TCP/IP協(xié)議和MySQL服務(wù)器建立通信,在MySQL服務(wù)端與客戶端通信的過程中,通過以下三個步驟實現(xiàn)認證。
第一步,初始化握手消息。服務(wù)端首先發(fā)送問候包Greeting,返回服務(wù)端的版本信息如Version、salt等[7]。
第二步,客戶端向服務(wù)器發(fā)送登錄認證消息。當賬戶密碼正確時,服務(wù)器返回成功的身份驗證包。在此過程中,蜜罐需要模擬出正常的MySQL服務(wù)器發(fā)送給客戶端Greeting認證包,如圖2所示。當攻擊者嘗試爆破用戶密碼時,會向服務(wù)器發(fā)送用戶名密碼字段。
第三步,此時MySQL返回認證成功的消息,攻擊者就會被誤導(dǎo)成功爆破出MySQL服務(wù)器的用戶名、密碼。
客戶端收到服務(wù)器發(fā)送的Greeting包后,會嘗試發(fā)送賬戶密碼進行驗證。MySQL服務(wù)器收到發(fā)送的賬戶密碼后進行驗證,驗證成功后向客戶端發(fā)送認證成功包,如圖3所示,發(fā)送用戶名為root的驗證包,服務(wù)器返回Response OK的返回包。
第四步,身份驗證成功后,客戶端會向服務(wù)器發(fā)送查詢包查看MySQL狀態(tài),Info為Request Query的數(shù)據(jù)包就是客戶端向服務(wù)器發(fā)送的查詢包,如圖4所示,發(fā)送了三個查詢包,此時即可準備反制攻擊者。
3.2? ?日志模塊
本模塊記錄了攻擊者的IP和嘗試爆破MySQL密碼的時間。日志保存在log文件夾下的attacker.log文件中,管理員可根據(jù)需要用日志審計工具生成攻擊者畫像。attacker.log文件格式如圖5所示。
3.3? ?捕獲模塊
本模塊用于連接反制,當攻擊者爆破到MySQL服務(wù)器的密碼時,便會嘗試用Navicat等工具進行連接。當攻擊者嘗試連接后,會發(fā)現(xiàn)無法連接。此時會調(diào)用MySQL的load data local infile '' into table test fields terminated by '\n'; 語句??梢宰x取客戶端本地文件并插進表中,向連接服務(wù)器的客戶端發(fā)送讀取文件的payload。讀取文件流量包如圖6所示。
此數(shù)據(jù)包是偽造的MySQL蜜罐向客戶端發(fā)送讀取C:\Windows\PFRO.log文件的數(shù)據(jù)請求。在能夠?qū)崿F(xiàn)任意文件讀取的情況下,我們就可以讀取攻擊者PC上的文件,以此來捕獲攻擊者的畫像。首先會讀取C:\Windows\PFRO.log這個文件,然后返回結(jié)果并以Base64的加密格式保存在log文件夾下對應(yīng)IP文件夾下的PFRO.log文件里,如圖7所示。
當獲取到了PFRO.log文件中的用戶名之后,系統(tǒng)就會嘗試拼接文件目錄,讀取微信、QQ、Chrome歷史記錄文件。同樣,數(shù)據(jù)以Base64格式儲存。
系統(tǒng)嘗試獲取C:\Users\username\Documents\WeChat Files\All Users\config\config.data文件內(nèi)容,此文件中含有攻擊者機器上登錄過的微信號。C:\Users\username\AppData\Local\Google\Chrome\UserData\Default\History文件下緩存了用戶上網(wǎng)的歷史記錄。通過獲取這個文件,我們就有可能從中找到攻擊者最常訪問的網(wǎng)站或者一些特殊的站點。
3.4? ?管理模塊
本模塊是Web管理界面,可以查看捕獲到的攻擊者的信息。當蜜罐捕獲攻擊者的本地文件時,會儲存到本地相應(yīng)的路徑下,通過正則匹配等方式將本地文件提取出來,從中識別出攻擊者的信息,并呈現(xiàn)在Web界面上。Web端由Flask構(gòu)建,默認端口為5000,這樣就能在任意的環(huán)境下訪問到管理模塊。Flask采用模板渲染的方式呈現(xiàn)數(shù)據(jù),可以動態(tài)地展示已捕獲的攻擊者信息。
本模塊采用會話認證鑒定用戶身份,用戶需完成身份認證才可以使用本系統(tǒng)。本模塊可以前端查看捕獲到的微信、QQ、Chrome History等信息,如圖8和圖9所示。
3.5? ?Docker模塊
本模塊負責(zé)整個系統(tǒng)的封裝,旨在減少用戶使用、移植的成本,方便用戶部署,用戶只需下載Docker軟件并使用簡單的命令即可啟動Docker容器。運行docker-compose up -d 命令,Docker會自行構(gòu)建容器[8]。docker-compose.yml中記錄了Docker的相關(guān)信息,包括Docker容器端口和服務(wù)器端口的映射情況,前一項是宿主機端口,后一項是Docker端口。如需改變映射端口,可以直接修改前一項的值,配置界面如圖10所示。
4? ?結(jié)論(Conclusion)
MySQL因其優(yōu)秀的性能使眾多開發(fā)者選擇其作為數(shù)據(jù)庫,但是網(wǎng)絡(luò)中充斥著大量的針對MySQL的惡意攻擊,缺少有效反制攻擊者的手段。本系統(tǒng)基于Docker和Python實現(xiàn)了MySQL的蜜罐系統(tǒng)。本系統(tǒng)能夠在多種操作系統(tǒng)中運行,用戶利用Web控制臺的可視化交互界面可以捕獲到攻擊者信息,為溯源黑客提供了強力的支持。
參考文獻(References)
[1] 閆龍.關(guān)于網(wǎng)絡(luò)威脅檢測與防御關(guān)鍵技術(shù)的探討[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] 何昊坤.蜜罐技術(shù)在網(wǎng)絡(luò)安全領(lǐng)域的應(yīng)用與研究[J].網(wǎng)絡(luò)安全和信息化,2022(01):128-133.
[4] 黃冰.基于Docker的MySQL數(shù)據(jù)庫性能分析[J].無線互聯(lián)科技,2021,18(06):69-70.
[5] 張雙雙,卜佑軍,陳博,等.擬態(tài)Web蜜罐的研究與設(shè)計[J].工業(yè)控制計算機,2022,35(01):78-80.
[6] 王敏.基于Docker的數(shù)據(jù)科學(xué)虛擬化實驗平臺構(gòu)建[J].實驗室科學(xué),2019,22(03):104-106,110.
[7] 安延文.數(shù)據(jù)庫審計系統(tǒng)中MySQL協(xié)議的研究與解析[D].北京:華北電力大學(xué),2016.
[8] 羅利,蔣杰,胡柳,等.Docker環(huán)境下Docker-Compose部署應(yīng)用實踐[J].現(xiàn)代信息科技,2021,5(10):94-96.
作者簡介:
黃成鑫(2001-),男,本科生.研究領(lǐng)域:信息安全.
康曉鳳(1978-),女,碩士,副教授.研究領(lǐng)域:信息安全.
王? ?可(2001-),男,本科生.研究領(lǐng)域:信息安全.
孫? ?典(2000-),男,本科生.研究領(lǐng)域:信息安全.
茅璋瑞(2001-),男,本科生.研究領(lǐng)域:信息安全.