点饭的百度空间
银牌会员
     
积分 2315
发帖 2236
注册 2007-11-30
|
#1 病毒即将三分天下,我们应该如何去面对
* 记得N年前知道有计算机病毒这一名词的时候,就有大牛说计算机病毒是同时具备操作系统与编程技术的高手才能够写出来的程序,现在回想的确不为过,道高一尺魔高一丈,传统杀毒软件都是在跟着计算机病毒的后面跑,如果真的不存在计算机病毒杀软也就成了废物,而且还浪费计算机资源。但是如今黑客产业的壮大、相关法律的不完全,都意味着计算机病毒根本就不会消失,而是一步一步的向我们的计算机系统靠拢,如果你的周围已经被病毒蠕虫弥漫的时候,那么应该怎么办?难道要每天都给硬盘分区格式化,或者拼命加内存让硬盘只读不写?所谓上有政策下有对策,这种趋势只会使得计算机病毒硬件化,到那时候估计计算机硬件与维修是最赚钱的了,每天写固件都可以赚到相当可观的一笔财富,到那是杀软只不过起一个杀毒后提醒你去修机器的作用,安装了反而要担惊受怕的,想想看,安装了查到病毒又得花钱去修机器,不安装又怕自己中了病毒不知道,其实问题只出在我们太被动,被动就容易被欺负,不要吵我中了某某病毒杀不掉、重启后又删除不了,那都是活该的,只能够怪你伸着脖子被人宰,又怪得谁呢?
主动一些才可以未卜先知,主动一些才可以反客为主。其实病毒每运行一步都会调用相关的API函数,无论是原生的还是封装的,当然不排除操作系统多如牛毛的年代,那时候病毒估计直接中断CPU了,软件防御也就失去了它的最大意义,要CPU内部做防火墙才可以。毕竟现在不是那个中断CPU的年代,所以防御还是很有用的,不会中毒的系统系统资源永远都是浪费最少的。
最近一两月病毒技术可谓是更新换代,瞧瞧都有什么……
一、映像劫持
自从出了一个美女游戏后,IFEO就被人吵的沸沸扬扬的,其实那个算不起真正的映像劫持,只不过找到微软的一个小缺口作了一个思维的小小过渡,把运行A过渡到B形象化了一些,真正的映像劫持是在内存中进行的,NtCreateProcess或NtCreateProcessEx一个进程空壳后没有载入主线程映像(明天看下是不是没有NtCreateThread主线程,NND双核AMD的机器装不了ice郁闷死,),而是而是把另一个进程的代码写入这个进程空壳并激发,所以被写入代码的进程是看不到主线程映像的,因为它的映像不在本地硬盘上存放。
二、驱动化
接触到带有驱动的病毒后,第一感觉就是它的顽固,无论是流氓程序还是后门间谍,一旦它的驱动驻留到系统内核后,除了重启延时删除,直接在内存中卸载几乎是不可能的,因为它门门操作系统的关系实在太密切了,所以只能够在没有加载的将这类顽固病毒清除,一旦清除机制没有病毒驱动加载的时间早,那么这个驱动就可以尽情发挥了,锁定文件、锁定进程、锁定注册表……以及各式各样的Rootkit技术被发挥淋漓尽致,这不过是病毒顽固化的一种,还称不上驱动化,因为这个驱动除了为病毒主体作辅助之外没有体现出其他的性质。真正的驱动化病毒是完全不依赖三环中的程序但能够体现出病毒性质的设备驱动程序文件,当然这种病毒还在过渡中,不久的将来可能会出现,但半驱动化病毒已经浮现,runtime2就是一个很好的例子,由驱动直接吐出exe文件,exe在去吐驱动、驱动在互守、开IE相辅相成配合完成病毒后门工作,这种病毒清除起来已经很不容易了,至少我所知IceSword、Rootkit Unhooker、Wsyscheak全部挂彩了,其他的估计也类似,不做评论。半驱动病毒威力如此可观,全驱动病毒该如何面对?
三、感染
感染文件是病毒寄生自身的一种很好的方式,有着隐蔽、攻击主动的多种“好处”,但如果被发现也就面临着死亡,所以这里不讨论捆绑式感染和节感染等感染方式,而把重点放在被感染的文件上。倘若被感染的是一个普通的PE文件,我们可以用杀软清除掉,感染强度高的大不了直接删了,那么被感染的是重要的系统文件呢?见过几例大致写一点:
1、机器狗驱动写扇区,绕过了SFC,因为Winlogon没有追上去userinit被感染了,删除后重启系统瘫痪。
2、通过某种方法绕过SFC替换修改过的services,SCM启动后将病毒dll作为自身模块加载,那时杀软服务还没有启动,如何清除?
3、感染系统某驱动,给驱动追加病毒驱动路径以及初始化代码,系统驱动加载病毒驱动,病毒驱动初始化病毒主程序,没有启动项如何手杀?
4、直接感染系统执行体,硬方式修改系统服务中断地址到病毒驱动,病毒被杀,系统崩溃。
以上的几个例子已经充分的体现出了病毒技术的内核过渡,重在防御,不在清除(删除更是弱智的行为),因为有了防御的把握才可以使得清除更容易一些。
BY:孤单每一天
半驱动后门s_126_0(1).htm 部分分析

File: s_126_0(1).htm
Size: 103944
MD5: 03F280ED4954EBD13845B565430512C8
MZ头经过特殊修改,纠正后Size: 103940,释放驱动runtime2.sys,创建同名符号连接


