网络安全技术介绍
3.网络端口攻击和安全
网络端口攻击,是一种常见的方法,因为在Internet主机上有很多通用端口,比如21是ftp的端口,25是SMTP的端口,23是TELNET的端口,70是gopher的端口,200是ftp传送数据的端口等。通过这些端口的攻击会使对方主机产生难以预料的后果。
3.1 IP Spoofing
IP Spoofing是通过向主机发送IP包来攻击的,攻击过程是这样的:
攻击端→SYN(伪造的自己的地址)→被攻击端
伪造的地址←SYN-ACK←被攻击端
被攻击端等待回答。
一个简单的SYN attack攻击的方法就是利用NetXRay软件首先产生一个正常的SYN attack,再把那个SYN attack修改一下,找出关于source IP的那个offset,修改成任意的IP,然后找出关于校验和的地址,把校验和改好,然后把包拷贝起来,用NetXRay的发送包的工具,一秒钟给它送几千个SYN attack到对方,可以让对方机器瘫痪没有再接受别人连接请求的能力。
在一个ip包的ip选项域中,有两类的“源搜索”(source routing)功能项可以选择:
LSRR(loose soutce & record routing)自由源和记录路径。
SSRR(strict source & record routing)精确源和记录路径。
设计这个功能是为了方便网络故障调测的需要。当一台主机收到包含ISRR或者SSRR包后,它会把这个包中含有的目的地址读出来,并直接把这个包送往目的地址。这样就可能产生危险。
比如你用防火墙系统来保护你自己的企业内部不受干扰。正常的时候,多有的数据包的进出都在防火墙的控制下,如果你的防火墙要是允许调测包,那么外部网的攻击者都可以简单地发送调测包从外部网络送到内部网,从而逃避了防火墙地监控,但是现在大部分的商用防火墙已经都禁止调测包通过了。
3.2 TCP端口的检测
随着使用的深入,要快速了解某台主机究竟提供了多少项服务的需求越来越多。端口检测技术就给这种需求提供了一种解决方案,但是这种技术也常常被黑客利用,成为一个攻击的辅助手段。
SATAN是一个通过完整的3步协商与每个TCP端口建立连接:
主叫向被叫发送一个TCP包,其中的SYN标志位为1。
被叫端口如果是打开的,就向主叫返回一个包,其中SYN和ACK标志位是1。如果是关闭,被叫就返回一个带有RST标志位的包来断掉这次连接。
主叫发送一个ACK为1的包。
但是这种检测非常容易被察觉到,后来又称为“半打开检测”的方法,不是通过完整的步骤来检测一个端口,而是只发送SYN包,等待返回的SYN&ACK或者RST包。这样就难以发现了。缺点是要自己制定IP包,并且需要有超级用户权限来访问接口设备。
3.3 Sniffer
Sniffer既可以是硬件,也可以是软件,用来接收网络上的传输的信息。放置sniffer的目的是使网络接口处于广播状态,这样就可以截获网络上传输的内容了。
Sniffer 就是这样的一个软件,能够“听”到(而不是忽略)网络上所有的信息。在这种意义上来说,每一个机器,每一个路由器都可以成为一个sniffer,或者说它们可以成为一个sniffer。这些信息就被存储在介质上,以备日后检查时用。
它可以成为一种很大的危险,因为:
它们可以截获口令。
它们可以截获秘密的或者专有的信息。
它们可以被用来攻击相邻的网络。
Sniffer被用来代表很高级别的危险,安全家们把它列为第2级的攻击。入侵者已经侵入了网络,正在以准备做进一步的攻击。它可以截获的不仅是用户的ID和口令。还可以截获敏感的经济数据、秘密信息和专有信息。当然很明显的,把信息加密是一个很好的处理办法。
它存在于任何一种平台之上。即使不这样,它也是一种潜在的威胁。这是因为,它截获包,不是截获机器,除非你的网络是完全内部的,否则就有可能存在Sniffer。一个监视全网络传输的Sniffer仅需要存在于网络的一个节点上,这是由于Ethernet的广播方式决定的。因为传输的信息是向全网所有的节点广播的,所以你所处的任何平台都可以作到的。
所幸的是使用Sniffer并不很简单,在设置它之前,需要很多的网络知识,如果仅仅设置一个Sniffer就离开的话,会碰到很多的问题,在很短的时间里,Sniffer的输出文件就可能占满你的所有硬盘空间,所以一般的黑客只用它来截获每个包的前200到300个字节。
下面介绍几个Sniffer:
Gobbler
对想了解网络的一些人来说,Gobbler是最好的,它在MS-DOS平台运行,也可以在Windows环境里运行。它的界面不是很友好,这是大多数黑客工具的特点。但是得到它并不是十分容易。它的特点是包含着一些比较复杂的包过滤功能,还可以查看每一个包的源地址和目的地址而不用费太大的力气。
ETHLOAD
用C写的,用于Ethernet和令牌网的免费的Sniffer,分析以下的协议:
TCP/IP
DEC net
OSI
XNS
NetWare
NetBEUI
对于一个在Dos/Novell平台上运行的免费的Sniffer来说,它可能是最有力的工具,它也很容易得到。
Esniff.c
它是一种以源代码形式发表的Sniffer程序,主要是设计来自SUNOS平台上截获包传输。对入侵者来说,它可能是最流行的,它也被设计成仅仅截获每个包的开头部分。
Sunsniff
Sunsniff是为SunOS平台设计的。包括513行源代码。在Sun工作站上运行的很好,但是不会很好地移植到别的平台上。用它做实验是很不错的选择。
在网络上,能不能发现Sniffer呢?答案是几乎不能,因为可以想象,这样的一个仅仅是被动的程序,在网络上就是“听”,根本不留下任何痕迹,只有去检查是否有一个进程从你自己的机器上被启动,或者详细查找Sniffer的程序,这几乎是件很不可能的事情。
但是可以通过加密来使Sniffer截获到的包失去意义,有一个产品SSH可以办到这点,它绑定的端口号是22,用到的算法是RSA。这是很方便的一个选择。
4.特洛伊木马
特洛伊木马(trojan horse)是一种一个巧妙躲开Internet安全机制的方法,没有其他办法能像它这样破坏系统,也没有其他办法比它更难以发现。
4.1 特洛伊程序的定义
什么是特洛伊木马程序呢?
特洛伊木马程序是这样的一种程序,它提供了一些有用的,或仅仅是有意思的功能。但是它还提供了许多用户所不希望的功能,这些功能往往是有害的。因而就印发了一个如果和检测特洛伊程序的问题。假如我写了一个程序,它可以检测出别的程序是否在格式化硬盘。可以称那些试图格式化硬盘的程序为特洛伊程序么?显然,如果这些程序本身就是用来格式化硬盘的,它不是特洛伊程序,但是如果用户在使用该程序的时候并不希望格式化硬盘,它就是一个特洛伊程序了。
由此可以知道,问题的实质是判断一个程序的功能与用户的使用该程序的目的是否一致。但是要确定用户使用程序的目的是很难的。
4.2 特洛伊程序的种类
特洛伊程序的种类是很多的,但是一个根本的特征就是欺骗性地使用户上当,使得设计者达到他自己的目的。
一个例子是有这样的一种程序,它在使用的时候,它代替了系统登录的程序login。这样当用户登录到这台有问题的机器的时候,显示的仿佛一切都很正常,让你输入用户名和口令,在你熟练地输入了一次以后,它显示用登录错误并要你重新输入,这个时候,它已经把自己撤掉了,换上正常的系统的login程序,这个时候一般的情况下,你是不会有什么怀疑的,你也许还以为是自己输入错误了,就再认真小心地重新输入了一次,这次进去了,你没有任何怀疑,然而你的口令已经被程序所记录下来了,或者发到入侵者的信箱里,或者存储在磁盘上,一切都是那么巧妙,都是在程序员的设计下进行的。你已经上当了。
这就是一个典型的特洛伊程序。
另外一种特洛伊程序也一样是十分隐蔽的,这种特洛伊程序加高超,它可以将UNIX下常用的命令给特洛伊化,使得出现这样的情况,比如ls命令,它就可以替代真正的ls命令,而这个假的ls命令的功能跟真的一模一样,唯一的不同在于它可以隐藏入侵者指定的目录或者文件,一旦被这种特洛伊程序给特洛伊化了,是很难察觉的,谁会老是没有事情就去看看系统的ls程序有多长,是否被别人改动过呢?你会这样做么?
由于特洛伊程序的欺骗性质,使得它非常难以发现,往往都是偶然的时候才能发现。
在Window平台上,一个有名的特洛伊程序叫做Netbus,它是个小火炬一样的图标,当你执行它的时候,机器好象什么也不做,仅仅是等待一会就没反应了,但是这个时候,它已经把自己复制到了Windows目录下面了,并且修改了注册表,使得每次启动Windows的时候可以自动执行它,但是你又看不出来。然而它的危害是相当的明显的,不是使系统崩溃,而是使别的人可以控制你的机器,包括键盘,鼠标,上传或下载文件,执行程序,重新启动,抓屏幕等等,可以说几乎是想干什么就干什么。
这个程序的弱点就是必须要你来执行一个客户端程序,但是如果一个警惕性很高的人是不会随便地去执行一个莫名其妙的程序的,尤其是执行它以后什么反应都没有,就更加让人怀疑,假如执行了它以后,它自己把自己给删除的话呢,那更加的此地无银三百两了。所以的Netbus的升级版本2.0版,附加了一个俄罗斯方块游戏,带有的欺骗性质更大。对于前一个低的版本来说,杀毒软件也能清理,如果要手工清除的话,需要查找注册表,把相关的东西都删除,就可以了。
4.3 特洛伊程序的危险度和防范方法
特洛伊程序代表着的是很高级别的危险,主要是因为我们已经讨论过的原因:
特洛伊程序很难被发现
在许多情况下,特洛伊程序是在二进制代码中被发现的,它们大多数以无法阅读的形式出现。
特洛伊程序可以作用于很多机器中。
如果系统管理员对安全知识了解的不是很多,那么特洛伊程序是相当危险的,以为一个特洛伊程序可以导致系统整个被侵入。在它被发现以前,可能已经存在于系统当中有几个星期了,甚至几个月的时间。在这段时间内,一个具备了root权限的入侵者,可以将系统按照他的需要加以修改。这样即使这个特洛伊程序被发现了,在系统中也留下了系统管理员完全没有注意到的漏洞。
防范特洛伊程序的方法很多,主要是对照以前的备份的程序文件来进行对比,这不是一个很好的办法,因为好的入侵者还是可以更改修改过的系统文件的,不论是日期还是大小,甚至是文件整个的校验和。
比较好的用来检测特洛伊程序的技术是MD5,它可以为每一个文件生成一个数字签名,当一个文件运行于MD5产品中的时候,产生一个32位字符组成的签名,当你浏览那些使用了这种技术的站点的时候,可以检查每个文件的数字签名,如果发现签名与原来的不一样,就有99.9%的可能是有问题。
我们常常把特洛伊程序与病毒等同起来。当然,他们在某种程度上是十分相似的,但是这并不是一类事物。的确,在基于PC的操作系统上,特洛伊程序一般是与病毒有关的,但是在UNIX系统下,是完全不同的情况。在UNIX系统上是完全不同的情况。在UNIX平台上,入侵者往往利用特洛伊程序来冲破安全线而不破坏数据,或者加入这样或那样未经过授权的代码。
在各种情况下,有一点是十分清楚的,即特洛伊程序对于任何服务器与之相连的机器而言是一个非常大的危险。因为基于PC的服务器在Internet上越来越普及,必须开发那些可以检测到特洛伊程序的工具才可以慢慢解决。
5.扫描器
5.1 扫描器介绍
在Internet安全领域,扫描器是最出名的破解工具。据说一个好的TCP/IP扫描器相当于一千个用户口令的价值。
扫描器是自动检测远程或本地主机安全性弱点的程序。通过使用一个扫描器,郑州的用户可以不留痕迹地发现远在广东的一台服务器的安全性弱点。
真正的扫描器是TCP端口扫描器,这种程序可以选通TCP/IP端口和服务(比如,Telnet或FTP),并记录目标的回答,通过这种方法,可以搜集到关于目标主机的有用信息。
扫描器一般是为UNIX平台编写的,但是现在已经有了用于任何操作系统的扫描器。由于大部分操作系统转向Internet,所以这对NT市场的发展是一个很大的促进。
扫描器能发现目标主机的某些内在的弱点,这些弱点可能是破坏主机安全性的关键因素。但是,要作到这一点,你必须了解如何识别漏洞。许多扫描器并没有提供多少指南。因此,数据的解释很重要。
扫描器是合法的。这些扫描工具通常在公共范围内公布,以便系统管理员可以检查自己系统的弱点。然而,尽管拥有和使用扫描器不违法,但是如果你不是一个系统管理员,却使用扫描器检查目标主机,那就不是很好的做法了。
扫描器对于Internet的安全性之所以重要,是因为它们能发现网络的弱点。至于这一信息是否被黑客利用并不重要,以为如果系统管理员使用了扫描器,它将直接有助于加强系统的安全性,如果它被“入侵者”利用,也同样有助于加强系统的安全性,因为一旦某个“漏洞”被黑客利用,最终人们还是能发现的。如果系统管理员认为有扫描器落在“入侵者”手里对安全性不利,这是不确切的,如果一个系统管理员不能使其网络足够安全,那么他(或她)的工作失误就会以网络安全漏洞的形式暴露出来。
5.2 网络应用程序和扫描器
有时我们会把网络应用程序和扫描器弄混淆,实际上,有许多网络应用程序的功能或多或少地与真正的扫描器相同。
网络应用程序运行在不同的平台上,大多数出自UNIX环境。每个程序对“黑客”和“入侵者”都有价值,许多老的网络应用程序会留给用户很多信息,但是这额程序确实不会引起人的怀疑。其中许多程序对于目标主机是不可见的,而扫描器则留下了大量的“足迹”或证据。
Host,是UNIX的专用程序,执行的操作本质上与标准的ns lookup相同,但是host 更全面一些。它可以查询到很多对于黑客来说很有用的东西,用防火墙技术可以防止这些信息的查询。
Traceroute,是跟踪两台机器间的路由。利用这个网络应用程序,可以识别一台机器的地址。
Ruses finger,这两个命令可以一起使用,来搜集网络上的某个用户的信息。
Show mount,它可以发现远程主机的一些非常有用的信息。最重要的是通过加入-e命令选项,它还可以提供指定目标上所有对外目录的清单。
上面的四个UNIX应用程序都不是扫描器,但是它们都能发现目标的重要信息。
Windows上支持许多网络分析程序,下面给出一些例子: