网络攻击分类及原理工具详解

时间:2024.4.20

网络安全知识 -- 网络攻击

1攻击分类

在最高层次,攻击可被分为两类:

主动攻击

被动攻击

主动攻击包含攻击者访问他所需信息的故意行为。比如远程登录到指定机器的端口25找出公司运行的邮件服务器的信息;伪造无效IP地址去连接服务器,使接受到错误IP地址的系统浪费时间去连接哪个非法地址。攻击者是在主动地做一些不利于你或你的公司系统的事情。正因为如此,如果要寻找他们是很容易发现的。主动攻击包括拒绝服务攻击、信息篡改、资源使用、欺骗等攻击方法。

被动攻击主要是收集信息而不是进行访问,数据的合法用户对这种活动一点也不会觉察到。被动攻击包括嗅探、信息收集等攻击方法。

说明:这样分类不是说主动攻击不能收集信息或被动攻击不能被用来访问系统。多数情况下这两种类型被联合用于入侵一个站点。但是,大多数被动攻击不一定包括可被跟踪的行为,因此更难被发现。从另一个角度看,主动攻击容易被发现但多数公司都没有发现,所以发现被动攻击的机会几乎是零。

再往下一个层次看,当前网络攻击的方法没有规范的分类模式,方法的运用往往非常灵活。从攻击的目的来看,可以有拒绝服务攻击(Dos)、获取系统权限的攻击、获取敏感信息的攻击;从攻击的切入点来看,有缓冲区溢出攻击、系统设置漏洞的攻击等;从攻击的纵向实施过程来看,又有获取初级权限攻击、提升最高权限的攻击、后门攻击、跳板攻击等;从攻击的类型来看,包括对各种*作系统的攻击、对网络设备的攻击、对特定应用系统的攻击等。所以说,很难以一个统一的模式对各种攻击手段进行分类。

实际上黑客实施一次入侵行为,为达到他的攻击目的会结合采用多种攻击手段,在不同的入侵阶段使用不同的方法。因此在这篇攻击方法讨论中我们按照攻击的步骤,逐一讨论在每一步骤中可采用的攻击方法及可利用的攻击工具。

2 攻击步骤与方法

攻击步骤与方法

黑客攻击的基本步骤:

搜集信息

实施入侵

上传程序、下载数据

利用一些方法来保持访问,如后门、特洛伊木马

隐藏踪迹

【 信息搜集 】

在攻击者对特定的网络资源进行攻击以前,他们需要了解将要攻击的环境,这需要搜集汇总各种与目标系统相关的信息,包括机器数目、类型、*作系统等等。踩点和扫描的目的都是进行信息的搜集。

攻击者搜集目标信息一般采用7个基本步骤,每一步均有可利用的工具,攻击者使用它们得到攻击目标所需要的信息。

找到初始信息

找到网络的地址范围

找到活动的机器

找到开放端口和入口点

弄清*作系统

弄清每个端口运行的是哪种服务

画出网络图

1> 找到初始信息

攻击者危害一台机器需要有初始信息,比如一个IP地址或一个域名。实际上获取域名是很容易的一件事,然后攻击者会根据已知的域名搜集关于这个站点的信息。比如服务器的IP地址(不幸的是服务器通常使用静态的IP地址)或者这个站点的工作人员,这些都能够帮助发起一次成功的攻击。

搜集初始信息的一些方法包括:

开放来源信息 (open source information)

在一些情况下,公司会在不知不觉中泄露了大量信息。公司认为是一般公开的以及能争取客户的信息,都能为攻击者利用。这种信息一般被称为开放来源信息。

开放的来源是关于公司或者它的合作伙伴的一般、公开的信息,任何人能够得到。这意味着存取或者分析这种信息比较容易,并且没有犯罪的因素,是很合法的。这里列出几种获取信息的例子:

公司新闻信息:如某公司为展示其技术的先进性和能为客户提供最好的监控能力、容错能力、服务速度,往往会不经意间泄露了系统的*作平台、交换机型号、及基本的线路连接。

公司员工信息:大多数公司网站上附有姓名地址簿,在上面不仅能发现CEO和财务总监,也可能知道公司的VP和主管是谁。

新闻组:现在越来越多的技术人员使用新闻组、论坛来帮助解决公司的问题,攻击者看这些要求并把他们与电子信箱中的公司名匹配,这样就能提供一些有用的信息。使攻击者知道公司有什么设备,也帮助他们揣测出技术支持人员的水平 Whois

对于攻击者而言,任何有域名的公司必定泄露某些信息!

攻击者会对一个域名执行whois程序以找到附加的信息。Unix的大多数版本装有whois,所以攻击者只需在终端窗口或者命令提示行前敲入"

whois 要攻击的域名"就可以了。对于windows*作系统,要执行whois查找,需要一个第三方的工具,如sam spade。

通过查看whois的输出,攻击者会得到一些非常有用的信息:得到一个物理地址、一些人名和电话号码(可利用来发起一次社交工程攻击)。非常重要的是通过whois可获得攻击域的主要的(及次要的)服务器IP地址。

Nslookup

找到附加IP地址的一个方法是对一个特定域询问DNS。这些域名服务器包括了特定域的所有信息和链接到网络上所需的全部数据。任何网络都需要的一条信息,如果是打算发送或者接受信件,是mx记录。这条记录包含邮件服务器的IP地址。大多数公司也把网络服务器和其他IP放到域名服务器记录中。大多数UNIX和NT系统中,nslookup代理或者攻击者能够使用一个第三方工具,比如spade。

另一个得到地址的简单方法是ping域名。Ping一个域名时,程序做的第一件事情是设法把主机名解析为IP地址并输出到屏幕。攻击者得到网络的地址,能够把此网络当作初始点。

2> 找到网络的地址范围

当攻击者有一些机器的IP地址,他下一步需要找出网络的地址范围或者子网掩码。

需要知道地址范围的主要原因是:保证攻击者能集中精力对付一个网络而没有闯入其它网络。这样做有两个原因:第一,假设有地址10.10.10.5,要扫描整个A类地址需要一段时间。如果正在跟踪的目标只是地址的一个小子集,那么就无需浪费时间;第二,一些公司有比其他公司更好的安全性。因此跟踪较大的地址空间增加了危险。如攻击者可能能够闯入有良好安全性的公司,而它会报告这次攻击并发出报警。

攻击者能用两种方法找到这一信息,容易的方法是使用America Registry for Internet Numbers(ARIN)whois

搜索找到信息;困难的方法是使用tranceroute解析结果。

(1) ARIN允许任何人搜索whois数据库找到"网络上的定位信息、自治系统号码(ASN)、有关的网络句柄和其他有关的接触点(POC)。"基本上,常规的whois会提供关于域名的信息。ARINwhois允许询问IP地址,帮助找到关于子网地址和网络如何被分割的策略信息。

(2) Traceroute可以知道一个数据包通过网络的路径。因此利用这一信息,能决定主机是否在相同的网络上。

连接到internet上的公司有一个外部服务器把网络连到ISP或者Internet上,所有去公司的流量必须通过外部路由器,否则没有办法进入网络,并且大多数公司有防火墙,所以traceroute输出的最后一跳会是目的机器,倒数第二跳会是防火墙,倒数第三跳会是外部路由器。通过相同外部路由器的所有机器属于同一网络,通常也属于同一公司。因此攻击者查看通过tranceroute到达的各种ip地址,看这些机器是否通过相同的外部路由器,就知道它们是否属于同一网络。

这里讨论了攻击者进入和决定公司地址范围的两种方法。既然有了地址范围,攻击者能继续搜集信息,下一步是找到网络上活动的机器。

