遭遇勒索病毒
前幾天接到一哥們求助,說(shuō)是硬盤(pán)里的文檔、相片和 MP3 等文件通通不見(jiàn)了,D 盤(pán)根目錄留下一個(gè)名為“EncryptV2.0.exe”的程序和一份《使用說(shuō)明.txt》,主要內容如下:
【Encrypt V2.0】
功能強大的商業(yè)數據保護軟件,讓您的機密不再被他人竊取.
客服QQ : 4040458
客服E-mail : encrypt2@163.com
【精明軟件開(kāi)發(fā)團隊】
運行“EncryptV2.0.exe”后主界面中可以看到“解除保護”按鈕,但需要輸入密碼。根據《使用說(shuō)明.txt》中留下的 QQ 號碼和 email 地址,那哥們聯(lián)系了所謂的“客服人員”,對方嚴正告知這是有償服務(wù),需要繳納 280 元的服務(wù)費才可提供密碼。
除了“EncryptV2.0.exe”,當初那個(gè)負責“保護”文檔的病毒樣本已經(jīng)消失無(wú)蹤,不知是程序出于防分析目的而自毀,還是那哥們根據有限的殺毒知識胡改亂刪給清除了。為簡(jiǎn)便起見(jiàn),我試圖用逆向工程方法繞過(guò)密碼保護,讓“EncryptV2.0.exe”自己還原文檔。分析結果卻讓人哭笑不得,代碼只有兩個(gè)分支:1、沒(méi)有輸入密碼;2、密碼錯誤。
此時(shí)如果不愿向流氓低頭,就只有手動(dòng)恢復文檔了。通過(guò) google 的搜索結果,大致可知勒索類(lèi)軟件從今年 6 月份左右在國內傳播,而我哥們遇到的這個(gè),在 8 月初才有人提到。這類(lèi)病毒通常不采用文件過(guò)濾驅動(dòng)等底層方法實(shí)現——有此心態(tài)的作者多半也深入不到這個(gè)層次。常用的手段是通過(guò)移動(dòng)文件、修改目錄名稱(chēng)、編輯 desktop.ini 文件、設置文件/目錄屬性、修改注冊表等方式使文件不可見(jiàn),只要逆向操作一遍即可還原。
將 D 盤(pán)根目錄下的“F0UND.0001”、“F0UND.0002”等目錄中偽裝成打印機的目錄還原,發(fā)現有些是空目錄,有些則完全是<system32>目錄下的系統文件,文件創(chuàng )建日期均為 7 月 27 日,即病毒發(fā)作當日。由于沒(méi)有原始病毒樣本做輔助判斷,這里只能猜測,病毒程序先將文檔移動(dòng)到“F0UND.0001”等目錄下的子目錄中,然后將文檔全部刪除,再用<system32>目錄下的大量系統文件覆蓋,最后還將這些子目錄偽裝成打印機目錄。如此操作后,D 盤(pán)的磁盤(pán)空間占用沒(méi)有明顯變化,用戶(hù)只能看到很多奇怪的目錄名稱(chēng),卻無(wú)法察看其中內容,誤認為文檔就被藏在里面。另一目的則應該是,中毒用戶(hù)即使修復并進(jìn)入了這些目錄,看到的也全是垃圾文件,無(wú)奈之下只有求助于“客服人員”。如果猜得沒(méi)錯,該病毒的做法與先“撕票”再索要贖金的匪徒無(wú)異。為了證實(shí)上述猜測,使用“FinalData2.0”在 D 盤(pán)中進(jìn)行反刪除操作,果然可以找到并恢復半數的被“保護”文檔——另一半已經(jīng)被大量垃圾文件覆蓋而無(wú)法恢復。
至此,文檔恢復工作告一段落。我并不確信自己的猜測百分之百正確,所以也希望“有幸”遭遇該病毒的兄弟發(fā)給我一份樣本以便進(jìn)一步分析。
附1:勒索類(lèi)病毒隱藏文件的常用方法
1、在目錄名后追加“.{21EC2020-3AEA-1069-A2DD-08002B30309D}”后綴,可以將目錄偽裝成“控制面板”。同理,追加“.{2227a280-3aea-1069-a2de-08002b30309d}”后綴可偽裝成打印機目錄等等。
對策——將后綴刪除即可恢復。
2、修改以下注冊表鍵值:
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
"Hidden"=2
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
"HideFileExt"=1
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
"SuperHidden"=1
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
"ShowSuperHidden"=0 這樣即使在“文件夾選項”中設置了“顯示所有文件和文件夾”及“顯示受保護的操作系統文件”,依然不能顯示病毒建立的隱藏文件夾。
對策——恢復注冊表鍵值:
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
"Hidden"=1
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
"HideFileExt"=0
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
"SuperHidden"=0
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
"ShowSuperHidden"=1
3、修改目錄為“系統、只讀”屬性(“+s +r”);目錄下創(chuàng )建“desktop.ini”文件,設置為“系統、存檔、隱藏、只讀”屬性(“+s +a +h +r”),內容如下:
[.ShellClassInfo]
CLSID={21ec2020-3aea-1069-a2dd-08002b30309d}
其中不同的 CLSID 可以將目錄偽裝成控制面板、打印機、我的電腦、回收站等等。
對策——命令行下通過(guò)“attrib”命令取消目錄及“desktop.ini”的系統、隱藏、只讀屬性(-s -h -r),并刪除“desktop.ini”文件。
附2:“EncryptV2.0.exe”代碼片斷及分析結果
0040C8A8 . 816C24 04 5B00>SUB DWORD PTR SS:[ESP+4],5B
0040C8B0 . E9 9B7C0000 JMP dumped_F.00414550 ; “使用說(shuō)明”按鈕
0040C8B5 . 816C24 04 5F00>SUB DWORD PTR SS:[ESP+4],5F
0040C8BD . E9 7E7D0000 JMP dumped_F.00414640 ; “服務(wù)介紹”按鈕
0040C8C2 . 816C24 04 6300>SUB DWORD PTR SS:[ESP+4],63
0040C8CA . E9 617E0000 JMP dumped_F.00414730 ; “團隊介紹”按鈕
0040C8CF . 816C24 04 6700>SUB DWORD PTR SS:[ESP+4],67
0040C8D7 . E9 447F0000 JMP dumped_F.00414820 ; “解除保護”按鈕
0040C8DC . 816C24 04 6B00>SUB DWORD PTR SS:[ESP+4],6B
0040C8E4 . E9 07810000 JMP dumped_F.004149F0 ; “取消”按鈕
......
00414820 > 55 PUSH EBP
00414821 . 8BEC MOV EBP,ESP
00414823 . 83EC 0C SUB ESP,0C
00414826 . 68 E6104000 PUSH ; SE handler installation
0041482B . 64:A1 00000000 MOV EAX,DWORD PTR FS:[0]
00414831 . 50 PUSH EAX
00414832 . 64:8925 000000>MOV DWORD PTR FS:[0],ESP
00414839 . 81EC 9C000000 SUB ESP,9C
0041483F . 53 PUSH EBX
00414840 . 56 PUSH ESI
00414841 . 57 PUSH EDI
00414842 . 8965 F4 MOV DWORD PTR SS:[EBP-C],ESP
00414845 . C745 F8 C81040>MOV DWORD PTR SS:[EBP-8],dumped_F.004010>
0041484C . 8B75 08 MOV ESI,DWORD PTR SS:[EBP+8]
0041484F . 8BC6 MOV EAX,ESI
00414851 . 83E0 01 AND EAX,1
00414854 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
00414857 . 83E6 FE AND ESI,FFFFFFFE
0041485A . 56 PUSH ESI
0041485B . 8975 08 MOV DWORD PTR SS:[EBP+8],ESI
0041485E . 8B0E MOV ECX,DWORD PTR DS:[ESI]
00414860 . FF51 04 CALL DWORD PTR DS:[ECX+4]
00414863 . 8B16 MOV EDX,DWORD PTR DS:[ESI]
00414865 . 33FF XOR EDI,EDI
00414867 . 56 PUSH ESI
00414868 . 897D E8 MOV DWORD PTR SS:[EBP-18],EDI
0041486B . 897D E4 MOV DWORD PTR SS:[EBP-1C],EDI
0041486E . 897D D4 MOV DWORD PTR SS:[EBP-2C],EDI
00414871 . 897D C4 MOV DWORD PTR SS:[EBP-3C],EDI
00414874 . 897D B4 MOV DWORD PTR SS:[EBP-4C],EDI
00414877 . 897D A4 MOV DWORD PTR SS:[EBP-5C],EDI
0041487A . 897D 94 MOV DWORD PTR SS:[EBP-6C],EDI
0041487D . FF92 14030000 CALL DWORD PTR DS:[EDX+314]
00414883 . 50 PUSH EAX
00414884 . 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C]
00414887 . 50 PUSH EAX
00414888 . FF15 24104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaObjSe>; msvbvm60.__vbaObjSet
0041488E . 8BF0 MOV ESI,EAX
00414890 . 8D55 E8 LEA EDX,DWORD PTR SS:[EBP-18]
00414893 . 52 PUSH EDX
00414894 . 56 PUSH ESI
00414895 . 8B0E MOV ECX,DWORD PTR DS:[ESI]
00414897 . FF91 A0000000 CALL DWORD PTR DS:[ECX+A0]
0041489D . 3BC7 CMP EAX,EDI
0041489F . DBE2 FCLEX
004148A1 . 7D 12 JGE SHORT dumped_F.004148B5
004148A3 . 68 A0000000 PUSH 0A0
004148A8 . 68 C8BE4000 PUSH dumped_F.0040BEC8
004148AD . 56 PUSH ESI
004148AE . 50 PUSH EAX
004148AF . FF15 18104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaHresu>; msvbvm60.__vbaHresultCheckObj
004148B5 > 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18]
004148B8 . 50 PUSH EAX
004148B9 . 68 DCBE4000 PUSH dumped_F.0040BEDC
004148BE . FF15 3C104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaStrCm>; 與空字符串進(jìn)行比較
004148C4 . 8BF0 MOV ESI,EAX
004148C6 . 8D4D E8 LEA ECX,DWORD PTR SS:[EBP-18]
004148C9 . F7DE NEG ESI
004148CB . 1BF6 SBB ESI,ESI
004148CD . 46 INC ESI
004148CE . F7DE NEG ESI
004148D0 . FF15 90104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaFreeS>; msvbvm60.__vbaFreeStr
004148D6 . 8D4D E4 LEA ECX,DWORD PTR SS:[EBP-1C]
004148D9 . FF15 94104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaFreeO>; msvbvm60.__vbaFreeObj
004148DF . B9 04000280 MOV ECX,80020004
004148E4 . B8 0A000000 MOV EAX,0A
004148E9 . 66:3BF7 CMP SI,DI
004148EC . 894D AC MOV DWORD PTR SS:[EBP-54],ECX
004148EF . 8945 A4 MOV DWORD PTR SS:[EBP-5C],EAX
004148F2 . 894D BC MOV DWORD PTR SS:[EBP-44],ECX
004148F5 . 8945 B4 MOV DWORD PTR SS:[EBP-4C],EAX
004148F8 . 894D CC MOV DWORD PTR SS:[EBP-34],ECX
004148FB . 8945 C4 MOV DWORD PTR SS:[EBP-3C],EAX
004148FE . 74 43 JE SHORT dumped_F.00414943
00414900 . 8D55 94 LEA EDX,DWORD PTR SS:[EBP-6C]
00414903 . 8D4D D4 LEA ECX,DWORD PTR SS:[EBP-2C]
00414906 . C745 9C F0BF40>MOV DWORD PTR SS:[EBP-64],dumped_F.0040B>
0041490D . C745 94 080000>MOV DWORD PTR SS:[EBP-6C],8
00414914 . FF15 7C104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaVarDu>; msvbvm60.__vbaVarDup
0041491A . 8D4D A4 LEA ECX,DWORD PTR SS:[EBP-5C]
0041491D . 8D55 B4 LEA EDX,DWORD PTR SS:[EBP-4C]
00414920 . 51 PUSH ECX
00414921 . 8D45 C4 LEA EAX,DWORD PTR SS:[EBP-3C]
00414924 . 52 PUSH EDX
00414925 . 50 PUSH EAX
00414926 . 8D4D D4 LEA ECX,DWORD PTR SS:[EBP-2C]
00414929 . 57 PUSH EDI
0041492A . 51 PUSH ECX
0041492B . FF15 20104000 CALL DWORD PTR DS:[<&msvbvm60.rtcMsgBox>>; 提示“請輸入密碼!”
00414931 . 8D55 A4 LEA EDX,DWORD PTR SS:[EBP-5C]
00414934 . 8D45 B4 LEA EAX,DWORD PTR SS:[EBP-4C]
00414937 . 52 PUSH EDX
00414938 . 8D4D C4 LEA ECX,DWORD PTR SS:[EBP-3C]
0041493B . 50 PUSH EAX
0041493C . 8D55 D4 LEA EDX,DWORD PTR SS:[EBP-2C]
0041493F . 51 PUSH ECX
00414940 . 52 PUSH EDX
00414941 . EB 41 JMP SHORT dumped_F.00414984
00414943 > 8D55 94 LEA EDX,DWORD PTR SS:[EBP-6C]
00414946 . 8D4D D4 LEA ECX,DWORD PTR SS:[EBP-2C]
00414949 . C745 9C 04C040>MOV DWORD PTR SS:[EBP-64],dumped_F.0040C>
00414950 . C745 94 080000>MOV DWORD PTR SS:[EBP-6C],8
00414957 . FF15 7C104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaVarDu>; msvbvm60.__vbaVarDup
0041495D . 8D45 A4 LEA EAX,DWORD PTR SS:[EBP-5C]
00414960 . 8D4D B4 LEA ECX,DWORD PTR SS:[EBP-4C]
00414963 . 50 PUSH EAX
00414964 . 8D55 C4 LEA EDX,DWORD PTR SS:[EBP-3C]
00414967 . 51 PUSH ECX
00414968 . 52 PUSH EDX
00414969 . 8D45 D4 LEA EAX,DWORD PTR SS:[EBP-2C]
0041496C . 57 PUSH EDI
0041496D . 50 PUSH EAX
0041496E . FF15 20104000 CALL DWORD PTR DS:[<&msvbvm60.rtcMsgBox>>; 提示“密碼錯誤!”
00414974 . 8D4D A4 LEA ECX,DWORD PTR SS:[EBP-5C]
00414977 . 8D55 B4 LEA EDX,DWORD PTR SS:[EBP-4C]
0041497A . 51 PUSH ECX
0041497B . 8D45 C4 LEA EAX,DWORD PTR SS:[EBP-3C]
0041497E . 52 PUSH EDX
0041497F . 8D4D D4 LEA ECX,DWORD PTR SS:[EBP-2C]
00414982 . 50 PUSH EAX
00414983 . 51 PUSH ECX
00414984 > 6A 04 PUSH 4
00414986 . FF15 08104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaFreeV>; msvbvm60.__vbaFreeVarList
0041498C . 83C4 14 ADD ESP,14
0041498F . 897D FC MOV DWORD PTR SS:[EBP-4],EDI
00414992 . 68 C8494100 PUSH dumped_F.004149C8
00414997 . EB 2E JMP SHORT dumped_F.004149C7
00414999 . 8D4D E8 LEA ECX,DWORD PTR SS:[EBP-18]
0041499C . FF15 90104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaFreeS>; msvbvm60.__vbaFreeStr
004149A2 . 8D4D E4 LEA ECX,DWORD PTR SS:[EBP-1C]
004149A5 . FF15 94104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaFreeO>; msvbvm60.__vbaFreeObj
004149AB . 8D55 A4 LEA EDX,DWORD PTR SS:[EBP-5C]
004149AE . 8D45 B4 LEA EAX,DWORD PTR SS:[EBP-4C]
004149B1 . 52 PUSH EDX
004149B2 . 8D4D C4 LEA ECX,DWORD PTR SS:[EBP-3C]
004149B5 . 50 PUSH EAX
004149B6 . 8D55 D4 LEA EDX,DWORD PTR SS:[EBP-2C]
004149B9 . 51 PUSH ECX
004149BA . 52 PUSH EDX
004149BB . 6A 04 PUSH 4
004149BD . FF15 08104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaFreeV>; msvbvm60.__vbaFreeVarList
004149C3 . 83C4 14 ADD ESP,14
004149C6 . C3 RETN
004149C7 > C3 RETN ; RET used as a jump to 004149C8
004149C8 > 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
004149CB . 50 PUSH EAX
004149CC . 8B08 MOV ECX,DWORD PTR DS:[EAX]
004149CE . FF51 08 CALL DWORD PTR DS:[ECX+8]
004149D1 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004149D4 . 8B4D EC MOV ECX,DWORD PTR SS:[EBP-14]
004149D7 . 5F POP EDI
004149D8 . 5E POP ESI
004149D9 . 64:890D 000000>MOV DWORD PTR FS:[0],ECX
004149E0 . 5B POP EBX
004149E1 . 8BE5 MOV ESP,EBP
004149E3 . 5D POP EBP
004149E4 . C2 0400 RETN 4