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