3> 找到活动的机器

在知道了IP地址范围后,攻击者想知道哪些机器是活动的,哪些不是。公司里一天中不同的时间有不同的机器在活动。一般攻击者在白天寻找活动的机器,然后在深夜再次查找,他就能区分工作站和服务器。服务器会一直被使用,而工作站只在正常工作日是活动的。

Ping :使用ping可以找到网络上哪些机器是活动的。

Pingwar:ping有一个缺点,一次只能ping一台机器。攻击者希望同时ping多台机器,看哪些有反应,这种技术一般被称为ping

sweeping。Ping war 就是一个这样的有用程序。

Nmap:Nmap也能用来确定哪些机器是活动的。Nmap是一个有多用途的工具,它主要是一个端口扫描仪,但也能ping

sweep一个地址范围。

4> 找到开放端口和入口点

(1)Port Scanners:

为了确定系统中哪一个端口是开放的,攻击者会使用被称为port scanner(端口扫描仪)的程序。端口扫描仪在一系列端口上运行以找出哪些是开放的。

选择端口扫描仪的两个关键特征:第一,它能一次扫描一个地址范围;第二,能设定程序扫描的端口范围。(能扫描1到65535的整个范围。)

目前流行的扫描类型是:

TCP conntect扫描

TCP SYN扫描

FIN扫描

ACK扫描

常用端口扫描程序有:

ScanPort:使用在Windows环境下,是非常基础的端口扫描仪,能详细列出地址范围和扫描的端口地址范围。

Nmap:在UNIX环境下推荐的端口扫描仪是Nmap。Nmap不止是端口扫描仪,也是安全工具箱中必不可少的工具。Namp能够运行前面谈到的不同类型的 。

运行了端口扫描仪后,攻击者对进入计算机系统的入口点有了真正的方法。

(2) War Dialing

进入网络的另一个普通入口点是modem(调制解调器)。用来找到网络上的modem的程序被称为war dialers。基本上当提交了要扫描的开始电话号码或者号码范围,它就会拨叫每一个号码寻找modem回答,如果有modem回答了,它就会记录下这一信息。

THC-SCAN是常用的war dialer程序。

5> 弄清操作系统

攻击者知道哪些机器是活动的和哪些端口是开放的,下一步是要识别每台主机运行哪种*作系统。

有一些探测远程主机并确定在运行哪种*作系统的程序。这些程序通过向远程主机发送不平常的或者没有意义的数据包来完成。因为这些数据包RFC(internet标准)没有列出,一个*作系统对它们的处理方法不同,攻击者通过解析输出,能够弄清自己正在访问的是什么类型的设备和在运行哪种*作系统。

Queso:是最早实现这个功能的程序。Queso目前能够鉴别出范围从microsoft到unix 和cisco路由器的大约100种不同的设备。

Nmap:具有和Queso相同的功能,可以说它是一个全能的工具。目前它能检测出接近400种不同的设备。

6> 弄清每个端口运行的是哪种服务

(1) default port and OS

基于公有的配置和软件,攻击者能够比较准确地判断出每个端口在运行什么服务。例如如果知道*作系统是unix和端口25是开放的,他能判断出机器正在运行sendmail,如果*作系统是Microsoft

NT和端口是25是开放的,他能判断出正在运行Exchange。

(2) Telnet

telnet是安装在大多数*作系统中的一个程序,它能连接到目的机器的特定端口上。攻击者使用这类程序连接到开放的端口上,敲击几次回车键,大多数*作系统的默认安装显示了关于给定的端口在运行何种服务的标题信息。

(3) Vulnerability Scanners

Vulnerability Scanners(弱点扫描器)是能被运行来对付一个站点的程序,它向黑客提供一张目标主机弱点的清单。

7> 画出网络图

进展到这个阶段,攻击者得到了各种信息,现在可以画出网络图使他能找出最好的入侵方法。攻击者可以使用traceroute或者ping来找到这个信息,也可以使用诸如cheops那样的程序,它可以自动地画出网络图。

Traceroute

Traceroute是用来确定从源到目的地路径的程序,结合这个信息,攻击者可确定网络的布局图和每一个部件的位置。

Visual Ping

Visual Ping是一个真实展示包经过网络的路线的程序。它不仅向攻击者展示了经过的系统,也展示了系统的地理位置。

Cheops

Cheops利用了用于绘制网络图并展示网络的图形表示的技术,是使整个过程自动化的程序。如果从网络上运行,能够绘出它访问的网络部分。

经过一系列的前期准备,攻击者搜集了很多信息,有了一张网络的详尽图,确切地知道每一台机器正在使用的软件和版本,并掌握了系统中的一些弱点和漏洞。我们

可以想象一下,他成功地攻击网络会很困难吗?回答是否定的!当拥有了那些信息后,网络实际上相当于受到了攻击。因此,保证安全让攻击者只得到有限的网络信息是关键!

入侵攻击

可以说当前是一个进行攻击的黄金时期,很多的系统都很脆弱并且很容易受到攻击,所以这是一个成为黑客的大好时代,可让他们利用的方法和工具是如此之多!在此我们仅对经常被使用的入侵攻击手段做一讨论。

【 拒绝服务攻击 】

拒绝服务攻击(Denial of Service, DoS)是一种最悠久也是最常见的攻击形式。严格来说,拒绝服务攻击并不是某一种具体的攻击方式,而是攻击所表现出来的结果,最终使得目标系统因遭受某种程度的破坏而不能继续提供正常的服务,甚至导致物理上的瘫痪或崩溃。具体的*作方法可以是多种多样的,可以是单一的手段,也可以是多种方式的组合利用,其结果都是一样的,即合法的用户无法访问所需信息。

通常拒绝服务攻击可分为两种类型。

第一种是使一个系统或网络瘫痪。如果攻击者发送一些非法的数据或数据包,就可以使得系统死机或重新启动。本质上是攻击者进行了一次拒绝服务攻击,因为没有人能够使用资源。以攻击者的角度来看,攻击的刺激之处在于可以只发送少量的数据包就使一个系统无法访问。在大多数情况下,系统重新上线需要管理员的干预,重新启动或关闭系统。所以这种攻击是最具破坏力的,因为做一点点就可以破坏,而修复却需要人的干预。

第二种攻击是向系统或网络发送大量信息,使系统或网络不能响应。例如,如果一个系统无法在一分钟之内处理100个数据包,攻击者却每分钟向他发送1000个数据包,这时,当合法用户要连接系统时,用户将得不到访问权,因为系统资源已经不足。进行这种攻击时,攻击者必须连续地向系统发送数据包。当攻击者不向系统发送数据包时,攻击停止,系统也就恢复正常了。此攻击方法攻击者要耗费很多精力,因为他必须不断地发送数据。有时,这种攻击会使系统瘫痪,然而大多多数情况下,恢复系统只需要少量人为干预。

这两种攻击既可以在本地机上进行也可以通过网络进行。

※ 拒绝服务攻击类型 1 Ping of Death

根据TCP/IP的规范,一个包的长度最大为65536字节。尽管一个包的长度不能超过65536字节,但是一个包分成的多个片段的叠加却能做到。当一个主机收到了长度大于65536字节的包时,就是受到了Ping

of Death攻击,该攻击会造成主机的宕机。 2 Teardrop

IP数据包在网络传递时,数据包可以分成更小的片段。攻击者可以通过发送两段(或者更多)数据包来实现TearDrop攻击。第一个包的偏移量为0,长度为N,第二个包的偏移量小于N。为了合并这些数据段,TCP/IP堆栈会分配超乎寻常的巨大资源,从而造成系统资源的缺乏甚至机器的重新启动。 3 Land

