遭遇勒索病毒

来源:百度文库 编辑:神马文学网 时间:2024/04/28 18:17:56

遭遇勒索病毒


前几天接到一哥们求助,说是硬盘里的文档、相片和 MP3 等文件通通不见了,D 盘根目录留下一个名为“EncryptV2.0.exe”的程序和一份《使用说明.txt》,主要内容如下:

  【Encrypt V2.0】
  功能強大的商業數據保護軟件,讓您的機密不再被他人竊取.
  客服QQ : 4040458
  客服E-mail : encrypt2@163.com
  【精明軟件開發團隊】

  运行“EncryptV2.0.exe”后主界面中可以看到“解除保护”按钮,但需要输入密码。根据《使用说明.txt》中留下的 QQ 号码和 email 地址,那哥们联系了所谓的“客服人员”,对方严正告知这是有偿服务,需要缴纳 280 元的服务费才可提供密码。
  除了“EncryptV2.0.exe”,当初那个负责“保护”文档的病毒样本已经消失无踪,不知是程序出于防分析目的而自毁,还是那哥们根据有限的杀毒知识胡改乱删给清除了。为简便起见,我试图用逆向工程方法绕过密码保护,让“EncryptV2.0.exe”自己还原文档。分析结果却让人哭笑不得,代码只有两个分支:1、没有输入密码;2、密码错误。
  此时如果不愿向流氓低头,就只有手动恢复文档了。通过 google 的搜索结果,大致可知勒索类软件从今年 6 月份左右在国内传播,而我哥们遇到的这个,在 8 月初才有人提到。这类病毒通常不采用文件过滤驱动等底层方法实现——有此心态的作者多半也深入不到这个层次。常用的手段是通过移动文件、修改目录名称、编辑 desktop.ini 文件、设置文件/目录属性、修改注册表等方式使文件不可见,只要逆向操作一遍即可还原。
  将 D 盘根目录下的“F0UND.0001”、“F0UND.0002”等目录中伪装成打印机的目录还原,发现有些是空目录,有些则完全是<system32>目录下的系统文件,文件创建日期均为 7 月 27 日,即病毒发作当日。由于没有原始病毒样本做辅助判断,这里只能猜测,病毒程序先将文档移动到“F0UND.0001”等目录下的子目录中,然后将文档全部删除,再用<system32>目录下的大量系统文件覆盖,最后还将这些子目录伪装成打印机目录。如此操作后,D 盘的磁盘空间占用没有明显变化,用户只能看到很多奇怪的目录名称,却无法察看其中内容,误认为文档就被藏在里面。另一目的则应该是,中毒用户即使修复并进入了这些目录,看到的也全是垃圾文件,无奈之下只有求助于“客服人员”。如果猜得没错,该病毒的做法与先“撕票”再索要赎金的匪徒无异。为了证实上述猜测,使用“FinalData2.0”在 D 盘中进行反删除操作,果然可以找到并恢复半数的被“保护”文档——另一半已经被大量垃圾文件覆盖而无法恢复。
  至此,文档恢复工作告一段落。我并不确信自己的猜测百分之百正确,所以也希望“有幸”遭遇该病毒的兄弟发给我一份样本以便进一步分析。

  
  附1:勒索类病毒隐藏文件的常用方法
  
  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”);目录下创建“desktop.ini”文件,设置为“系统、存档、隐藏、只读”属性(“+s +a +h +r”),内容如下:
  [.ShellClassInfo]
  CLSID={21ec2020-3aea-1069-a2dd-08002b30309d}
  其中不同的 CLSID 可以将目录伪装成控制面板、打印机、我的电脑、回收站等等。
  对策——命令行下通过“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          ; “使用说明”按钮
  0040C8B5  . 816C24 04 5F00>SUB DWORD PTR SS:[ESP+4],5F
  0040C8BD  . E9 7E7D0000  JMP dumped_F.00414640          ; “服务介绍”按钮
  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>; 与空字符串进行比较
  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