亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于API Hooking勒索軟件WannaCry的解密方法

        2018-06-29 01:58:04郭春生程光
        網(wǎng)絡(luò)空間安全 2018年1期
        關(guān)鍵詞:解密

        郭春生 程光

        摘 要:勒索軟件WannaCry的肆意擴散對網(wǎng)絡(luò)用戶造成了極大的危害,如何能夠防范和解密WannaCry是目前的熱點研究問題。為了實現(xiàn)對勒索軟件WannaCry的解密,論文提出了基于API hooking的解密方法去恢復(fù)受害者的文件數(shù)據(jù)。首先,研究了WannaCry病毒執(zhí)行時的詳細(xì)加解密流程,發(fā)現(xiàn)其使用的加解密API函數(shù);其次,針對這些加解密API函數(shù)實現(xiàn)Hook,使用自定義的鉤子函數(shù)記錄下密鑰信息;最后,實現(xiàn)原型系統(tǒng),監(jiān)控操作系統(tǒng)中所有的進程。一旦勒索軟件WannaCry感染主機,原型系統(tǒng)記錄下勒索軟件WannaCry使用的密鑰信息,以此來完成文件的解密,結(jié)果表明系統(tǒng)能夠完全的實現(xiàn)對勒索軟件WannaCry的解密。

        關(guān)鍵詞:API Hooking;勒索軟件;WannaCry;解密

        中圖分類號:TP393.08 文獻標(biāo)識碼:A

        An approach to decrypting ransomware wannacry based on api hooking

        Abstract: Recently, the wanton outbreak of ransomware WannaCry caused great harm to the network users. How to prevent and decrypt ransomware WannaCry is a hot research issue at present. In order to implement the decryption of ransomware WannaCry, we proposes a novel method based on API hooking to decrypt and free the damaged data. Firstly, we study the encryption and decryption process of WannaCry virus and find the encryption / decryption API functions used by WannaCry. Secondly, performing API hooking for key operations, records key information with the customized hook functions. Finally, implementing the prototype system and monitoring all the processes in the operating system. When WannaCry infected the host computer, the prototype system recorded the key information to complete the decryption of the files. The result shows that the system can be effectively used to mitigate users from the damages caysed by WannaCry.

        Key words: API hooking; ransomware; wannacry; decryption

        1 引言

        從勒索軟件首次出現(xiàn)以來,已將近三十年時間,在這期間它并沒有逐漸消失,而是發(fā)展到對各種平臺進行感染,且更新速度越來越快,如今的勒索病毒軟件已經(jīng)具備更高強度的攻擊性和更加廣泛的傳播性[1]。同時,由于勒索病毒軟件普遍使用成熟的加密算法破壞用戶文件[2]。被勒索的用戶在無法恢復(fù)重要數(shù)據(jù)的情況下,被迫選擇支付高額的贖金,這使得勒索者不斷發(fā)動攻擊以獲取更高的收益;而且,現(xiàn)階段的勒索病毒軟件大多是使用比特幣來支付贖金,由于比特幣其匿名性強、難以追蹤的特點,也在一定程度上促使了勒索病毒軟件爆發(fā)性的增長。

        2017年5月12日起,勒索軟件WannaCry發(fā)起了一場具有全球性質(zhì)的網(wǎng)絡(luò)攻擊[3],該勒索病毒使用了NSA黑客武器庫泄露的工具Eternalblue,針對Windows操作系統(tǒng)中存在的SMB服務(wù)器漏洞發(fā)起攻擊,勒索者在成功攻擊后,會采取遠程代碼執(zhí)行WannaCry勒索病毒軟件。該病毒軟件會對主機上存放的文件數(shù)據(jù)進行加密,同時彈出勒索頁面,要求用戶使用比特幣進行贖金的支付以獲取解密密碼。隨著WannaCry的爆發(fā),一天的時間內(nèi), 150多個國家的幾十萬臺主機受到感染,其中我國部分教育機構(gòu)、部分政府機關(guān)和企事業(yè)單位的網(wǎng)絡(luò)系統(tǒng)受到不同程度的影響,造成嚴(yán)重的危機管理問題。因此,如何有效的防范WannaCry 勒索病毒軟件并且順利的恢復(fù)用戶被加密的數(shù)據(jù)文件,是目前的重點研究問題。

        本文提出了一種針對勒索軟件WannaCry的解密方法,通過對該勒索病毒軟件在Windows操作系統(tǒng)中運行的進程行為進行實時監(jiān)測,采用API hooking方法[4]跟蹤該勒索軟件的進程行為操作,在鉤子函數(shù)中截獲其使用的密鑰信息,并依此實現(xiàn)原型系統(tǒng),對用戶的數(shù)據(jù)文件完成解密。該原型系統(tǒng)針對WannaCry勒索病毒軟件樣本進行測試驗證,可以完整地解密出被加密的用戶數(shù)據(jù)文件;同時該系統(tǒng)可以在Windows操作系統(tǒng)上實時的進行后臺監(jiān)控,記錄下每個使用相應(yīng)API函數(shù)的進程的密鑰信息,當(dāng)勒索軟件爆發(fā)的時候,可以根據(jù)記錄下來的密鑰信息實現(xiàn)對加密文件的解密。

        2 背景技術(shù)

        2.1 勒索軟件WannaCry

        WannaCry病毒軟件使用強加密算法來加密用戶的文件和數(shù)據(jù),并且混合使用對稱加密和非對稱加密算法[5],對每個文件的加密是使用AES加密算法,一次一密,同時對每個AES密鑰使用RSA加密算法進行加密,并將加密后的AES密鑰與加密的文件內(nèi)容放置在同一個文件中。

        WannaCry的加密操作關(guān)系,如圖1所示[5],WannaCry病毒在進行加密的時候,程序本身自帶兩個公鑰(分別記為PK1和PK2)。PK2對部分文件使用的AES密鑰進行加密處理,同時將該部分文件的訪問路徑保存在本地文件中,該部分文件是勒索軟件用于展示解密操作的。該勒索軟件每次運行時,都會使用RSA加密算法隨機生成一組公私鑰(分別記為PK3和DK3),其中PK3存儲在本地文件中,主要用來加密其余用戶文件的AES密鑰,PK1對DK3進行加密并將加密后內(nèi)容放入本地文件中。

        當(dāng)受害者需要解密文件時,需要支付相應(yīng)的贖金,并將本地保存的已加密的DK3密鑰文件傳送給勒索者,由勒索者使用私鑰DK1對其進行解密獲得DK3,并保存為00000000.dky文件,最后使用勒索病毒自帶的解密程序即可完成對磁盤中文件的解密。

        2.2 API Hooking技術(shù)

        鉤子(Hook) 在Windows操作系統(tǒng)中是一個獨特且功能強大的特性,鉤子能夠在特定的消息到達目標(biāo)窗口之前對其進行截獲,并對該消息進行優(yōu)先處理,之后再交給目標(biāo)窗口的處理函數(shù)[7]。

        而Windows操作系統(tǒng)下的應(yīng)用程序一般都是使用系統(tǒng)API函數(shù)進行構(gòu)建的,使用Hook技術(shù)時一般都是對這些API函數(shù)進行掛鉤,在進程開始執(zhí)行特定的API函數(shù)之前,截獲系統(tǒng)調(diào)用消息并跳轉(zhuǎn)到鉤子函數(shù)進行處理,之后再交由原API函數(shù)執(zhí)行,即API Hooking,該技術(shù)可以監(jiān)控API函數(shù)的執(zhí)行,或者改變原有API函數(shù)的功能特性。

        按照實現(xiàn)方法的不同, API Hooking能夠分為兩類:Inline Hooking(內(nèi)聯(lián)Hooking)和IAT Hooking(導(dǎo)入表Hooking)[8]。Inline Hooking是指:首先獲取將要進行掛鉤的API函數(shù)在內(nèi)存中存放的入口地址,之后將其二進制代碼替換為JMP指令,使其跳轉(zhuǎn)到鉤子函數(shù)所在的入口地址繼續(xù)執(zhí)行;IAT Hooking是指:因為IAT表中記錄了進程所使用的DLL和API函數(shù)等信息,在對API函數(shù)掛鉤之前,需要分析該API函數(shù)在IAT表中的相關(guān)信息,找出其在IAT表中的入口地址,將這些地址改為鉤子函數(shù)所在的地址從而實現(xiàn)掛鉤。

        本文通過使用IAT Hooking方法來實現(xiàn)對API函數(shù)的Hook,在IAT表中更改目標(biāo)API的地址,并在鉤子函數(shù)中執(zhí)行特定的操作,記錄下勒索軟件生成的密鑰信息,之后繼續(xù)執(zhí)行程序的其他的操作。

        2.3 相關(guān)工作

        目前對于WannaCry病毒的破解方法是根據(jù)Adrien Guinet的成果[9],Adrien Guinet研究員發(fā)現(xiàn)Windows操作系統(tǒng)自帶的加解密API函數(shù)在生成公私鑰的過程中,API函數(shù)CryptDestroyKey和CryptReleaseContext在執(zhí)行時并不會從內(nèi)存中刪除生成公私鑰的質(zhì)數(shù),通過讀取內(nèi)存可以恢復(fù)私鑰所使用的質(zhì)數(shù),之后根據(jù)保存在本地的公鑰來恢復(fù)私鑰,寫入00000000.dky文件中,使用WannaCry病毒自帶的解密程序進行解密。該方法的局限性是要在受害者沒有重新啟動過計算機或沒有將進行加密的進程殺掉的情況下,才有可能解密成功,否則將無法成功生成私鑰文件并解密。

        PayBreak[10]系統(tǒng)利用低開銷的動態(tài)掛鉤技術(shù)(Dynamic Hooking Techniques)對加密操作的API函數(shù)進行掛鉤處理,獲取勒索軟件對每個文件加密使用的對稱會話密鑰,并使用非對稱加密來實現(xiàn)密鑰托管機制,使受害者能夠利用保存下來的密鑰信息恢復(fù)被勒索軟件加密的文件。PayBreak可以完全的恢復(fù)出被加密破壞的文件,并且適用于防御和解密使用了對稱加密算法的勒索軟件,對于WannaCry來說也是適用的,但WannaCry有一個特別的地方,它不是用根密鑰來加密對稱會話密鑰,而是使用非對稱加密算法生成公私鑰對,再用公私鑰對會話密鑰進行加密,因此不必要獲取每個文件的會話密鑰,只用獲得非對稱加密算法的私鑰即可,更加便捷。

        3 解密方法架構(gòu)

        根據(jù)2.1節(jié)中對勒索軟件WannaCry加解密過程的詳細(xì)分析可知,想要完成對WannaCry病毒的解密,需要得到運行過程中生成的私鑰DK3。由于私鑰DK3是使用非對稱加密算法生成的,是不可逆向解密的,因此想到在病毒運行過程中,直接從內(nèi)存中獲取到私鑰DK3的方法,同時API Hooking可以很容易實現(xiàn)對程序執(zhí)行過程的監(jiān)控和控制,只需要確定WannaCry的加解密函數(shù)以及函數(shù)的調(diào)用過程。因此本文利用API Hooking技術(shù),監(jiān)控Windows操作系統(tǒng)中kernel32.lib、user32.lib和advapi32.lib中的系統(tǒng)API函數(shù),追蹤WannaCry運行過程中詳細(xì)的系統(tǒng)調(diào)用軌跡[11],并打印到日志文件中。

        在沙盒環(huán)境[12]中,運行WannaCry樣本并對其進行API Hooking,記錄下其詳細(xì)的系統(tǒng)調(diào)用軌跡,在對其系統(tǒng)調(diào)用軌跡進行分析后,找出了勒索軟件生成公私鑰對、對密鑰進行加密的操作過程,表1為WannaCry病毒生成公私鑰(即PK3和DK3)的API函數(shù)調(diào)用過程(API函數(shù)的相關(guān)參數(shù)以十六進制形式顯示)。

        本文通過API Hooking技術(shù)追蹤WannaCry病毒運行過程中的系統(tǒng)API調(diào)用軌跡,更加直觀的發(fā)現(xiàn)其中對于公私鑰對的生成過程、使用的API函數(shù)以及API函數(shù)的參數(shù)情況。針對加解密API函數(shù)操作過程分析發(fā)現(xiàn),WannaCry使用CryptExportKey函數(shù)將公私鑰(PK3和DK3)從容器中讀取出來,并且將公私鑰通過參數(shù)傳遞,由于公鑰寫在本地文件中,只需從此函數(shù)中獲取到私鑰即可,通過訪問此函數(shù)的參數(shù)地址,讀取出私鑰。

        為了防范和解密勒索軟件WannaCry,本文實現(xiàn)的解密框架為:實時的監(jiān)控操作系統(tǒng)中新進程的創(chuàng)建,對所有進程進行API Hooking并記錄下每個使用相應(yīng)API函數(shù)的進程的密鑰信息,當(dāng)主機被WannaCry感染時,將本地日志文件中記錄的WannaCry病毒的密鑰信息讀取出來,以二進制形式寫入00000000.dky文件中,即可以解密成功。本文對Windows系統(tǒng)中的CryptExportKey函數(shù)進行Hook,通過改變CryptExportKey函數(shù)在IAT表中的入口地址,從而跳轉(zhuǎn)到鉤子函數(shù)中,先執(zhí)行真實的CryptExportKey函數(shù),得到各個參數(shù)的值,之后根據(jù)CryptExportKey函數(shù)的第三個參數(shù)判斷密鑰類型是否為私鑰,當(dāng)參數(shù)密鑰類型值為私鑰時,訪問進程中CryptExportKey函數(shù)的第五個參數(shù)的存儲密鑰的內(nèi)存地址,讀取出該進程中產(chǎn)生的私鑰,并將私鑰信息實時的寫入日志文件中。解密方法框架如圖2所示。

        表2為算法中的自定義鉤子函數(shù)偽代碼顯示:第1行函數(shù)即為自定義的鉤子函數(shù),第3行參數(shù)a2是密鑰的類型值,其中6為公鑰,7為私鑰;第5行參數(shù)為密鑰的存放地址指針,通過讀取此指針地址的數(shù)據(jù),可以獲取到密鑰數(shù)據(jù);第6行參數(shù)為密鑰的長度值;第9行執(zhí)行真實的CryptExportKey函數(shù)操作,并獲得相關(guān)的參數(shù);第11行判斷參數(shù)a2的密鑰類型是否為私鑰,若是私鑰,則在第12行判斷密鑰的存放地址是否為空,若不為空,則在第13、14行以參數(shù)a5的密鑰長度按字節(jié)輸出密鑰內(nèi)容到日志文件中。

        4 實驗驗證

        本文在進行實驗驗證時,使用沙盒環(huán)境創(chuàng)建虛擬機,虛擬機配置為:CPU為1核,內(nèi)存512MB,硬盤40GB,操作系統(tǒng)為Windows XP SP3,選用Windows XP操作系統(tǒng)的原因是由于其在此次WannaCry攻擊過程中受影響的范圍最大。在沙盒環(huán)境中的桌面、文檔、所有人/桌面、所有人/文檔、其他目錄1及其他目錄2下依次放置相同的樣本文件,且這些樣本文件的大小和類型是不一樣的,并對樣本源文件進行MD5哈希值[13]計算和保存,之后在沙盒中執(zhí)行WannaCry病毒樣本,感染系統(tǒng)中放置的樣本文件,采用本文實現(xiàn)的原型工具監(jiān)控WannaCry病毒的感染過程,并進行解密,對解密后的不同目錄下的樣本文件計算MD5哈希值,并與樣本源文件的MD5哈希值進行比較,驗證是否解密成功。

        實驗分析,依次對不同目錄下的樣本文件進行病毒感染以及解密,計算解密后文件的MD5哈希值,并與源文件的MD5哈希值進行比較分析,圖3中為不同類型的文件解密情況表,14個doc文件、10個xlsx文件、9個ppt文件、9個txt文件、10個pdf文件以及10個rar文件全部被解密成功,對于不同類型的文件,使用本文的方法可以全部解密成功。圖4中為不同大小文件的解密情況表,無論對于0K的文件還是大于200M的文件都是可以完全解密成功的。圖5為桌面、文檔、所有人\桌面、所有人/文檔、其他目錄1及其他目錄2下的樣本文件解密情況表,實驗發(fā)現(xiàn),不同目錄下的樣本文件都是可以完全解密成功的。圖6為不同目錄下對樣本文件進行加解密時的時間情況,發(fā)現(xiàn)在桌面、文檔、所有人/桌面、所有人/文檔這四個目錄中,對于相同的樣本文件的加密時間相似,并要比其他目錄1及其他目錄2下的樣本文件的加密時間用時久,而其他目錄1及其他目錄2下的樣本文件的解密時間比桌面、文檔、所有人\桌面、所有人/文檔這四個目錄中的樣本文件的解密時間用時久,這是因為WannaCry勒索軟件的作者根據(jù)文件的重要性對于重要目錄下的文件不僅進行了加密操作,并且對源文件進行了擦寫和刪除,對于不重要目錄下的文件僅做了加密操作,之后直接刪除;解密時對于重要文件優(yōu)先解密,不重要文件其次解密。

        本文實現(xiàn)的基于API Hooking的原型工具在Windows 系統(tǒng)下運行時的內(nèi)存占用情況如圖7所示:運行時內(nèi)存占用為3700K左右,在后臺運行時對系統(tǒng)的性能有較小的影響。

        使用原型工具監(jiān)控一些進程并測試對這些進程的性能影響情況,圖8為這些進程進行API Hooking后增加的內(nèi)存占用情況,增加的內(nèi)存占用在400-500KB,對這些進程的性能影響較小。圖9為WannaCry病毒和其他的使用相同加密API函數(shù)的進程在進行API Hooking后增加的運行時間情況,進行API Hooking后對于生成密鑰信息的進程來講,運行時間增加了200到300ms,而對那些沒有使用加密API函數(shù)的進程來講,運行時間幾乎沒有影響。

        根據(jù)實驗驗證,本文所實現(xiàn)的基于API Hooking技術(shù)的原型工具,可以監(jiān)控到各種進程的運行,以及記錄下使用CryptExportKey函數(shù)的加密程序的密鑰信息,對于勒索軟件WannaCry來說,經(jīng)過實驗驗證可以完全的記錄下它的密鑰信息,并能夠完全解密被勒索軟件WannaCry加密的文件。本文實現(xiàn)的原型工具可以在后臺實時監(jiān)控系統(tǒng)中的進程,并對操作系統(tǒng)和進程的性能影響較小,可以被用戶接受。

        5 結(jié)束語

        本文為了實現(xiàn)對勒索軟件WannaCry的防范和解密,在仔細(xì)研究了WannaCry病毒執(zhí)行時的系統(tǒng)調(diào)用軌跡,發(fā)現(xiàn)其使用的加解密API函數(shù)和解密需要的條件,因此提出了基于API hooking的解密方法去恢復(fù)受害者的文件數(shù)據(jù),實現(xiàn)了一個初步的原型系統(tǒng),監(jiān)控操作系統(tǒng)中所有的進程,針對這些加解密API函數(shù)進行掛鉤,使用自定義的鉤子函數(shù)記錄下密鑰信息。同時,對勒索軟件WannaCry進行了實驗驗證,原型系統(tǒng)記錄下WannaCry使用的密鑰信息,并完成了對文件的解密,結(jié)果表明系統(tǒng)能夠完全的實現(xiàn)對勒索軟件WannaCry的解密,且對操作系統(tǒng)和進程的性能影響較小,可以被用戶接受。此原型系統(tǒng)可以進一步擴展,以應(yīng)對同樣使用加解密API函數(shù)的勒索軟件,一旦發(fā)生勒索軟件感染,可以使用此原型系統(tǒng)記錄下的密鑰信息完成解密,減少用戶的損失。

        基金項目:

        論文獲得國家重點研發(fā)計劃:SDN/NFV與NDN安全研究(項目編號:2017YFB0801703)和國家自然科學(xué)基金青年基金:基于網(wǎng)絡(luò)編碼的信息中心網(wǎng)絡(luò)研究(項目編號:61602114)支持。

        參考文獻

        [1] 安天安全研究與應(yīng)急處理中心.勒索軟件簡史[J].中國信息安全,2016(4):50-58.

        [2] 石磊,孫亮.勒索軟件研究[J].無線互聯(lián)科技, 2016 (21): 41-42.

        [3] 瑞星安全公司.WannaCry勒索軟件病毒分析報告[EB/OL]. http://www.freebuf.com/articles/paper/134637.html

        [4] Kesheng L, Zhongshou W. The Analysis of API Hook Central Technique [J]. Network Security Technology & Application, 2006, 11: 48-50.

        [5] Simmons G J. Symmetric and asymmetric encryption[J]. ACM Computing Surveys (CSUR), 1979, 11(4): 305-330.

        [6] 騰訊電腦管家安全團隊.WannaCry勒索病毒詳細(xì)解讀[EB/OL]. http://www.freebuf.com/articles/system/135196.html.

        [7] Shaid S Z M, Maarof M A. In memory detection of Windows API call hooking technique[C]//Computer, Communications, and Control Technology (I4CT), 2015 International Conference on. IEEE, 2015: 294-298.

        [8] 蘇雪麗,袁丁. Windows 下兩種 API 鉤掛技術(shù)的研究與實現(xiàn)[J]. 計算機工程與設(shè)計, 2011, 32(7): 2548-2552.

        [9] Adrien Guinet. A WannaCry Flaw Could Help Some Victim Get Files Back[EB/OL]. https://www.wired.com/2017/05/wannacry-flaw-help-windows-xp-victims-get-files-back/

        [10] Kolodenker E, Koch W, Stringhini G, et al. PayBreak: Defense against cryptographic ransomware[C]//Proceedings of the 2017 ACM on Asia Conference on Computer and Communications Security. ACM, 2017: 599-611.

        [11] Kharraz A, Arshad S, Mulliner C, et al. UNVEIL: A Large-Scale, Automated Approach to Detecting Ransomware[C]//USENIX Security Symposium. 2016: 757-772.

        [12] Wright W, Schroh D, Proulx P, et al. The Sandbox for analysis: concepts and methods[C]//Proceedings of the SIGCHI conference on Human Factors in computing systems. ACM, 2006: 801-810.

        [13] Wang X, Yu H. How to break MD5 and other hash functions[C]//Eurocrypt. 2005, 3494: 19-35.

        猜你喜歡
        解密
        解密“熱脹冷縮”
        炫詞解密
        解密“一包三改”
        少先隊活動(2020年9期)2020-12-17 06:17:31
        炫詞解密
        炫詞解密
        解密九宮格
        解密后
        益壽寶典(2018年25期)2018-10-11 08:52:04
        解密坐標(biāo)系中的平移變換
        “三數(shù)”檔案解密
        解密“黑匣子”
        麻豆精品久久久久久久99蜜桃 | 国产亚洲午夜精品| 国产成人自拍小视频在线| 美女性色av一区二区三区| 亚洲婷婷久悠悠色悠在线播放 | 1717国产精品久久| 国产成人丝袜在线无码| 国产精品亚洲在线播放| 成人免费自拍视频在线观看| 男人进去女人爽免费视频| 亚洲欧洲日产国码无码久久99| 丰满少妇棚拍无码视频| 亚洲天堂av路线一免费观看| 国产在线一区二区三区乱码| 欧美狠狠入鲁的视频777色 | 国产美女69视频免费观看| 日韩精品不卡一区二区三区| 国产精品一区二区偷拍| 国产精品亚洲片在线观看不卡| 亚洲av综合久久九九| 人妻少妇无码中文幕久久| 中文字幕人成乱码中文| 免费亚洲老熟熟女熟女熟女| 日本特黄特色特爽大片| 人人妻人人澡av天堂香蕉| 国产精品久久一区性色a| 日韩在线一区二区三区中文字幕 | 色偷偷激情日本亚洲一区二区| 内射爽无广熟女亚洲| 99热最新在线观看| 日本一区二区三区在线观看免费 | 国产精品久久久久影院| 亚洲日韩欧美一区二区三区| 激情视频国产在线观看| 国产乱理伦在线观看美腿丝袜| 久久精品夜色国产亚洲av| 国产一区二区三区四区五区vm| 加勒比亚洲视频在线播放| 激情久久黄色免费网站| 人妻中文字幕无码系列| 午夜亚洲www湿好大|