攻击者将一个包的源地址和目的地址都设置为目标主机的地址,然后将该包通过IP欺骗的方式发送给被攻击主机,这种包可以造成被攻击主机因试图与自己建立连接而陷入死循环,从而很大程度地降低了系统性能。 4 Smurf

该攻击向一个子网的广播地址发一个带有特定请求(如ICMP回应请求)的包,并且将源地址伪装成想要攻击的主机地址。子网上所有主机都回应广播包请求而向被攻击主机发包,使该主机受到攻击。 5 SYN flood

该攻击以多个随机的源主机地址向目的主机发送SYN包,而在收到目的主机的SYN ACK后并不回应,这样,目的主机就为这些源主机建立了大量的连接队列,而且由于没有收到ACK一直维护着这些队列,造成了资源的大量消耗而不能向正常请求提供服务。 6 CPU Hog

一种通过耗尽系统资源使运行NT的计算机瘫痪的拒绝服务攻击,利用Windows NT排定当前运行程序的方式所进行的攻击。 7 Win Nuke

是以拒绝目的主机服务为目标的网络层次的攻击。攻击者向受害主机的端口139,即netbios发送大量的数据。因为这些数据并不是目的主机所需要的,所以会导致目的主机的死机。 8 RPC Locator

攻击者通过telnet连接到受害者机器的端口135上,发送数据,导致CPU资源完全耗尽。依照程序设置和是否有其他程序运行,这种攻击可以使受害计算机运行缓慢或者停止响应。无论哪种情况,要使计算机恢复正常运行速度必须重新启动。

※ 分布式拒绝服务攻击

分布式拒绝服务攻击(DDoS)是攻击者经常采用而且难以防范的攻击手段。DDoS攻击是在传统的DoS攻击基础之上产生的一类攻击方式。单一的DoS攻击一般是采用一对一方式的,当攻击目标CPU速度低、内存小或者网络带宽小等等各项性能指标不高它的效果是明显的。随着计算机与网络技术的发展,计算机的处理能力迅速增长,内存大大增加,同时也出现了千兆级别的网络,这使得DoS攻击的困难程度加大了 目标对恶意攻击包的"消化能力"加强了不少,例如你的攻击软件每秒钟可以发送3,000个攻击包,但我的主机与网络带宽每秒钟可以处理10,000个攻击包,这样一来攻击就不会产生什么效果。所以分布式的拒绝服务攻击手段(DDoS)就应运而生了。如果用一台攻击机来攻击不再能起作用的话,攻击者就使用10台、100台…攻击机同时攻击。

DDoS就是利用更多的傀儡机来发起进攻,以比从前更大的规模来进攻受害者。

高速广泛连接的网络也为DDoS攻击创造了极为有利的条件。在低速网络时代时,黑客占领攻击用的傀儡机时,总是会优先考虑离目标网络距离近的机器,因为经过路由器的跳数少,效果好。而现在电信骨干节点之间的连接都是以G为级别的,大城市之间更可以达到2.5G的连接,这使得攻击可以从更远的地方或者其他城市发起,攻击者的傀儡机位置可以在分布在更大的范围,选择起来更灵活了。

一个比较完善的DDoS攻击体系分成四大部分:

攻击者所在机

控制机(用来控制傀儡机)

傀儡机

受害者

先来看一下最重要的控制机和傀儡机:它们分别用做控制和实际发起攻击。请注意控制机与攻击机的区别,对受害者来说,DDoS的实际攻击包是从攻击傀儡机上发出的,控制机只发布命令而不参与实际的攻击。对控制机和傀儡机,黑客有控制权或者是部分的控制权,并把相应的DDoS程序上传到这些平台上,这些程序与正常的程序一样运行并等待来自黑客的指令,通常它还会利用各种手段隐藏自己不被别人发现。在平时,这些傀儡机器并没有什么异常,只是一旦黑客连接到它们进行控制,并发出指令的时候,攻击傀儡机就成为害人者去发起攻击了。

"为什么黑客不直接去控制攻击傀儡机,而要从控制傀儡机上转一下呢?"。这就是导致DDoS攻击难以追查的原因之一了。做为攻击者的角度来说,肯定不愿意被捉到,而攻击者使用的傀儡机越多,他实际上提供给受害者的分析依据就越多。在占领一台机器后,高水平的攻击者会首先做两件事:1.考虑如何留好后门,2. 如何清理日志。这就是擦掉脚印,不让自己做的事被别人查觉到。比较初级的黑客会不管三七二十一把日志全都删掉,但这样的话网管员发现日志都没了就会知道有人干了坏事了,顶多无法再从日志发现是谁干的而已。相反,真正的好手会挑有关自己的日志项目删掉,让人看不到

异常的情况。这样可以长时间地利用傀儡机。但是在攻击傀儡机上清理日志实在是一项庞大的工程,即使在有很好的日志清理工具的帮助下,黑客也是对这个任务很头痛的。这就导致了有些攻击机弄得不是很干净,通过它上面的线索找到了控制它的上一级计算机,这上级的计算机如果是黑客自己的机器,那么他就会被揪出来了。但如果这是控制用的傀儡机的话,黑客自身还是安全的。控制傀儡机的数目相对很少,一般一台就可以控制几十台攻击机,清理一台计算机的日志对黑客来讲就轻松多了,这样从控制机再找到黑客的可能性也大大降低。

※ 拒绝服务攻击工具

Targa

可以进行8种不同的拒绝服务攻击,作者是Mixter,可以在

和网站下载。Mixter把独立的dos攻击代码放在一起,做出一个易用的程序。攻击者可以选择进行单个的攻击或尝试所有的攻击,直到成功为止。

FN2K

DDOS工具。可以看作是Traga加强的程序。TFN2K运行的DOS攻击与Traga相同,并增加了5种攻击。另外,它是一个DDOS工具,这意味着它可以运行分布模式,即Internet上的几台计算机可以同时攻击一台计算机和网络。Trinoo

DDOS工具,是发布最早的主流工具,因而功能上与TFN2K比较不是那么强大。Trinoo使用tcp和udp,因而如果一个公司在正常的基础上用扫描程序检测端口,攻击程序很容易被检测到。

Stacheldraht

Stacheldraht是另一个DDOS攻击工具,它结合了TFN与trinoo的特点,并添加了一些补充特征,如加密组件之间的通信和自动更新守护进程。

入侵攻击-2

【 口令攻击 】

※ 攻击原理

攻击者攻击目标时常常把破译用户的口令作为攻击的开始。只要攻击者能猜测或者确定用户的口令,他就能获得机器或者网络的访问权,并能访问到用户能访问到的任何资源。如果这个用户有域管理员或root用户权限,这是极其危险的。

这种方法的前提是必须先得到该主机上的某个合法用户的帐号,然后再进行合法用户口令的破译。获得普通用户帐号的方法很多,如:

利用目标主机的Finger功能:当用Finger命令查询时,主机系统会将保存的用户资料(如用户名、登录时间等)显示在终端或计算机上;

利用目标主机的X.500服务:有些主机没有关闭X.500的目录查询服务,也给攻击者提供了获得信息的一条简易途径;

从电子邮件地址中收集:有些用户电子邮件地址常会透露其在目标主机上的帐号;查看主机是否有习惯性的帐号:有经验的用户都知道,很多系统会使用一些习惯性的帐号,造成帐号的泄露。

这又有三种方法:

(1)是通过网络监听非法得到用户口令,这类方法有一定的局限性,但危害性极大。监听者往往采用中途截击的方法也是获取用户帐户和密码的一条有效途径。当前,很多协议根本就没有采用任何加密或身份认证技术,如在Telnet、FTP、HTTP、SMTP等传输协议中,用户帐户和密码信息都是以明文格式传输的,此时若攻击者利用数据包截取工具便可很容易收集到你的帐户和密码。还有一种中途截击攻击方法,它在你同服务器端完成"三次握手"建立连接之后,在通信过程中扮演"第三者"的角色,假冒服务器身份欺骗你,再假冒你向服务器发出恶意请求,其造成的后果不堪设想。另外,攻击者有时还会利用软件和硬件工具时刻监视系统主机的工作,等待记录用户登录信息,从而取得用户密码;或者编制有缓冲区溢出错误的SUID程序来获得超级用户权限。

(2)是在知道用户的账号后(如电子邮件@前面的部分)利用一些专门软件强行破解用户口令,这种方法不受网段限制,但攻击者要有足够的耐心和时间。如:采用字典穷举法(或称暴力法)来破解用户的密码。攻击者可以通过一些工具程序,自动地从电脑字典中取出一个单词,作为用户的口令,再输入给远端的主机,申请进入系统;若口令错误,就按序取出下一个单词,进行下一个尝试,并一直循环下去,直到找到正确的口令或字典的单词试完为止。由于这个破译过程由计算机程序来自动完成,因而几个小时就可以把上十万条记录的字典里所有单词都尝试一遍。

(3)是利用系统管理员的失误。在现代的Unix*作系统中,用户的基本信息存放在passwd文件中,而所有的口令则经过DES加密方法加密后专门存放在一个叫shadow的文件中。黑客们获取口令文件后,就会使用专门的破解DES加密法的程序来解口令。同时,由于为数不少的*作系统都存在许多安全漏洞、Bug或一些其他设计缺陷,这些缺陷一旦被找出,黑客就可以长驱直入。例如,让Windows95/98系统后门洞开的BO就是利用了Windows的基本设计缺陷。、放置特洛伊木马程序

特洛伊木马程序可以直接侵入用户的电脑并进行破坏,它常被伪装成工具程序或者游戏等诱使用户打开带有特洛伊木马程序的邮件附件或从网上直接下载,一旦用户打开了这些邮件的附件或者执行了这些程序之后,它们就会象古特洛伊人在敌人城外留下的藏满士兵的木马一样留在自己的电脑中,并在自己的计算机系统中隐藏一个可以在windows启动时悄悄执行的程序。当您连接到因特网上时,这个程序就会通知攻击者,

来报告您的IP地址以及预先设定的端口。攻击者在收到这些信息后,再利用这个潜伏在其中的程序,就可以任意地修改你的计算机的参数设定、复制文件、窥视你整个硬盘中的内容等,从而达到控制你的计算机的目的。

※ 口令攻击类型

(1) 字典攻击

因为多数人使用普通词典中的单词作为口令,发起词典攻击通常是较好的开端。词典攻击使用一个包含大多数词典单词的文件,用这些单词猜测用户口令。使用一部1万个单词的词典一般能猜测出系统中70%的口令。在多数系统中,和尝试所有的组合相比,词典攻击能在很短的时间内完成。

(2) 强行攻击

许多人认为如果使用足够长的口令,或者使用足够完善的加密模式,就能有一个攻不破的口令。事实上没有攻不破的口令,这只是个时间问题。如果有速度足够快的计算机能尝试字母、数字、特殊字符所有的组合,将最终能破解所有的口令。这种类型的攻击方式叫强行攻击。使用强行攻击,先从字母a开始,尝试aa、ab、ac等等,然后尝试aaa、aab、aac

……。

攻击者也可以利用分布式攻击。如果攻击者希望在尽量短的时间内破解口令,他不必购买大量昂贵的计算机。他会闯入几个有大批计算机的公司并利用他们的资源破解口令。

(3) 组合攻击

词典攻击只能发现词典单词口令,但是速度快。强行攻击能发现所有的口令,但是破解时间很长。鉴于很多管理员要求用户使用字母和数字,用户的对策是在口令后面添加几个数字。如把口令ericgolf变成ericgolf55。错误的看法是认为攻击者不得不使用强行攻击,这会很费时间,而实际上口令很弱。有一种攻击使用词典单词但是在单词尾部串接几个字母和数字。这就是组合攻击。基本上,它介于词典攻击和强行攻击之间。

(4)其他攻击类型

社会工程学

偷窥:观察别人敲口令

搜索垃圾箱

※ 口令攻击工具

NT口令破解程序:

(1)L0phtcrack

L0phtcrack是一个NT口令审计工具,能根据*作系统中存储的加密哈希计算NT口令,功能非常强大、丰富,是目前市面上最好的NT口令破解程序之一。它有三种方式可以破解口令:词典攻击、组合攻击、强行攻击。L0phtcrack可在下载(15天试用),它不仅有一个美观、容易使用的GUI ,而且利用了NT的两个实际缺陷,这使得L0phtcrack速度奇快。

(2)NTSweep

NTSweep使用的方法和其他口令破解程序不同。它不是下载口令并离线破解,NTSweep是利用了Microsoft允许用户改变口令的机制。NTSweep首先取定一个单词,NTSweep使用这个单词作为帐号的原始口令并试图把用户的口令改为同一个单词。如果主域控制机器返回失败信息,就可知道这不是原来的口令。反之如果返回成功信息,就说明这一定是帐号的口令。因为成功地把口令改成原来的值,用户永远不会知道口令曾经被人修改过。NTSweep可从www.下载。

NTSweep非常有用,因为它能通过防火墙,也不需要任何特殊权限来运行。但是也有缺点,首先运行起来较慢;其次尝试修改口令并失败的信息会被记录下来,被管理员检测到;最后,使用这种技术的猜测程序不会给出精确信息,如有些情况不准用户更改口令,这是程序会返回失败信息,即使口令是正确的。

(3)NTCrack

NTCrack是UNIX破解程序的一部分,但是在NT环境下破解。NTCrack与UNIX中的破解类似,但是NTCrack在功能上非常有限。它不象其他程序一样提取口令哈希,它和NTSweep的工作原理类似。必须给NTCrack一个user id和要测试的口令组合,然后程序会告诉用户是否成功。

(4)PWDump2

PWDump2不是一个口令破解程序,但是它能用来从SAM数据库中提取口令哈希。L0phtcrack已经内建了这个特征,但是PWDump2还是很有用的。首先,它是一个小型的、易使用的命令行工具,能提取口令哈希;其次,目前很多情况下L0phtcrack的版本不能提取口令哈希。如SYSTEM是一个能在NT下运行的程序,为SAM数据库提供了很强的加密功能,如果SYSTEM在使用,L0phtcrack就无法提取哈希口令,但是PWDump2还能使用;而且要在windows2000下提取哈希口令,必须使用PWDump2,因为系统使用了更强的加密模式来保护信息。

UNIX口令破解程序:

(1) Crack

Crack是一个旨在快速定位UNIX口令弱点的口令破解程序。Crack使用标准的猜测技术确定口令。它检查口令是否为如下情况之一:和user id相同、单词password、数字串、字母串。Crack通过加密一长串可能的口令,并把结果和用户的加密口令相比较,看其是否匹配。用户的加密口令必须是在运行破解程序之前就已经提供的。

(2) John the Ripper

UNIX口令破解程序,但也能在Windows平台运行,功能强大、运行速度快,可进行字典攻击和强行攻击。

(3) XIT

XIT是一个执行词典攻击的UNIX口令破解程序。XIT的功能有限,因为它只能运行词典攻击,但程序很小、运行很快。

(4) Slurpie

