題:
惡意軟件如何如此快速地加密受害者的文件?
Ulkoma
2015-07-05 12:19:52 UTC
view on stackexchange narkive permalink

對我加密文件類似於處理一個很長的字符串,然後將其輸入到哈希或加密函數中,以獲得另一個長的加密字符串(對於哈希,則為哈希)。

此過程需要花費大量時間。我知道這是因為我使用 HashTab來驗證我從Internet下載的文件的完整性。

像CTB-Locker或Crypt0l0cker這樣的勒索軟件如何立即加密其受害者文件?

最近,我的一個朋友是其中一種勒索軟件的受害者,他無法打開自己的文件/即使使用MSWindows感染,Ubuntu也會在他的雙OS計算機上從Ubuntu中獲取照片。這表明打開文件時不會立即進行加密。

您不必加密所有文件,僅需防止應用程序打開它即可。由於許多文件已經被二進制編碼,因此對於最終用戶而言,該文件實際上是不可用的。
值得一提的是全磁盤加密(我的雇主讓我們使用Symantec PGP),該磁盤可以在使用磁盤時使用(我假設)驅動程序欺騙來對磁盤進行加密。也就是說,這是在驅動器級別而不是文件級別的加密。
對於許多目的,甚至可以加密文件系統元數據。因此,Windows中的FAT表或NTFS元數據。如果我爭先恐後,儘管文件內容完全完好無損,但大多數用戶很難恢復他們的文件。
八 答案:
Mike Ounsworth
2015-07-05 22:16:49 UTC
view on stackexchange narkive permalink

我在OWASP演講中,演講者反編譯並分析了我們面前的勒索軟件可執行文件(適用於Windows)。勒索軟件種類繁多,因此,我一般不會談論勒索軟件,但是我可以肯定地談論一下我所看到的勒索軟件。通常的想法是,勒索軟件可執行文件包含使用非對稱算法(例如RSA)加密文件所需的加密公共密鑰。相應的私鑰/解密密鑰由黑客掌握,因此可執行文件的大量反向工程都無法為您提供解密密鑰。

要實際加密文件,它需要執行以下操作:

  1. 跳過文件的前512個字節,以使文件頭保持不變。

  2. 使用嵌入式加密密鑰對接下來的1 MB進行加密。

  3. 如果文件長於此長度,則其余文件保持未加密狀態。

  4. ol>

    重點不是要完全隱藏或保護數據,足以使其無法解析。

    就時間而言,執行1 MB的RSA仍然很慢,並且仍將需要幾個小時來抓取HDD。

    我懷疑我看到的這個樣本只是Steffen Ullrich在他的答案中談到的完整RSA-AES勒索軟件的一個懶惰模仿-這是您應該使用的真的很擔心。

