- 注册时间
- 2005-4-23
- 最后登录
- 1970-1-1
|
发表于 2006-7-18 17:22:00
|
显示全部楼层
Alv-Virus是一个具有溢出感染、自隐藏、反修复、红外感染、内核感染等技术特点的嵌入式平台上的高级病毒
其执行平台为文曲星电子辞典的NC2000\NC2600\NC3000\TC1000\TC1000S\PC2300\PC2000\TC808等等
由于这些机器采用了开放式软件平台设计,都是其厂商销量最好的产品,估计总数在千万台以上,网络上每天有数千计的用户从官方和非官方网站上下载电子图书,应用程序,音乐文件到这些机器上,不可不视为一个重要的嵌入式平台
Alv-Virus的病毒原体被嵌入到一个EBK电子书文件中
===================================
EBK是文曲星系列电子辞典上通用的一种电子图书,其官方浏览器存在一个溢出漏洞,黑客可通过构造一个超长的图像文件结构使EBK文件内含的代码得到执行
该漏洞发现者为QIQI,触发方法尚未对外公布过
已提交给厂商,至今未有反应
===================================
当用户使用官方EBK浏览器(txt_viwer.bin)打开了含有恶意代码的EBK文件,EBK浏览器将被关闭,而恶意代码将得到执行权限,可以对系统任意资源进行操作,当然在所需要的操作结束后,也可以恢复EBK浏览器并还原给用户一个正常的电子图书,Alv-Virus就是这么作的
Alv-Virus得到执行权限后会作如下操作:
1.修改系统BOOT ROM里的自修复代码,该自修复代码存在于一个被特殊电路保护的Boot Rom中,用于系统损坏时通过联机或和PC修复工具通讯进行系统的修复,Alv-Virus通过特殊的技术写入该块FLASH ROM,将修复部分破坏,破坏后使用联机修复或PC工具修复会返回成功,但实际上起不到任何作用
用于Anti以下修复方式:
<1>.NC2kunit
数名非官方高手编写的系统存储器Dump/Recover工具,通过PC端的程序和连接线对机器进行修复,Alv-Virus可使其无法正常载入ShellCode,无法修复
<2>.WQXDoctor
该软件是非官方高手编写,可修复系统内核,号称可修复一切软件故障,但修复不了Alv-Virus 
<3>.联机修复
该功能是厂商编写,可以通过特殊的连接线将一台完好的机器内容COPY到故障机器,修复该机器,Alv-Virus执行后该方法仍可进行,但不会执行真正的修复工作
2.修改Irda红外传输部分,进行传播
==============================
NC2600/NC2000/NC3000系列机器使用一个IRDA红外口进行文件传输,很多用户使用该功能交流他们的程序、电子书、音乐和图片等
====================================
Alv-Virus会修改内核中的红外通讯部分,当用户使用该功能时,Alv-Virus会将自身作为一个可执行程序传输到对方机器上,等对方用户运行该程序,就会感染Alv-Virus
3.隐藏自身
Alv-Virus会将自身的代码复制到用于数据存储的Nand Flash的一个分区内,然后在Super Block里的坏块清单里将该区块标志为坏区,这样无论是从文件系统上来看,还是利用一些Nand flash编辑器比如WQXHex(By sun),WQXdebug(By QIQI)都无法看到这些代码的存在,因为他们都只是调用了一些逻辑层的读写函数,而坏块清单则将Alv-Virus所在的区快排除在所可操作区块中
4.嵌入内核,实现自启动
Alv-VIrus会将一小段启动代码放入Boot rom里的热启动代码中,每当系统热启动时就会执行该启动代码,该代码会将隐藏的Alv-Virus代码读出来,使之运行
5.其他一些Anti措施
<1>.Anti-wqxhex:
wqxhex是SUN编写的一个非常强大的DEBUG工具集,可以直接对内核数据进行读写,在QIQI修改的版本中,还具有读写NAND FLASH区块的功能
Alv-Virus会将一个检测代码注入wqxhex需要调用的一个重要API中,当wqxhex启动并调用该API时,检测代码也随之运行,检测内存中是否有wqxhex存在,如果有,关闭之
<2>.Anti-WQXdebug,Anti-Tools2600.Anti-Tools2K:
这三个程序都是QIQI编写或移植的DEBUG工具,ANTI的方法同Anti-wqxhex类似,也是注入那个重要 API并检测内存,如果有它们存在就强行使其退出
<3>.Anti-Format:
系统格式化API可以格式化整个用户数据区,但不会影响存在于"坏区"中的Alv-Virus代码
6.发作
随内核启动的启动代码会检测系统当前时间,如果符合为设定的时间,则启动破坏代码
该破坏代码分3部分执行:
<1>.物理格式化整个Nand flash,将所有的区块全部擦除,由于Nand flash是电子存储介质,恢复可能=0
Nand flash存放着系统数据和用户下载数据
<2>.格式化普通内核,格式化位于Nor flash(存放内核数据)$0001-$000f区块的内容全部擦除,此时几乎大部分API已不可用,另外用户存储的个人信息包括名片,记事等也全部消失
<3>.格式化Boot Rom
将32KB的Boot Rom全部擦除,随之,系统将无法启动,并且无法通过任何已有手段进行修复。只能更换主板
由于破坏中所有的 API,都不可用,而且中断向量也会被破坏,破坏代码不调用任何API,并关闭中断,破坏完毕后会在屏幕上显示一段文字"All Lost",并将reset和nmi中断向量指向该显示程序在内存中的地址,那么系统会死锁在这段文字上,即使按下Reset键仍然会如此,直到系统电力耗尽自动关闭为止。
综上,该病毒具有以下特点:
溢出感染:通过常见的EBK电子书文件进行传染,无任何不正常反应,难以被发现
红外传播:扩大了感染范围
感染内核:通过感染内核程序实现了随系统启动,反检测工具,反修复工具的功能
隐藏自身:通过Nand flash坏区表来隐藏自己所在的区块
其中以下技术为作者原创:
EBK溢出漏洞触发技术
红外通讯感染传播技术
擦写BootRom技术
Hook系统API技术
Nand flash区块隐藏技术
以下技术为首次公开:
EBK溢出漏洞触发技术
红外通讯感染传播技术
Nand flash区块隐藏技术
病毒的预防、检测与修复
1.预防:
为txt_viewer补丁,修复原来的溢出漏洞
2.检测
<1>.检测携带病毒的电子书文件
检测EBK文件是否存在超出正常的图像结构
<2>.检测已存在的Alv-Virus
Alv-Virus可被已下方式检查到:
(1).使用系统的坏区检测功能会发现多出一个物理坏区,该坏区就是Alv-Virus用于隐藏自己的区块
(当然我也可以HOOK掉这个坏区检测功能,使其不显示自己所在的坏区块,或者使用其他的隐身技术比如将自己复制到保留区(768KB reserve-Area,for bad block use)或者冗余区(中,详细技术见我的另一篇文章<<Hide file/data form gfffs or any other nand flash file system>>)
(2)检测内核数据
由于文曲星平台上几乎所有可读写内核的DEBUG工具都被Alv-Virus屏蔽了,所以只有自己写一个简单的检测内核的程序了,检测一下内核的热启动程序的入口是否被修改,如果被修改了,那么说明Alv-Virus(other virus?)存在
(可检测的地方还有内核的修复代码、红外代码、以及被HOOK掉的api)
3.修复
修复只能在Alv-Virus发作前进行,如果已发作,那么就之有更换系统主板一条路了
检测到Alv-Virus感染后,只要修复热启动部分被修改的入口就可以了,将这里还原就可以防止病毒发作了
不过仍然是要自己编写代码擦写那块Boot rom,比较危险
另外的方法有清除那块"坏区"中的病毒代码,不过仍然是要自己写代码,而且需要直接操作IO
还有为了解决debug工具无法载入及病毒会通过红外传播的问题,需要修复被 HOOK的API和被修改的红外通讯部分代码
|
|