Slurpie能执行词典攻击和定制的强行攻击,要规定所需要使用的字符数目和字符类型。如,可以能够Slurpie发起一次攻击,使用7字符或8字符、仅使用小写字母口令进行强行攻击。

和John、Crack相比,Slurpie最大的优点是它能分布运行,Slurpie能把几台计算机组成一台分布式虚拟机器在很短的时间里完成破解任务。

欺骗攻击

欺骗攻击类型

IP欺骗:公司使用其他计算机的IP地址来获得信息或者得到特权。

电子信件欺骗:电子信件的发送方地址的欺骗。比如说,电子信件看上去是来自TOM,但事实上TOM没有发信,是冒充TOM的人发的信。

WEB欺骗:越来越多的电子上午使用互连网。为了利用网站做电子商务,人们不得不被鉴别并被授权来得到信任。在任何实体必须被信任的时候,欺骗的机会出现了。

非技术类欺骗:这些类型的攻击是把经理集中在攻击攻击的人力因素上。它需要通过社会工程技术来实现。

※ IP欺骗

IP欺骗的三种基本形式是:

基本地址变化

使用源路由选择截取数据包

利用UNIX机器上的信息关系

(1) 基本地址变化

IP欺骗的最基本形式是搞清楚一个网络的配置,然后改变自己的IP地址,伪装成别人机器的IP地址。这样做会使所有被发送的数据包都带有假冒的源地址。这是非常低等级的技术,因为所有的应答都回到了被盗用了地址的机器上,而不是攻击者的机器。这被叫做盲目飞行攻击(flying

blind attack),或者叫做单向攻击(one-way attack)。

这种攻击虽有一些限制,但就某一特定类型的拒绝服务攻击而言,只需要一个数据包去撞击机器,而且地址欺骗会让人们更难于找到攻击者的根源。对某些特定的攻击,如果系统受到了意想不到的数据包,说明对系统的攻击仍然在进行。而且因为UDP是无连接的,所以单独的UDP数据包会被发送到受害方的系统中。

(2) 源路由攻击

有关欺骗的一个重要问题是被盗用的地址会收到返回的信息流,而攻击者从来不会接受到它们。但是对于更高级的攻击,攻击者更愿意看到对话的双方。

为了得到从目的机器返回到源机器的流量,一个方法是攻击者插入到正常情况下流量经过的通路上。这是非常困难的,因为攻击者必须攻击受害网络上的一台机器,而且不存在任何保障措施让流量继续通过攻击者的机器。我们知道互联网是采用动态路由的,它每天、每小时,甚至每分钟都会有变化。有一种方法能够保证数据包会经过一条给定的路径,而且作为一次欺骗,保证它经过攻击者的机器。这么做需要使用源路由,它被包含在TCP/IP协议组中。源路由允许指定一条数据包必须经过的路径。它包括两种类型的源路由:

宽松的源路由选择(LSR):

发送端指明了流量或者数据包必须经过的IP地址清单,但如果它需要,也可以经过一些其他的地址。换句话说,不用考虑数据包经过的确切地址,只要它经过这些地址就可以。

严格的源路由选择(SRS):

发送端指明IP数据包必须经过的确切地址。如果没有经过这一确切路径,数据包会被丢弃,并返回一个ICMP差错报文。换句话说,必须考虑数据包经过的确切路径,而且如果由于某种原因没有经过这条路径,这个数据包就不能被发送。

源站路由使用IP首部一个39个字节的源路由选项地址来工作。因为源站路由被放入了IP首部,所以对指定的IP地址数目会有限制。因为源路由选项字段是39个字节,其中3个字节是附加信息,那么剩下的36个字节是地址信息。每一个地址是4个字节。如果36除4,会有9个地址的空间,但情况不是那么简单。因为最后一个地址必须是目的地址,所以它只留下8个地址的空间。可知随着互联网的发展,会出现IP地址的数目大于8的情况。在这些情况下,就只能使用宽松的源站选路,因为如果不能找到确切的路径,那么严格的源路由选路就会丢弃那个数据包。

基本上源路由的工作过程是这样的:取出源站路由清单中第一个地址,使它成为目的地址。如果是严格的源路由选择,那么它必须是下一跳;如果不是,它就会被丢弃。对于宽松的源路由选择,在数据包到达清单上指出的地址以前,它经过多少跳是没有关系的。在它到达目的地址后,它从清单中取出下一个地址,使它变为目的地址。接下来它继续重复这个过程,直到找到目的地址或者数据包不能被路由为止。

需要指出的重要的一点是如果发送端指定了到达目的地址的源路由,那么目的机器能够自动地使用源路由返回到发送端,这就是为什么它那么危险的原因,可能不知道有人正在使用它。可能回答一个数据包,而且如果发送端使用了源路由,就会在未知的情况下使用它。

源路由为欺骗带来了巨大的利益。攻击者使用假冒的地址向目的地发送数据包,但指定了宽松的源路由选择,并把他的IP地址填入地址清单中。那么,当接受端回应时,数据包返回到假冒的IP地址处,而不是前面它经过的攻击者的机器。攻击者没有盲目飞行,因为他能看到对话双方。

(3)信任关系

在Unix领域中,信任关系能够很容易得到。假如在主机A和B上各一个帐户,在使用当中会发现,在主机A上使用时需要输入在A上的相应帐户,在主机B上使用时必须输入在B上的帐户,主机A和B把你当作两个互不相关的用户,显然有些不便。为了减少这种不便,可以在主机A和主机B中建立起两个帐户的相互信任关系。在主机A和主机B上你的home目录中创建.rhosts文件。从主机A上,在你的home目录中输入'echo " B username "> ~/.rhosts';从主机B上,在你的home目录中输入'echo

" A username " >~/.rhosts'。至此, 你能毫无阻碍地使用任何以r*开头的远程调用命令,如:rlogin,rcall,rsh

等,而无口令验证的烦恼。这些命令将允许以地址为基础的验证,或者允许或者拒绝以IP地址为基础的存取服务。

这里的信任关系是基于IP地址的。

Rlogin

Rlogin是一个简单的客户/服务器程序,它利用TCP传输。Rlogin 允许用户从一台主机登录到另一台主机上,并且,如果目标主机信任它,Rlogin

将允许在不应答口令的情况下使用目标主机上的资源。安全验证完全是基于源主机的IP 地址。因此,根据以上所举的例子,我们能利用Rlogin来从B远程登录到A,而且不会被提示输入口令。

IP欺骗

IP欺骗由若干步骤组成,这里先简要地描述一下,随后再做详尽地解释。先做以下假定:首先,目标主机已经选定。其次,信任模式已被发现,并找到了一个被目标主机信任的主机。黑客为了进行IP欺骗,进行以下工作:使得被信任的主机丧失工作能力,同时采样目标主机发出的TCP序列号,猜测出它的数据序列号。然后,伪装成被信任的主机,同时建立起与目标主机基于地址验证的应用连接。如果成功,黑客可以使用一种简单的命令放置一个系统后门,以进行非授权*作。

使被信任主机丧失工作能力

一旦发现被信任的主机,为了伪装成它,往往使其丧失工作能力 。由于攻击者将要代替真正的被信任主机,他必须确保真正被信任的主机不能接收到任何有效的网络数据,否则将会被揭穿。有许多方法可以做到这些。这里介绍"TCP SYN淹没"。

前面已经谈到,建立TCP连接的第一步就是客户端向服务器发送SYN 请求。

