正在加载...
 
< Tencent QQ...
熊猫烧香病毒分析与解... >
勒索病毒分析 
 标签:安全研究 | 浏览数(1158) | 评论数(0) | 2007-01-03
作者:黄鑫(glacier②unnoo.com)

前几天接到一位朋友求助,说是硬盘里的文档、相片和 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 9B7C0000JMP dumped_F.00414550; “使用说明”按钮
0040C8B5  . 816C24 04 5F00>SUB DWORD PTR SS:[ESP+4],5F
0040C8BD  . E9 7E7D0000JMP dumped_F.00414640; “服务介绍”按钮
0040C8C2  . 816C24 04 6300>SUB DWORD PTR SS:[ESP+4],63
0040C8CA  . E9 617E0000JMP dumped_F.00414730; “团队介绍”按钮
0040C8CF  . 816C24 04 6700>SUB DWORD PTR SS:[ESP+4],67
0040C8D7  . E9 447F0000JMP dumped_F.00414820; “解除保护”按钮
0040C8DC  . 816C24 04 6B00>SUB DWORD PTR SS:[ESP+4],6B
0040C8E4  . E9 07810000JMP dumped_F.004149F0; “取消”按钮
......
00414820  > 55 PUSH EBP
00414821  . 8BEC  MOV EBP,ESP
00414823  . 83EC 0CSUB ESP,0C
00414826  . 68 E6104000PUSH  ; 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 F4MOV DWORD PTR SS:[EBP-C],ESP
00414845  . C745 F8 C81040>MOV DWORD PTR SS:[EBP-8],dumped_F.004010>
0041484C  . 8B75 08MOV ESI,DWORD PTR SS:[EBP+8]
0041484F  . 8BC6  MOV EAX,ESI
00414851  . 83E0 01AND EAX,1
00414854  . 8945 FCMOV DWORD PTR SS:[EBP-4],EAX
00414857  . 83E6 FEAND ESI,FFFFFFFE
0041485A  . 56 PUSH ESI
0041485B  . 8975 08MOV DWORD PTR SS:[EBP+8],ESI
0041485E  . 8B0E  MOV ECX,DWORD PTR DS:[ESI]
00414860  . FF51 04CALL DWORD PTR DS:[ECX+4]
00414863  . 8B16  MOV EDX,DWORD PTR DS:[ESI]
00414865  . 33FF  XOR EDI,EDI
00414867  . 56 PUSH ESI
00414868  . 897D E8MOV DWORD PTR SS:[EBP-18],EDI
0041486B  . 897D E4MOV DWORD PTR SS:[EBP-1C],EDI
0041486E  . 897D D4MOV DWORD PTR SS:[EBP-2C],EDI
00414871  . 897D C4MOV DWORD PTR SS:[EBP-3C],EDI
00414874  . 897D B4MOV DWORD PTR SS:[EBP-4C],EDI
00414877  . 897D A4MOV DWORD PTR SS:[EBP-5C],EDI
0041487A  . 897D 94MOV DWORD PTR SS:[EBP-6C],EDI
0041487D  . FF92 14030000 CALL DWORD PTR DS:[EDX+314]
00414883  . 50 PUSH EAX
00414884  . 8D45 E4LEA 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 E8LEA 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 A0000000PUSH 0A0
004148A8  . 68 C8BE4000PUSH dumped_F.0040BEC8
004148AD  . 56 PUSH ESI
004148AE  . 50 PUSH EAX
004148AF  . FF15 18104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaHresu>; msvbvm60.__vbaHresultCheckObj
004148B5  > 8B45 E8MOV EAX,DWORD PTR SS:[EBP-18]
004148B8  . 50 PUSH EAX
004148B9  . 68 DCBE4000PUSH dumped_F.0040BEDC
004148BE  . FF15 3C104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaStrCm>; 与空字符串进行比较
004148C4  . 8BF0  MOV ESI,EAX
004148C6  . 8D4D E8LEA 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 E4LEA ECX,DWORD PTR SS:[EBP-1C]
004148D9  . FF15 94104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaFreeO>; msvbvm60.__vbaFreeObj
004148DF  . B9 04000280MOV ECX,80020004
004148E4  . B8 0A000000MOV EAX,0A
004148E9  . 66:3BF7CMP SI,DI
004148EC  . 894D ACMOV DWORD PTR SS:[EBP-54],ECX
004148EF  . 8945 A4MOV DWORD PTR SS:[EBP-5C],EAX
004148F2  . 894D BCMOV DWORD PTR SS:[EBP-44],ECX
004148F5  . 8945 B4MOV DWORD PTR SS:[EBP-4C],EAX
004148F8  . 894D CCMOV DWORD PTR SS:[EBP-34],ECX
004148FB  . 8945 C4MOV DWORD PTR SS:[EBP-3C],EAX
004148FE  . 74 43 JE SHORT dumped_F.00414943
00414900  . 8D55 94LEA EDX,DWORD PTR SS:[EBP-6C]
00414903  . 8D4D D4LEA 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 A4LEA ECX,DWORD PTR SS:[EBP-5C]
0041491D  . 8D55 B4LEA EDX,DWORD PTR SS:[EBP-4C]
00414920  . 51 PUSH ECX
00414921  . 8D45 C4LEA EAX,DWORD PTR SS:[EBP-3C]
00414924  . 52 PUSH EDX
00414925  . 50 PUSH EAX
00414926  . 8D4D D4LEA 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 A4LEA EDX,DWORD PTR SS:[EBP-5C]
00414934  . 8D45 B4LEA EAX,DWORD PTR SS:[EBP-4C]
00414937  . 52 PUSH EDX
00414938  . 8D4D C4LEA ECX,DWORD PTR SS:[EBP-3C]
0041493B  . 50 PUSH EAX
0041493C  . 8D55 D4LEA EDX,DWORD PTR SS:[EBP-2C]
0041493F  . 51 PUSH ECX
00414940  . 52 PUSH EDX
00414941  . EB 41 JMP SHORT dumped_F.00414984
00414943  > 8D55 94LEA EDX,DWORD PTR SS:[EBP-6C]
00414946  . 8D4D D4LEA 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 A4LEA EAX,DWORD PTR SS:[EBP-5C]
00414960  . 8D4D B4LEA ECX,DWORD PTR SS:[EBP-4C]
00414963  . 50 PUSH EAX
00414964  . 8D55 C4LEA EDX,DWORD PTR SS:[EBP-3C]
00414967  . 51 PUSH ECX
00414968  . 52 PUSH EDX
00414969  . 8D45 D4LEA 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 A4LEA ECX,DWORD PTR SS:[EBP-5C]
00414977  . 8D55 B4LEA EDX,DWORD PTR SS:[EBP-4C]
0041497A  . 51 PUSH ECX
0041497B  . 8D45 C4LEA EAX,DWORD PTR SS:[EBP-3C]
0041497E  . 52 PUSH EDX
0041497F  . 8D4D D4LEA 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 14ADD ESP,14
0041498F  . 897D FCMOV DWORD PTR SS:[EBP-4],EDI
00414992  . 68 C8494100PUSH dumped_F.004149C8
00414997  . EB 2E JMP SHORT dumped_F.004149C7
00414999  . 8D4D E8LEA ECX,DWORD PTR SS:[EBP-18]
0041499C  . FF15 90104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaFreeS>; msvbvm60.__vbaFreeStr
004149A2  . 8D4D E4LEA ECX,DWORD PTR SS:[EBP-1C]
004149A5  . FF15 94104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaFreeO>; msvbvm60.__vbaFreeObj
004149AB  . 8D55 A4LEA EDX,DWORD PTR SS:[EBP-5C]
004149AE  . 8D45 B4LEA EAX,DWORD PTR SS:[EBP-4C]
004149B1  . 52 PUSH EDX
004149B2  . 8D4D C4LEA ECX,DWORD PTR SS:[EBP-3C]
004149B5  . 50 PUSH EAX
004149B6  . 8D55 D4LEA 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 14ADD ESP,14
004149C6  . C3 RETN
004149C7  > C3 RETN ; RET used as a jump to 004149C8
004149C8  > 8B45 08MOV EAX,DWORD PTR SS:[EBP+8]
004149CB  . 50 PUSH EAX
004149CC  . 8B08  MOV ECX,DWORD PTR DS:[EAX]
004149CE  . FF51 08CALL DWORD PTR DS:[ECX+8]
004149D1  . 8B45 FCMOV EAX,DWORD PTR SS:[EBP-4]
004149D4  . 8B4D ECMOV 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 0400RETN 4
http://www.i170.com/Article/53671/trackback

评论:

发表评论: