Petya 勒索蠕蟲完全分析報告
作者:360追日團隊
作者主頁:- 有思想的安全新媒體
原文鏈接:【權威報告】Petya勒索蠕蟲完全分析報告 - 安全客 - 有思想的安全新媒體
本文非安全大事件原創,如需轉載請註明原文來源
前言
2017年6月27日晚,烏克蘭、俄羅斯、印度、西班牙、法國、英國以及歐洲多國遭受大規模Petya勒索病毒襲擊,該病毒遠程鎖定設備,然後索要贖金。其中,烏克蘭地區受災最為嚴重,政府、銀行、電力系統、通訊系統、企業以及機場都不同程度的受到了影響,包括首都基輔的鮑里斯波爾國際機場(Boryspil International Airport)、烏克蘭國家儲蓄銀行(Oschadbank)、船舶公司(AP Moller-Maersk)、俄羅斯石油公司(Rosneft)和烏克蘭一些商業銀行以及部分私人公司、零售企業和政府系統都遭到了攻擊。
此次黑客使用的是Petya勒索病毒的變種,使用的傳播攻擊形式和WannaCry類似,但該病毒除了使用了永恆之藍(MS17-010)漏洞,還罕見的使用了黑客的橫向滲透攻擊技術。在勒索技術方面與WannaCry等勒索軟體不同之處在於,Petya木馬主要通過加密硬碟驅動器主文件表(MFT),使主引導記錄(MBR)不可操作,通過佔用物理磁碟上的文件名、大小和位置的信息來限制對完整系統的訪問,從而讓電腦無法啟動,故而其影響更加嚴重。如果想要恢復,需要支付價值相當於300美元的比特幣。
由於這次攻擊有很強的定向性,所以目前歐洲被感染的受害者較多。目前國內感染量較少,但是考慮到其橫向攻擊傳播能力,未來存在較高風險在國內傳播。
Petya老樣本簡介
2016年4月,敲詐勒索類木馬Petya被安全廠商曝光,被稱作是第一個將敲詐和修改MBR合二為一的惡意木馬。木馬Petya的主要特點是會先修改系統MBR引導扇區,強制重啟後執行MBR引導扇區中的惡意代碼,加密受害者硬碟數據後顯示敲詐信息,並通過Tor匿名網路索取比特幣。
Petya與其他流行的勒索軟體的不同點在於,Petya不是逐個加密文件,而是通過攻擊磁碟上的低級結構來拒絕用戶訪問完整的系統。這個敲詐勒索木馬的作者不僅創建了自己的引導載入程序,還創建了一個32個扇區長的小內核。
Petya的木馬釋放器會將惡意代碼寫入磁碟的開頭。被感染的系統的主引導記錄(MBR)將被載入一個小型惡意內核的自定義引導載入程序覆蓋,然後該內核會進一步加密。 Petya的敲詐信息顯示其加密了整個磁碟,但這只是木馬作者放出的煙霧彈,事實上,Petya只是加密了主文件表(MFT),使文件系統不可讀,來拒絕用戶訪問完整的系統。
Petya新樣本詳細介紹
病毒樣本類型為DLL,有一個導出序號為1的函數。當這個函數被調用時,首先嘗試提升當前進程的許可權並設置標記,查找是否有指定的安全軟體,後面會根據是否存在指定的安全軟體跳過相應的流程。繞過安全軟體的行為監控。
接下來修改磁碟的MBR,並將生成的Key,IV,比特幣支付地址以及用戶序列號寫入磁碟的固定扇區。然後創建計劃任務於1小時後重啟。遍歷區域網可以連通的ip列表,用於後續的區域網攻擊。釋放並執行抓取密碼的進程,釋放psexec進程用於後續執行遠程命令。對系統的網路資源列表進行過濾,篩選本地保存的憑據,使用保存的憑據連接,成功後執行遠程命令,進行區域網感染。
下一步生成隨機ip,連接445埠進行永恆之藍漏洞攻擊。然後遍歷磁碟,對指定擴展名的文件進行加密。執行完所有流程後,清除日誌並強行重啟。
Petya勒索蠕蟲感染傳播趨勢分析
自6月27日在歐洲爆發的起,Petya勒索病毒在短時間內襲擊了多國。
根據互聯網安全中心的監測,對每一個小時的遠程攻擊進程的主防攔截進行了統計。從6月28號0點至6月28日晚上7點整,平均每小時攻擊峰值在5000次以內。上午10點攻擊攔截達到最高峰,後緩慢波動,在14點達到一個小高峰,然後攻擊頻率開始緩慢下降。由此可見,Petya的攻擊趨勢在國內並不呈現幾何級增長的趨勢,而是緩慢下降的,並不具備進一步泛濫的趨勢。
除烏克蘭、俄羅斯、印度、西班牙、法國、英國以及歐洲多國遭受大規模的Petya攻擊外,我國也遭受了同樣的攻擊。針對我國的攻擊,主要集中在北京、上海、廣州、深圳、香港等大城市,根據360互聯網安全中心的監測,在全中國八十多個城市攔截到了攻擊。
Petya橫向移動及傳播技術分析
1、提升許可權,設置執行標記
首先,Petya病毒會嘗試提升當前進程的3種許可權:SeShutdownPrivilege、SeDebugPrivilege和SeTcbPrivilege,根據是否成功設置標記,後面執行相應的流程時會判斷此標記,以防沒有許可權時系統報錯。
然後,通過CreateToolhelp32Snapshot枚舉系統進程,判斷是否有指定的安全軟體,並設置標記。
枚舉過程中,通過將進程名稱進行異或計算得出一個值,將該值與預設的值進行比較,此處病毒是在尋找特定名稱的進程,通過對演算法進行逆向還原,我們找出預設值對應的進程名稱:當存在NS.exe(諾頓)或ccSvcHst.exe(諾頓)進程時,不執行漏洞感染流程。
當存在avp.exe(卡巴斯基)進程時,不執行MBR感染流程。
2、MBR修改
獲取分區類型,當為MBR格式時執行修改MBR流程。
隨後,Petya將修改機器的MBR,具體流程如下:
1)通過微軟的CryptoAPI生成長度為 60 位元組的隨機數
對生成的隨機數對58進行取模,取模後的值作為下述數組的索引
123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz,生成勒索界面顯示的序列號
2)將病毒內置的MBR寫入,長度為0x13個扇區
3)將隨機生成的key,IV,硬編碼的比特幣支付地址以及用戶序列號寫入磁碟第0x20個扇區
3、設置重啟計劃任務
創建計劃任務,設定當前時間1小時後重啟計算機。
重啟之後將執行病毒的MBR,加密扇區。
4、遍歷IP
首先,Petya檢查被感染的機器是否為Server或者域控伺服器
當檢測到主機為伺服器或者域控時,會枚舉該主機DHCP已分配的IP信息,保存在列表中用於網路攻擊。
5、釋放並運行資源
進程首先從資源中解壓縮ID為1的資源,在系統的%TEMP%目錄下生成一個臨時文件。
隨後程序啟動線程嘗試連接特定的命名管道並讀取數據,隨後將該臨時文件作為進程啟動,並且等待1分鐘。
對啟動的臨時文件進行分析,其代碼功能與mimikatz,一款Windows下抓取密碼的工具類似,Petya通過命名管道從該工具進程中獲取本機賬戶密碼。之後程序載入資源序號3並且解壓縮,首先獲取系統文件夾目錄,若失敗則獲取%APPDATA%目錄,並將解壓後的資源命名為dllhost.dat寫入到該目錄下。dllhost.dat的本質為PsExec.exe,是一款屬於sysinternals套件的遠程命令執行工具,帶有合法的簽名。
6、枚舉網路資源
接下來,病毒遍歷所有連接過的網路資源,從中篩選類型為TERMSRV的憑據保存。
接下來嘗試使用保存的憑據連接網路資源連接成功則執行下列命令:該命令將在目標主機上執行rundll32。exe調用自身dll的第1個導出函數,完成區域網感染功能。
7、使用永恆之藍漏洞攻擊
接下來,啟動線程進行永恆之藍漏洞攻擊。
病毒使用異或的方式加密了部分數據包,在內存中重構後發送數據包,這樣就避免了殺毒軟體的靜態查殺。
8、文件加密
Petya採用RSA2048 + AES128的方式對文件進行加密,程序中硬編碼RSA公鑰文件,每一個盤符會生成一個AES128的會話密鑰,該盤符所有文件均對該AES Key進行加密。
9、清除日誌並重啟
執行完加密文件和網路傳播流程後,病毒將清除Windows系統日誌並強制重啟。重啟後將執行病毒寫入的MBR並加密磁碟。加密完成後顯示勒索信息並等待用戶輸入key。
Petya勒索加密技術分析
1、篡改MBR
當系統重啟後,執行病毒的MBR,偽裝成CHKDSK進行加密磁碟,加密完成後彈出敲詐信息對用戶進行敲詐。下面,我們來對修改後的MBR進行分析:
1)讀取第20個扇區判斷是否已經加密,執行相應流程
2)加密流程,讀取病毒配置信息, 病毒加密用的key存在第0x20個扇區3)設置已經加密的標誌位,並把配置信息中的key清0, 寫回磁碟第20扇區
4)使用用戶輸入的key嘗試解密2、加密文件
勒索木馬Petya採用RSA2048 + AES128的方式對文件進行加密,程序中硬編碼RSA公鑰文件,針對每一個盤符都會生成一個AES128的會話密鑰,該盤符所有文件均對該AES Key進行加密。
根據後綴名對相關文件進行分類,涉及的文件格式如下表:
「.3ds 「,」.7z 「,」.accdb 「,」.ai 「,」.asp 「,」.aspx 「,」.avhd 「,」.back 「,」.bak 「,」.c 「,」.cfg 「,」.conf 「,」.cpp 「,」.cs 「,」.ctl 「,」.dbf 「,」.disk 「,」.djvu 「,」.doc 「,」.docx 「,」.dwg 「,」.eml 「,」.fdb 「,」.gz 「,」.h 「,」.hdd 「,」.kdbx 「,」.mail 「,」.mdb 「,」.msg 「,」.nrg 「,」.ora 「,」.ost 「,」.ova 「,」.ovf 「,」.pdf 「,」.php 「,」.pmf 「,」.ppt 「,」.pptx 「,」.pst 「,」.pvi 「,」.py 「,」.pyc 「,」.rar 「,」.rtf 「,」.sln 「,」.sql 「,」.tar 「,」.vbox 「,」.vbs 「,」.vcb 「,」.vdi 「,」.vfd 「,」.vmc 「,」.vmdk 「,」.vmsd 「,」.vmx 「,」.vsdx 「,」.vsv 「,」.work 「,」.xls 「,」.xlsx 「,」.xvd 「,」.zip 「n
Petya的加密流程如下圖:
1)啟動加密文件線程2)遞歸枚舉目錄並加密3)寫入Readme .txt文件
Readme .txt文件中包含比特幣支付地址。
Petya勒索殺毒軟體攻防分析
在提權階段,Petya會通過CreateToolhelp32Snapshot枚舉系統進程,判斷是否有指定的安全軟體,並設置標記。枚舉過程中,通過將進程名稱進行異或計算得出一個值,並將該值與預設的值進行比較,可見此處Petya是在尋找特定名稱的進程。
通過分析,我們確認Petya主要針對殺毒軟體諾頓和卡巴斯基進行了反檢測處理。
1、當存在NS.exe(諾頓)或ccSvcHst.exe(諾頓)進程時,不執行漏洞感染流程。
2、當存在avp.exe(卡巴斯基)進程時,不執行MBR感染流程。
緩解措施建議
1、保證系統的補丁已升級到最新,修復永恆之藍(ms17-010)漏洞。
2、臨時關閉系統的WMI服務和刪除admin$共享,阻斷蠕蟲的橫向傳播方式。具體操作為,右鍵cmd.exe"以管理員身份運行",輸入如下命令:
net stop winmgmtnnet share admin$ /deleten
3、如若不幸中招,也可以採取一些措施來減小損失。
由於在感染Petya的過程中,病毒會先重啟電腦載入惡意的磁碟主引導記錄(MBR)來加密文件,這中間會啟用一個偽造的載入界面。中招者如果能感知到重啟異常,在引導界面啟動系統前關機或拔掉電源,隨後可以通過設置U盤或光碟第一順序啟動PE系統,使用PE系統修復MBR或者直接轉移硬碟里的數據,可以在一定程度上避免文件的損失。
推薦閱讀:
※火絨安全周報:新型攻擊手段可篡改郵件 微軟修復「下一個WannaCry」漏洞
※盜號近八千的木馬長什麼樣?
※蠕蟲WannaCry病毒只是勒索軟體猖獗的開始?
※天翼校園客戶端被植入病毒 中毒電腦被用來「挖礦」
※wannacry病毒是紙老虎,沒什麼技術含量,炒作有點多了