通常,服务器将向客户端发送SYN/ACK信号。这里客户端是由IP 地址确定的。客户端随后向服务器发送ACK,然后数据传输就可以进行了。然而,TCP处理模块有一个处理并行SYN请求的最上限,它可以看作是存放多条连接的队列长度。其中,连接数目包括了那些三步握手法没有最终完成的连接,也包括了那些已成功完成握手,但还没有被应用程序所调用的连接。如果达到队列的最上限,TCP将拒绝所有连接请求,直至处理了部分连接链路。因此,这里是有机可乘的。

黑客往往向被进攻目标的TCP端口发送大量SYN请求,这些请求的 源地址是使用一个合法的但是虚假的IP地址(可能使用该合法IP地址的主机没有开机)。而受攻击的主机往往是会向该IP地址发送响应的, 但可惜是杳无音信。与此同时IP包会通知受攻击主机的TCP:该主机不可到达,但不幸的是TCP会认为是一种暂时错误,并继续尝试连接 (比如继续对该IP地址进行路由,发出SYN/ACK数据包等等),直至确信无法连接。当然,这时已流逝了大量的宝贵时间。值得注意的是, 黑客们是不会使用那些正在工作的IP地址的,因为这样一来,真正IP持有者会收到SYN/ACK响应,而随之发送RST给受攻击主机,从而断开连接。前面所描述的过程可以表示为如下模式。

1 Z(X)---SYN---> B

Z(X)---SYN--->B

Z(X)---SYN--->B

2 X<---SYN/ACK--B

X<---SYN/ACK--B

3 X<---RST---B

在时刻1时,攻击主机把大批SYN请求发送到受攻击目标(在此阶段,是那个被信任的主机),使其TCP队列充满。在时刻2时,受攻击目标向它所相信的IP地址(虚假的IP)作出SYN/ACK反应。在这一期间,受攻击主机的TCP模块会对所有新的请求予以忽视。不同的TCP保持连接队列的长度是有所不同的。BSD一般是5,Linux一般是6。使被信任主机失去处理新连接的能力,所赢得的宝贵空隙时间就是黑客进行攻击目标主机的时间,这使其伪装成被信任主机成为可能。

※ 电子邮件欺骗

攻击者使用电子邮件欺骗有三个目的:第一,隐藏自己的身份。第二,如果攻击者想冒充别人,他能假冒那个人的电子邮件。使用这种方法,无论谁接受到这封邮件,他会认为它时攻击者冒充的那个人发的。第三,电子邮件欺骗能被看作时社会工程的一种表现形式。例如,如果攻击者想让用户发给他一份敏感文件,攻击者伪装他的邮件地址,使用户认为这是老板的要求,用户可能会发给他这封邮件。

执行电子邮件欺骗有三种基本方法,每一种有不同难度级别,执行不同层次的隐蔽:

相似的电子邮件地址

修改邮件客户

远程登录到端口25

(1)相似的电子邮件地址

使用这种类型的攻击,攻击者找到一个公司的老板或者高级管理人员的名字。有了这个名字后,攻击者注册一个看上去象高级管理人员名字的邮件地址。他只需简单的进入hotmail等网站或者提供免费邮件的公司,签署这样一个帐号。然后在电子邮件的别名字段填入管理者的名字。我们知道,别名字段是显示在用户的邮件客户的发件人字段中。因为邮件地址似乎是正确的,所以受信人很可能会回复它,这样攻击者就会得到想要的信息。

当用户收到邮件时,注意到它没有完整的电子邮件地址。这是因为把邮件客户设成只显示名字或者别名字段。虽然通过观察邮件头,用户能看到真实的邮件地址是什么,但是很少有用户这么做。

(2)修改邮件客户

当用户发出一封电子邮件时,没有对发件人地址进行验证或者确认,因此如果攻击者有一个象outlook的邮件客户,他能够进入并且指定他想出现在发件人中的所有地址。

攻击者能够指定他想要的任何返回地址。因此当用户回信时,答复回到真实的地址,而不是而到被盗用了地址的人那里。

(3)远程联系,登录到端口25

邮件欺骗一个更复杂的方法是远程登录到邮件服务器的端口25,邮件服务器使用它在互联网上发送邮件。当攻击者想发送给用户信息时,他先写一个信息,然后单击发送。接下来他的邮件服务器与用户的邮件服务器联系,在端口25发送信息,转移信息。用户的邮件服务器然后把这个信息发送给用户。

因为邮件服务器使用端口25发送信息,所以没有理由说明攻击者不会连接到25,装作是一台邮件服务器,然后写一个信息。有时攻击者会使用端口扫描来判断哪个端口25是开放的,以此找到邮件服务器的IP地址。

越来越多的系统管理员正在意识到攻击者在使用他们的系统进行欺骗,所以更新版的邮件服务器不允许邮件转发,并且一个邮件服务器应该只发送或者接受一个指定域名或者公司的邮件。

※ WEB欺骗

(1)基本的网站欺骗

攻击者会利用现在注册一个域名没有任何要求的现状,抢先或特别设计注册一个非常类似的有欺骗性的站点。当一个用户浏览了这个假冒地址,并与站点作了一些信息交流,如填写了一些表单,站点会给出一些响应的提示和回答,同时记录下用户的信息,并给这个用户一个cookie,以便能随时跟踪这个用户。典型的例子是假冒金融机构,偷盗客户的信用卡信息。

(2)man-in-the-middle攻击

可以说所有不同类型的攻击都能使用man-in-the-middle攻击,不止是WEB欺骗。在man-in-the-middle攻击中,攻击者必须找到自己的位置,以使进出受害方的所有流量都经过他。攻击者可通过攻击外部路由器来实现,因为所有进出公司组织的流量不得不经过这个路由器。

man-in-the-middle原理是,攻击者通过某种方法(比如攻破DNS服务器,DNS欺骗,控制路由器)把目标机器域名的对应的IP到攻击者所控制的机器,这样所有外界对目标机器的请求将涌向攻击者的机器,这时攻击者可以转发所有的请求到目标机器,让目标机器进行处理,再把处理结果发回到发出请求的客户机。实际上,就是把攻击者的机器设成目标机器的代理服务器,这样,所有外界进入目标机器的数据流都在

攻击者的监视之下了,攻击者可以任意窃听甚至修改数据流里的数据,收集到大量的信息

(3)URL重写

在URL重写中,就像在攻击中一样,攻击者把自己插入到通信流中,唯一不同的是,在攻击中,当流量通过互联网时,攻击者必须在物理上能够截取它。有时这非常难于执行,因此攻击者使用URL重写。在URL重写中,攻击者能够把网络流量转到攻击者控制的另一个站点上。

利用URL地址,使地址都向攻击者的Web服务器,即攻击者可以将自已的Web地址加在所有URL地址的前面。这样,当用户与站点进行安全链接时,就会毫不防备地进入攻击者的服务器,于是用记的所有信息便处于攻击者的监视之中。但由于浏览器材一般均设有地址栏和状态栏,当浏览器与某个站点边接时,可以在地址栏和状态样中获得连接中的Web站点地址及其相关的传输信息,用户由此可以发现问题,所以攻击者往往在URL地址重写的同时,利用相关信息排盖技术,即一般

用JavaScript程序来重写地址栏和状态栏,以达到其掩盖欺骗的目的。

※ 非技术类欺骗

通常把基于非计算机的技术叫做社交工程(也有叫社会工程的)。社交工程中,攻击者设法设计让人相信它是其他人。这就像攻击者在给人打电话时说自己时某人一样的简单。因为他说了一些大概只有那个人知道的信息,所以受害人相信他。

社交工程的核心是,攻击者设法伪装自己的身份并设计让受害人泄密私人信息。这些攻击的目标是搜集信息来侵入计算机系统的,通常通过欺骗某人使之泄露出口令或者在系统中建立个新帐号。其他目标使侦察环境,找出安装了什么硬件和软件,服务器上装载了什么补丁等等。通过社会工程得到的信息是无限的。

会话劫持攻击

※ 攻击原理

会话劫持(Session Hijack)是一种结合了嗅探以及欺骗技术在内的攻击手段。广义上说,会话劫持就是在一次正常的通信过程中,黑客作为第三方参与到其中,或者是在数据流(例如基于TCP的会话)里注射额外的信息,或者是将双方的通信模式暗中改变,即从直接联系变成有黑客联系。

会话劫持利用了TCP/IP工作原理来设计攻击。TCP使用端到端的连接,即TCP用(源IP,源TCP端口号,目的IP,目的TCP端号)来唯一标识每一条已经建立连接的TCP链路。另外,TCP在进行数据传输时,TCP报文首部的两个字段序号(seq)和确认序号(ackseq)非常重要。序号(seq)和确认序号(ackseq)是与所携带TCP数据净荷(payload)的多少有数值上的关系:序号字段(seq)指出了本报文中传送的数据在发送主机所要传送的整个数据流中的顺序号,而确认序号字段(ackseq)指出了发送本报文的主机希望接收的对方主机中下一个八位组的顺序号。因此,对于一台主机来说,其收发的两个相临TCP报文之间的序号和确认序号的关系为:它所要发出的报文中的seq值应等于它所刚收到的报文中的ackseq的值,而它所要发送报文中ackseq的值应为它所收到报文中seq的值加上该报文中所发送的TCP净荷的长度。图-2是两台主机进行TCP数据传输时序号(seq)、确认序号(ackseq)以及所携带TCP数据净荷(payload)之间的数值关系的一个例子(以八位组octet为单位)。

TCP会话劫持的攻击方式可以对基于TCP的任何应用发起攻击,如HTTP、FTP、Telnet等。对于攻击者来说,所必须要做的就是窥探到正在进行TCP通信的两台主机之间传送的报文,这样攻击者就可以得知该报文的源IP、源TCP端口号、目的IP、目的TCP端号,从而可以得知其中一台主机对将要收到的下一个TCP报文段中seq和ackseq值的要求。这样,在该合法主机收到另一台合法主机发送的TCP报文前,攻击者根据所截获的信息向该主机发出一个带有净荷的TCP报文,如果该主机先收到攻击报文,就可以把合法的TCP会话建立在攻击主机与被攻击主机之间。带有净荷的攻击报文能够使被攻击主机对下一个要收到的TCP报文中的确认序号(ackseq)的值的要求发生变化,从而使另一台合法的主机向被攻击主机发出的报文被被攻击主机拒绝。TCP会话劫持攻击方式的好处在于使攻击者避开了被攻击主机对访问者的身份验证和安全认证,从而使攻击者直接进入对被攻击主机的的访问状态,因此对系统安全构成的威胁比较严重。

当黑客劫持会话时有可能带来负面的影响,其中之一就被成为ACK风暴。

※ 会话劫持攻击程序

Juggernaut

Juggernaut是一个可以被用来进行TCP会话攻击的网络sniffer程序。可以运行于LINUX*作系统的终端机上,安装和运行都很简单。可以设置值、暗号或标志这三种不同的方式来通知Juggernaut程序是否对所有的网络流量进行观察。例如,一个典型的标记就是登录暗号。无论何时Juggernaut发现这个暗号,就会捕获会话,这意味着黑客可以利用捕获到的用户密码再次进入系统。

Hunt

是一个用来听取、截取和劫持网络上的活动会话的程序。

TTY Watcher

是一个免费的程序,允许人们监视并且劫持一台单一主机上的连接。

IP Watcher

IP Watcher是一个商用的会话劫持工具,它允许监视会话并且获得积极的反会话劫持方法。它基于TTY Watcher此外还提供一些额外的功能,IPWatcher可以监视整个网络。

缓冲区溢出攻击

※ 攻击原理

几十年来,缓冲区溢出一直引起许多严重的安全性问题。其中最著名的例子是:1988 年,因特网蠕虫程序在 finger 中利用缓冲区溢出感染了因特网中的数万台机器。但是,缓冲区溢出问题并非已成古老的历史,缓冲区溢出(又称堆栈溢出)攻击已成为最常用的黑客技术之一。据统计,仅去年缓冲区溢出就占使CERT/CC 提出建议的所有重大安全性错误的百分之五十以上。

引起缓冲区溢出问题的根本原因是 C(与其后代 C++)本质就是不安全的,没有边界来检查数组和指针的引用,也就是开发人员必须检查边界(而这一行为往往会被忽视),否则会冒遇到问题的风险。标准C 库中还存在许多非安全字符串*作,包括:strcpy() 、sprintf() 、gets() 等。

缓冲区溢出源于每个程序运行的需要:放置数据的空间。多数计算机程序都在内存中创建多个地址用于信息存储。C 编程语言允许程序员在运行时在内存的两个不同部分(堆栈和堆)中创建存储器。通常,分配到堆的数据是那些malloc() 或新建时获得的数据。而分配到堆栈的数据一般包括非静态的局部变量和所有按值传递的参数。大部分其它信息存储在全局静态存储器中。在分配同一数据类型的相邻块时,这块内存区域称为缓冲区。

在写入缓冲区时,C 程序员必须注意存储在缓冲区中的数据不能超过它所能容纳的量。缓冲区只能容纳一定数量的位,就象一个杯子只能盛一定量的水。如果放到杯子中的水太多,多余的水就会溢出到别的地方。相似地,如果试图放入缓冲区的数据比它能装入的要多,额外的数据就会溢出到别处。

当程序写入超过缓冲区的边界时,这就是所谓的"缓冲区溢出"。发生缓冲区溢出时,会覆盖下一个相邻的内存块。由于C 语言本质上的不安全性,所以它允许程序随意(或者更准确地说是完全出于偶然)溢出缓冲区。没有运行时检查来这一防止写入超过缓冲区末尾,所以程序员必须在其自己的代码中执行这一检查,否则继续下去会出现问题。

读取或写入超过缓冲区的末尾时,会导致许多不同(并且通常是不可预料的)行为:1) 程序的执行很奇怪,2) 程序完全失败,或者

3) 程序可以继续,而且在执行中没有任何明显不同。缓冲区溢出的副作用取决于:

写入的数据中有多少超过缓冲区边界

当缓冲区已满并且溢出时,覆盖了哪些数据(如果有的话)

程序是否试图读取溢出期间被覆盖的数据

哪些数据最终替换被覆盖的内存

存在缓冲区溢出的程序的不确定行为使得对它们的调试异常棘手。最坏的情况是:程序可能正发生缓冲区溢出,但根本没有任何副作用的迹象。因此,缓冲区溢出问题常常在标准测试期间是发现不了的。认识缓冲区溢出的重要一点是:在发生溢出时,会潜在地修改碰巧分配在缓冲区附近的任何数据。

一般情况下,覆盖其他数据区的数据是没有意义的,最多造成应用程序错误,但是,如果输入的数据是经过"黑客"精心设计的,覆盖缓冲区的数据恰恰是黑客的入侵程序代码,黑客就获取了程序的控制权。

最简单的情况就是考虑直接在缓冲区后面的内存中分配一个布尔标志。这个标志决定运行程序的用户是否可以访问专用文件。如果有不怀好意的用户覆盖缓冲区,则会更改标志的值,从而指出攻击者是非法访问专用文件。

