Unknown Subjects
在过去几年中,纯粹由于偶然的原因,我发现了一种极其高明的木马程序。我知道看雪论坛是一个高手云集的地方,所以想就我所知将这种木马程序尽可能描述一番,供大家参考。在本文中我将这种木马程序称为US,意思是Unknown Subjects,相信你知道这个词的出处^_^
US具有以下特征:
1。 没有任何进程或者文件。这并不是因为US的进程和文件被隐藏起来了,而是在我的文件系统中根本就没有US的文件,在我的OS中也没有一个属于US的进程在运行。
2。 同样,在我的OS中也没有任何属于US的IP连接,甚至没有句柄等内核对象。
3。 US可以通过网络传送安装,如果将另外一个硬盘挂接到感染了US的机器上,US可以感染这个硬盘,从而感染另一台机器。
4。 格式化硬盘,恢复或者重新安装操作系统不会影响US。
5。 US将一部分硬盘空间隔离出来供其使用,就我所见大小从10M到15G不等。
6。 US的运行持续占用大量CPU时间,如果是安装在笔记本电脑上,这会导致电脑发热明显异常,在没有运行什么软件的情况下CPU也会烫手,这意味着US持续占用CPU至少%20。
7。 在硬盘的保留扇区可以看到类似代码的东西,而且你在0扇区看到的分区表并不是正在使用的分区表,0扇区的mbr被保留扇区中的另一个扇区(我这里是5扇区)李代桃僵了。
8。 US会干扰所有版本DOS的运行,要么出错要么死车,每次都不一样。
9。 如果试图在Windows下刷新bios,US会假装进行刷新操作,但是刷新的时候没有喇叭哔哔的声音,如果试图从DOS启动进行刷新,US不让DOS正常运行。
10。US会对bios和mbr中的代码进行保护,如果不能完全清除藏在硬盘中的代码,仅仅刷新bios或者重写mbr根本不起作用。
11. US会在Windows中安装两个名为“未知设备”的硬件设备,如果你删除了一部分US的代码,这两个设备就会暴露出来,系统会要求为其安装驱动程序。US应该是通过这两个设备监控用户操作。
在过去的几年中我断断续续接触到US,观察到US的程序员不断将其改进升级,可以这样说:US是我看着长大的^_^。就我所见,这些年来US做了如下改进:
1。 过去的US会专门为自己创建一个分区,这个分区不会被格式化硬盘,恢复或者重新安装操作系统所影响,重新分区或者重写mbr也没有作用,但是在安装操作系统的时候会看到一个不属于我的分区。现在的US会在属于我的分区后面切下一块,如果不仔细审计核对根本不会发现,安装操作系统的时候则没有任何异常。
2。 过去的US在恢复系统以后需要进行两到三次bootkit攻击才能重新控制系统,每次攻击完毕给我留下的是黑屏,直到攻击成功以后我才能正常启动。现在的US已经无需这样做了,每次我恢复系统它已经就绪了,就好像它完全不存在一样。
可以肯定所有读者都会对我的描述表示怀疑,怀疑我的叙述是否真实。相信你的第一个问题一定是:我是如何发现US的呢?几年前我发现US就是看见那个不属于我的分区,以及恢复系统后必须经历的两到三次黑屏。最近这次首先因为这是一个笔记本电脑,发热异常严重;其次是硬盘保留扇区有可疑代码;最主要的是我将硬盘上一个30G的分区摘除,将其分为三个较小的分区,每个分区格式化后的可用空间约10G左右,然后将一个5G的文件复制到这三个分区,系统居然报错说没有足够的硬盘空间!这下露出了狐狸尾巴。事实上我将计算机修复以后,硬盘容量足足增加了15G!
关于US,我有一些基本的判断:
1。 US毫无疑问挂接了bios,这可以保证它先于我的操作系统获得控制。
2。 US的代码虽然也在硬盘上,但是却不在我的文件系统的控制范围之内。
3。 US抢先启动,运行在我的操作系统下面,使用的应该是实模式,以某种机制截取一定的CPU时间,对用户操作进行监控。其设计理念就像是在操作系统上面启动一个虚拟机一样,只不过在这里我的操作系统变成了上层的虚拟机,如果底层的系统不提供接口,位于上层的虚拟机无法访问底层系统的任何变量。US正是这样设计的,它启动完成以后才启动位于上层的操作系统,操作系统根本感觉不到US的存在:没有文件,没有进程,没有内核对象。
4。 US至少有三处可以互相保护的启动入口,bios, mbr或者启动扇区,Windows内部,这三处入口只要有一处启动就可以对其他两处进行维护,所以常规方法刷新bios,格式化,重新分区,重写mbr以及重装操作系统都不会奏效。
5。 US的代码量非常大,应该有一个庞大的团队在开发维护。
如何才能发现US呢?我提供如下几条作为参考:
1。 对硬盘进行审计,计算所有分区大小的和是否大致等于硬盘铭牌标识的数值。也可以像我那样做一些摘除分区,重新分区的野蛮操作。
2。 查看硬盘保留扇区是否有代码摸样的数据。
3。 计算机是否发热异常。
这三条中第一条比较可靠,其他两条不足以说明问题,因为别的恶意软件也会在保留扇区保存代码,计算机发热也许是风扇故障。
怎样才能清除US呢?也简单,将硬盘摘下,刷新bios(此时干扰DOS的代码无法运行);然后将摘下的硬盘挂接到另外一台机器上,把所有扇区清零。如果你没有摘下硬盘直接刷新bios也有可能成功,因为US用于干扰DOS的代码不太稳定,不保证每次都能正确挂接DOS中断。如果你不摘除硬盘直接清零扇区数据,就会导致只能删除部分US的代码的结果,因为US只对一些关键代码进行保护,此时将出现US无法为“未知设备”安装驱动程序的情形。
还有一个问题:US到底是谁编写的呢?其实我心里是有相当肯定的怀疑对象的,但是我不会像美国人那样随便指责中国黑客攻击了他们的计算机。
由于一些个人原因,我准备金盆洗手不再从事计算机安全方面的研究了,希望这篇文章对后来的研究者有所帮助。引用迈克。杰克逊的那句话:This is it.
在过去几年中,纯粹由于偶然的原因,我发现了一种极其高明的木马程序。我知道看雪论坛是一个高手云集的地方,所以想就我所知将这种木马程序尽可能描述一番,供大家参考。在本文中我将这种木马程序称为US,意思是Unknown Subjects,相信你知道这个词的出处^_^
US具有以下特征:
1。 没有任何进程或者文件。这并不是因为US的进程和文件被隐藏起来了,而是在我的文件系统中根本就没有US的文件,在我的OS中也没有一个属于US的进程在运行。
2。 同样,在我的OS中也没有任何属于US的IP连接,甚至没有句柄等内核对象。
3。 US可以通过网络传送安装,如果将另外一个硬盘挂接到感染了US的机器上,US可以感染这个硬盘,从而感染另一台机器。
4。 格式化硬盘,恢复或者重新安装操作系统不会影响US。
5。 US将一部分硬盘空间隔离出来供其使用,就我所见大小从10M到15G不等。
6。 US的运行持续占用大量CPU时间,如果是安装在笔记本电脑上,这会导致电脑发热明显异常,在没有运行什么软件的情况下CPU也会烫手,这意味着US持续占用CPU至少%20。
7。 在硬盘的保留扇区可以看到类似代码的东西,而且你在0扇区看到的分区表并不是正在使用的分区表,0扇区的mbr被保留扇区中的另一个扇区(我这里是5扇区)李代桃僵了。
8。 US会干扰所有版本DOS的运行,要么出错要么死车,每次都不一样。
9。 如果试图在Windows下刷新bios,US会假装进行刷新操作,但是刷新的时候没有喇叭哔哔的声音,如果试图从DOS启动进行刷新,US不让DOS正常运行。
10。US会对bios和mbr中的代码进行保护,如果不能完全清除藏在硬盘中的代码,仅仅刷新bios或者重写mbr根本不起作用。
11. US会在Windows中安装两个名为“未知设备”的硬件设备,如果你删除了一部分US的代码,这两个设备就会暴露出来,系统会要求为其安装驱动程序。US应该是通过这两个设备监控用户操作。
在过去的几年中我断断续续接触到US,观察到US的程序员不断将其改进升级,可以这样说:US是我看着长大的^_^。就我所见,这些年来US做了如下改进:
1。 过去的US会专门为自己创建一个分区,这个分区不会被格式化硬盘,恢复或者重新安装操作系统所影响,重新分区或者重写mbr也没有作用,但是在安装操作系统的时候会看到一个不属于我的分区。现在的US会在属于我的分区后面切下一块,如果不仔细审计核对根本不会发现,安装操作系统的时候则没有任何异常。
2。 过去的US在恢复系统以后需要进行两到三次bootkit攻击才能重新控制系统,每次攻击完毕给我留下的是黑屏,直到攻击成功以后我才能正常启动。现在的US已经无需这样做了,每次我恢复系统它已经就绪了,就好像它完全不存在一样。
可以肯定所有读者都会对我的描述表示怀疑,怀疑我的叙述是否真实。相信你的第一个问题一定是:我是如何发现US的呢?几年前我发现US就是看见那个不属于我的分区,以及恢复系统后必须经历的两到三次黑屏。最近这次首先因为这是一个笔记本电脑,发热异常严重;其次是硬盘保留扇区有可疑代码;最主要的是我将硬盘上一个30G的分区摘除,将其分为三个较小的分区,每个分区格式化后的可用空间约10G左右,然后将一个5G的文件复制到这三个分区,系统居然报错说没有足够的硬盘空间!这下露出了狐狸尾巴。事实上我将计算机修复以后,硬盘容量足足增加了15G!
关于US,我有一些基本的判断:
1。 US毫无疑问挂接了bios,这可以保证它先于我的操作系统获得控制。
2。 US的代码虽然也在硬盘上,但是却不在我的文件系统的控制范围之内。
3。 US抢先启动,运行在我的操作系统下面,使用的应该是实模式,以某种机制截取一定的CPU时间,对用户操作进行监控。其设计理念就像是在操作系统上面启动一个虚拟机一样,只不过在这里我的操作系统变成了上层的虚拟机,如果底层的系统不提供接口,位于上层的虚拟机无法访问底层系统的任何变量。US正是这样设计的,它启动完成以后才启动位于上层的操作系统,操作系统根本感觉不到US的存在:没有文件,没有进程,没有内核对象。
4。 US至少有三处可以互相保护的启动入口,bios, mbr或者启动扇区,Windows内部,这三处入口只要有一处启动就可以对其他两处进行维护,所以常规方法刷新bios,格式化,重新分区,重写mbr以及重装操作系统都不会奏效。
5。 US的代码量非常大,应该有一个庞大的团队在开发维护。
如何才能发现US呢?我提供如下几条作为参考:
1。 对硬盘进行审计,计算所有分区大小的和是否大致等于硬盘铭牌标识的数值。也可以像我那样做一些摘除分区,重新分区的野蛮操作。
2。 查看硬盘保留扇区是否有代码摸样的数据。
3。 计算机是否发热异常。
这三条中第一条比较可靠,其他两条不足以说明问题,因为别的恶意软件也会在保留扇区保存代码,计算机发热也许是风扇故障。
怎样才能清除US呢?也简单,将硬盘摘下,刷新bios(此时干扰DOS的代码无法运行);然后将摘下的硬盘挂接到另外一台机器上,把所有扇区清零。如果你没有摘下硬盘直接刷新bios也有可能成功,因为US用于干扰DOS的代码不太稳定,不保证每次都能正确挂接DOS中断。如果你不摘除硬盘直接清零扇区数据,就会导致只能删除部分US的代码的结果,因为US只对一些关键代码进行保护,此时将出现US无法为“未知设备”安装驱动程序的情形。
还有一个问题:US到底是谁编写的呢?其实我心里是有相当肯定的怀疑对象的,但是我不会像美国人那样随便指责中国黑客攻击了他们的计算机。
由于一些个人原因,我准备金盆洗手不再从事计算机安全方面的研究了,希望这篇文章对后来的研究者有所帮助。引用迈克。杰克逊的那句话:This is it.