File: runtime2.sys
Size: 35328
MD5: 6EFD54265E8CA123ADB4CA119427A8E7
1、修改ZwOpenFile系统服务的地址实现文件隐藏
2、判断操作系统版本号是否为2000、XP、2003
.text:000105E2 ; Attributes: bp-based frame
.text:000105E2
.text:000105E2 sub_105E2 proc near ; CODE XREF: NotifyRoutine+D p
.text:000105E2
.text:000105E2 arg_0 = dword ptr 8
.text:000105E2 arg_4 = dword ptr 0Ch
.text:000105E2
.text:000105E2 mov edi, edi
.text:000105E4 push ebp
.text:000105E5 mov ebp, esp
.text:000105E7 mov eax, ds:NtBuildNumber
.text:000105EC movsx eax, word ptr [eax]
.text:000105EF cmp eax, 893h
.text:000105F4 push esi
.text:000105F5 jz loc_106A1
.text:000105F5
.text:000105FB cmp eax, 0A28h
.text:00010600 jz short loc_10665
.text:00010600
.text:00010602 cmp eax, 0ECEh
.text:00010607 jnz loc_106E2
3、调用ZwCreateFile、ZwWriteFile创建文件SystemRoot\Temp\startdrv.exe
mov edi, edi
push ebp
mov ebp, esp
sub esp, 28h
push esi
push [ebp+Handle] ; SourceString
lea eax, [ebp+DestinationString]
push eax ; DestinationString
call ds:RtlInitUnicodeString
xor esi, esi
push esi ; EaLength
push esi ; EaBuffer
push 60h ; CreateOptions
push 3 ; CreateDisposition
push 1 ; ShareAccess
push 80h ; FileAttributes
lea eax, [ebp+DestinationString]
mov [ebp+ObjectAttributes.ObjectName], eax
push esi ; AllocationSize
lea eax, [ebp+IoStatusBlock]
push eax ; IoStatusBlock
lea eax, [ebp+ObjectAttributes]
push eax ; ObjectAttributes
push 40100000h ; DesiredAccess
lea eax, [ebp+Handle]
push eax ; FileHandle
mov [ebp+ObjectAttributes.Length], 18h
mov [ebp+ObjectAttributes.RootDirectory], esi
mov [ebp+ObjectAttributes.Attributes], 240h
mov [ebp+ObjectAttributes.SecurityDescriptor], esi
mov [ebp+ObjectAttributes.SecurityQualityOfService], esi
call ds:ZwCreateFile
cmp eax, esi
jl short loc_108BF
4、调用ZwOpenKey、ZwSetValueKey、ZwCreateKey创建驱动注册表键值实现跳过最后一次正确配置且加载入安全模式(代码太长,略!)
5、取磁盘对象类型挂FSD,再次实现文件隐藏
6、修改系统服务分发表实现注册表rootkit
; Attributes: bp-based frame
sub_1286E proc near
var_4= dword ptr -4
mov edi, edi
push ebp
mov ebp, esp
push ecx
cli
mov eax, cr0
mov [ebp+var_4], eax
and eax, 0FFFEFFFFh
mov cr0, eax
mov ecx, ds:KeServiceDescriptorTable
mov ecx, [ecx]
mov eax, ds:ZwOpenKey
mov eax, [eax+1]
mov dword ptr [ecx+eax*4], offset loc_12192
mov ecx, ds:KeServiceDescriptorTable
mov ecx, [ecx]
mov eax, ds:ZwEnumerateKey
mov eax, [eax+1]
mov dword ptr [ecx+eax*4], offset loc_1224A
mov ecx, ds:KeServiceDescriptorTable
mov ecx, [ecx]
mov eax, ds:ZwEnumerateValueKey
mov eax, [eax+1]
mov dword ptr [ecx+eax*4], offset loc_12412
mov ecx, ds:KeServiceDescriptorTable
mov ecx, [ecx]
mov eax, ds:ZwSetValueKey
mov eax, [eax+1]
mov dword ptr [ecx+eax*4], offset loc_125DA
mov ecx, ds:KeServiceDescriptorTable
mov eax, ds:ZwDeleteValueKey
mov eax, [eax+1]
mov ecx, [ecx]
mov dword ptr [ecx+eax*4], offset loc_12730
mov eax, [ebp+var_4]
mov cr0, eax
sti
leave
retn
sub_1286E endp
File: STARTDRV.EXE
Size: 20992
MD5: E848A7316C8F8C502EB3BD370E456E2A
释放驱动ip6fw.sys替换XP墙驱动、释放runtime.sys,后台开启IE连接一个google的空间(忘了,好像还有SMTP)


File: ip6fw.sys
Size: 29056
MD5: 281486D13A98744ACE4C478E555E30B6
1、创建符号连接Restore与NDIS.sys实现通讯
2、查询系统信息查找系统执行体ntoskrnl.exe、ntkrnlpa.exe、ntkrnlmp.exe、ntkrpamp.exe,不放过任何硬件平台(CPU)
3、取操作系统版本(2000、XP、2003)获取系统服务个数,创建系统服务描述符表替换所有系统服务
File: runtime.sys
Size: 5504
MD5: 9F46A485B86CAAFB1910B05010E2E7CC
创建同名符号连接配合ip6fw.sys阻断Tcpip通讯,实现底层挂钩SPI,所以中此病毒者计算机所有通过TCPIP协议进行内部通讯的软件都会受到阻碍。
微点清除方法:
中毒后在运行微点可能会发生通讯受阻的问题,重启计算机后微点自动删除病毒驱动runtime.sys,删除ip6fw.sys后dllcache会自动还原系统默认驱动,微点的可疑文件扫描可以手删runtime2的启动项,然后重启计算机,
BY:unknown tycoon
[ Last edited by 点饭的百度空间 on 2008-11-25 at 21:20 ]
|
※ ※ ※ 本文纯属【点饭的百度空间】个人意见,与【 微点交流论坛 】立场无关※ ※ ※
|
 |
|