由於RSA太慢,通常會選擇一個隨機密鑰,並用RSA加密,然後使用該隨機密鑰運行流密碼(通常類似於AES / DES之類的密碼),其速度要快多個數量級。
“跳過文件的前512個字節,以便文件頭保持原樣,即Windows仍可以告訴它是pdf,mp3等。”-請注意,Windows僅檢查擴展名,而不檢查其內容。
@user2064000認真嗎? Windows還是那麼笨?自2006年以來我一直是純linux,我應該以為Windows現在已經克服了這個問題。每天學點東西...
@MikeOunsworth AFAIK,Linux內核也不在乎文件頭。
@nanny從`man`頁面的`file`命令開始([link](http://linux.die.net/man/1/file)):““魔術”的概念已通過擴展應用到數據文件。任何具有一些不變標識符且在文件中具有較小固定偏移的文件通常都可以用這種方式來描述。” -聽起來像是我的文件頭!
@nanny:那是因為Linux內核根本不關心文件類型。就內核而言,它們都只是“文件”。有一些例外情況(例如,shebang和其他可執行文件),但是字節是字節。現在,您的* GUI *可能會顯示文件類型,但這是更高的抽象級別。
...當然,關心外殼的不是內核,而是外殼。就像不是Windows關心mp3的比特率一樣,而是Windows資源管理器。
這有點題外話,但是Linux上有很多軟件在研究文件擴展名而不在文件頭。
-1
@Jon:實際上,[Unix內核*可以解釋shebangs](https://en.wikipedia.org/wiki/Shebang_%28Unix%29#History)。
我的立場是正確的-對於他們為什麼最好在內核中這樣做感到困惑。感謝您的參考!
@Jon的一項功能,即使在外殼程序之外,也允許文本文件實際運行。請參閱[execve(2)](http://man7.org/linux/man-pages/man2/execve.2.html)。
您是否有OWASP演示文稿的鏈接?還是主持人的名字?
@ColBeseder我不認為這次談話是有記錄的,但是這裡有談話摘要和演講者簡歷的鏈接(單擊“查看全部”展開):http://www.meetup.com/OWASP-Ottawa/events/219842720/ ?a = uc1_vm&read = 1&_af = event&_af_eid = 219842720
Gerald Davis
2015-07-05 19:06:53 UTC
view on stackexchange narkive permalink

第一次對稱加密非常快。在某些模式下,AES輕鬆達到200MB / s。您聲稱散列速度很慢是一個紅色鯡魚。散列速度非常快。在現代處理器上,速度如此之快,從而削弱了密碼哈希的有效安全性。這就導致了多輪密鑰派生功能的發展,以“減慢”散列。

您看到的“慢”速度主要是慢速硬盤驅動器的影響。內存中的哈希大約為500MB / s至2 GB / s +。

仍然不需要惡意軟件“即時”。用戶的系統被靜默感染。可以對文件副本進行加密,而無需提醒用戶,然後在準備就緒後刪除原始文檔,並立即通知用戶。儘管似乎是即時發生的,但從感染到感染的整個過程可能要花費大量的時間。

順便說一句,警報在感染後的某個時間發生也更好,這樣受害者就不容易弄清楚他在何處/如何被感染。
這裡也存在一些混亂,OP正在將加密與哈希進行混合。即使它們共享一些相似的數學理論,哈希也不是加密,並且兩者的用途截然不同。因此,許多散列算法在設計上都很慢(以減緩暴力攻擊),而加密算法往往在不損害安全性的情況下盡可能地簡化。
沒有混亂。我僅包括哈希性能,因為OP報告了哈希性能,並認為它很慢,因此加密應該更慢。現實情況是對稱加密和哈希算法都非常快。在長消息中,AES256每字節大約2到13個週期(取決於模式),而SHA-512每字節大約8個週期。散列或加密時,大多數“延遲”都是從讀取磁盤數據開始。實際的加密速度非常快。 KDF用於減慢密碼哈希,因為哈希操作是如此之快。
我並不是說您感到困惑-我認為您的回答很好。 :-)我的意思是問這個問題的人感到困惑。如果他們將散列性能用作加密性能的度量標準,則似乎可能會感到困惑。
用於檢查文件完整性的@loneboat哈希算法旨在在不犧牲安全性的情況下盡可能快。只是密碼哈希故意降低了速度,但是沒有理由在此提及。哈希和對稱加密具有相似的性能,並且通常都與IO綁定。由於散列僅需要讀取文件,而加密則需要讀取和寫入數據,因此在這種情況下,加密的費用應該是其兩倍。
我的一個朋友被其中一種襲擊擊中。這不是瞬間。在它僅加密了他廣泛的音樂/視頻庫的大約一半之後,他足夠早地註意到將其關閉。 OP是正確的,因為它確實需要花幾個小時才能完成。沉默使它能夠完成骯髒的任務。
Steffen Ullrich
2015-07-05 14:57:04 UTC
view on stackexchange narkive permalink

散列(如SHA-1等)和對稱加密(如AES)相對便宜,非對稱加密(如RSA)則昂貴得多。這就是為什麼通常不使用RSA來加密大文件的原因,而是使用帶有一些隨機密鑰的對稱加密方法,而僅使用RSA來加密此短密鑰。

我知道,因為我使用HashTab驗證我從Internet上下載的文件的完整性。

聽起來像是對我來說非常科學的方法。除非您的處理器較舊且較慢,否則哈希(從而驗證數據)的速度通常比從磁盤讀取數據的速度要快(以防萬一,這種情況並不明顯:當然,您仍然需要讀取數據以對其進行哈希,但是等待磁盤中的數據要​​比計算散列花費更多的時間。

像CTB-Locker或Crypt0l0cker這樣的勒索軟件如何立即加密受害者文件?

現代操作系統支持加密的文件系統,而對於當今的處理器(通常包括用於AES的硬件加速),無論是否使用加密的文件系統,您都不會注意到速度差異很大,因為瓶頸是不是加密而是磁盤的速度(在基準測試中,您會看到性能下降,但是這些並不能反映大多數人的實際使用情況)。因此,他們也沒有理由勒索軟件也無法快速加密數據。當然,通過掛接到系統上,它們可能會使它感覺更快,從而使要打開的文件先被加密,而其餘部分在後台被加密。

然後刪除用於加密文件的對稱密鑰嗎?這意味著您可以在加密過程中從內存中檢索對稱密鑰,不是嗎?
@Michael:是的,您應該能夠在加密期間從內存中檢索對稱密鑰,儘管可能有一些方法可以使此操作不太容易。當然,您可以為每個文件使用不同的密鑰,以使其更難恢復數據。
便宜如快速?像慢一樣貴?因此文件實際上是對稱加密的,但是密鑰是使用RSA加密的。多快?這聽起來不對我。即使在一台好的PC上,我也需要30秒來計算文件的MD5。
正在從磁盤讀取數據以便饋送給功能正確嗎?總時間如何減少?或者您指的是通過哈希/加密功能處理內存中的字符串/文件的實際時間。
@Ulkoma:便宜/昂貴,如資源,即內存,處理能力等。這意味著便宜而快速。而且我從未聲稱總時間少於(比什麼?)。當然,您需要從磁盤讀取數據以將其提供給函數,但是主要部分是讀取而不是計算。關於“我需要30秒來計算文件的MD5”。 -文件有多大,磁盤有多慢,處理器有多快....?如果您需要30秒來哈希1字節大小的文件,則這可能是系統需要加載程序的時間。
我在運行Debian Linux的舊P4機器上進行了測試。 15MB文件的MD5哈希處理花了0.23秒。
@mti2935:是的,根據“ openssl速度”,我可以在移動式Intel I5(i5-4200U)處理器上執行大約500 MB / s SHA-1。這樣超出了我的磁盤速度。
Loren Pechtel
2015-07-06 03:19:38 UTC
view on stackexchange narkive permalink

您所犯的錯誤是立即想到的。相反,惡意軟件坐在那裡,在後台進行加密並解密用戶要求的任何內容。在此階段它保持沉默,只有在所有內容都加密後才要求贖金。

Freedo
2015-07-05 12:44:42 UTC
view on stackexchange narkive permalink

根據Wikipedia:

首次運行時,有效負載會將其自身安裝在用戶配置文件文件夾中,並向註冊表添加一個項,使其在啟動時運行。然後,它嘗試聯繫多個指定的命令和控制服務器之一;連接後,服務器將生成一個2048位RSA密鑰對,並將公鑰發送回受感染的計算機。

如果您的計算機速度很快且性能不佳,這並不像您想像的那樣慢。在感染時如果不佔用大量CPU資源,您可能會在不到15分鐘的時間內丟失千兆字節的數據。現代PC可以計算散列並執行加密操作,其速度比硬盤/ SSD磁盤可以工作的更快。因此,我想說現代對散列/加密速度的限制更多地取決於磁盤本身。我可以在2分鐘內為2,5GB的文件生成SHA-512哈希。

而且該惡意軟件還可以等到它加密了所有想要的內容之後,才向用戶顯示消息。

如果是這種情況,那麼為什麼我們要使用慢速哈希函數比較文件並驗證完整性?為什麼不僅僅使用RSA?我很確定每個唯一鍵的輸出都是唯一的。
RSA通常不直接用於加密數據(它可以完全加密任意大數據嗎?)。用於對對稱加密密鑰進行加密。
Corey
2015-07-06 15:45:27 UTC
view on stackexchange narkive permalink

基本過程是讀取文件內容,然後使用某種形式的非對稱加密將其寫回磁盤,以確保您必須付費才能恢復數據。有些將僅加密數據的一小部分以提高速度,而另一些則將重寫整個硬盤。正如其他一些答案所指出的那樣,某些惡意軟件會簡單地就地加密文件的一部分以加快處理過程,因為對於許多文件格式而言,即使文件中的微小更改也會使整個文件無法使用。

CTB-Locker或Crypt0l0cker這樣的勒索軟件如何立即加密其受害者文件?

他們不能。取而代之的是,他們通過使文件出現可以正常運行,直到過程完成才隱瞞了他們的活動。通過攔截文件系統調用,您可以更改用戶對磁盤上實際存在內容的視圖,直到一切完成後一切似乎仍然正常,然後當您將攔截取走時,用戶可以看到驅動器的真實狀態。 。這樣做的危險是,必須具有非對稱密鑰對的兩個部分,才能在用戶打開文件時即時解密文件,這原則上意味著可以找到想要的私有密鑰。

像CryptoWall這樣的其他惡意軟件(我最近對它的經驗比我想記住的要多)不會被隱藏,它只是開創性地將所有內容盡快加密。 ...並且受加密驅動器的IO速度的限制很大。

看看AES的一些基準測試-這是CryptoWall聲稱要使用的加密算法-一個適度的現代CPU可以以超過100MB /秒的速度加密數據,這意味著該操作可能會受到IO綁定,而不是SSD上的任何其他東西。添加在針對不同文件夾和/或驅動器的不同CPU內核上運行的多個線程,該過程可以很快完成。

我最近不得不清理一台由運行在一台用戶PC上的CryptoWall處理過的文件服務器。到用戶發現有問題時,惡意軟件已經運行了約1.75個小時。我們在不到2個小時的時間裡就將其從網絡上拉下了,在清理過程中,我發現了大約230GB的加密文件。平均加密速度約為30MB /秒,這在環境中當然是可行的。從以前的備份還原文件所花費的時間大約是原來的3倍。儘管我對下次如何加快速度有一些想法,但大多數客戶端都將備份備份在笨拙的低成本NAS或( shudder )USB驅動器上。

不幸的是,我們不太可能盡快看到這些事情的終結。當這些事情之一發生時,一個稱職的,配置合理的備份解決方案是您最好的朋友。讓程序員方便地編寫恢復腳本並不難。

Boluc Papuccuoglu
2015-07-05 18:03:54 UTC
view on stackexchange narkive permalink

從社會工程學的角度來看,惡意軟件作者可能已經編寫了一個程序,將數據內容替換為隨機位。受害人將無法驗證內容是否已加密或被丟棄。如果他們決定支付贖金而“鑰匙”不起作用,那麼他們將無能為力,這些傢伙畢竟是罪犯。

那正是我所懷疑的
如果這樣做,將會損害自己的商業模式。如果有足夠多的人報告說他們沒有把錢還回來,那麼其他人就不會付錢。為了獲得大部分這種可疑的業務,受害者最信任他們會收回數據,並且這些信息必須傳播,以便其他人也能付款。實際上,他們的報告足以使他們取回數據。
瓶頸是磁盤I / O,並且寫入隨機位僅使時間減半,因為它不需要從磁盤讀取數據。對於惡意軟件來說,這可能並不十分重要。
我的感覺是,有些加密勒索軟件作者正在研究可持續的商業模式,例如Evgeniy Bogachev。但是似乎不可避免地會出現一些問題,而不必處理對稱加密密鑰,密鑰數據庫等。
-1
@Damon:我懷疑這是眾所周知的,甚至是事實我也懷疑。我要說的是,大多數搶劫受害者實際上仍然活著。
Ángel
2015-07-06 16:33:24 UTC
view on stackexchange narkive permalink

某些贖金(例如TorrentLocker)僅加密第一個MB(加上尾隨)。這足以使大多數格式不被識別,但同時可以使加密大量文件的速度更快(還要記住,只有某些文件類型是加密的,例如文檔,照片等)。

這是Nixu在 SANS博客和( ESET白皮書)中報告的,儘管他們報告了2MB。

而且,正如Loren所說,勒索軟件僅在所有內容都加密後才顯示大橫幅,要求索取贖金(雖然只有幾個文件被“持有”,您意識到這是不好的),儘管有些勒索軟件在放置勒索軟件時會放在每個文件夾中要求文件/加密的每個文件。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...