缓冲区溢出导致安全性问题的另一个方法是通过摧毁堆栈。摧毁堆栈的目的是导致一个特定的编程故障:不仔细使用分配在程序运行时堆栈上的数据缓冲区,即局部变量和函数自变量。有效的摧毁堆栈所造成的后果比上一示例中提到的改变布尔访问控制标志的后果更为严重。有创造力的攻击者会通过摧毁堆栈利用缓冲区溢出的弱点,然后运行任何代码。这种想法是相当直接的:在某处插入一些攻击代码(例如,调用shell 的代码)并以将控制传递给攻击代码的方式来覆盖堆栈。

此外,攻击者利用缓冲区溢出得到机器上的交互式会话 (shell)。如果被利用的程序以较高的优先权在运行(如 root用户或管理员),则攻击者就会在交互式会话中得到该优先权。最惊人的缓冲区溢出是堆栈的摧毁,它会在超级用户或 root、shell中造成后果。许多可以利用脚本都能在网络上找到,它们对特定体系结构上的堆栈进行摧毁。

保留访问权限

在大多数情况下, 攻击者入侵一个系统后,他可能还想在适当的时候再次进入系统。比如说,如果攻击者入侵了一个站点,将它作为一个对其他系统进行攻击的平台或者是跳板,他就会想在适当的时候登录到这个站点取回他以前存放在系统里面的工具进行新的攻击。很容易想到的方法就是在这个已经被入侵的系统中留一个后门。但是,非常关键的是,不但要留下下次进入的通道,而且还要对自己所做的一切加以隐藏,如果建立起的后门马上就被管理员发现就没有任何用处了。

※ 后门和特洛伊木马

简单地说,后门(backdoor)就是攻击者再次进入网络或者是系统而不被发现的隐蔽通道。最简单的方法就是打开一个被端口监听代理所监听的代理,有很多软件可以做到这一点。

如果用户使用端口扫描器对网络内部所有计算机从端口1到端口1023进行扫描的话,如果攻击者打开的端口是5050,那么就永远也不会被发现。这也是我们在扫描时必须对所有的计算机从端口1到端口65535进行扫描的原因。而且不是一次就可以了,需要两次,一次为TCP,一次为UDP。(由于越来越多的公司已经渐渐地加强了对TCP端口的管理而忽视了UDP端口的管理,所以很多攻击者将开放的端口都选择在UDP端口了。)

当获得了系统的存储权时,建立后门时相当容易的,但是在没有完全获得对系统的存取权限时,一般可以通过使用特洛伊木马来实现。特洛伊木马程序包括两个部分:一个外壳程序和一个内核程序。外壳程序就是每个人都可以看得到的部分。这部分必须时非常有趣或者是让人激动的,以至于当人们看到它的是时候都会不加考虑的运行。内核部分就是能够对系统造成危害的部分。单外壳程序重新运行时,内核程序隐蔽地隐藏在显示屏后做着各种各样可能对系统造成破坏的事情。内核程序的功能非常强大,几乎可以做任何事情,比如进行攻击、删除硬件设备、建立后门等。对于大多数特洛伊木马程序来说,内核程序的功能就是在受攻击的系统中建立后门。

(1) QAZ

QAZ是一个典型的通过电子邮件传送的特洛伊木马程序。它通常隐藏在

notepad.exe程序中。在进入系统时它将notpad.exe改名为note.com而将自己的名字改成notpad.exe。当用户执行notpad.exe时,它并不启动自己的程序,而是调用notpad.exe,因为notpad.exe已经被内置于note.com之中。所以从用户的角度来看,一切正常。QAZ在端口7597打开了一个后门,并且将被攻击者的IP发送给攻击者。(当然这个发送的目的地址不会是攻击者真正的地址,而是一个已经被他攻破的地址。)

QAZ同时也会在系统中自动繁殖自己。它不断地寻找网络共享的出口,当找到后,将自己通过同样的方式复制给远程的计算机。所以,QAZ不但在系统中建立了一个后门,而且通过网络不断地复制自己。

(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

前两个是将攻击者所留下的痕迹假扮成网络合法的通信信息,第三个程序是通过将这些痕迹隐藏在数据包中来躲避管理员的检测

更多相关推荐:
各种网络攻击的原理

各种网络攻击的原理DoS攻击通常而言DoS的网络数据包同样是利用TCPIP协议在Internet传输这些数据包本身一般是无害的但是如果数据包异常过多就会造成网络设备或者服务器过载迅速消耗了系统资源造成服务拒绝这...

各种网络攻击的原理

各种网络攻击的原理DoS攻击通常而言DoS的网络数据包同样是利用TCPIP协议在Internet传输这些数据包本身一般是无害的但是如果数据包异常过多就会造成网络设备或者服务器过载迅速消耗了系统资源造成服务拒绝这...

常见网络攻击方法及原理

11SYN拒绝服务攻击一般情况下一个TCP连接的建立需要经过三次握手的过程即1建立发起者向目标计算机发送一个TCPSYN报文2目标计算机收到这个SYN报文后在内存中创建TCP连接控制块TCB然后向发起者回送一个...

常见网络攻击方法及原理

11SYN拒绝服务攻击一般情况下一个TCP连接的建立需要经过三次握手的过程即1建立发起者向目标计算机发送一个TCPSYN报文2目标计算机收到这个SYN报文后在内存中创建TCP连接控制块TCB然后向发起者回送一个...

计算机网络原理概念总结

自考乐园心境随缘诚与天下自考人共勉自考乐园分享快乐你的快乐老家自考乐园引领成功你的精神乐园群名自考乐园计算机网络QQ群号63803088计算机网络原理笔记可以用作考条第一章计算机网络四个发展阶段面向终端的计算机...

网络攻击技术原理与防范措施

网络攻击技术原理与防范措施班级网络0902学号20xx07060214姓名刘建波随着网络技术和Internet的飞速发展网络环境变得越来越复杂网络安全问题显得越来越重要网络易受如木马恶意代码蠕虫DDOS攻击等攻...

计算机网络原理 黑客攻击常见方法

计算机网络原理黑客攻击常见方法要想有效的防范黑客对我们计算机的入侵和破坏仅安装防火墙是不够的我们更应该了解一些常见的黑客入侵手法针对不同的方法采取不同的措施1木马入侵木马是黑客在已经获取我们操作系统可写权限的前...

自学考试计算机网络原理知识点详细全面总结

计算机网络原理474120xx12172018第一章概论1计算机网络的发展面向终端分布的计算机系统计算机计算机网络开放式标准网路因特网广泛应用和高速网络技术的发展2三大网络电信业务网广播电视网计算机网3未来网络...

云南大学 软件学院 计算机网络原理 期末试题总结

注意这是0405学期王老师出的试题1Ethernet使用的MAC协议是1当发生冲突时将进入二进制指数退避阶段对于第3次冲突等待重传的最长时间是512位时间的2倍1AALOHA2A1BCSMACDB3CCSMAC...

计算机网络第五版知识点总结

一概论1在网络边缘的端系统中运行的程序之间的通信方式通常可划分为两大类客户服务器方式CS方式即ClientServer方式对等方式P2P方式即PeertoPeer方式1客户client和服务器server都是指...

计算机网络面试题个人总结

OSI参考模型应用层表示层会话层传输层网络层数据链路层物理层TCPIP参考模型应用层传输层网络层网络接口层集线器工作在OSI模型的物理层网卡也工作在物理层交换机工作在数据链路层路由器工作在网络层常见的服务以及对...

计算机网络_期末_知识点_总结

目录第一章2计算机网络的常用数据交换技术2计算机网络的定义2计算机网络的分类2计算机网络的主要性能指标3协议的基本概念及组成要素3协议与服务的关系4OSI七层模型和TCPIP4第二章4物理层与传输媒体的接口特性...

网络攻击原理总结(10篇)