|
YAI的技术、法律与道德问题浅见
江海客
(seak@163.net)
一、关于YAI的本身的一些分析。
首先,我认为从技术角度严格定义,说YAI是黑客程序或病毒程序,都不够准确,应该说YAI是一种远程控制工具。关于远程控制工具可以完成的工作和YAI本身的一些功能,相关报道比较多,YAI作者杜江自己的介绍为: YAI提供了30多种远程监视、管理及控制命令,功能强大。使用者可在本地方便地操作远端目标计算机,包括获取目标计算机屏幕图象、窗口及进程列表, 记录并提取远端键盘事件(击键序列),打开、关闭目标计算机任意目录的资源共享,提取拨号网络及普通程序口令、密码,激活、终止远端进程,打开、关闭、移动远端窗口,控制目标计算机鼠标的移动与动作,交换远端鼠标的左右键,在目标计算机模拟键盘输入,浏览目标计算机文件目录,下载、上装文件,远程执行程序,强制关闭WINDOWS、关闭系统(包括电源)、重起系统,提取、创建、修改、删除目标计算机系统注册表关键字,在远端屏幕上显示消息,启动目标计算机外设进行捕获、播放多媒体(视频/音频)文件,控制远端录、放音设备音量,远程版本升级更新等等。 同一切C/S模式的远程控制工具相同,YAI同样分为SERVER端(被控端)和CLIENT端(控制端),SERVER端是作为一个32位模块在被控端加载。而client端则是一个GUI界面的程序,有部分功能依靠按键实现,而大部分功能则依赖命令行的方式实现。 由于笔者虽然拿到了YAI的两种SERVER端版本,但是并没有拿到其设置工具、设置文件和说明文件。因此只能简单分析一下。可能不够准确。 SERVER端未安装版本(7月29日版本),278,528字节,运行后生成odbc16m.exe,275,156字节,目标目录为winboot%/system%/(按照WIN9X的默认安装就是windows/system)。可以看出该软件并非象某些某些木马只是简单的把自身COPY到目标目录下。目前流传SERVER端可能有多个版本,比较常见的是通过,修改注册表的方式开机执行的版本,添加主键的位置大家很容易猜到,是HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run键名为SysAllc指向生成的odbc16m.exe。而得到的,则还有一个并不添加此键值的版本,完全依赖对系统文件的修改感染而保证在系统中运行。 与一切远程控制工具相类似,YAI SERVER端也要开放端口,与client端连接,YAI采用TCP连接,默认端口是1024,但也可以通过client端的操纵动态改变,与其他的工具所采用的对SERVER端进行初始设定的方法更有特点。值得注意的是,在其下拉提供的端口列表中,有一个137,应当说,对NETBIOS开放的机器,137是一个正常的打开端口。同时YAI可以密文传输控制指令,这一点比以往的国产工具有了一定进步。 YAI的一个有特色之处是他的图标,YAI选择了一个正常情况下,没有默认打开方式的文件的常见图标作为系统图标,由于WINDOWS安装后的默认方式为隐藏已知类型文件的扩展名。所以,采用这种设置的用户会误认为这是个没有扩展名的文件,对这种文件很多用户出于好奇会双击他选择一种方式去打开,结果此时就使程序被执行。 YAI的另一个特点是其自我保护的意识,由于很多用户都知道用netstat -an命令查看所有本机连接,因此YAI屏蔽了netstat命令,但这种屏蔽即不是通过网络方式完成的,也不是通过修改NETSTAT.EXE本身完成的,而是通过操作捕获的方式完成的。这意味着,即使你仅仅是把netstat.exe修改一个名字,YAI对此就不在起作用。另外YAI为了防止用户通过类似ctrl+alt+del方式查看到他的存在,采用了一些技巧,当然,类似方法在其他一些同类工具中也能被找到,我会另用文章论述。同时,YAI的SERVER端做了压缩和一定的反跟踪处理,使静态和动态的方式都不容易分析。 但与此相矛盾的是YAI又有自我暴露的特点,YAI的SERVER端在被控制的时候,会在屏幕上出现一个红心的图案,点击这个图案,会看到控制者的IP。这一点还未见于其他工具,这也足可说明作者的非恶意性。 其实YAI与其他后门工具最大不同,在于其有一种崭新的对SERVER端的依附方式,那就是其可以通过改变预定设置,使之激活对用户可执行程序进行寄生的特性。由于此时的YAI SERVER具有了自我复制的特点。由于自我复制是文件性病毒的根本判据,可以说,此时的YAI的SERVER端,具有明显的病毒特性。但YAI的寄生特性激活后,并非向CIH一样,感染一切PE程序,他只是逐渐的有选择的感染部分PE程序。这个感染列表与YAI SERVER的版本有关。 但YAI与传统的文件性病毒又有很大不同,传统的病毒一般都是寄生程序的大小愿小于宿主。但我们可以看一下write.exe和control.exe感染后的情况。
程序名称 正常字节数 感染后字节数 增加字节数 Write.exe 20,480 277,010 256530 Control.exe 2,155 276,534 274,379 可以看出寄生程序远大于宿主,这种状况在以往是异常罕见的,同时寄生后,程序增长的字节并不固定,这主要是因为,该程序感染手法与传统文件型病毒不同,传统文件形病毒一般是把自己附着在原有程序文件尾部或头部,通过修改文件头指向自身,使每次程序运行时自身被执行后再执行正常程序。而YAI则是通过把正常程序,嵌入自身的方式来进行。被YAI感染的程序的特性与版本也有关系,早一点的版本运行后,会检查 WINBOOT%/SYSTEM%下是否有ODBC16M.exe如果没有会拆离出这个文件,而后来版本则直接本目录运行,这就是所谓.tmp文件的由来。 YAI带来的一个问题是程序的BUG会造成用户正常程序的无法运行,当然用户被感染后遭到远程控制也会带来一些不可预测的影响。
二、关于YAI涉及的法律与道德问题。 在上海杨威黑客案后,我曾写了一篇立意为无罪辩护的文章,今天通过对技术和事实的了解。我同样认为杜江无罪。 关于本案的定性基础,是基本的事实依据,技术分析和法典判定,一些媒体和反病毒厂商的定性和炒做并不能成为依据和参考。而一些说法则都值得商榷。 1、YAI是恶意或恶性的吗?虽然很多报道定性YAI为恶性病毒,但必须指出恶意,也好、恶性也吧,指的不是结果,而是主观遗愿。如果是因为YAI的BUG的问题,那么BUG显然不是作者有意所为,如果是因为运行YAI SERVER端程序的人,遭到了远程控制者的破坏,那么只要该控制者不是杜江,就与杜江没有关系。不要说恶意,应该说杜江连写病毒的主观故意都没有,因为病毒的制造者是以传播或破坏为目的,很简单,杜江加入这一特性是为了增强控制的可靠性,而不是要传播SERVER端本身。必须承认YAI作者本身并不存在主观故意的破坏性,称为恶意或恶性毫无根据。 2、YAI的潜伏期很长吗?病毒的潜伏期是指由感染到触发破坏条件的时间,而因为YAI本身并不存在触发破坏条件的问题(因为并不存在以破坏为目的的判定条件和破坏程序段),所以YAI根本没有潜伏期的问题,如果,潜伏期很长是指YAI并非向CIH那样疯狂的感染一切PE程序,而是逐渐感染部分程序的话,那么首先,这就不是潜伏期长,而是感染率低。那么既然感染力比较弱,则大家都明白病毒的生命力与感染率是成正比的。既然承认感染率低,那么另一种说法又不能成立了,既然感染率低,何来YAI病毒的大流行呢? 3、杜江是投毒者吗? 本案的当然需要公安机关对YAI进行科学定性,但是笔者认为,本案的真正关键在于,即使界定了YAI的某一流传SERVER端版本是一个病毒的话。也无法推导出杜江是投毒者的结论。因为,由YAI流传的某一SERVER端是一个病毒推出YAI是一个病毒再推出杜江是投毒者这一貌似正确的推导实际并不能成立。首先,杜江对自己的行为负责到哪一环节?我认为,杜江的行为从编制程序起始到上传文件为止,也就是说,杜江只对其上传到网站的程序和此时程序的默认设置负责,这种负责在于此时的程序是否有病毒特性,也包括 作者是否对使用其程序和改动设置的一切可预见后果做了说明。毫无疑问,没有修改过设置的YAI客户端并不是一个有自我复制特性的程序,也毫无疑问,作者并未欺骗下载者,对其程序的特性做了说明。 而YAI的使用者对YAI默认设置的调整和使用带来的一切后果完全应该由使用者负责,而与杜江无关。这个理由很简单,比如说有人用老鼠药杀人,罪犯是下毒者而不是制药厂。说句最通俗的就是,YAI并不是在杜江手里变成病毒的。 远程控制工具的作者是否有罪,我想很明确一点就是,我们应当参考信息技术发达国家处理。应当说,保持宽松的IT氛围和严格执法界限一样重要,前者保证IT精神的活跃,而后者保证其有序。拉斯维加斯的黑客大会是公开的,黑客不会担心被"一网打尽",尽管会上发布的BO2K不幸感染了CIH,但也没有人说死牛祭祀是"播毒者"。我想,任何一个国家IT如果想有巨大的发展,必须考虑到一个宽松的政策环境的支持,IT是需要精益的黑客精神和梦想的。 在认为杜江无罪的同时,我并非认为杜江没有什么责任。特别我认为难以原谅的是他突破了远程控制工具的底线。以往的大量远程控制工具,无论选择注册表、LOAD选项还是WINBOOT选项,都是以不影响用户文件为前提的。即使如HAPPY99这种蠕虫式的东西,虽然修改了wsock32.dll但也给用户留下了备份。其实谁都清楚,感染正常文件比其他方式更可靠。但这决非一个技术界限,也不存在什么技术难题,而是一个黑客的道义界限,而杜江恰恰(也许是无意)的突破了这个底线。也许,这个后果,可以和宏病毒的源码第一次公开类似,无论始作俑者的初衷如何,潘多拉盒子里的魔鬼一旦释放,就难以收回。 但就事论事,我觉得杜江的定性是,一种违法而非犯罪行为。但无论杜江本人,还是我们每一个程序员,都值得从此事中反思,也许,在一些领域,我们宁可让自己的预见力保持寂寞,也不要去做一个打开潘多拉盒子的先知。
(这是为CPCW网站写的专稿,在该站发表时分成了两篇文章。)
(CPCW,1999-11)
|