(2)后门监听代理
后门监听程序在受害者系统中打开一个端口并且对所有试图与这个端口相连接的行为进行监听。当有人通过这个端口进行连接时,它要么运行一个三方程序,要么将命令发送给攻击者。实现这种功能的程序也有很多:
Netcat
Netcat经常被人称为安全工具的瑞士军刀。它有许多特性和功能,不过从最基本的来说,它是一个能是系统将数据发送给别人的计算机并且从别的系统得到数据的程序。在接受数据时,它对特定的端口进行监听,等到远程系统连接到这个端口上,Netcat就可以用来当作后门监听程序。不但可以控制Netcat监听的端口号,而且可以告诉它当有远程系统对这个端口进行连接时应该执行的程序。
Tini
Tini能在Windows系统中建立后门监听代理,它的功能没有netcat那么多的功能,并且不能对它进行配置,但是它非常小,整个长度才3k。Tini最大的缺点是通常工作在端口7777,并且有人接入到此端口时,就运行命令提示符,这使得它非常容易被探测出来。Natcat可以监听任何一个端口,所以被发现的概率要小得多。
Rootkit
Rootkit对于UNIX系统来说是相当普遍的,NT系统的也有。和它的名字正好相反,这种工具并不能使我们获得ROOT权限,但是当一个攻击者已经获得了ROOT的身份后,它就能使攻击者在任何时候都可以以ROOT身份登录到系统。它们经常采用的方法是将自己隐藏在一些重要的文件里。
Rootkit有两个主要的类型:
◎ 文件级别
◎ 系统级别
文件级别
Rootkit威力很强大,可以轻而易举地在系统中建立后门。最一般的情况就是它们首先进入系统然后修改系统的重要文件来达到隐藏自己的目的。合法的文件被木马程序替代。通常情况下,合法的程序变成了外壳程序,而其内部就是隐藏着的后门程序。下面列出的程序就是经常被木马程序利用掩护自己的UNIX Rootkit。
LOGIN LS PS FIND
WHO NETSTAT
这仅仅是可能被木马程序利用的程序的一小部分。如果攻击者将所有用户经常使用的命令都替换了的话,他不但能在系统中建立后门,而且还可以隐藏自己的踪迹。所以通过Rootkit可以达到双重目的,攻击者可以随时进入系统,并且我们还不能对他的行为进行检测。
系统级别(内核级)
对于工作在文件级的Rootkit来说,它们非常容易被检测到。而内核级Rootkit工作在一个很低的级别上--内核级。它们经常依附在内核上,并没有修改系统的任何文件,于是tripwire工具就不能检测到它的使用。因为它并没有对系统的任何文件进行修改,攻击者可以对系统为所欲为而不被发现。系统级Rootkit为攻击者提供了很大的便利,并且修复了文件级Rootkit的一些错误。
※ 后门工具
我们先来了解一下针对UNIX系统的Rootkit:
◎ 文件级Rootkit
TrojanIT Lrk5 Ark Rootkit TK
◎ 内核级
Knark
Adore
还有很多的程序被用来在Microsoft公司的*作系统进行保留存取权限或者建立后门的*作。
◎ Brown Orifice
◎ Donald Dick
◎ SubSeven
◎ Back Orifice
隐藏踪迹
当黑客成功获取了存取权限且完成了自己的预定目标后,他还有最后一个工作要完成--隐藏攻击踪迹。这其中包括重新进入系统,将所有能够表明他曾经来过的证据隐藏起来。为达到这个目的,有四个方面的工作要做:
日志文件--大多数系统都是通过记录日志文件来检测是谁进入过系统并且停留了多长时间。根据日志文件所设置的级别不同,还可以发现他们做了些什么,对哪些文件进行了*作。
文件信息--为了获得系统的存取权限和在系统中建立后门,攻击者通常必须对某些系统文件进行修改。当他们这样做后,文件的一些信息,比如说修改时间和文件长度就会发生变化,通过这些也可以确定系统是否曾经遭受过攻击。
另外的信息--在很多情况下,黑客为了达到进入系统获取权限目的,必须另外上传或者安装一些文件。这些用来隐藏踪迹或者用来对别的站点进行新攻击的文件通常会占用一定的磁盘空间。系统管理员可以通过磁盘空余空间的检查来确定是否发生过攻击。
网络通信流量--当黑客对某个系统进行攻击时,大多数情况下是通过网络进行的。这也意味着攻击者必须对自己在网络上留下的痕迹进行清除。由于网络系统都运行着IDS(入侵检测系统),任何可疑的网络通信都会被打上标记。而要抹去IDS上的记录是非常困难的,因为它是实时监测的。
※ 日志文件
日志文件详细记录了在系统中任何人所做的任何事情。这对于系统监测来说是非常重要的资料。在利用日志文件监测之前,必须先做两件事:第一,必须将系统的日志记录功能打开;第二,对日志文件内容进行详细阅读。很多管理员没有将记录日志文件的功能选项打开,而且即使打开了,也没有对它进行定时阅读。
所以,即使黑客没有对自己的踪迹进行任何的消隐,也有很大的可能不被发现。
有经验的攻击者都不会冒这个险,他们会清除所有的日志文件。可以采取两种方式。最简单的一种是进入系统然后将所有的日志文件删除。当数量很大的日志文件突然之间变的很少的话,系统会自动通知系统管理员,因为每个日志文件的结束处,都有一个触发器。第二种方法是攻击者可以\医治\日志文件,首先取得日志文件然后将其中有关于攻击记录的部分删除。根据所攻击的系统不同,工作的难度有所不同,因为windows
NT系统和UNIX系统处理日志文件的方法不同。
※ 文件信息
对于攻击者而言,在进入系统并且植入后门程序以后再把系统还原成以前的状态是非常关键的。因此,每一个曾经被修改的文件都应该被恢复成或者假扮成原状。
对于文件的修改日期来说,可以轻而易举做到这一点:进入系统,将系统时间修改成第一次修改文件的时间,然后对文件进行读取,因为系统并不清楚当前的日期是错误的,这样文件看起来就象是再第一次安装时修改过的一样,不会引起怀疑。然后再将原来错误的日期改变成正确的日期。
在UNIX系统中,也有一些工具来执行修改文件属性的工作。其中一个程序名为fix.c,它能够改变文件长度和其他一些属性。并且我们前面讨论的rootkit程序内容也集成了一些修改文件属性的工具。实际上文件的属性只是一些存放在文件当中的对于本文件的特性的描述。所以攻击者可以将原本只有15MB的文件修改成只有1MB的大小。比如UNIX环境下的rootkits就可以很轻松地将修改文件信息和隐藏攻击踪迹的工作合二为一。
※ 附加文件
在很多情况下,当攻击者入侵了系统后,他会上传一些文件,要么是用来留下后门,要么是用来攻击其他系统。攻击者入侵系统并不仅仅是为了获取数据,更多的时候是为了获取计算机资源。
攻击者想隐藏他们上传的系统附加文件,他们可以使用这样的方法:
为文件设置隐藏属性:所有的文件系统都可以让文件的属主将文件设置为隐藏。当某个文件设置成为隐藏,如果用户仅仅是使用命令显示文件时,就不能够看到这个文件。
将文件重命名:在大多数系统中,都有一个系统目录,其中存放了很多重要的文件。攻击者可以将自己的文件名字改成合这些文件差不多,那么被管理员发现的可能性就非常小。这适合要隐藏的文件比较少的情况。
建立隐藏的目录或者是共享设备:如果一个硬盘空间很大的话,可以创建很多个分区。一般情况下,系统管理员只检查系统的主要分区,因此如果攻击者建立了一个另外的分区,很可能就会逃过系统管理员的检查。这适合需要隐藏大量文件的时候。
改变磁盘空间的工具:如果管理员使用某个工具来检查系统剩余空间的话,他就会发现硬盘空间的问题。而如果攻击者能够上传一个木马的话,就可以欺骗管理员有多少空间剩余。
使用steganography工具:steganography或者是信息隐藏工具都可以使攻击者将自己的信息隐藏到另外一个文件中。所以黑客客利用这种工具,将自己重要的文件隐藏到系统重要的文件中去。
※ 隐藏网络上的踪迹
随着网络入侵检测系统和防火墙的广泛使用,攻击者需要注意如何隐藏网络上的踪迹。如果攻击者能够隐藏自己的攻击或者将它们假扮成网络上的合法的通信信息,使它们看起来不那么引人注目,就有可能逃脱被追捕的命运。可以利用的工具如:
Loki
Reverse www shell
CovertTCP
前两个是将攻击者所留下的痕迹假扮成网络合法的通信信息,第三个程序是通过将这些痕迹隐藏在数据包中来躲避管理员的检测